Написание сервера для lineage 2 chronicle 1 на node.js

Если честно, я не готов пересказывать вам содержимое файла, размером в 50 мб чистого кода. Там огромное число всевозможных условий, которые начинают работать с момента, когда персонаж издал шум и вызвал у окружающих существ SEE_CREATURE. Мне, чтобы полностью воспроизвести всю эту логику на Java, потребовалось больше двух лет непрерывной работы. Там далеко не так все просто, как кажется. Ну разумеется, если целью является сделать что-то похожее на оригинальный сервер. В 99% сборок которые я видел, этим не заморачивались.
Ну мне много то не надо. Мне просто интересно именно то место про раздупление узнать и что к чему. Вы ведь говорили что там и таймеры и код. Я просто непойму как это все относиться именно к первичной атаке или нападению к нпц.
 

Ну мне много то не надо. Мне просто интересно именно то место про раздупление узнать и что к чему. Вы ведь говорили что там и таймеры и код. Я просто непойму как это все относиться именно к первичной атаке или нападению к нпц.
Речь была про то, что келтир начинает реагировать на удар персонажа ДО непосредственного хита.
Первая причина в том, что я написал выше, а именно hit_time_factor. ИИ моба получило событие атаки практически мгновенно, еще не обработав даже сам хит по НПЦ.
В обычном случае, на ПТС, между атакой на НПЦ и ответным действием проходит два больших тика. Первый тик идет на оповещение ИИ об атаке(которая проходит спустя небольшую задержку после атаки, а не моментально). После этого событие встает в очередь, которая будет обработана на начало следующего серверного тика, который 1000 мс. Т.е минимальная задержка уже начинается как дельта к времени ближайшего тика. После этого проходит ряд проверок. Если НПЦ уже в состоянии атаки и имеет PhysicalState ATTACK, то просто обновляется приоритетная цель, обновляя приоритетную очередь целей, на базе хейта. Если же НПЦ не в состоянии атаки, то начинается второй большой тик, т.к переключение физических стейтов происходит по таймеру, который в данном случае будет установлен на 1000, т.к это результат того, что функция AddAttackDesire добавила в приоритетную очередь таск атаковать цель с определенным весом, и скорее всего именно этот таск будет на верху очереди, из-за его наибольшего веса. От таска будет запрошен соответствующий физический стейт, в который будет переключен моб, после чего будет вызван этот же таск повторно, через 1000мс, и он будет уже обработан для состояния ATTACK.
Те же 1000мс, это не константа. По сути, у ИИ просто есть несколько стеков, куда кладутся события и вызывается таймер. ИИ по истечению таймера забирает первый элемент и выполняет его логику.
 
Ну мне много то не надо. Мне просто интересно именно то место про раздупление узнать и что к чему. Вы ведь говорили что там и таймеры и код. Я просто непойму как это все относиться именно к первичной атаке или нападению к нпц.
А для чего такая инфа ? Ты пилишь свой эмулятор на java ? На самом деле это уже серьезная механика, либо ты гений ли бо второй Блендер )
 
А для чего такая инфа ? Ты пилишь свой эмулятор на java ? На самом деле это уже серьезная механика, либо ты гений ли бо второй Блендер )
Ну как бы
Тема 'Lineage2TS - HF сервер написанный на Typescript'
 
Назад
Сверху