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

Dvigan

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

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

  • Посещение

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


  1. include Hungy(Plase : cardinal) : Boolean;

    Plase - Указать где искать еду

    ID контейнера (требуется открыть хотя бы 1 раз)Ground (ищет на земле в радиусе 2 тайлов, редактируется параметром FindDistance)Backpack сумка персонажа (требуется открыть хотя бы 1 раз)

    В самом инклюде, указать тип еды которую будет есть. (По умолчанию фиш стейки)

    пример использования:

    Hungry(ground);

     

    UP 19.09.2012 Добавил поддержку фраз на энглише (.lang для смены языка в клиенте)

     

    const
    Food = $097B;        // Тип еды, которую будем кушать в процессе.
                                    // $097B - жаренная рыба
                                    // $09F2 - жаренное мясо
                                    // $171F - бананы
    
    var
    HungryJournalTime : TDateTime;
    
    function Hungry(Plase : cardinal) : Boolean;
    var
    VarFood : string;
    begin
        if not Connected then exit;
        if dead then exit;
        if Food = $097B then VarFood := 'жареной рыбы';
        if Food = $09F2 then VarFood := 'жареного мяса';
        if Food = $171F then VarFood := 'бананов';
        if not (Food = $097B) or (Food = $09F2) or (Food = $171F) then VarFood := 'еды';
        FindTypeEx(Food, $FFFF, Plase, True);
        if FindCount < 1 then
            begin
                AddToSystemJournal('>>> Нет '+ VarFood +'!');
                result := false;
                exit;
            end;
        result := true;
      if HungryJournalTime = 0 then
            begin
                HungryJournalTime := Now;
                repeat
                    FindTypeEx(Food, $FFFF, Plase, False);
                    if FindCount > 0 then
                        begin
                            UseObject(finditem);
                            wait(1000);
                        end;
                until InJournalBetweenTimes('Я объелс|You are full', HungryJournalTime, Now) <> -1;
            end
        else
            begin
                if Now < HungryJournalTime + (1.0/1440) then exit;
            end;
        if (InJournalBetweenTimes('голодны|Вы почти умираете от голода|Ваш желудок болит|Вы чувствуете слабость|You are absolutely stuffed|You are stuffed|hungry at all|You are a little hungry|You are somewhat hungry|You are REALLY hungry|Your stomash hurts|Your stomash hurts and you feel dizzy|You are starving|You are almost dying of hunger|You are DYING of hunger', HungryJournalTime, Now) <> -1) and (LineName = 'System') and (LineTextColor = 443) then
            begin
                FindTypeEx(Food, $FFFF, Plase, False);
                if FindCount > 0 then  UseObject(finditem);
            end;
        HungryJournalTime := Now;
    end;

     

     

    Что делать с поддержкой фраз на инглише и командой .lang? У меня версия игры с сайта мидлы, но рыбные стейки называются Fish Steaks, а не жаренная рыба. Может у меня из-за этого не запускается скрипт с ошибкой:

     

    22:44:09:664 [black Pearl Hunter]: Compiling

    22:44:09:689 [black Pearl Hunter]: Compiler: [Error] (C:\Games\Ultima Online\Stealth\Scripts\Black Pearl.sc at 10:307): 'BEGIN' expected

    22:44:09:694 [black Pearl Hunter]: Compiling failed

    22:44:09:698 [black Pearl Hunter]: Script Black Pearl.sc stopped successfuly

     

    И еще не понятно:

    function Hungry(Plase : cardinal) : Boolean;

    эту строчку надо заменить на

    function Hungry(Backpack);

     

    и больше ничего не надо менять в коде?


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

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

    сеть, еда

     

    инклюды:

    {$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.

     

     

    Пожалуйста помогите разобраться!

    Прикрепленный файл уже не работает, поэтому я скопировал этот код, открыл файл блокнот, вставил туда код, сохранил файл изменив расширение на .sc

     

    Получился файл BlackPearl.sc по адресу Ultima Online\Stealth\Scripts

     

    Далее из этой темы http://middle-earth.ru/forum/index.php?sho...%EA%EB%FE%E4%FB скопировал указанные инклюды и вставил каждую в свой файл блокнота по адресу Ultima Online\Stealth\Scripts\Include, изменив им расширение на .inc

     

    Все ли правильно проделал на данном этапе?


  3. Оффтоп :rolleyes:

    По скрину видно, что ты разложил вещи в доме на полу. У тебя не бывает такое, что вещи проваливаются сквозь пол или исчезают когда ты их ставишь на пол? У меня был такой баг пару раз, я положил инготы на пол, а они исчезли, я сразу убрал дом и они лежали на траве <_<


  4. Проблема в том, что когда я захожу одним из чаров в игру вылезает ошибка и окно игры закрывается! При чем происходит это только с одним персонажем, остальные норм заходят! Беда в том что этот персонаж нужен

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