Показать сообщение отдельно
Старый 08.02.2010, 10:18   #9
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 32
Сказал Спасибо: 0
Имеет 14 спасибок в 12 сообщенях
sinles пока неопределено
По умолчанию

составил вырезку из своего скрипта рыбалки (он умеет бить тех кто его ударил) Не проверял, но по идеи он должен бить тех кто нападает. Если нападет 2 моба он убьет одного, а потом когда его ударит другой переключится бить его.
delphi Код:
const   Name='Sinner'; var   underAttack : boolean//находимся ли мы в бою    myX,myY,myZ: integer;       //наши статы   myOID: integer;   AttackerOID: integer; procedure Init; begin   underAttack := false; endprocedure 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.
sinles вне форума   Ответить с цитированием