Page 1 of 1

Ребята помогите сбор

Posted: 28.02.2016 14:58
by username
Господа скриптеры. Если вас не затруднит может у кого есть или кто сможет сделать скриптик на сбор хлопка по 3 загончикам в городе Мунглоу и разгрузкой в банк в сундук... (все пешком). Был бы очень признателен.

Re: Ребята помогите сбор

Posted: 28.02.2016 15:09
by Vizit0r
сделайте, чтобы где-то что-то куда-то собирал.
Ты умеешь ставить ТЗ.

Re: Ребята помогите сбор

Posted: 28.02.2016 15:18
by username
Ну как еще по подробенй объеснить :) Чар отходит от банка идет к 1 полю в мунглоу вот его координаты 4412, 1447. Проверяет наличие на земле хлопка вот его тип 0x0C51 (только дистанцию поиска поставить где-то 30) , собрал или не нашел и идет на 2 поле 4567, 1475 (тут надо открыть колитку). Так же проверяет наличие хлопка, идет на 3 тоже проверяет хлопок поле 4633, 1301 (и тут на входе открыть калитку) и в итого идет в банк 4464, 1164 говорил Bank и выгружал все в определенный сундук по ID...

Re: Ребята помогите сбор

Posted: 28.02.2016 15:54
by Vizit0r
сбор регов

Code: Select all

program harvesting;
{CurrentBush# Reagents Harvesting Script RC1 [v1.01]
 [c] Vizit0r (based on Injection script by totus)
 [*]  time: 21.01.2007 - 23.01.2007
 finding&harvesting optimized 21.04.2007}


{$Include 'all.inc'}
type
ArrayType = Array[0..300] of Cardinal;
ArrayType2 = Array [0..4] of Word;

var
i, Harvest_cnt:Integer;
RawReagent, Bush,Regs : ArrayType2;
A : ArrayType;
stime : TDateTime;
StrubsList: TStringList;

const
RBID_MY = $4A8BD2CE;
RBID_POLE =$7F530DFD;
DoorID = $4DF064BE;

procedure Anti_fuck;
var Index : Integer;
begin
{Анти-покраска минионом}
  if Poisoned then
  begin
	sTime:= Now - (2.0 / 1440);
	Index := InJournalBetweenTimes('plague', sTime, Now);
	if (Index >= 0) and (LineType = 257) then
	begin
	  ClearJournal;
	  UOSay('.c Menya krasyat minionom po koordinatam: ' + IntToStr(GetX(Self)) + ' ' + IntToStr(GetY(Self)) + ' ! ');
	  AddToSystemJournal('Меня попытались покрасить минионом. Убился об вендора!');
	  attack($018282BD); // ид вендора
	  wait(3000);
	end;
  end;
 {Конец анти-покраски}
end;

procedure DropAll;
Var
Counter : Integer;
begin
RawReagent[4] := $18de; // Mandrake
RawReagent[2] := $18eb; // Ginseng
RawReagent[3] := $18e3; // Garlic
RawReagent[0] := $18e7; // NightShade
RawReagent[1] := $0C70; // Blood Moss
  For counter := 0 to 4 do
  begin
    Findtype(RawReagent[counter],backpack);
    IF FindFullQuantity > 0 then Stack(RawReagent[counter],$FFFF);
      Wait(200);
  end;
   Findtype($0f81,backpack);
    IF FindFullQuantity > 0 then Stack($0f81,$FFFF);
end;

procedure RecallRB(RBID : Cardinal);
var
var_mana : Integer;
Breaking : Boolean;
begin
  Breaking := False;
  IF Life < Str then UOSay('.guards');
  IF not Dead then
  begin
    while Breaking = False do
    begin
	stime := Now;
	var_mana := mana;
	WaitTargetObject(RBID);
	Cast('Recall');
	repeat
		CheckSave;
		InJournalBetweenTimes('fizzles', stime, Now);
		wait(100);
	until (LineCount > 0) or (var_mana > mana) or (Now > stime + (1.0/1440));
	IF (var_mana > mana) then Breaking := true;
          Wait(500);
  end;
  While Mana < 15 do Wait(1000);
  end;
end;

procedure GoToBoat;
begin
  while GetY(self) > 790 do
  begin
	IF IntToHex(GetType(DoorID),4) = '06A5' then
	begin
	  UseObject( DoorID);
	  Wait(500);
	end;
	IF IntToHex(GetType(DoorID),4) = '06A6' then GotoXY(3196,790,0,False);
	wait(500);
  end;
 Raw_Move(8,false);
 wait(500);
 Raw_Move(8,false);
 wait(3000);
GotoXY(5663,2279,0,True);
end;

procedure CheckReags;
var
Counter, quantity : Integer;
begin
  Regs[1] := $0F7B; // BM
  Regs[2] := $0F7A; // BP
  Regs[3] := $0F86; // MR
    for Counter := 1 to 3 do
    begin
        if  Count(regs[Counter]) <20 then
begin
        quantity :=Count(regs[Counter]);
        FindType(regs[Counter],ground);
        IF FindFullQuantity > 0 then
        begin
       MoveItem (finditem,20-quantity, backpack, 0,0,0) ;
      wait(300);
        end;
end;
    end;
AddToSystemJournal('Сейчас у вас '+IntToStr(Count(bp))+'bp, '++IntToStr(Count(mr))+'mr, '++IntToStr(Count(bm))+'bm');
end;


procedure GoDropReagAndBack;
begin
	  AddToSystemJournal('Иду домой');
  RecallRB(RBID_MY);
  Wait(3000);
  GoToBoat;
  wait(500);
FindDistance:=1;
  DropAll;
  Findtype($097B,backpack);
  IF FindFullQuantity <2 then
  begin
    Findtype($097B,ground);
    IF FindFullQuantity > 0 then MoveItem (FindItem, 2, backpack, 0,0,0);
  end;
   CheckReags;
   RecallRB(RBID_POLE);
end;

procedure HarvestReagent(BushType:Integer);
var
NoStop : Boolean;
Tmp_i : Integer;
flag : Boolean;
  Bushes_Num,i,j  : Integer;
  tempValue: Cardinal;
StrubsList, SL, SL2: TStringList;

begin
Bush[2] := $18e0; // Mandrake
 Bush[4] := $18e1; // Garlic
 Bush[3] := $18e9; //Ginseng
 Bush[0] := $18e5; //NightShade
 Bush[1] := $1783; //Blood Moss
 FindDistance := 20;
 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;
// AddToSystemJournal('11 ' + IntToStr(StrubsList.Count));
// For i:= 0 to (StrubsList.Count-1) do  SL.Add(Int64ToStr(A[i]));
//SL.SaveToFile('c:\st2.txt');


  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;
//конец сортировки
//начало сбора
 Tmp_i := 0;
  NoStop := True;
//  UO.Print('Массив кустиков сформирован.')
  While (NoStop and (not Dead)) do
  begin
       CheckSave;
        If (GetDistance(A[Tmp_i]) < 16) Then
        begin
	 If (GetDistance(A[Tmp_i])  > 2) Then GotoXY(GetX(A[Tmp_i]),GetY(A[Tmp_i]),1,True);
	  IF IsGump then waitgump('0');
	 CheckTargetError(10,2);
	  Anti_fuck;
           UseObject(A[Tmp_i]);
	  WaitJournalLine(now,'harvest all|stop|harvested|already|can''t see|far away', 60000);
        End
	wait(500);
        Tmp_i := Tmp_i + 1;
        If Weight > 390 Then GoDropReagAndBack;
        If (Tmp_i = StrubsList.Count) Then NoStop := False;

  End
//конец сбора
FindDistance := 2;
end;

BEGIN
 {FindDistance := 20;
 Findtype($1783,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;
StrubsList.SaveToFile('c:\st.txt');
 AddToSystemJournal('11 ' + IntToStr(StrubsList.Count));
 AddToSystemJournal('11 ' + StrubsList.Strings[10]);
 AddToSystemJournal('222          ' + Int64ToStr(A[10]));
}

 While not Dead do
  begin
    Hungry(1,backpack);
    For Harvest_cnt := 0 To 4 do
     begin
            If Weight > 390 Then GoDropReagAndBack;
            AddToSystemJournal('harv '+IntToStr(harvest_cnt));
            HarvestReagent(Harvest_cnt);
	  wait(1000);
     end
     wait(30000);
     UOSay('1');
  end;
//CheckReags;
end.
сбор регов. Допотопный, но вполне себе рабочий.
Возможно, тут на форуме тоже есть скрипты на сбор с полей.
Переписывай, допиливай - с нуля тебе такое точно писать не будет никто.

Re: Ребята помогите сбор

Posted: 28.02.2016 15:58
by username
ок попробую

Re: Ребята помогите сбор

Posted: 28.02.2016 16:09
by username
глянул скрипт увидел дистанцию сбор по типу, но не увидел программу передвижения... Намекните хоть куда ее поставить и какая команда??? С координатами я сам разберусь...

Re: Ребята помогите сбор

Posted: 28.02.2016 16:39
by username
хоябы покажи на примере как зациклить скрипт для сбора на 1 поле вот координаты прохода к этому полю:
sub NaPole1()

Walk(4471, 1177, '')
Walk(4462, 1177, '')
Walk(4459, 1173, '')
Walk(4442, 1173, '')
Walk(4442, 1232, '')
Walk(4419, 1232, '')
Walk(4419, 1292, '')
Walk(4443, 1315, '')
Walk(4432, 1354, '')
Walk(4430, 1408, '')
Walk(4418, 1447, '')
Walk(4411, 1447, '')

sbor()

Walk(4416, 1447, '')
Walk(4422, 1447, '')
Napole2()
end sub

Был бы признателен. Просто в стелсе новичек...

Re: Ребята помогите сбор

Posted: 28.02.2016 21:30
by Vizit0r
username wrote:глянул скрипт увидел дистанцию сбор по типу, но не увидел программу передвижения... Намекните хоть куда ее поставить и какая команда??? С координатами я сам разберусь...
http://stealth.od.ua/Doc:RU/Api/NewMoveXY