Ошибка в том что пакеты в 2,7 длиннее на 2 байта
Для 2,5 будет так
Код:
//by Alatair_Alentus
var
s,t:tstringlist;
capture:byte;
c_name,debaf,debaf1:string;
Timer: TTimer;
Timer1: TTimer;
procedure init ;
begin
s:=tstringlist.create;
t:=tstringlist.create;
s.loadfromfile('d:\Programmi\l2phx.3.5.34.176\debaf.txt');
capture:=1;
Timer:=TTimer.Create(nil);
Timer.OnTimer:=@TimerOn;
Timer.interval:=3000;
Timer.enabled:=false;
Timer1:=TTimer.Create(nil);
Timer1.OnTimer:=@TimerOn1;
Timer1.interval:=3000;
Timer1.enabled:=false;
end;
procedure Free ;
begin
Timer.enabled:=false;
Timer1.enabled:=false;
end;
procedure check;
var
b,i:integer;
begin
b:=0;
t.clear;
for i:= 1 to readc(12) do
begin
t.add(inttostr(readh(18+b)));
b:=b+12;
end;
for i:=0 to s.count-1 do if t.indexof(s.names[i])>=0 then deldebaf(s.names[i]);
end;
procedure deldebaf(idn:string);
begin
if s.values[idn]='0' then
begin
buf:=HStr('D1 57 6E');
writeh(StrToInt(idn));
buf:=buf+HStr('00');
capture:=0;
SendToServer;
capture:=1;
buf:='';
idn:='';
end
else
begin
c_name:=ConnectName;
if Timer.enabled=true then
begin
debaf1:=idn;
Timer1.enabled:=true;
end
else
begin
debaf:=idn;
Timer.enabled:=true;
end;
end;
end;
procedure TimerOn;
begin
buf:=HStr('D1 57 6E');
writeh(StrToInt(debaf));
buf:=buf+HStr('00');
SendToServerEx(c_name);
buf:='';
Timer.enabled:=false;
end;
procedure TimerOn1;
begin
buf:=HStr('D1 57 6E');
writeh(StrToInt(debaf1));
buf:=buf+HStr('00');
SendToServerEx(c_name);
buf:='';
Timer1.enabled:=false;
end;
procedure cap(c:byte);
begin
capture:=c;
pck:='';
end;
begin
if FromClient and (pck[1]=HStr('b9')) then //Чат
case reads(5) of
'.baf_on': cap(1);
'.antidebaf_off': cap(0);
end;
if FromServer and (capture=1) and(pck[1]=HStr('51')) then check;
end.
Жаль , но ни каких изменений не произошло, автоматом ничего не снимается , видимо фикс :-( . Снимается только скиллами [Ссылки могут видеть только зарегистрированные пользователи. ] и [Ссылки могут видеть только зарегистрированные пользователи. ]
есть идея использовать снятия сна, колясок с 5 сек задержкой в авто режиме.
просто дополнительно добавь проверку на коляски т.д. и меняй таймер на 5 сек, а потом обратно в нужное значение
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Затыкай меня спасибками Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
я говорил про упрощение, достаточно менять таймеренебл значение, а не 2 процедуру создавать.
А по поводу лучше читать, проверь скрит получше) у тебя таймеры с одинаковыми значениями мс
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Затыкай меня спасибками Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Используешь последнюю версию скрипта? проверь файл вот примерВложение 30283
Проверь у тебя на сервере такие пакеты как и у скрипте
да последняя
Код:
//by Alatair_Alentus
//AntiDebaf_v1.02
var
s,t:tstringlist;
capture:byte;
c_name:string;
Timer: array[1..10] of TTimer;
param: array[1..10] of integer;
procedure init ;
begin
s:=tstringlist.create;
t:=tstringlist.create;
s.loadfromfile('debaf.txt');
capture:=1;
end;
procedure Free ;
begin
end;
procedure check;
var
b,i:integer;
begin
b:=0;
t.clear;
for i:= 1 to readc(14) do
begin
t.add(inttostr(readh(20+b)));
b:=b+12;
end;
for i:=0 to s.count-1 do if t.indexof(s.names[i])>=0 then deldebaf(s.names[i]);
end;
procedure deldebaf(idn:string);
var
tm:string;
pause,i:integer;
begin
for i:=pos(' ',s.values[idn])-1 downto 1 do
tm:=s.values[idn][i]+tm;
pause:=StrToInt(tm);
tm:='';
if pause=0 then
begin
buf:=HStr('CA 00 57 69 FF E8 26 00');
writeh(StrToInt(idn));
buf:=buf+HStr('00');
capture:=0;
SendToServer;
capture:=1;
buf:='';
idn:='';
end
else
begin
c_name:=ConnectName;
for i:=1 to 10 do
begin
if Timer[i]=nil then
begin
Timer[i]:=TTimer.Create(nil);
param[i]:=StrToInt(idn);
Timer[i].OnTimer:=@TimerOn;
Timer[i].interval:=pause;
Timer[i].tag:=i;
Timer[i].enabled:=true;
Break;
end;
end;
end;
end;
procedure TimerOn(Sender:TTimer);
begin
buf:=HStr('CA 00 57 69 FF E8 26 00'); // пакет на снятие свитка ускорение
writeh(param[sender.tag]);
buf:=buf+HStr('00');
SendToServerEx(c_name);
buf:='';
sender.enabled:=false;
sender.Free;
end;
procedure cap(c:byte);
begin
capture:=c;
pck:='';
end;
begin
if FromClient and (pck[1]=HStr('b2')) then
case reads(7) of
'/antidebaf_on': cap(1); / потомучто не робят команды с . на сервере
'/antidebaf_off': cap(0);
end;
if FromServer and (capture=1) and(pck[1]=HStr('51')) then check;
end.