PDA

Просмотр полной версии : Отключение клиента. помогите разобратся!


Kvik
24.03.2013, 21:42
Делаю бота он должен виполнять определенние действия в игре сам штоб не нагружать сильно комп и била возможность запустить в окон так 5.
Порился на форуме по поводу команд NoFreeOnClientDisconnect и NoFreeOnServerDisconnect (версия L2phx 3.4.1.83 поетому немного команди другие) нашел такое:
begin
case pck[1] of
#$00: begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
pck:='';
buf:=#$84;
SendToClientEx(name);
end;
end;
Прилепил к примеру и для проверки к такому скрипту:
const
name='JPEG';

var
timer:TTimer;
TimerStep:byte;
IDObj:string;
procedure Init;
begin
TimerStep:=1;
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=False;
timer.interval:=5000;
end;

procedure Free;
begin
timer.free;
end;

procedure OnTimer;
begin
case TimerStep of
1:
begin
timer.interval:=5000;
buf:=Hstr('56 00 00 00 00 00 00 00 00 00');
SendToServerex(name);
Inc(TimerStep);
end;
2:
begin
buf:=Hstr('56 00 00 00 00 00 00 00 00 00');
SendToServerex(name);
TimerStep:=1;
timer.interval:=5000;
end;
end;
end;
begin
case pck[1] of
#$00: begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
pck:='';
buf:=#$84;
SendToClientEx(name);
end;
end;
timer.enabled:=true;
end.

сначала запустил во вкладке виполнить такое:
begin

setname('JPEG');

end.
потом включил виполнения основного скрипта написаного више етого, все вроде работает клиент убил через дистпетчер(хз так ли надо но через простой виход из игри не получилось), смотрел логи все работает получаю и отправляю пакети но одна проблема осталась в игру с другого акк зайти не могу тупо при виборе сервера стоит на месте, а в логе phx пишет постоянно про сокет которого не существует и оно чет там не может отправить.
Помогите пож ето исправить и как настроить а то хз как то точной инфи о NoFreeOnClientDisconnect и NoFreeOnServerDisconnect не нашел а че делать незнаю даже в чем причина. Мож надо какой то пакет отправлять или хз.

J-Fobos
27.03.2013, 23:21
Клиент отключается посылкой на него пакета дисконекта. Попробуйте не вырубать процесс игры, возможно проблема исчезнет.

kpa9pt
27.03.2013, 23:27
Чёрт а посложнее ничего не придумал?
Скопировал ( вроде это мой код я где-то выкладывал ) и там же видно, как только клиент отсылает пакет 00 - Logout то на клиент высылается пакет LeaveWorld при этом клиент закроется и соединение останется если будет строчка по типа NoClose.... от версии зависит.