Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

DRW сбор еды с полей (takings eat)

Only working scripts
Post Reply
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

DRW сбор еды с полей (takings eat)

Post by shinma »

program sbor;

{$Include 'all.inc'}

const
rostoc=$0C76 ; //ID еды на поле
Eat=$0C77 ; //ID еды в сумке.
begin
checksave;
while CountEx(Eat,$0000,backpack)<60 do //будет собирать пока не наберет 60 штук
begin
checksave;
FindDistance:=4;
FindTypeEx(rostoc, $0000, Ground , false);
NewMoveXY(GetX(FindItem),GetY(FindItem),true,3,false);
checksave;
UseObject(FindItem);
wait(3000);
end;
end.
Molotov
Posts: 4
Joined: 12.01.2012 10:37
Contact:

Re: DRW сбор еды с полей (takings eat)

Post by Molotov »

А как сделать так, чтобы собирал несколько типов предметов сразу.
Kynep
Neophyte
Neophyte
Posts: 40
Joined: 29.05.2008 6:41

Re: DRW сбор еды с полей (takings eat)

Post by Kynep »

Molotov wrote:А как сделать так, чтобы собирал несколько типов предметов сразу.
Если тебе нужен лут с земли, то этот скрипт не пойдет. Он использует найденные на земле предметы дабл-кликом, а лут переносит их в пак - это разные вещи и разные функции.

В скрипте, вот эту строку, номер 44,

Code: Select all

wait(3000);
лучше заменить на динамический цикл ожидания сообщения о том, что предмет взят, например так:

Code: Select all

ClearJournal;
repeat
  wait(100);
until (InJournal('You put') <> -1);
ClearJournal;
wait(500);
Вмеcто "You put" нужно прописать нужную фразу фразу.

А вот и сам скрипт:

Code: Select all

program sbor; 

{$Include 'all.inc'} 

const
  max_weight = 600; //Максимальный Вес

var
  types: array[1..5] of word;  // 5 - размер массива, кол-во элементов.
  num_of_types,i: integer;
  tmp_id:cardinal;

procedure Init;
  begin
    types[1] := $0000; //Тип 1
    types[2] := $0000; //Тип 2
    types[3] := $0000; //Тип 3
    types[4] := $0000; //Тип 4
    types[5] := $0000; //Тип 5

    num_of_types := 5;  //кол-во элементов в массиве
  end;


Begin
  Init;
  while not dead do
    begin
      checksave; 
      while Weight < max_weight do
        begin
          for i := 1 to num_of_types do
            begin
              FindDistance:= 4;
              tmp_id := FindType(types[i], Ground);
              wait(100);
              if tmp_id <> 0 then
                begin
                  repeat
                    AddToSystemJournal('ЧТо-то нашел, иду рвать...');
                    NewMoveXY(GetX(tmp_id),GetY(tmp_id),true,2,false);
                    UseObject(tmp_id);
                    AddToSystemJournal('Сорвал...');
                    wait(3000);
                    tmp_id := FindType(types[i], Ground);
                    wait(100);
                  until (tmp_id = 0);
                end;
            end;
          AddToSystemJournal('Нечего рвать... жду 5 секунд...');
          wait(5000);
        end;
      AddToSystemJournal('--->!!!Вес набран, закругляемся!!!');
      exit;
    end;
  AddToSystemJournal('--->!!!Убили Гады!!!');
End.

Molotov
Posts: 4
Joined: 12.01.2012 10:37
Contact:

Re: DRW сбор еды с полей (takings eat)

Post by Molotov »

Мне как раз нужен скрипт на сбор ростков с земли дабл кликом.
Спасибо.
Last edited by Molotov on 13.01.2012 8:32, edited 1 time in total.
Kynep
Neophyte
Neophyte
Posts: 40
Joined: 29.05.2008 6:41

Re: DRW сбор еды с полей (takings eat)

Post by Kynep »

Значит можешь пользоваться, если что пиши что не так, не тестил, писал в блокноте.
Molotov
Posts: 4
Joined: 12.01.2012 10:37
Contact:

Re: DRW сбор еды с полей (takings eat)

Post by Molotov »

Выдал ошибку в 41 строке...

Code: Select all

NewMoveXY(GetX(tmp_id),GetY(tmp_id),true,2,false);
удалил ее и все пошло...
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: DRW сбор еды с полей (takings eat)

Post by shinma »

Всем привет. Даже не знаю как без этой строки он у тебя теперь ходит)) Но это неважно. просто попробуй стелс новую версию поставить.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
aalexx
Novice
Novice
Posts: 69
Joined: 06.02.2012 20:43
Location: Латвия\Англия
Contact:

Re: DRW сбор еды с полей (takings eat)

Post by aalexx »

Скрипт, кстати, не очень толковый. Он собирает еду из разных мест, а не по порядку.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: DRW сбор еды с полей (takings eat)

Post by Vizit0r »

потому что нет сортировки.

вот кусок сортировки, нарыл у себя в хламе

адаптировать не буду, нет времени.

Code: Select all

 Findtype(Bush[BushType],ground);
 AddToSystemJournal('Всего кустов этого типа найдено ' + IntToStr(FindFullQuantity));
 if (FindFullQuantity = 0) then Exit;
 StrubsList := TStringList.Create;
 GetFindedList(StrubsList);
 For i:= 0 to (StrubsList.Count-1) do  A[i] := StrToInt64('$'+StrubsList.Strings[i]);
 For i := (StrubsList.Count) to 300 do A[i] := 0;


  If (StrubsList.Count> 2) Then
  begin
//сортировка пузырьковым методом
  j := StrubsList.Count-1;
  flag := True;
  while ((j >= 1) and flag) do
  begin
        j := j - 1;
        flag := False;
        for i := 0 to j - 1 do
         begin
            if ((i < (StrubsList.Count -2)) and ((GetX(A[i]) > GetX(A[i+1])) or ((GetX(A[i]) = GetX(A[i+1])) and (GetY(A[i]) > GetY(A[i+ 1]))))) then
            begin
	  tempValue := A[I];
	  A[I] := A[i+1];
	  A[i+1] := tempValue;
               flag := True;
	  end
	end
  end
  end;
//конец сортировки
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
aalexx
Novice
Novice
Posts: 69
Joined: 06.02.2012 20:43
Location: Латвия\Англия
Contact:

Re: DRW сбор еды с полей (takings eat)

Post by aalexx »

Кто-нибудь доделал скрипт? Я как ни пытался использовать помощь Визитора , но так и не удалось ничего.
Kynep
Neophyte
Neophyte
Posts: 40
Joined: 29.05.2008 6:41

Re: DRW сбор еды с полей (takings eat)

Post by Kynep »

aalexx wrote:Скрипт, кстати, не очень толковый. Он собирает еду из разных мест, а не по порядку.
А при чем тут "толк" скрипта и зачем собирать по порядку? :?

В тех задании не был указан сбор по порядку, да и смысла нет, за 5 минут можно выбрать все что есть в округе. Зачем заморачиваться? Скрипт работает, а это главное. :lol:
Post Reply