Деревья
Posted: 07.04.2013 16:57
Добрый день. Хочу переделать скрипт на мининг для добычи дерева. Суть проблемы в чём. При добыче руды, в TargetToTile(tile, X, Y, Z); переменная tile равна нулю. А при добычи древесины у каждого дерева она разная. Есть рунабука с 16 рунами. При реколе к любой из 16 рун дерево стоит в кординатах (X - 1, Y + 1) где X и Y - координаты того тайла куда рекольнулся чар. Теперь вопрос. Можно ли сделать так. Чар реколится по руне, на кординаты (X - 1, Y + 1) накидывает допустим ,infotile, вытаскивает значение tile запоминает его и использует в TargetToTile(tile, X, Y, Z); где x=x-1 y=y+1 а tile то что мы запомнили в предыдущей процедуре.?
procedure ChopPoint;
var
X, Y: Word;
begin
X := GetX(Self);
Y := GetY(Self);
Chop(X - 1, Y + 1);
end;
procedure Chop(X, Y: Integer);
var
Z: ShortInt;
Finded: Boolean;
Counter: Byte;
StartTime: TDateTime;
Tile: Word;
begin
CheckState();
Finded := True;
// while Finded do begin
// if Dead or not Connected then Exit;
// if TargetPresent then CancelTarget;
// while not CheckMiningTool do begin
// if Dead or not Connected then Exit;
// CreateMiningTools;
// end;
CheckLag(LagWait);
Wait(WaitTime);
UseObject(Tool);
CheckLag(LagWait);
WaitForTarget(WaitTime);
if TargetPresent then begin
StartTime := Now;
TargetToTile(tile, X, Y, Z);
Counter := WaitCycles;
Finded := False;
while (not Finded) and (Counter > 0) do begin
CheckLag(LagWait);
if InJournalBetweenTimes('t mine there|is too far away|cannot be seen|is no metal here to mine', StartTime, Now) > 0 then Exit;
if InJournalBetweenTimes('put it in your backpack|loosen some rocks but fail to find any useable ore|have worn out your tool', StartTime, Now) > 0 then Finded := True;
if Not Finded then Wait(200);
Dec(Counter);
end;
CheckState();
end;
end;
//end;
procedure ChopPoint;
var
X, Y: Word;
begin
X := GetX(Self);
Y := GetY(Self);
Chop(X - 1, Y + 1);
end;
procedure Chop(X, Y: Integer);
var
Z: ShortInt;
Finded: Boolean;
Counter: Byte;
StartTime: TDateTime;
Tile: Word;
begin
CheckState();
Finded := True;
// while Finded do begin
// if Dead or not Connected then Exit;
// if TargetPresent then CancelTarget;
// while not CheckMiningTool do begin
// if Dead or not Connected then Exit;
// CreateMiningTools;
// end;
CheckLag(LagWait);
Wait(WaitTime);
UseObject(Tool);
CheckLag(LagWait);
WaitForTarget(WaitTime);
if TargetPresent then begin
StartTime := Now;
TargetToTile(tile, X, Y, Z);
Counter := WaitCycles;
Finded := False;
while (not Finded) and (Counter > 0) do begin
CheckLag(LagWait);
if InJournalBetweenTimes('t mine there|is too far away|cannot be seen|is no metal here to mine', StartTime, Now) > 0 then Exit;
if InJournalBetweenTimes('put it in your backpack|loosen some rocks but fail to find any useable ore|have worn out your tool', StartTime, Now) > 0 then Finded := True;
if Not Finded then Wait(200);
Dec(Counter);
end;
CheckState();
end;
end;
//end;