хм извени твой скрипт для меня великовать не могу концов найти для смотри скрипт БД танцует нонстоп:
delphi Код:
const //баффы
b1='2F 0F 01 00 00 00 00 00 00 00'; // Wариор
b2='2F 13 01 00 00 00 00 00 00 00 '; // Хаст БД
b3='2F 36 01 00 00 00 00 00 00 00';
var
IDPartyMember, IDAssistTarget: String; //ИД командира и ИД его таргета и Собственный ИД
CoordBufX, CoordBufY, CoordBufZ :String; //координаты бота
NameBuffer, NameKomandos : String; // Имена
x: integer;
timer1: TTimer;
timer2: TTimer;
// ну процедура бега как я понял тупо таргет по командиру :)
procedure bRun;
begin
if (CoordBufX <> '') and (IDPartyMember <> '') then
begin
//выделяем командира, эмулируя щелчек мыши
buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');
SendToServerEX(NameBuffer);
//бежим за командиром эмулируя повторный щелчек мыши по таргету
buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');
SendToServerEX(NameBuffer);
end;
end;
//сам ребаф таймер и колисество наращиваем сами только копируя под цифрой один и ставим перед
// цифрой 3 ну и перебиваем соответвено что б не повторялись цыфры
procedure OnTimer(Sender: TObject);
begin
case x of
1: begin
buf:=hstr(b1);
SendToServerEx(NameBuffer);
x:=x+1;
end;
2: begin
buf:=hstr(b2);
SendToServerEx(NameBuffer);
x:=x+1;
end;
3: begin
buf:=hstr(b3);
SendToServerEx(NameBuffer);
x:=x+1;
end;
4: begin
bRun;
SendToServerEx(NameBuffer);
x:=x+1;
timer1.enabled:=false;
end;
5: begin
SendToServerEx(NameBuffer);
x:=0;
timer2.enabled:=false;
timer1.enabled:=false;//стацевали самое смешное как мне казалось реденса не должно быть
end;
end;
end;
procedure OnTimer2(Sender: TObject);
begin
timer1.enabled:=true;
x:=1;
end;
procedure Init; //Вызывается при включении скрипта
begin
NameBuffer:='xxZZxxZZxx'; //ну имя БД или свс у кого что есть
NameKomandos:='yyZZyyZZyy'; //командоса имя
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer;
timer1.enabled:=false;
timer1.interval:=3000;
x:=0;
timer2:=TTimer.Create(nil);
timer2.OnTimer:=@OnTimer2;
timer2.enabled:=false;
timer2.interval:=127000; // тут короче по формуле что б мана не летела у свса или бд
// кол. песен в бафе * 2000 +1000+120000 =2*2000+1000+120000=125000
end;
procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free;
timer2.Free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
// это часть для меня осталась тайна
begin
if pck='' then exit;
//если от сервака принят пакет с ИД и Координатами членов пати то
if FromServer and (pck[1]=#$a7) then
begin
//запоминаем ИД командира
IDPartyMember:=pck[6] + pck[7] + pck[8] + pck[9];
end;
//если принят пакет от клиента с кординатами бафера то
if FromClient and (ConnectName=NameBuffer) and (pck[1]=#$48) then
begin
//запоминаем координаты
CoordBufX:= pck[6] + pck[7] + pck[8] + pck[9];
CoordBufY:= pck[10] + pck[11] + pck[12] + pck[13];
CoordBufZ:= pck[14] + pck[15] + pck[16] + pck[17];
end;
//далее идут управляющие команды
// если КОМАНДИР пишет в пати чат цифру "4" (ребаф) как я понял это (pck[6]=#$03)
// ксли убрать этот байт то в любой, но кому как мне так удобней
if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
if (pck[2]=#$31) and (pck[3]=#$00) and (pck[4]=#$00) and (pck[5]=#$00)and (pck[6]=#$03) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
//Бафер БЕЖИТ за КОМАНДИРОМ
bRun;
//выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
exit;
end;
// если КОМАНДИР пишет в пати чат цифру "4" (ребаф) как я понял это (pck[6]=#$03)
// ксли убрать этот байт то в любой, но кому как мне так удобней
if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
if (pck[2]=#$34) and (pck[3]=#$00) and (pck[4]=#$00) and (pck[5]=#$00)and (pck[6]=#$03) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
timer1.enabled:=true;
timer2.enabled:=true;
x:=1;
//выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
exit;
end;
// вырубаем скрипт
if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
if (pck[2]=#$30) and (pck[3]=#$00) and (pck[4]=#$00) and (pck[5]=#$00)and (pck[6]=#$03) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
timer1.enabled:=false;
timer2.enabled:=false;
x:=1;
//выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
exit;
end;
end.[/code]
Добавлено через 8 минут
и по пунктам напиши что делает твой скрипт с первого приближения твои задачи можно проще реализовать.