Тема: radar + packetHack
Показать сообщение отдельно
Старый 14.05.2008, 13:45   #19
Пользователь
 
Аватар для APXAHGEJI
 
Регистрация: 08.03.2008
Сообщений: 77
Сказал Спасибо: 31
Имеет 19 спасибок в 15 сообщенях
APXAHGEJI
По умолчанию

Ды мне пох че на оффе.
С хп сам(а) написал(а) что работает, а не должно.
Такое ощущение ты вообщемто уже и не хочешь что бы заработало.
Повторяю самое главное это чтобы поступала инфа о о состоянии ЦП, все остальное мона переделать без проблем, а чтобы узнать поступает ли она втавь в скрипте:
Say(IntToStr(MaxCP));
Say(IntToStr(CurCP)); хотя нафиг тя, лучше сам напишу.
Код:
Const
  Name='Ник'; 
  Health= 101;
  ResCP= 101;
  GCP= 5592;//Greater CP Potion
  GHP= 1539;//Greater Healing Potion
  SHP= 1061;

Var
  NSHP, NGCP, NGHP, CharID, OidSHP, OidGHP, OidGCP,
  MaxHP, CurHP, MaxCP, CurCP, FirTargID, SecTargID, i, HP: Integer;
  TimerHP, TimerCP: TTimer;
  PressCTRL, Res, Switch: boolean;

//******************************************************************************
//                 Вызывается при включении скрипта
//******************************************************************************
procedure Init;
begin
  PressCTRL:= False;
  Res:= False;
  Switch:= False;
  FirTargID:= 0;
  SecTargID:= 0;
  NGCP:= 0;
  NGHP:= 0;
  NSHP:= 0;
  MaxHP:= 1;
  MaxCP:= 1;
  TimerHP:=TTimer.Create(nil);
  TimerHP.OnTimer:=@OnTimerHP;
  TimerHP.enabled:= False;
  TimerHP.interval:=15000;
  TimerCP:=TTimer.Create(nil);
  TimerCP.OnTimer:=@OnTimerCP;
  TimerCP.Enabled:= False;
  TimerCP.Interval:= 1000;
  buf:=#$0F;
  SendToServerEx(Name);
  Say ('Cпам ЦП и ХП выключен');
  Say ('ПВП режим не активен');
end;
//******************************************************************************

//******************************************************************************
//                 Вызывается при выключении скрипта
//******************************************************************************
procedure Free;
begin
  TimerHP.Free;
  TimerCP.Free;
end;
//******************************************************************************

//******************************************************************************
//             Посылаем сообщение, которое видно только в окне бота
//******************************************************************************
Procedure Say(msg:string);
begin
  buf:=hstr('4A 00 00 00 00');
  WriteD(2);
  WriteS(Name);
  WriteS(msg);
  SendToClientEx(Name);
end;
//******************************************************************************

//******************************************************************************
//                        Использование Вещей
//******************************************************************************
Procedure UseItem(OID: Integer);
begin
  buf:= #$14;
  WriteD(OID);
  WriteD(00);
  SendToServerEx(Name)
end;
//******************************************************************************

//******************************************************************************
//                        Востановление ХП
//******************************************************************************
Procedure OnTimerHP(Sender: TObject);
begin
  if Switch then begin
    UseItem (OidGHP);
    Dec (NGHP);
  end else begin
    UseItem (OidSHP);
    Dec (NSHP);
  end;
end;
//******************************************************************************

//******************************************************************************
//                        Востановление ЦП
//******************************************************************************
Procedure OnTimerCP(Sender: TObject);
begin
  UseItem (OidGCP);
  Dec (NGCP);
end;
//******************************************************************************


//******************************************************************************
//     Вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
Begin
  //****************************************************************************
  //****************************************************************************
  //Не обрабатываем пустые пакеты
  If pck='' then exit;
  //****************************************************************************
  //****************************************************************************

  //****************************************************************************
  //****************************************************************************
  //Обрабатываем пакеты от сервера
  If FromServer and (ConnectName=Name) then begin

    //**************************************************************************
    //Если от сервака принят пакет UserInfo.
    If (pck[1]=#$04) then begin
      CharID:= ReadD(18);
      i:= 2*(Length(Name))+ 72;
      MaxHP:= ReadD(i);
      CurHP:= ReadD(i);
      MaxCP:= ReadD(length(pck)-49);
      CurCP:= ReadD(length(pck)-45);
      Say(inttostr(MaxCP));
      Say(inttostr(CurCP));
      HP:= Round ((MaxHP/100)*Health);
    end;
    //**************************************************************************

    //**************************************************************************
    //Если от сервака принят пакет StatusUpdate.
    if (pck[1]=#$0E) and (pck[6]=#$04)then begin
      CurHP:=ReadD(14);
      MaxHP:=ReadD(22);
      CurCP:=ReadD(30);
      MaxCP:=ReadD(38);
      Say(inttostr(MaxCP));
      Say(inttostr(CurCP));
    end;
    //**************************************************************************

    //**************************************************************************
    //Записываем ObjectID всех нужных предметов
    if pck[1]=#$1B then begin
      for i:= 0 to round(length(pck)/36) do begin
        if (ReadH(i*36+4+8) = GCP) then begin
          OidGCP:= ReadD(i*36+8);
          NGCP:= ReadH(i*36+4+4+8);
        end;
        if (ReadH(i*36+4+8) = GHP) then begin
          OidGHP:= ReadD(i*36+8);
          NGHP:= ReadH(i*36+4+4+8);
        end;
        if (ReadH(i*36+4+8) = SHP) then begin
          OidSHP:= ReadD(i*36+8);
          NSHP:= ReadH(i*36+4+4+8);
        end;
      end;
    end;
    //**************************************************************************

  end;
  //****************************************************************************
  //****************************************************************************

  //****************************************************************************
  //****************************************************************************
  //Обрабатываем пакеты от клиента
  If FromClient and (ConnectName=Name) then begin

    //**************************************************************************
    //Уменьшеньки счетчика банок при использовании в игре
    if (pck[1]= #$14) then begin
      case ReadD(2) of
        OidGCP: Dec(NGCP);
        OidGHP: Dec(NGHP);
        OidSHP: Dec(NSHP);
      end;
    end;
    //**************************************************************************

    //**************************************************************************
    //Авто CTRL
    if PressCTRL then begin
      If(pck[1]=#$2F) then pck[6]:=#$01;
      If (pck[1]= #$04) or (pck[1]= #$0A) then begin
        FirTargID:= SecTargID;
        SecTargID:= ReadD(2);
        if (FirTargID = SecTargID) and (FirTargID<> 0) then pck[1]:=#$0A;
      end;
    end;
    //**************************************************************************

    //**************************************************************************
    //Управление
    if (pck[1]=#$38) and (pck[10]=#$03) then begin
      case ReadS(2) of
        '234': if Switch then begin
                 Say ('Врубили маленькие бутылки');
                 Switch:= False;
               end else begin
                 Say ('Врубили большие бутылки');
                 UseItem(OidGHP);
                 Switch:= True;
               end;
        '123': if Res then begin
                 Say ('Cпам ЦП и ХП выключен');
                 TimerHP.Enabled:= False;
                 TimerCP.Enabled:= False;
                 Res:= False;
               end else begin
                 Say ('Cпам ЦП и ХП включен');
                 Res:= True;
               end;
      end;
      pck:='';
      exit;
    end;
    //**************************************************************************

    //**************************************************************************
    //Активация ПВП режима
    if (pck[1]=#$57) then begin
      if PressCTRL then begin
        PressCTRL:= False;
        Say ('ПВП режим не активен');
      end else begin
        PressCTRL:= True;
        Say ('ПВП режим активен');
      end;
      pck:='';
      exit;
    end;
    //**************************************************************************

    //**************************************************************************
    //Уменьшеньки счетчика банок при использовании в игре
    if (pck[1]= #$14) then
      case ReadD(2) of
        OidGCP: Dec(NGCP);
        OidGHP: Dec(NGHP);
        OidSHP: Dec(NSHP);
      end;
    //**************************************************************************

  end;
  //****************************************************************************
  //****************************************************************************

  //****************************************************************************
  //****************************************************************************
  //Условия начала востановления, запуск вотсановления

  //****************************************************************************
  //If Res then begin
    //**************************************************************************
    //Активация востановления ЦП
    //if PressCTRL then begin
      If (((CurHP+CurCP)/(MaxHP+MaxCP)*100)<= ResCP) then
        if  (CurCP>0) and (NGCP>0) then begin
          if not TimerCP.Enabled then begin
            TimerCP.Enabled:= True;
            UseItem (OidGCP);
            Dec (NGCP);
          end;
        end;
      If (CurCP>=(MaxCP-200)) then
        if TimerCP.Enabled then TimerCP.Enabled:= False;
    //end;
    //**************************************************************************

    //**************************************************************************
    //Активация востановления ХП
    if (not TimerHP.Enabled) then begin
      if (CurHP <= HP) and (CurHP>0) then
        if Switch then begin
          if (NGHP>0) then begin
            TimerHP.Enabled:= True;
            UseItem (OidGHP);
            Dec (NGHP);
          end;
        end else
          if (NSHP>0) then begin
            TimerHP.Enabled:= True;
            UseItem (OidSHP);
            Dec (NSHP);
          end;
    end else if (CurHP=MaxHP) then TimerHP.Enabled:= False;
    //**************************************************************************
  //end;
  //****************************************************************************

  //****************************************************************************
  //****************************************************************************

End.
//******************************************************************************
APXAHGEJI вне форума   Ответить с цитированием