PDA

Просмотр полной версии : assist


Sashafaq
16.09.2009, 12:00
Вот кое как сдела скрипт для управления окнами лучиников
но оч тормозит обработка пакетов при масс замесе чую что можно както оптимизировать это дело )


var
IDPartyMember: String; //ИД командира
CoordLykX, CoordLykY, CoordLykZ :String; //координаты бота
CoordLytX, CoordLytY, CoordLytZ :String; //координаты бота
CoordKomandX, CoordKomandY, CoordKomandZ :String; // координаты командира
Mob, MobX, MobY, MobZ :String; // координаты моба и его ид
Lyk, Komandos, Lyt : String; // Имена


procedure bRun;
begin
//выделяем командира, эмулируя щелчек мыши
buf:=hstr('1F') + IDPartyMember + CoordLykX + CoordLykY + CoordLykZ + hstr('00');
SendToServerEX(Lyk);
buf:=hstr('1F') + IDPartyMember + CoordLykX + CoordLykY + CoordLykZ + hstr('00');
SendToServerEX(Lyk);
end;

procedure bRun1;
begin
//выделяем командира, эмулируя щелчек мыши
buf:=hstr('1F') + IDPartyMember + CoordLytX + CoordLytY + CoordLytZ + hstr('00');
SendToServerEX(Lyt);
//бежим за командиром эмулируя повторный щелчек мыши по таргету
buf:=hstr('1F') + IDPartyMember + CoordLytX + CoordLytY + CoordLytZ + hstr('00');
SendToServerEX(Lyt);
end;
procedure Assist;
begin
buf:=hstr('1F') + Mob + MobX + MobY + MobZ + hstr('00');
SendToServerEX(Lyk);
buf:=hstr('1F') + Mob + MobX + MobY + MobZ + hstr('00');
SendToServerEX(Lyk);
end;
procedure Assist1;
begin
buf:=hstr('1F') + Mob + MobX + MobY + MobZ + hstr('00');
SendToServerEX(Lyt);
buf:=hstr('1F') + Mob + MobX + MobY + MobZ + hstr('00');
SendToServerEX(Lyt);
end;


procedure Init; //Вызывается при включении скрипта
begin
Lyk:='Lyk';
Komandos:='Komand';
Lyt:='KLyt';
end;

Sashafaq
16.09.2009, 12:01
begin
if pck='' then exit;

//если от сервака принят пакет с ИД и Координатами членов пати то
if FromServer and (ConnectName=Komandos) and (pck[1]=#$BA) then
begin
//запоминаем ИД командира
IDPartyMember:=pck[6] + pck[7] + pck[8] + pck[9];
end;
//если принят пакет от сервера со сменой таргета командиром
if FromServer and (ConnectName=Lyk) and (pck[1]=#$23) and (pck[2] + pck[3] + pck[4] + pck[5] = IDPartyMember) then
begin
Mob:= pck[6] + pck[7] + pck[8] + pck[9];
MobX:= pck[10] + pck[11] + pck[12] + pck[13];
MobY:= pck[14] + pck[15] + pck[16] + pck[17];
MobZ:= pck[18] + pck[19] + pck[20] + pck[21];
end;
//если принят пакет от клиента с кординатами бафера то

if FromClient and (ConnectName=Lyk) and (pck[1]=#$59) then
begin
//запоминаем координаты
CoordLykX:= pck[2] + pck[3] + pck[4] + pck[5];
CoordLykY:= pck[6] + pck[7] + pck[8] + pck[9];
CoordLykZ:= pck[10] + pck[11] + pck[12] + pck[13];
end;
if FromClient and (ConnectName=Lyt) and (pck[1]=#$59) then
begin
//запоминаем координаты
CoordLytX:= pck[2] + pck[3] + pck[4] + pck[5];
CoordLytY:= pck[6] + pck[7] + pck[8] + pck[9];
CoordLytZ:= pck[10] + pck[11] + pck[12] + pck[13];
end;
//далее идут управляющие команды

//если КОМАНДИР пишет в любой чат цифру "1" бежим за ним
if FromClient and (ConnectName=Komandos)and (pck[1]=#$49) then
if (pck[2]=#$31) and (pck[3]=#$00) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
bRun;
bRun1;
exit;
end;
//если цифру 2 то берем асист по нему
if FromClient and (ConnectName=Komandos)and (pck[1]=#$49) then
if (pck[2]=#$32) and (pck[3]=#$00) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
Assist;
Assist1;
exit;
end;

// if FromClient and (ConnectName=Komandos)and (pck[1]=#$1f) and (pck[2] + pck[3] + pck[4] + pck[5] = Mob) then
// begin
// //убиваем этот пакет, чтоб сервер его не получил
// Assist;
// Assist1;
// exit;
// end;
// эта часть для авто асиста при отправке пакета атаки от командира
end.

2 часть скрипта

TAMBIK
16.09.2009, 12:15
const
myName = 'Lyk'; // Имя

//=====================================
procedure bRun;
begin
buf:=#$1F;
WriteD(IDPartyMember);
WriteD(CoordLykX);
WriteD(CoordLykY);
WriteD(CoordLykZ);
SendToServerEx(myName);
end;
//====================================
//если от сервака принят пакет с ИД и Координатами членов пати то
if FromServer and (ConnectName=Komandos) and (pck[1]=#$BA) then
begin
//запоминаем ИД командира
IDPartyMember:=ReadD(6);
end;
//если принят пакет от клиента с кординатами бафера то

if FromClient and (ConnectName=Lyk) and (pck[1]=#$59) then
begin
//запоминаем координаты
CoordLykX:=ReadD(2);
CoordLykY:=ReadD(6);
CoordLykZ:=ReadD(10);
end;

Sashafaq
16.09.2009, 12:25
если я так весь скрипт перепишу скорость обработки увеличится? а то если около 10 человек начинает сразу чето делать в радиусе начинаются задержки в ла 2 думаю из за медленной обдумки

Sashafaq
16.09.2009, 23:31
// Прописываем имена ботов сюда
const
Lyk = 'Bot2';
Komandos = 'Kom';
Lyt = 'Bot1';
var
IDPartyMember: integer; //ИД командира
CoordLykX, CoordLykY, CoordLykZ :Integer; //координаты бота
CoordLytX, CoordLytY, CoordLytZ :integer; //координаты бота
CoordKomandX, CoordKomandY, CoordKomandZ :integer; // координаты командира
Mob, MobX, MobY, MobZ :integer; // координаты моба и его ид

procedure bRun;
begin
buf:=#$1F;
WriteD(IDPartyMember);
WriteD(CoordLykX);
WriteD(CoordLykY);
WriteD(CoordLykZ);
WriteC(0);
SendToServerEX(Lyk);
buf:=#$1F;
WriteD(IDPartyMember);
WriteD(CoordLykX);
WriteD(CoordLykY);
WriteD(CoordLykZ);
WriteC(0);
SendToServerEX(Lyk);
end;
procedure bRun1;
begin
buf:=#$1F;
WriteD(IDPartyMember);
WriteD(CoordLytX);
WriteD(CoordLytY);
WriteD(CoordLytZ);
WriteC(0);
SendToServerEX(Lyt);
buf:=#$1F;
WriteD(IDPartyMember);
WriteD(CoordLytX);
WriteD(CoordLytY);
WriteD(CoordLytZ);
WriteC(0);
SendToServerEX(Lyt);
end;

procedure Assist;
begin
buf:=hstr('1F');
WriteD(Mob);
WriteD(MobX);
WriteD(MobY);
WriteD(MobZ);
WriteC(0);
SendToServerEX(Lyk);
end;

procedure Assist1;
begin
buf:=hstr('1F');
WriteD(Mob);
WriteD(MobX);
WriteD(MobY);
WriteD(MobZ);
WriteC(0);
SendToServerEX(Lyt);
end;

begin
if pck='' then exit;
//если от сервака принят пакет с ИД и Координатами членов пати то
if FromServer and (ConnectName=Komandos) and (pck[1]=#$BA) then
begin
//запоминаем ИД командира
IDPartyMember:=ReadD(6);
end;
//если принят пакет от клиента со сменой таргета командиром
if FromServer and (ConnectName=Lyk) and (pck[1]=#$23) and (ReadD(2) = IDPartyMember) then
begin
Mob:=ReadD(6);
MobX:=ReadD(10);
MobY:=ReadD(14);
MobZ:=ReadD(18);
end;
//записываем координаты бота при приходе пакета о изменении позиции
if FromClient and (ConnectName=Lyk) and (pck[1]=#$59) then
begin
CoordLykX:=ReadD(2);
CoordLykY:=ReadD(6);
CoordLykZ:=ReadD(10);
end;
// для второго бота
if FromClient and (ConnectName=Lyt) and (pck[1]=#$59) then
begin
CoordLytX:=ReadD(2);
CoordLytY:=ReadD(6);
CoordLytZ:=ReadD(10);
end;

if FromClient and (ConnectName=Komandos) and (pck[1]=#$49) then
if (pck[2]=#$31) and (pck[3]=#$00) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
bRun;
bRun1;
exit;
end;

if FromClient and (ConnectName=Komandos)and (pck[1]=#$49) then
if (pck[2]=#$32) and (pck[3]=#$00) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
Assist;
Assist1;
exit;
end;
end.