PDA

Просмотр полной версии : L2phx работа команды SendToServerEX/ClientEX


DaveMorgan
19.10.2012, 12:54
Здравствуйте!

Ребят, столкнулся с такой проблемой.

На данный момент пишу скрипт на офлайн трейд бота на N количество окон. Хочу реализовать это все на l2phx.

Суть проблемы заключается в том, что команда SendToServerEX() и SendToClietnEX() не отправляет пакеты при закрытом клиенте и поддержании коннекта через команду NoCloseServerAfterClientDisconnect;

Вот к примеру, запускаем в скриптменеджере скрипт, который будет держать соединение с сервером без клиента (для теста брал пока одно соединение пожтому и использую команду SendToServer):


begin
NoCloseServerAfterClientDisconnect;

if fromserver and (pck[1]=#$D3) then begin
buf:=#$b1;
WriteD(ReadD(2));
WriteD(47);
writeC(0);
writeC(24);
writeC(0);
writeC(0);
SendToServer;
end;
end.


Далее в текущем осединении во вкладке дополнительно выполняем скрипт, который присваивает текущему соединению имя:


begin

setname('ololoPRO100PWNZ')

end;


После выполнения в этой же вкладке запускаем другой скрипт, который отправляет сообщение на сервер.


VAR
name: string;

begin
name:=ConnectName;
buf:=Hstr('D0 00 00 F8 00 84 00 00 00 0D F0 0D F0');
SendToServerEX(name);
sendmsg(name) //Для проверки текущего состояния переменной name
end;


Если не закрывать клиент, все работет, пакеты отправляются но, стоит закрыть клиет так все, пакеты через команду SendToServerEX(name) не отправляются хотя через команду SendToServer все идет замечательно. Проверял переменную name, в ней все нормально, но пакеты не отправляются.

Голову себе уже сломал. В чем проблема? что я не так делаю?!? :confused:

J-Fobos
19.10.2012, 15:17
А если SetName выполнять после отсоединения клиента?

Кстати есть еще удобные переменные и функции
var UseForConnectName: string;
При задании данного значения привязывает имя определенного соединения к выполнению действий к определенному скрипту.
к примеру SendToServer при задании UseForConnectName := 'charname' будет выполняться как SendToServerEx('charname')
так же слудует учесть что тело скрипта будет запускаться только в случае прихода пакета от соединения с именем заданным в UseForConnectName


var UseForConnectID: Integer;
При задании действует аналогично UseForConnectName но для идентификатора соединения.

function ConnectNameByID(id:integer):string
получает имя соединения по его идентификатору


function ConnectIDByName(name:string):integer
Получает идентификатор соединения по его имени

DaveMorgan
19.10.2012, 16:44
С UseForConnectName:=name аналогичная ситуация, стоит закрыть клиент как все сразу летит к чертям :confused:

А если SetName выполнять после отсоединения клиента?


Пробовал как и для SendToServerEX() так и для UseForConnectName/ID(), ситуация не изменилась.

Я в отчаянии :cray:

supernewbie
19.10.2012, 20:25
Здравствуйте!

Ребят, столкнулся с такой проблемой.

На данный момент пишу скрипт на офлайн трейд бота на N количество окон. Хочу реализовать это все на l2phx.

Суть проблемы заключается в том, что команда SendToServerEX() и SendToClietnEX() не отправляет пакеты при закрытом клиенте и поддержании коннекта через команду NoCloseServerAfterClientDisconnect;

http://coderx.ru/showpost.php?p=41274&postcount=8

DaveMorgan
19.10.2012, 20:44
http://coderx.ru/showpost.php?p=41274&postcount=8

:o в каком-то из патчноутов я читал что для поддержания соединения достаточно одной команды!!! а тут такое)))))))

СПАСИБО!!!:)