народ как говориться стоять зорька :) я выложу скрипт целиуом, а вы попробуйте заставить его работать динамически считывая ид чара :) просто динамически считывается другой пакет $48 (ид мой)(иди кого бафаем или убиваем) (ну и т.д.)( время каста)(время отката), И что получается когда я вбиваю ИД константой всё работает когда считываю не работает причём считывается всё верно.
Код:
const
PPbafer = 'НИК ТВОЕГО ПП';// ps если нет пп то юзаем чьи нибуть бафы но не меньше 5
buff =
['2F 3D 04 00 00 00 00 00 00 00 ', //Acumen
'2F 18 04 00 00 00 00 00 00 00 ', //BtS
'2F 15 04 00 00 00 00 00 00 00 ', //BtB
'2F 2C 04 00 00 00 00 00 00 00 ', //Might
'2F 10 04 00 00 00 00 00 00 00 ', //Shield
'2F 36 04 00 00 00 00 00 00 00 ', //concentration
'2F 35 04 00 00 00 00 00 00 00 ', //Focus
'2F DA 04 00 00 00 00 00 00 00 ', //DW
'2F D8 04 00 00 00 00 00 00 00 ', //Точночть
'2F B4 04 00 00 00 00 00 00 00 ', //WW
'2F 0C 04 00 00 00 00 00 00 00 ', // MB
'2F 0B 04 00 00 00 00 00 00 00 ', // Mental
'2F 3E 04 00 00 00 00 00 00 00 ', // Haste
'2F 48 05 00 00 00 00 00 00 00 ', // EP
'2F DB 04 00 00 00 00 00 00 00 ']; // щит
SS=0;
PPbaferID=1212167608;
var
prof,x,y, SkilID, SkilHIT,{PPbaferID} : integer;
timer1, timer2: TTimer;
Target: string;
procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(PPbafer);
WriteS(msg);
SendToClientEx(PPbafer);
end;
procedure Init; //Вызывается при включении скрипта
begin
//делаем таймер
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1;
timer1.enabled:=false;//по начал не баффаемся, толко по команде
timer1.interval:=200;// 0,2 секунды - начальный интервал таймера
end;
//procedure InitStats;
{begin
PPbaferID:=ReadD(18);
end; }
procedure OnTimer1(Sender: TObject);
begin
if x = 1 then
Say('Начинаем баффаццо');
buf:=hstr(buff[x]); //берем нужный элемент из массива
SendToServerEx(PPbafer);
inc(x); //увеличиваем х на 1
if x = 15 then
begin Say('Баффаццо вроде закончили');
Timer1.Enabled:=False; //закончили баффаццо - таймер отключили
x:=0;
end;
Say('x='+inttostr(x))// так что б мониторить измение в чате
end;
procedure Free; //Вызывается при выключении скрипта
begin
timer1.enabled:=false;
timer1.Free;
x:=0;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if pck='' then exit;
if FromServer and (ConnectName=PPbafer) and ((pck[1]=#$04) then InitStats;
if FromServer and (ConnectName=PPbafer) and ((pck[1]=#$48) and (ReadD(18)=SS)) then exit ;
if FromServer and (ConnectName=PPbafer) and ((pck[1]=#$48) and (ReadD(2)=PPbaferID)) then
begin
SkilHIT:=ReadD(18);
SkilID:= ReadD(10);
Timer1.Interval:=SkilHit+100; //ставим время отката скила +100 константа смешения тупо что б паузу сделать маленькую
Say('Скил='+inttostr(SkilID)); // иди скрипта так для самопроверке кстате можно тестить бафы на ускорение каста и шмот
Say('Откат='+inttostr(SkilHIT)); //время каста скила
end;
if FromClient and (pck[1]+pck[2]=#$38#$31) and (ConnectName=PPbafer) then //1- нажимаем в любой чат окуратней я пакет не убил
begin
prof:=1;
Timer1.Enabled:=True; //врубаем таймер
end;
if prof=1 then begin
y:=1;
prof:=0;
end;
// Say('ID'+inttostr(PPbaferID));
end.
и в крацее для чего нужен ИД бафера, постойте в геране или в зоне кача сколько летит пакетов $48 выделяем свой просто и скрипт работает прямо и не сбивается
Добавлено спустя 6 минут 30 секунд:
ну 2 варианта там где ид константа надо свой написать :) или закоментировать и попробовать профиксить ошибку которую я допустил не могу понять в чём она т.к. в тонкостях не разбираюсь и половину что вы тут написали просто не понял :cry: