Просмотр полной версии : Диалог с НПС
Вопрос такого характера.
Интересует реализация диалога с НПС.
а именно , написал все алгоритм примерно такой
как только пришел пакет о таргете, отправляем опять экшен
пришел НТМЛ от НПС, проверили что именно тот НТМЛ
отправляем команду что нужно нажать
приходит НТМЛ от НПС, отправляем команду
и вот тут загвоздка
если делать через таймер то диалоги работают, пытался как выше описано по принятому пакету с ХТМЛ от сервера и не получается
может кто подскажет или выложет примерный код реализации диалога до 3 - 4 уровня вложения
alexteam
12.12.2009, 21:35
не знаю как ты делал, но вот это простейшее и работать должно.
главное правильно задавать ключевые фразы которые бы были присущи только этому диалогу и соблюдать регистр.
var
npcoid : integer;
html, cmd : string;
Timer:ttimer;
procedure init;
begin
useforconnectname := 'ИмяСоединения';
timer := ttimer.create(nil);
timer.enabled := false;
timer.interval := 300;
timer.ontimer := @TimerHandler;
end;
procedure free;
begin
timer.free;
end;
procedure TimerHandler(Sender:tobject);
begin
timer.enabled := false;
buf := #$23;
writes(cmd);
sendtoserver;
end;
begin
if fromserver and (pck[1] = #$19) then
begin
npcoid := readd(2);
html := reads(6);
if (pos('Trader Silvia', html)>0) and (pos('Buy Accessories', html)>0) then
begin
cmd:= format('npc_%d_Buy 3000300',[npcoid]);
timer.enabled := true;
exit;
end;
if pos('Ключевая фраза', html)>0 then
begin
cmd := format('действие_%d_действие',[npcoid]);
timer.enabled := true;
exit;
end;
end;
end.
Спасибо что ответили
Но все равно не получается.
l2phx использую версия 3.5.28.151, можно скачать и последней версии но думаю разницы не будет
я пишу все тоже самое как вы и предложили, но не получается вот почему
пакет с командой что нужно сделать уходит до того как пакет с сервера с ХТМЛ попадает в клиент.
Вообщем если все сделать через таймер задержка в 300мс. то после получения пакета с сервера, если пакет тот, то команда отсылается через таймер на сервер и все работает. Не знаю с чем связано, думаю тут много ГУРУ которые знают это.
alexteam
13.12.2009, 20:14
пакет с командой что нужно сделать уходит до того как пакет с сервера с ХТМЛ попадает в клиент.
Но сервер то об этом не знает. он отослал пакет хтмла клиенту, и получил ответ. для него все выглядит так как и должно выглядеть. разве что на сервере есть контроль скорости ответа на диалог.
Добавлено через 5 минут
Поправил скрипт.
Ну я так и сделал.
Просто опыта маловато в написании скриптов для серверов, поэтому думал мало ли руки кривые))))
Спасибочки за ответ
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot