составил вырезку из своего скрипта рыбалки (он умеет бить тех кто его ударил) Не проверял, но по идеи он должен бить тех кто нападает. Если нападет 2 моба он убьет одного, а потом когда его ударит другой переключится бить его.
delphi Код:
const
Name='Sinner';
var
underAttack : boolean; //находимся ли мы в бою
myX,myY,myZ: integer; //наши статы
myOID: integer;
AttackerOID: integer;
procedure Init;
begin
underAttack := false;
end;
procedure Free;
begin
end;
procedure UserInfo; //обновление данных о себе
var
i:word;
begin
MyOID:=ReadD(18);
MyX:=ReadD(2);
MyY:=ReadD(6);
MyZ:=ReadD(10);
end;
//1F=Action:d(ObjectID)d(OrigX)d(OrigY)d(OrigZ)c(ActionID)
procedure Target(Attacker: Integer);
begin
buf:=#$1F;
WriteD(Attacker);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(00);
SendToServerEx(Name);
delay(800);
end;
// вызывается при приходе каждого пакета, если скрипт включен
begin
//**************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit;
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//пакет Die (моб умер)
//00=Die:d(CharID)d(1)d(HasHideout)d(HasCastle)d(Flags)d(Sweepable)d(Access)
#$00: begin
if (AttackerOID=ReadD(2)) then begin
//мы убили свою цель
underattack:=false;
end;
if (MyOID=ReadD(2)) then begin //нас убили
//тут слудет остановить скрипт, что бы не палиться
end;
end;
#$32: UserInfo; //пакет с инфой о моём чаре
//************************************************************************
//s33=Attack:d(AttackerID)d(TargetID)d(Damage)c(Flags)d(X)d(Y)d(Z)h(HitsSize:Loop.01.0003)d(TargetID)d(Damage)c(Flags)
#$33: begin
if (MyOID=ReadD(6)) and (MyOID<>ReadD(2)) then begin //на нас напали
if not underattack then begin
underattack:=true;
//сохраним OID напавшего
AttackerOID:=ReadD(2);
Target(AttackerOID); //
Target(AttackerOID); //дабл клик по мобу, начинаем атаку
end;
end;
end;
end;
end;
end.