kLabMouse писал(а):Jerry
Мля ну ты же программер.. росмотри почему у него проверка на мобов стоит пожже чем идти. Пусть сначала заатачит моба а только потом пустится в путь.... если конечно рядом нет других мобов.
Или хотб найди мне где собака зарыта.. исправлю.
Раньше АИ было в функции АИ в файлике functions, и там порядок обрабтки был такой:
##### REAL AI STARTS HERE #####
##### MISC #####
##### CLIENT SUSPEND #####
##### CHECK FOR UPDATES #####
##### AUTOBREAKTIME #####
##### TALK WITH NPC ######
##### WAYPOINT ####
##### DEAD #####
##### STORAGE GET #####
#### CART ADD ####
#### CART Get ####
##### DROPPING #####
##### DELAYED-TELEPORT #####
####### AUTO MAKE ARROW #######
#####AUTO STORAGE#####
#####AUTO SELL#####
#####AUTO BUY#####
##### AUTO-CART ADD/GET ####
##### LOCKMAP #####
##### AUTO STATS #####
##### AUTO SKILLS #####
##### RANDOM WALK #####
##### FOLLOW #####
##### FOLLOW-LOST #####
##### SITAUTO-IDLE #####
##### SITTING #####
##### STANDING #####
##### SIT AUTO #####
##### ATTACK #####
##### AUTO-ITEM USE #####
##### AUTO-SKILL USE #####
##### PARTY-SKILL USE #####
##### MONSTER SKILL USE #####
##### AUTO-EQUIP #####
##### SKILL USE #####
##### AUTO-ATTACK #####
####### ROUTE #######
####### MAPROUTE #######
##### ITEMS TAKE #####
##### ITEMS AUTO-GATHER #####
##### ITEMS GATHER #####
##### TAKE #####
##### MOVE #####
##### AUTO-TELEPORT #####
##### TELEPORT HP #####
##### TELEPORT MONSTER #####
##### TELEPORT IDLE / PORTAL #####
##### ALLOWED MAPS #####
##### AUTO RESPONSE #####
##### AVOID GM OR PLAYERS #####
##### SEND EMOTICON #####
##### AUTO SHOP OPEN #####
##########
Тоесть вроде бы движение обрататывалось позже чем в очередь АИ добавлялась атака от ##### AUTO-ATTACK #####
А сейчас в КореЛоджик идет разделение АИ на авто и мануал, и мануал идет первым, и там обрабатываются перемещения,
а авто-атака идет уже в самом конце, в авто-АИ.
##### MANUAL AI STARTS HERE #####
Plugins::callHook('AI_pre/manual');
Benchmark::begin("AI (part 1)") if DEBUG;
return if processClientSuspend();
Benchmark::begin("AI (part 1.1)") if DEBUG;
processLook();
processNPCTalk();
processDrop();
processEscapeUnknownMaps();
Benchmark::end("AI (part 1.1)") if DEBUG;
Benchmark::begin("AI (part 1.2)") if DEBUG;
processDelayedTeleport();
processSit();
processStand();
AI::Attack::process();
Benchmark::end("AI (part 1.2)") if DEBUG;
Benchmark::begin("AI (part 1.3)") if DEBUG;
processSkillUse();
processRouteAI();
processMapRouteAI();
processTake();
processMove();
Benchmark::end("AI (part 1.3)") if DEBUG;
Benchmark::begin("AI (part 1.4)") if DEBUG;
Benchmark::begin("ai_autoItemUse") if DEBUG;
processAutoItemUse();
Benchmark::end("ai_autoItemUse") if DEBUG;
Benchmark::begin("ai_autoSkillUse") if DEBUG;
processAutoSkillUse();
Benchmark::end("ai_autoSkillUse") if DEBUG;
Benchmark::end("AI (part 1.4)") if DEBUG;
Benchmark::end("AI (part 1)") if DEBUG;
Misc::checkValidity("AI part 1");
return if ($AI != 2);
##### AUTOMATIC AI STARTS HERE #####
Plugins::callHook('AI_pre');
Benchmark::begin("AI (part 2)") if DEBUG;
ChatQueue::processFirst;
processEquip();
processDeal();
processDealAuto();
processPartyAuto();
processGuildAutoDeny();
Misc::checkValidity("AI part 1.1");
processAutoBreakTime();
processWaypoint();
processDead();
processStorageGet();
processCartAdd();
processCartGet();
processAutoMakeArrow();
Benchmark::end("AI (part 2)") if DEBUG;
Misc::checkValidity("AI part 2");
Benchmark::begin("AI (part 3)") if DEBUG;
Benchmark::begin("AI (part 3.1)") if DEBUG;
processAutoStorage();
Misc::checkValidity("AI (autostorage)");
processAutoSell();
Misc::checkValidity("AI (autosell)");
processAutoBuy();
Misc::checkValidity("AI (autobuy)");
processAutoCart();
Misc::checkValidity("AI (autocart)");
Benchmark::end("AI (part 3.1)") if DEBUG;
Benchmark::begin("AI (part 3.2)") if DEBUG;
processLockMap();
processAutoStatsRaise();
processAutoSkillsRaise();
processRandomWalk();
processFollow();
Benchmark::end("AI (part 3.2)") if DEBUG;
Benchmark::begin("AI (part 3.3)") if DEBUG;
processSitAutoIdle();
processSitAuto();
Benchmark::end("AI (part 3.3)") if DEBUG;
Benchmark::end("AI (part 3)") if DEBUG;
Benchmark::begin("AI (part 4)") if DEBUG;
processPartySkillUse();
processMonsterSkillUse();
Misc::checkValidity("AI part 3");
processAutoEquip();
processAutoAttack();
processItemsTake();
processItemsAutoGather();
processItemsGather();
processAutoTeleport();
processAllowedMaps();
processAutoResponse();
processAvoid();
processSendEmotion();
processAutoShopOpen();
Benchmark::end("AI (part 4)") if DEBUG;
##########
Соответсвенно хотелось бы как то перенести АвтоАтаку и ВзятиеЛута выше перемешения, возможно тогда он не бует так дергаться. Но просто пересавить мне кажется нельзя, так как код написан с предположением что соблюдается определенная очередность вызовов (например отмена атаки идет с очисткой очереди АИ)...
Как все это проверить и сделать - не знаю, подскажите =)