Перейти к содержанию
Форум шарда Middle-Earth

nepret

nepret
  • Публикаций

    274
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные nepret


  1. если не убирать продажу руды вендорам, то можно ставить

    ultimate power scroll - 1.5кк~

    greater power scroll - 1.25кк~

    power scroll - 1кк~

     

    итого: 3.75кк на тот же мининг, это примерно с 33 до 100 в скилле

     

    а если учесть ещё и продажу рыбы\регов\логов игрокам, это не плохой шанс вывести большое количество денег из оборота

     

    в принципе, если ставить вендора, то мобов чамп-стона можно оставить в покое


  2. Переработка обуви.

     

    Ищет тапки в бекпаках на земле, берёт по 1 штуке, режет на кожу

     

    В бекпаках иметь:

     

    Много много ножниц

    еду

     

    Инклюды:

    {$Include 'hungry.inc'}

     

    Program Processing_Boots;
    
    var
    Bag : array [0..225] of cardinal;
    BagCount, BagNum : integer;
    
    {$Include 'hungry.inc'}
    
    function CheckAllBag : Boolean;
    var
    i, bc : integer;
    begin
      FindTypeEx($0E75, $FFFF, Ground, false);
      if FindCount > 0 then
        begin
          bc := FindCount;
          for i := 0 to bc - 1 do
            begin
              FindTypeEx($0E75, $FFFF, Ground, false);
              Bag[i] := finditem;
              Ignore(finditem);
              BagCount := BagCount + 1;
            end;
          if BagCount < 1 then
            begin
              AddToSystemJournal('На земле не найдено сумок.');
              exit;
            end;
          BagCount := BagCount - 1;
        end;
      result := true;
    end;
    
    procedure OpenBag (IDBag : cardinal);
    begin
      if LastContainer <> IDBag then
        begin
          repeat
            UseObject(IDBag);
            wait(1000);
          until LastContainer = IDBag;
        end;
    end;
    
    function ProcBoot (TypeRes : integer) : Boolean;
    var
    time : TDateTime;
    begin
      FindTypeEx(TypeRes, $FFFF, backpack, false);
      if FindCount > 0 then
        begin
          repeat
            FindTypeEx($0F9E, $FFFF, backpack, false);
            if FindCount < 1 then exit;
            if FindCount > 0 then
              begin
                time := Now;
                if TargetPresent then CancelTarget;
                UseType($0F9E, $FFFF);
                WaitForTarget(30000);
                FindTypeEx(TypeRes, $FFFF, backpack, false);
                WaitTargetObject(finditem);
                repeat
                  wait(100);
                until InJournalBetweenTimes('You could make|О нет, вы сломали', time, Now) <> -1;
              end;
            FindTypeEx(TypeRes, $FFFF, backpack, false);  
          until FindCount < 1;
        end;
      result := true;
    end;
    
    procedure GetBoot;
    var
    i : integer;
    Item : array [0..7] of cardinal;
    begin
      Item[0] := $170A; //тапки
      Item[1] := $170B;
      Item[2] := $170C;
      Item[3] := $170D;
      Item[4] := $170E;
      Item[5] := $170F;
      Item[6] := $1710;
      Item[7] := $1711;
      
      for i := 0 to 7 do
        begin
          repeat
            if not ProcBoot(Item[i]) then
              begin
                AddToSystemJournal('В бекпаке нет ножниц!');
                exit;
              end;
            OpenBag(Bag[BagNum]);
            FindTypeEx(Item[i], $FFFF, Bag[BagNum], False);
            if FindCount > 0 then
              begin
                MoveItem(finditem, 0, backpack, 0,0,0);
                CheckLag(1000);
                Hungry(backpack);
              end;
          until FindCount < 1;
        end;
    end;
    
    
    
    begin
      if not CheckAllBag then exit;
      repeat
        GetBoot;
        BagNum := BagNum + 1;
      until BagNum > BagCount;
      if BagNum > BagCount then AddToSystemJournal('В контейнерах больше нет обуви.');
    end.
     

  3. Подбираем все ботинки найденные в радиусе 2 тайла.

     

    В бекпаке иметь:

     

    Побольше сумок типа "Бекпак".

     

    Скрипт автоматически перебрасывает обувь в сумку, если та заполниться, начинает кидать шузы в другую сумку... и так далее пока не подберёт все тапки

     

    Program Get_Boots;
    
    var
    Bag : array [0..225] of cardinal;
    BagCount, BagNum : integer;
    time : TDateTime;
    
    function CheckAllBag : Boolean;
    var
    i, bc : integer;
    begin
      FindTypeEx($0E75, $FFFF, Backpack, false);
      if FindCount > 0 then
        begin
          bc := FindCount;
          for i := 0 to bc - 1 do
            begin
              FindTypeEx($0E75, $FFFF, Backpack, false);
              Bag[i] := finditem;
              Ignore(finditem);
              BagCount := BagCount + 1;
            end;
          if BagCount < 1 then
            begin
              AddToSystemJournal('В бекпаке не найдено сумок.');
              exit;
            end;
          BagCount := BagCount - 1;
        end;
      result := true;
    end;
    
    function CheckBag : Boolean;
    begin
      checklag(10);
      if InJournalBetweenTimes('That item is too heavy for the container or the container is full.', time, Now) <> -1 then BagNum := BagNum + 1;
      if BagNum > BagCount then exit;
      result := true;
    end;
    
    procedure GetBoot;
    var
    i : integer;
    Item : array [0..7] of cardinal;
    begin
      Item[0] := $170A; //тапки
      Item[1] := $170B;
      Item[2] := $170C;
      Item[3] := $170D;
      Item[4] := $170E;
      Item[5] := $170F;
      Item[6] := $1710;
      Item[7] := $1711;
      
      for i := 0 to 7 do
        begin
          repeat
            FindTypeEx(Item[i], $FFFF, Ground, False);
            if FindCount > 0 then
              begin
                time := Now;
                MoveItem(finditem, 0, Bag[BagNum], 0,0,0);
                if not CheckBag then
                  begin
                    AddToSystemJournal('Все бекпаки переполнены!');
                    exit;
                  end;
              end;
          until FindCount < 1;
        end;
      AddToSystemJournal('На полу больше нет обуви.');
    end;
    
    
    begin
      if not CheckAllBag then exit;
      GetBoot;
      AddToSystemJournal('Конец скрипта.');
    end.


  4. Ловля БП сетью.

    В бекпаке иметь:

    сеть, еда

     

    инклюды:

    {$Include 'CheckSave.inc'};

    {$Include 'Hungry.inc'};

    {$Include 'waitconnection.inc'};

     

    Program Fishing_GetBP;
    type
      TileRecord = Record
      t,x,y : integer;
    end;
    var
    TileCount, FishingDistance : integer;
    Tile : array [0..5000] of TileRecord;
    uh, dh, enter, tab : String;
    {$Include 'CheckSave.inc'};
    {$Include 'Hungry.inc'};
    {$Include 'waitconnection.inc'};
    
    function CheckTarget(SecTime : integer) : Boolean;
    var
    t : integer;
    begin
      SecTime := SecTime * 10;
      t := 0;
      repeat
        if not Connected then exit;
        checksave;
        wait(100);
        t := t + 1;
      until TargetPresent or (t >= SecTime);
      if t >= SecTime then result := false;
      if not Connected then exit;
      if TargetPresent then result := true;
    end;
    
    procedure OpenBackpack;
    begin
      if (LastContainer <> Backpack) and (dead = false) then
        begin
          repeat
            if not Connected then exit;
            Checksave;
            UseObject(Backpack);
            wait(1000);
          until LastContainer = Backpack;
        end;
    end;
    
    procedure SetSayinfo;
    begin
      uh := #13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#9#9#9#9
    ;
      dh := #13#10#13#10#13#10;
      enter := #13#10;
      tab := '#9';
    end;
    
    procedure EndScript;
    begin
      if not GetPauseScriptOnDisconnectStatus then SetPauseScriptOnDisconnectStatus(true);
      SetARStatus(false);
      Disconnect;
      AddToSystemJournal(uh+'>>>>>> Перезапусти скрипт! <<<<<<'+dh);
      repeat
        wait(100);
      until false;
    end;
    
    procedure CheckDead;
    begin
      if Dead then
        begin
          AddToSystemJournal('Я мёртв!');
          EndScript;
        end;
    end;
    
    procedure CheckDuble;
    var
    i, i0 : integer;
    begin
      if not Connected then exit;
      CheckDead;
      AddToSystemJournal('Отсееваем дубликаты и пустые тайлы...');
      for i := 0 to TileCount do
        begin
          for i0 := i+1 to TileCount do
            begin
              if (Tile[i].x = Tile[i0].x) and (Tile[i].y = Tile[i0].y) and (Tile[i].x > 0) and (Tile[i].y > 0) then
                begin
                  Tile[i0].x := 0;
                  Tile[i0].y := 0;
                end;
            end;
        end;
      for i := 0 to TileCount do
        begin
          if (Tile[i].x = 0) and (Tile[i].y = 0) then
            begin
              i0 := i;
              while i0 <= TileCount do
                begin
                  Tile[i0].x := Tile[i0+1].x;
                  Tile[i0].y := Tile[i0+1].y;
                  i0 := i0 + 1;
                end;
              TileCount := TileCount - 1;
            end; 
        end;
      AddToSystemJournal('После отсеевания осталось: '+IntToStr(TileCount)+'.');
    end;
    
    function SearchPoint : Boolean;
    var
    a : TFoundTilesArray;
    TyleType : array [0..9] of cardinal;
    b, i, i0, StartX, StartY, check : integer;
    begin
      if not Connected then exit;
      CheckDead;
      TyleType[0] := 6039;
      TyleType[1] := 6040;
      TyleType[2] := 6041;
      TyleType[3] := 6042;
      TyleType[4] := 6043;
      TyleType[5] := 6044;
      TyleType[6] := 16368;
      TyleType[7] := 16369;
      TyleType[8] := 0;
      TyleType[9] := 16011;
      AddToSystemJournal(dh);
      AddToSystemJournal('Ищем тайлы с водой...');
      StartX := GetX(Self);
      StartY := GetY(Self);
      for i := 0 to 9 do
        begin
          b:= GetStaticTilesArray(StartX-FishingDistance,StartY-FishingDistance,StartX+FishingDistance,StartY+FishingDistance, WorldNum, TyleType[i], a);
          if b > 0 then
            begin
              for i0 := 0 to b do
                begin
                  Tile[TileCount].t := a[i0].Tile;
                  Tile[TileCount].x := a[i0].X;
                  Tile[TileCount].y := a[i0].Y;
                  TileCount := TileCount + 1;
                end;
            end;
        end;
      if TileCount > 0 then check := TileCount + 1;
      AddToSystemJournal('Нашли тайлов: '+IntToStr(check)+'.');
        if TileCount <= 0 then exit;
      CheckDuble;
      result := True;
    end;
    
    procedure CheckItem;
    begin
      FindTypeEx($0DC8, $FFFF, Backpack, False);
      if FindCount < 1 then EndScript;
    end;
    
    
    procedure StartFishing;
    var
    i, t : integer;
    time : TDateTime;
    begin
      for i := 0 to TileCount do
        begin
          if not Connected then exit;
          CheckDead;
          CheckSave;
          Hungry(Backpack);
          repeat
            CheckItem;
            CancelTarget;
            UseType($0DC8, $FFFF);
            CheckTarget(5);
            if not Connected then exit;
            CheckDead;
          until TargetPresent;
          time := Now;
          TargetToTile(Tile[i].t, Tile[i].x, Tile[i].y, -254);
          CheckLag(10);
          t := 0;
          repeat
            wait(100);
            t := t + 1;
            CheckSave;
            if not Connected then exit;
            CheckDead;
          until (InJournalBetweenTimes('just got|Nothing|Это слишком далеко|Здесь больше нет жемчуга', time, Now) <> -1) or (t >= 200);
          if FoundedParamID <= 1 then i := i - 1;
        end;
    end;
    
    begin
      SetARStatus(true);
      SetPauseScriptOnDisconnectStatus(false);
      if not Connected then waitconnection(10);
      FishingDistance := 4;
      SetSayinfo;
      SearchPoint;
      repeat
        if not Connected then waitconnection(10);
        StartFishing;
      until false;
    end.
     

     


  5. В бекпаке иметь:

    Бочку Trash

    Еду

    Удочки(много)

     

    инклюды:

    {$Include 'CheckSave.inc'};

    {$Include 'Hungry.inc'};

    {$Include 'waitconnection.inc'};

     

    Скрипт автоматически ищет тайлы с водой

    Всю пойманную рыбу и обувь, скидывает под ноги

    Карты и сос-бутылки перекидывает в треш-бочонок

     

    АХТУНГ! Ловить только в море! Это связано с тем, что возле берега, другие типы тайлов. Искать и добавлять их в массив мне было откровенно влом (их около 20-30 штук)

     

    Program Fishing;
    
    type
      TileRecord = Record
      t,x,y : integer;
    end;
    var
    Tile : array [0..5000] of TileRecord;
    TileCount : integer;
    b : TMapCell;
    uh, dh, enter, tab : String;
    {$Include 'CheckSave.inc'};
    {$Include 'Hungry.inc'};
    {$Include 'waitconnection.inc'};
    
    function CheckTarget(SecTime : integer) : Boolean;
    var
    t : integer;
    begin
      SecTime := SecTime * 10;
      t := 0;
      repeat
        if not Connected then exit;
        checksave;
        wait(100);
        t := t + 1;
      until TargetPresent or (t >= SecTime);
      if t >= SecTime then result := false;
      if not Connected then exit;
      if TargetPresent then result := true;
    end;
    
    procedure OpenBackpack;
    begin
      if (LastContainer <> Backpack) and (dead = false) then
        begin
          repeat
            if not Connected then exit;
            Checksave;
            UseObject(Backpack);
            wait(1000);
          until LastContainer = Backpack;
        end;
    end;
    
    procedure SetSayinfo;
    begin
      uh := #13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#9#9#9#9
    ;
      dh := #13#10#13#10#13#10;
      enter := #13#10;
      tab := '#9';
    end;
    
    procedure EndScript;
    begin
      if not GetPauseScriptOnDisconnectStatus then SetPauseScriptOnDisconnectStatus(true);
      SetARStatus(false);
      Disconnect;
      AddToSystemJournal(uh+'>>>>>> Перезапусти скрипт! <<<<<<'+dh);
      repeat
        wait(100);
      until false;
    end;
    
    procedure CheckDead;
    begin
      if Dead then
        begin
          AddToSystemJournal(dh+'Я мёртв!');
          EndScript;
        end;
    end;
    
    procedure SearchPoint;
    var
    x, y, i, i0 : integer;
    ArrayTile : array [0..5] of integer;
    begin
      ArrayTile[0] := 168;
      ArrayTile[1] := 169;
      ArrayTile[2] := 170;
      ArrayTile[3] := 171;
      ArrayTile[4] := 310;
      ArrayTile[5] := 311;
      if not Connected then exit;
      CheckDead;
      AddToSystemJournal(uh);
      AddToSystemJournal('Ищем воду в радиусе 6 тайлов...');
      for x := GetX(self)-6 to GetX(self)+6 do
        begin
          for y := GetY(self)-6 to GetY(self)+6 do
            begin
              b := GetMapCell(x, y, WorldNum);
              for i := 0 to High(ArrayTile) do
                begin
                  if b.Tile = ArrayTile[i] then
                    begin
                      Tile[i0].t := b.Tile;
                      Tile[i0].x := x;
                      Tile[i0].y := y;
                      break;
                    end;  
                end;
              if Tile[i0].t > 0 then
                begin
                  TileCount := TileCount + 1;
                  i0 := i0 + 1;
                end;
            end; 
        end;
      AddToSystemJournal('Нашли тайлов: '+IntToStr(TileCount)+'.');
      if TileCount = 0 then EndScript;
      AddToSystemJournal('Рыбачим...'+dh);
    end;
    
    procedure CheckItem;
    var
    i, Trash : integer;
    Item : array [0..13] of cardinal;
    begin
      Item[0] := $170A; //тапки
      Item[1] := $170B;
      Item[2] := $170C;
      Item[3] := $170D;
      Item[4] := $170E;
      Item[5] := $170F;
      Item[6] := $1710;
      Item[7] := $1711;
      Item[8] := $0DC8; //сети
      Item[9] := $14ED; //карты
      Item[10] := $099F; //бутылки
      Item[11] := $09CC; //рыба
      Item[12] := $09CD;
      Item[13] := $09CE;
      if not Connected then exit;
      CheckDead;
      OpenBackpack;
      FindTypeEx($0E77, $FFFF, Backpack, False);
      if FindCount < 1 then
        begin
          AddToSystemJournal('Нет бочки Trash.');
          EndScript;
        end;
      Trash := finditem;
      for i := 0 to 13 do
        begin
          repeat
            FindTypeEx(Item[i], $FFFF, Backpack, False);
            if FindCount > 0 then
              begin
                if (i < 8) or (i > 10) then MoveItem(finditem, 0, Ground, 0,0,0);
                if (i >=8) and (i <= 10) then MoveItem(finditem, 0, Trash, 0,0,0);
                if not Connected then exit;
                CheckDead;
                CheckSave; 
                CheckLag(10);
              end;
          until FindCount < 1;
        end;
    end;
    procedure UsePole;
    begin
      if not Connected then exit;
      CheckDead;
      if ObjAtLayer(LhandLayer) <= 0 then
        begin
          OpenBackpack;
          FindTypeEx($0DBF, $FFFF, Backpack, False);
          if FindCount < 1 then
            begin
              AddToSystemJournal('Нет удочек.');
              EndScript;
            end;
          UseType($0DBF, $FFFF); 
        end
      else
        begin
          UseObject(ObjAtLayer(LhandLayer));
        end;
    end;
    
    procedure StartFishing;
    var
    i, t : integer;
    time : TDateTime;
    begin
      for i := 0 to TileCount-1 do
        begin
          if not Connected then exit;
          CheckDead;
          CheckSave;
          CancelTarget;
          Hungry(Backpack);
          t := 0;
          repeat
            CancelTarget;
            if t >= 5 then wait(5000);
            UsePole;
            if not Connected then exit;
            CheckDead;
            CheckTarget(5);
            if not Connected then exit;
            CheckDead;
            t := t + 1;
          until TargetPresent;
          time := Now;
          TargetToTile(0, Tile[i].x, Tile[i].y, -254);
          CheckLag(10);
          t := 0;
          repeat
            wait(100);
            t := t + 1;
            CheckSave;
            if not Connected then exit;
            CheckDead;
          until (InJournalBetweenTimes('That is too far away|There doesn|I am already doing|You find|You catch|They don', time, Now) <> -1) or (t >= 200);
          if FoundedParamID >= 3 then i := i - 1;
        end;
    end;
    
    begin
      SetARStatus(true);
      SetPauseScriptOnDisconnectStatus(false);
      if not Connected then waitconnection(5000);
      SetSayinfo;
      SearchPoint;
      repeat
        if not Connected then waitconnection(5000);
        CheckItem;
        StartFishing;
      until false;
      
    end.
     

     


  6. титаны, хз, титаны на чампе... звери...

     

    болие того, кому я гп то продам? вендоры их не скупают, игрокам это г нахрен не нужно

     

    Новичкам будет сложно но за то будет цель собрать свою команду или в ступить уже имеющиеся!

    из кого собрать то?

     

    в чужой гильде тебе никто помогать не собирается... надо выбить скролы? иди сам выбивай...


  7. не ребят... вы спорите но не о том... поставте себя на место пришедшего\вернувшегося игрока...

    лично я пришел один, мне нескем фармить эти скролы, мне негде их купить

    а бегать в одно рыло в сраном валорите с трихард композитом... увольте!

    да даже если люди пришли в 5-10ом, что с того то? в чём им фармить то?

    риктор бьёт пойхоном ай ай ай... титаны бегают шмаляют магие, ай ай ай

    и таких вот ай ай ай набираеться за все 4 боса, ооой как порядком

     

    эти скролы только слегка усложнили жизнь старожилам сервера, а вновь пришедшим игрока, напрочь убило желание тут играть


  8. зашибись парни! молодци! а теперь сделайте ручкой новичкам, закончите начатое... и было бы не плохо, на главной странице сайта написать большими, красными буквами:

    ПОШЛИ ВСЕ НА ***

    примерно так... :angry:


  9. // Create by nepret
    ///////////////////////// MIDDLE-EARTH.RU /////////////////////////
    // Скрипт для прокачки скилла Meditation.
    // Работает по принципу: сняли драгон вещь , одели, начали медетировать,
    // как только медитация удалась, повтаряем круг с начала.
    // 
    // Для работы скрипта необходимо:
    // - Include Hungry, CheckSave, WaitConnection (http://middle-earth.ru/forum/index.php?showtopic=6676)
    // - 1 Драгон шмотку (одежда или кнут, всё равно)                                          
    // - Еда (настравеваеться в инклюде Hungry)
    ///////////////////////////////////////////////////////////////////
    Program Meditation;
    const
    ////////////////////// Настройка переменных ///////////////////////
                      //
                      // Стоп-отметка уровня скилла.
    stop = 100;       // Доступный уровень прокачки медитации для 
                      // вашего класса, можно посмотреть тут:
                      // http://uo.middle-earth.ru/?menu=library&item=classes
    ///////////////////////// Конец настроек //////////////////////////
    //////////////////////////////////////////////////////////////////
    
    {$Include 'hungry.inc'}
    {$Include 'waitconnection.inc'}
    {$Include 'CheckSave.inc'}
    
    function SaveLayer : Boolean;
    var
    NLayer : array [0..9] of byte;
    var
    i, LCount : integer;
    begin
      NLayer[0] := RhandLayer;
      NLayer[1] := ShirtLayer;
      NLayer[2] := EggsLayer;
      NLayer[3] := PantsLayer;
      NLayer[4] := ArmsLayer;
      NLayer[5] := NeckLayer;
      NLayer[6] := HatLayer;
      NLayer[7] := GlovesLayer;
      NLayer[8] := TorsoLayer;
      NLayer[9] := ShoesLayer;
      for i := 0 to 9 do
        begin
          if ObjAtLayer(NLayer[i]) > 0 then
            begin
              SetDress;
              LCount := LCount + 1;
              break;
            end;
        end;
      if LCount = 0 then
        begin
          AddToSystemJournal('>>> На чаре нет драгон одёжки!');
          exit;
        end; 
      result := true;
    end;
    
    procedure Medit;
    var
    time : TDateTime;
    t : integer;
    begin
      if MaxMana > Mana then
        begin
          repeat
            time := Now;
            CheckSave;
            UseSkill('Meditation');
            t := 0;
            repeat
              wait(100);
              CheckSave;
              t := t + 1;
            until (InJournalBetweenTimes('You are unable to concentrate|Points gained!|You stop meditating', time, Now) <> -1) or (t >= 150) or (MaxMana = Mana); 
          until (FoundedParamID > 0) or (MaxMana = Mana); 
        end;   
    end;
    
    function CheckSkill : Boolean;
    begin
      if not Connected then exit;
      if GetSkillValue('Meditation') >= stop then
        begin
          AddToSystemJournal('Стоп-отметка! Скилл прокачался до: '+FloatToStrF(GetSkillValue('Meditation'), ffgeneral, 4, 2));
          ClientPrintEx(self, 190, 200, 'Стоп-отметка! Скилл прокачался до: '+FloatToStrF(GetSkillValue('Meditation'), ffgeneral, 4, 2));
          result := true;
          exit;
        end;
    end;
    
    
    begin
      SetARStatus(true);
      SetPauseScriptOnDisconnectStatus(false);
      if not Connected then waitconnection(10);
      DressSpeed := 0;
      if not SaveLayer then exit;
      repeat
        if CheckSkill then
          begin
            SetARStatus(true);
            Disconnect;
            exit;
          end;
        Hungry(Backpack);
        if not Connected then waitconnection(10);
        Checklag(10);
        Medit;
        CheckSave;
        Checklag(10);
        UnDress;
        wait(1000);
        CheckSave;
        Checklag(10);     
        EquipDressSet;
        wait(1000);
      until false;
    end.
     

     


  10. Выгрузи сразу инклюды под него, чета не пашет...

    кароче беда вот такая - Compiler: [Error] (BS качать.sc at 64:3): Unknown identifier 'td'

     

    забыл про дебаг инклюд... подправил первый пост

     

    надо добавить в папку с инклюдами, мой дебагер

    http://middle-earth.ru/forum/index.php?s=&...ost&p=81414


  11. // Create by nepret
    ///////////////////////// MIDDLE-EARTH.RU /////////////////////////
    // Скрипт для прокачки скилла Blacksmithinging.
    // Работает по принципу изготовления необходимой вещи 
    // (в зависимости от уровня скилла) и разрезания ее обратно
    // в инги.
    // Для работы скрипта необходимо:
    // - Include Hungry, CheckSave, WaitConnection, CheckTarget, Debug (http://middle-earth.ru/forum/index.php?showtopic=6676)    
    // - Побольше ингов на пол возле себя (одного типа!)   
    // - Щипцов       
    // - Молоток          
    // Не забудьте, что после скилла в 100 необходимо использовать  
    // Lesser Power, Power, Greater Power и Ultimate скроллы.       
    // Желательно для скрипта:                                       
    // - Еда
    ///////////////////////////////////////////////////////////////////
    Program Blacksmithinging;
    const
    ////////////////////// Настройка переменных ///////////////////////
                      //
    stop = 120;       // Стоп-отметка уровня скилла, когда нужно
                      // будет остановить прокачку для того, чтоб 
                      // применить Power скроллы. Если не нужна,
                      // то поставить значение 120.
                      //
    ///////////////////////////////////////////////////////////////////
                      //
    DebugMode = 0;    // Выдавать информацию в системный журнал
                      // Включать при отслеживании ошибок в скрипте.
                      //                  
    ///////////////////////// Конец настроек //////////////////////////
    ///////////////////////////////////////////////////////////////////
    
    var
    t : integer;
    
    {$Include 'all.inc'}
    
    function CheckSkill : Boolean;
    begin
      if not Connected then exit;
      if GetSkillValue('Blacksmithing') >= stop then
        begin
          AddToSystemJournal('Стоп-отметка! Скилл прокачался до: '+FloatToStrF(GetSkillValue('Blacksmithing'), ffgeneral, 4, 2));
          ClientPrintEx(self, 190, 200, 'Стоп-отметка! Скилл прокачался до: '+FloatToStrF(GetSkillValue('Blacksmithing'), ffgeneral, 4, 2));
          result := true;
          exit;
        end;
      result := false;
    end;
    
    procedure GetIngotos;
    var
    CountIngotos : integer;
    begin
      FindTypeEx($1BF2, $FFFF, Backpack, False);
      if FindQuantity < 30 then
        begin
          if not Connected then exit;
          CountIngotos := 30 - FindQuantity;
          FindTypeEx($1BF2, $FFFF, Ground, False);
          MoveItem(finditem, CountIngotos, Backpack,0,0,0);
        end;
      td := 0;
      t := 0;
      repeat
        if not Connected then exit;
        checksave;
        if Debug(5,100) then AddToSystemJournal('>>> Debug <<< Блок GetIngotos > 1 цикл (69)');
        wait(100);
        t := t + 1;
        FindTypeEx($1BF2, $FFFF, Backpack, False);
      until (FindQuantity >= 30) or (t >= 100); 
    end;
    
    procedure CheckRes;
    var
    CheckItemRes : array [0..2] of cardinal;
    CheckItemResInfo : array [0..2] of string;
    i : integer;
    begin
      CheckItemRes[0] := $13E3;
      CheckItemRes[1] := $1EBC;
      CheckItemResInfo[0] := 'В сумке нет "Молота"(Smiths Hammer)';
      CheckItemResInfo[1] := 'В сумке нет "Щипцов"(Tongs)';
      if not Connected then exit;
      for i := 0 to 1 do
        begin
          FindTypeEx(CheckItemRes[i], $FFFF, Backpack, True);
          if FindCount < 1 then
            begin
              AddToSystemJournal('>>> '+CheckItemResInfo[i]);
              ClientPrintEx(self, 190, 200, CheckItemResInfo[i]);
              td := 0;
            repeat
              if not Connected then exit;
              checksave;
              if Debug(10,1000) then AddToSystemJournal('>>> Debug <<< Блок CheckRes > 1 цикл (98)');
              wait(1000);
              FindTypeEx(CheckItemRes[i], $FFFF, Backpack, True);
            until FindCount > 0;
            AddToSystemJournal('Продолжаем работу');
            ClientPrintEx(self, 190, 200, 'Продолжаем работу');
          end;
        end;
      FindTypeEx($1BF2, $FFFF, Ground, False);
      if FindFullQuantity < 20 then
        begin
          AddToSystemJournal('>>> На полу нет "Ингов"(Ingotos)');
          ClientPrintEx(self, 190, 200, 'На полу нет "Ингов"(Ingotos)');
          td := 0;
          repeat
            if not Connected then exit;
            checksave;
            if Debug(10,1000) then AddToSystemJournal('>>> Debug <<< Блок CheckRes > 3 цикл (115)');
            wait(1000);
            FindTypeEx($1BF2, $FFFF, Ground, False);
          until FindFullQuantity > 100;
          AddToSystemJournal('Продолжаем работу');
          ClientPrintEx(self, 190, 200, 'Продолжаем работу');
        end;
      FindTypeEx($0FBB, $FFFF, Backpack, False);
      if FindCount < 1 then
        begin
          GetIngotos;
          repeat
            if not Connected then exit;
            CancelTarget;
            UseType($1EBC, $FFFF);
            CheckTarget(5);
          until TargetPresent;
          FindTypeEx($1BF2, $FFFF, Backpack, False);
          WaitTargetObject(finditem);
          WaitMenu('Select','Tools');
          WaitMenu('Select','Tongs');
          repeat
            wait(100);
            CheckSave;
            FindTypeEx($0FBB, $FFFF, Backpack, False);
            if not Connected then exit;
          until FindCount > 0;   
        end;
    end;
    
    
    procedure DestroyItem;
    var
    CraftedItem : array [0..3] of cardinal;
    si, i : integer;
    begin
      CraftedItem[0] := $13B5;
      CraftedItem[1] := $13BB;
      CraftedItem[2] := $1413;
      CraftedItem[3] := $141A;
      for i := 0 to 3 do
        begin
          repeat
            if not Connected then exit;
            FindTypeEx(CraftedItem[i], $FFFF, Backpack, False);
            if FindCount > 0 then
              begin
                si := FindCount;
                repeat
                  if not Connected then exit;
                  CheckRes;
                  CancelTarget;
                  UseType($0FBB, $FFFF);
                  CheckTarget(5);
                until TargetPresent;
                FindTypeEx(CraftedItem[i], $FFFF, Backpack, False);
                WaitTargetObject(finditem);
                td := 0;
                t := 0;
                repeat
                  if not Connected then exit;
                  checksave;
                  if Debug(10,100) then AddToSystemJournal('>>> Debug <<< Блок DestroyItem > 1 цикл (177)');
                  wait(100);
                  FindTypeEx(CraftedItem[i], $FFFF, Backpack, False);
                until (FindCount < si) or (t >= 150);
              end;
            if not Connected then exit;
            FindTypeEx(CraftedItem[i], $FFFF, Backpack, False);
          until FindCount = 0;
        end;
    end;
    
    procedure Blacksmithing;
    var
    cjtime : TDateTime;
    begin
      DestroyItem;
      GetIngotos;
      repeat
        if not Connected then exit;
        CheckRes;
        CancelTarget;
        UseType($13E3, $FFFF);
        CheckTarget(5);
      until TargetPresent;
      FindTypeEx($1BF2, $FFFF, Backpack, False);
      WaitTargetObject(finditem);
      cjtime := Now;
      td := 0;
      repeat
        if not Connected then exit;
        checksave;
        if Debug(10,100) then AddToSystemJournal('>>> Debug <<< Блок Blacksmithing > 2 цикл (208)');
        wait(100);
      until MenuPresent;
      if GetSkillValue('Blacksmithing') < 55 then
        begin
          WaitMenu('What','Weapons');
          WaitMenu('Select','Swords');
            WaitMenu('Select','Scimitar');
        end;
      if (GetSkillValue('Blacksmithing') < 74) and (GetSkillValue('Blacksmithing') >= 55) then
        begin
          WaitMenu('What','Armor');
          WaitMenu('Select','Chainmail');
            WaitMenu('Select','Chainmail Coif');
        end;
      if (GetSkillValue('Blacksmithing') < 100) and (GetSkillValue('Blacksmithing') >= 74) then
        begin
          WaitMenu('What','Armor');
          WaitMenu('Select','Platemail');
            WaitMenu('Select','Platemail Gorget');
        end;
      if (GetSkillValue('Blacksmithing') < 120) and (GetSkillValue('Blacksmithing') >= 100) then
        begin
          WaitMenu('What','Armor');
          WaitMenu('Select','Platemail');
            WaitMenu('Select','Dwarven Platemail Legs');
        end;
      td := 0;
      t := 0;
      repeat
        if not Connected then exit;
        checksave;
        if Debug(10,100) then AddToSystemJournal('>>> Debug <<< Блок Blacksmithing > 3 цикл (240)');
        wait(100);
        t := t + 1;
      until (InJournalBetweenTimes('You create|You failed|You make|destroy', cjtime, Now) <> -1) or (t >= 150);
      if not Connected then exit;
    end;
    
    begin
      SetARStatus(true);
      SetPauseScriptOnDisconnectStatus(false);
      FindDistance := 1;
      repeat
        if not Connected then WaitConnection(5);
        if CheckSkill then exit;
        hungry(backpack);
        CheckRes;
        Blacksmithing;
      until false;
    end.
     

     

×
×
  • Создать...