1) вариант с тайлами в скрипте не очень очевидный, у меня есть скрипт на ламбер там тайлы отдельным файлом и это по моему намного удобнее, можно было бы по тем же деревьям и этот скрипт запустить но не знаю как это реализовать и не испортить скрипт...
2) лучше было бы исправить "for i:= 0 to 5 do //надо бы парсить журнал... но просто 5 раз будем ковырять дерево.
3) если все это сложно и муторно и никто не хочет с этим разбираться, то может хотя бы поможете выделить те части скрипта которые отвечают за то чтоб ковырять даггером в деревьях и разжигать огонь, скидывая себе под ноги, может получится их прикрутить к моему ламберу чтоб ходил по тайлам...
Code: Select all
//Рядом с бритом берете координаты где-нибудь в деревьях. Записываете, затем ставите в стелсе и забываете про перса надолго =)
//Сейчас стоят координаты на которых качался я. Т.е. скрипт протестен и работоспособен на все 130% =)
//p.s. болит голова, очень в связи с этим рассеян, так что если что не так - говорите =)
// Для тех кто в танке:
//ничего в пак класть не надо, кроме своего нубского кинжала.
//перс топает до точки рубки, ищет деревья, режет 30 раз каждый ствол, киндлы кидает на пол и жжет пока все не сожжет, затем топает к следующему стволу.
//если сдох - ждет 20 секунд, ресается, ждет еще 10 секунд и затем топает на место рубки снова.
Program camping;
/// Настройки ///
const
RadiusX=10;
RadiusY=10;
Axe=$0F51;//кинжал
StartXY=true;
StartX=1712;// Обязательно заполните эти значения
StartY=2941;// .where вам в помощь
////////////////////
//Wend, ICQ 492280//
//v. 1.1
//Remake of lumber script by Rabies
type
TreeRecord = Record
t,x,y: integer;
end;
var
TreeTile: array[0..50] of integer;
TreePlace: array[0..500] of TreeRecord;
TreeCount: integer;
x,y,c,a,s: integer;
procedure CheckCon;
begin
if Connected=False then
begin;
repeat
Wait(1000);
until Connected=True;
Wait(5000);
end;
end;
function CheckTool: boolean;
begin
CheckCon;
FindType(Axe, backpack);
if (dead=false) and (FindCount = 0) and (ObjAtLayer(LHandLayer) = 0) then
begin
AddToSystemJournal('Нет кинжала');//что было бы странно впрочем
s:=0;
result:=false;
end
else
result:=true;
end;
procedure CheckTree;
var
LCount: integer;
t,i: integer;
TTile: TStaticCell;
begin
TTile:=ReadStaticsXY(x, y, worldnum);
LCount:=GetLayerCount(x, y, worldnum);
i:=0;
while i < LCount do
begin
for t:=0 to 16 do // количество тайлов деревьев
begin
if TTile.Statics[i].Tile=TreeTile[t] then
begin
TreePlace[c].t:=TTile.Statics[i].Tile;
TreePlace[c].x:=x;
TreePlace[c].y:=y;
c:=c+1;
end;
end;
i:=i+1;
end;
end;
procedure FindTree;
begin
for x:=GetX(self)-RadiusX to GetX(self)+RadiusX do
if x mod 2 = 0 then
begin
for y:=GetY(self)-RadiusY to GetY(self)+RadiusY do
CheckTree;
end
else
begin
for y:=GetY(self)+RadiusY downto GetY(self)-RadiusY do
CheckTree;
end;
TreeCount:=c-1;
end;
procedure DropKindle;
begin
wait(500);
FindType($0DE1,Backpack);
if FindCount > 0 then Drophere(finditem);
end;
procedure BurnKindle;
begin
wait(500);
FindType($0DE1,Ground);
while (FindCount > 0) and (not Dead) do
begin
FindType($0DE1,Ground);
if FindCount > 0 then
begin
useobject(finditem);
wait(500);
end;
end;
end;
procedure Lumber;
var
t: TDateTime;
i:integer;
begin
for a:=0 to TreeCount do
begin
CheckCon;
t:=now;
MoveXY(TreePlace[a].x, TreePlace[a].y, true, 1, false);
if ObjAtLayer(LHandLayer) = 0 then
Wait(2000);
if (CheckTool=true) and (Dead=false) then
begin
for i:= 0 to 5 do //надо бы парсить журнал, но мне в лом =) так что просто 5 раз будем ковырять дерево.
begin
WaitTargetTile(TreePlace[a].t, TreePlace[a].x, TreePlace[a].y, 0);
UseType(Axe, $FFFF);
wait(500);
end;
DropKindle;
BurnKindle;
end
else break;
end;
end;
begin
c:=0;
s:=1;
TreeTile[0]:=3446;
TreeTile[1]:=3305;
TreeTile[2]:=3230;
TreeTile[3]:=3305;
TreeTile[4]:=3453;
TreeTile[5]:=3230;
TreeTile[6]:=3453;
TreeTile[7]:=3424;
TreeTile[8]:=3409;
TreeTile[9]:=3223;
TreeTile[10]:=3465;
TreeTile[11]:=3446;
TreeTile[12]:=3402;
TreeTile[13]:=3409;
TreeTile[14]:=3430;
TreeTile[15]:=3409;
TreeTile[16]:=3402;
CheckCon;
if StartXY=true then
MoveXY(StartX, StartY, true, 0, false);
FindTree;
AddToSystemJournal('Найдено деревьев: '+IntToStr(TreeCount));
while (s=1) and (CheckTool=true) do
begin
if StartXY=true then if Dead then
begin
wait(20000);
uosay('.rescue');
wait(10000);
if (not Dead) then MoveXY(StartX, StartY, true, 0, false);
end;
Lumber;
end;
SetARStatus(false);
Disconnect;
end.