Господа скриптеры. Если вас не затруднит может у кого есть или кто сможет сделать скриптик на сбор хлопка по 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...
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(4416, 1447, '')
Walk(4422, 1447, '')
Napole2()
end sub
Был бы признателен. Просто в стелсе новичек...
Re: Ребята помогите сбор
Posted: 28.02.2016 21:30
by Vizit0r
username wrote:глянул скрипт увидел дистанцию сбор по типу, но не увидел программу передвижения... Намекните хоть куда ее поставить и какая команда??? С координатами я сам разберусь...