Показать сообщение отдельно
Старый 17.03.2014, 14:08   #1
Новичок
 
Регистрация: 15.01.2009
Сообщений: 8
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
kristalik пока неопределено
По умолчанию Определение профессии врага

Помогите с элементарным скриптом на определение профессии врага для HF5. Поиск нашел нерабочие скрипты для IL. Заранее спасибо!

Или же подскажите, будет ли этот скрипт работать на HF5? (у меня на HF5 скрипт запускается, но в Showtab никакая информация не появляется)

Код:
//  автор ТАМБИК
//  грация финал
      const
  name = ' х '; // Имя 

   var
  Timer1: TTimer;
  myID:integer;
  mobID,mobX,mobY,mobZ:integer;
  myX,myY,myZ:integer;
  autoattacka,autoAction:boolean;

procedure SendMsg2(msg:string);
begin 
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClientEx(name);
end;
  procedure  RequestSocialAction;
           begin   
        CASE ReadD(2) OF
      25:begin
        autoattacka:=false;
        autoAction:=false;
        stopRadarControl;
         SendMsg2(' О Т К Л');
         pck:='';
         exit;
         end;
       24:begin 
         autoattacka:=true;
         SendMsg2(' В К Л');
         pck:='';
        exit;
      end;
 end;
 end;
 procedure OnTimer1(Sender: TObject);
  begin
     Action;
  end;
  procedure Action;
  begin
         buf:=#$1F;
         WriteD(mobID);
         WriteD(myX);
         WriteD(myY);
         WriteD(myZ); 
         WriteC(00);
         SendToServerEx(name);
        end; 
  procedure startPoisk;
  begin
         buf:=#$F1;
         WriteD(0);
         WriteD(1);
         WriteD(mobX);
         WriteD(mobY);
         WriteD(mobZ);
         SendToClientEx(name);
        end; 
procedure startAttacka;
        begin
        mobID:=ReadD(2);
               Action;
             startPoisk;
           autoAction:=false;
          if autoattacka then  
            Timer1.enabled:=true;
             end;
 procedure stopRadarControl;
       begin
       buf:=#$F1;
       WriteD(0);
       WriteD(1);
       WriteD(myX);
       WriteD(myY);
       WriteD(myZ);
       SendToClientEx(name);
            end; 
 procedure  ValidatePosition;
       begin
         myX:=ReadD(2);
         myY:=ReadD(6);
         myZ:=ReadD(10);
       end; 
 procedure Init;
  begin
  autoAction:=true;
  autoattacka:=false;
  timer1:=TTimer.Create(nil);
  timer1.OnTimer:=@OnTimer1;
  timer1.enabled:=false;
  timer1.interval:=1000;
  buf:=#$14;
  SendToServerEx(name);
  SendMsg2(' ВКЛ соцдействие ДА');
  SendMsg2('ОТКЛ соцдействие НЕТ');
  SendMsg2('TAMBIK');
  end;
  procedure Free; 
  begin
  timer1.free;
  end;
 
    begin
 if fromserver  and (pck[1]=#$32)  then begin//Tип: 0x32 (UserInfo)
      myID:=ReadD(18);
           end;
 if FromClient and (pck[1]=#$56) then RequestSocialAction; 
 if FromServer and autoAction and (pck[1]=#$33) and (ReadD(6)=myID) then startAttacka;
 if FromServer  and autoAction and (pck[1]=#$48)and(ReadD(2)<>myID)and(ReadD(6)=myID)then startAttacka;
 if FromServer and (pck[1]=#$00) and (ReadD(2)=mobID) then  begin
        autoAction:=true;
        stopRadarControl;
        timer1.enabled:=false;  
 if FromClient and (pck[1]=#$59) then  ValidatePosition;
   end;
 end.
Вот этот скрипт работает на моем HF5 определяет ХП и ЦП и пишет их в титуле врага. Как сделать тоже самое, только вместо ХП и ЦП выводилась вторая профессия врага в титуле или же в системный чат

Код:
Var
CurHP,MaxHP,CurCP,MaxCP,CurMP,MaxMP,objID: integer;

procedure Init;
begin

end;

procedure StatusUpdate;
var
  i: integer;
begin
  for i:=0 to ReadD(6)-1 do begin
    case pck[i*8+10] of
      #$09: CurHP:=ReadD(i*8+14);
      #$0A: MaxHP:=ReadD(i*8+14);
      #$0B: CurMP:=ReadD(i*8+14);
      #$0C: MaxMP:=ReadD(i*8+14);
      #$21: CurCP:=ReadD(i*8+14);
      #$22: MaxCP:=ReadD(i*8+14);
    end;
  end;
end;

procedure Free;
begin

end;

procedure OnConnect(WithClient: Boolean);
begin

end;

procedure OnDisonnect(WithClient: Boolean);
begin

end;

begin
   if fromserver and (pck[1]=#$18) then
      begin
         StatusUpdate;
         objID:=ReadD(2);

         buf:=#$CC;
         WriteD(objID);
         WriteS('CP:'+inttostr(CurCP)+'  HP:'+inttostr(CurHP));
         SendToClient;

      end;

end.
Добавлено через 9 часов 57 минут
Может кто-то желает за деньги этот скрипт сделать (ну и всякие модификации обсудим)?

Последний раз редактировалось kristalik, 17.03.2014 в 14:08. Причина: Добавлено сообщение
kristalik вне форума   Ответить с цитированием