Показать сообщение отдельно
Старый 21.10.2007, 01:37   #42
Новичок
 
Регистрация: 21.10.2007
Адрес: MockBa
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
DO12
По умолчанию

Собсно здрасте!)
Я люблю рыбалку... (с) Не помню откуда
Так вот, использую скрипт на рыбалку в таком виде + к ниму скрипт на хилки
Код:
//Автоматизация ловли рыбы by NLObP

//Работа проверена на L2C4 Protocol 660 LocalServer "L2J FORTRESS"

//Необходимо затариться удочкой и крючками
//выучить соответствующие скиллы
//Социальное действие YES  - начать
//Социальное действие NO  - остановиться
//Enjoy!

//      Disclaimer of Warranty. Unless required by applicable law or
//      agreed to in writing, Licensor provides the Work (and each
//      Contributor provides its Contributions) on an "AS IS" BASIS,
//      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//      implied, including, without limitation, any warranties or conditions
//      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
//      PARTICULAR PURPOSE. You are solely responsible for determining the
//      appropriateness of using or redistributing the Work and assume any
//      risks associated with Your exercise of permissions under this License.

const
  fish='2F 20 05 00 00 00 00 00 00 00';
  pump='2F 21 05 00 00 00 00 00 00 00';
  reel='2F 22 05 00 00 00 00 00 00 00';

var
  Cmd:String;
  timer1: TTimer;
  status:boolean;
  Attacker, CharID, ObjectID, SocialID, ItemID, CoordX, CoordY, CoordZ: Integer;

procedure Init; //Вызывается при включении скрипта
begin
  ItemID:=0;
  timer1:=TTimer.Create(nil);
  timer1.OnTimer:=@OnTimer1;
  timer1.enabled:=false;
  timer1.interval:=1800; //время задержки
  //SendMsg('Начало ловли рыбы социальное действие Yes');
end;

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

procedure SendMsg(msg:string);
begin
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClient;
end;

procedure TargetAttacker(Attacker: Integer);
begin
    SendMsg('AttackerID='+IntToStr(Attacker)+' PlayerID='+IntToStr(CharID));
    timer1.enabled:=false;
    buf:=#$04;
    WriteD(Attacker);
    WriteD(CoordX);
    WriteD(CoordY);
    WriteD(CoordZ);
    WriteC(00);
   SendToServer;
end;

Procedure SaveCoord;
var
 i: integer;
begin
  //запоминаем свои координаты
  i:=2;
  CoordX:=ReadD(i);
  CoordY:=ReadD(i);
  CoordZ:=ReadD(i);
end;

procedure Fishing;
begin
  buf:=HStr(fish);
  SendToServer;
end;

procedure FishShot;
begin
    buf:=#$14;
    WriteD(ItemID);
    WriteD(00);
    SendToServer;
end;

procedure Pumping;
begin
  FishShot;
  buf:=HStr(pump);
  SendToServer;
end;

procedure Reeling;
begin
  FishShot;
  buf:=HStr(reel);
  SendToServer;
end;

procedure OnTimer1(Sender: TObject);
begin
    Fishing;
    timer1.enabled:=false;
    //SendMsg('Fishing');
end;

//******************************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
  //не обрабатываем пустые пакеты
  if pck='' then exit;
  //****************************************************************************
  //Первым делом включаем Fishing Shot
  if FromServer and (pck[1]=#$27) and (ItemID=0) then begin //idItem'a который мы хотим юзать
    ItemID:=ReadD(8);
  end;
  if FromServer and (pck[1]=#$04) then
    CharID:=ReadD(18);
  if FromClient and (pck[1]=#$1B) then
    begin
      SocialID:=ReadD(2);
      case SocialID of
        //социальное действие Yes для начала ловли
        6:begin
          Status:=true;
          Fishing;
        end;
        //социальное действие No для окончания
        5:begin
          Status:=false;
          timer1.enabled:=false;
        end;
      end;
    end;
    if Status=true then begin
       //MagicSkillUse 48, Attack 05
       if FromServer and ((pck[1]=#$48) or (pck[1]=#$05)) then begin
          Attacker:=ReadD(2);
          ObjectID:=ReadD(6);
       end;
       //пакет ValidatePosition с кординатами
       if FromClient and (pck[1]=#$48) then SaveCoord;
       //Если мы попали в таргет или атакуемся магией
       //if (Attacker<>ObjectID) and (CharID=ObjectID) then TargetAttacker(Attacker);
       //FishinHPRegen
       if FromServer and (pck[1]+pck[2]=#$FE#$16) and (pck[16]=#$00) then Pumping;
       if FromServer and (pck[1]+pck[2]=#$FE#$16) and (pck[16]=#$01) then Reeling;
       //FishingEnd
       if FromServer and (pck[1]+pck[2]=#$FE#$14) then timer1.enabled:=true;
    end
    else exit;
end.
Рыба ловится не взирая на вылезающих мобов, всё казалось бы зашибись, кроме одного, достаточно часто вылезают 2 моба под ряд (Одного моба протягивает простая хилка), и всёб хорошо, грейтер хилка их протягивает, но я ЖАДНЫЙ и мне не хочется трарить денюжки заработаные не честным путём на то, чтоб заробатывать дальше)
Вопрос заключается в следующем: Возможно ли сделать так, чтобы когда значение ХП было ниже максимума, рыба ловиься переставала, и снова начинала при полном восстановлении?
DO12 вне форума   Ответить с цитированием