Цитата:
Сообщение от kamil
Напишите плиз небольшой примерчик чтобы можно было клиента вырубить, а перс все еще был бы на сервере....
|
Всё ниже перечисленное проверяем и используем на свой страх и риск!!!
Основные моменты скрипта для С4, С5, Т0:
delphi Код:
//***************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//***************************************************************
begin
//****************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//****************************************************************************
if (ConnectName=Name) and FromServer then begin
case pck[1] of
#$D3: begin // D3=NetPing:d(kID) на Нетпинг сервера шлем сохранённый пакет Нетпинга от клиента
//msg.Lines.Add('S>Пакет NetPing #$D3');
if LogOutOk then begin
buf:=NetPing;
SendToServerEx(Name);
//msg.Lines.Add('C>Пакет NetPing #$A8');
end;
end;
end;
end;
//****************************************************************************
if (ConnectName=Name) and FromClient then begin
case pck[1] of
#$09: begin //C>09=LogoutRequest - выходим ручками из клиента
//msg.Lines.Add('S>Пакет LogoutRequest #$09');
// вроде не надо тут их ставить?
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
pck:='';
// шлем s7E=LogOutOk, для отключения клиента
msg.Lines.Add('S>Пакет LogOutOk #$7E');
buf:=#$7E;
SendToClientEx(Name);
LogOutOk:=true;
end;
#$A8: begin // C>A8=NetPing:d(kID)d(PING)d(dta)
//msg.Lines.Add('C>Пакет NetPing #$A8');
NetPing:=pck; // запомним его
pck:='';
end;
#$1B: begin
//msg.Lines.Add('C>Пакет RequestSicialAction #$1B');
case ReadD(2) of
//социальное действие Yes для начала ловли
6: begin
//msg.Lines.Add('Отключили клиент из скрипта...');
//для версии 3.1.9+ можно попробовать отключить клиента
//Варнинг! Опасно для жизни! =)
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
LogOutOk:=true;
buf:=#$7E;
SendToClientEx(Name); // отключаем клиент
//msg.Lines.Add('S>Пакет LogOutOk #$7E');
//не передаем серверу социальное действие
pck:='';
end;
end;
end;
end; //case
end;
end.