Code: Select all
Program camping;
{$Include 'all.inc'}
/// Настройки ///
const
RadiusX=20;
RadiusY=20;
Axe=$0F51;//кинжал
StartXY=true;
StartX=3615;// Обязательно заполните эти значения
StartY=2389;// .where вам в помощь
//Remake of lumber script by Rabies by Daimond
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 227 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
Hungry(1,backpack);
CheckCon;
t:=now;
newMoveXY(TreePlace[a].x, TreePlace[a].y, true, 1, false);
if TargetPresent then CancelTarget;
if ObjAtLayer(LHandLayer) = 0 then
Wait(2000);
if (CheckTool=true) and (Dead=false) then
begin
for i:= 0 to 5 do //надо бы парсить журнал, но мне в лом =) так что просто 30 раз будем ковырять дерево.
begin
WaitTargetTile(TreePlace[a].t, TreePlace[a].x, TreePlace[a].y, 0);
UseType(Axe, $FFFF);
wait(5000);
end;
DropKindle;
BurnKindle;
end
else break;
end;
end;
begin
c:=0;
s:=1;
TreeTile[0]:=3230;
TreeTile[1]:=3240;
TreeTile[2]:=3242;
TreeTile[3]:=3243;
TreeTile[4]:=3225;
TreeTile[5]:=3226;
TreeTile[6]:=3227;
TreeTile[7]:=3228;
TreeTile[8]:=3229;
TreeTile[9]:=3230;
TreeTile[10]:=3231;
TreeTile[11]:=3232;
TreeTile[12]:=3233;
TreeTile[13]:=3234;
TreeTile[14]:=3235;
TreeTile[15]:=3236;
TreeTile[16]:=3237;
TreeTile[17]:=3238;
TreeTile[18]:=3239;
TreeTile[19]:=3240;
TreeTile[20]:=3241;
TreeTile[21]:=3242;
TreeTile[22]:=3243;
TreeTile[23]:=3244;
TreeTile[24]:=3245;
TreeTile[25]:=3246;
TreeTile[26]:=3247;
TreeTile[27]:=3248;
TreeTile[28]:=3249;
TreeTile[29]:=3250;
TreeTile[30]:=3251;
TreeTile[31]:=3252;
TreeTile[32]:=3253;
TreeTile[33]:=3254;
TreeTile[34]:=3255;
TreeTile[35]:=3256;
TreeTile[36]:=3257;
TreeTile[37]:=3258;
TreeTile[38]:=3259;
TreeTile[39]:=3260;
TreeTile[40]:=3261;
TreeTile[41]:=3262;
TreeTile[42]:=3263;
TreeTile[43]:=3264;
TreeTile[44]:=3265;
TreeTile[45]:=3266;
TreeTile[46]:=3267;
TreeTile[47]:=3268;
TreeTile[48]:=3269;
TreeTile[49]:=3270;
TreeTile[50]:=3271;
TreeTile[51]:=3272;
TreeTile[52]:=3273;
TreeTile[53]:=3274;
TreeTile[54]:=3275;
TreeTile[55]:=3276;
TreeTile[56]:=3277;
TreeTile[57]:=3278;
TreeTile[58]:=3279;
TreeTile[59]:=3280;
TreeTile[60]:=3281;
TreeTile[61]:=3282;
TreeTile[62]:=3283;
TreeTile[63]:=3284;
TreeTile[64]:=3285;
TreeTile[65]:=3286;
TreeTile[66]:=3287;
TreeTile[67]:=3288;
TreeTile[68]:=3289;
TreeTile[69]:=3290;
TreeTile[70]:=3291;
TreeTile[71]:=3292;
TreeTile[72]:=3293;
TreeTile[73]:=3294;
TreeTile[74]:=3295;
TreeTile[75]:=3296;
TreeTile[76]:=3297;
TreeTile[77]:=3298;
TreeTile[78]:=3299;
TreeTile[79]:=3300;
TreeTile[80]:=3301;
TreeTile[81]:=3302;
TreeTile[82]:=3303;
TreeTile[83]:=3304;
TreeTile[84]:=3305;
TreeTile[85]:=3306;
TreeTile[86]:=3315;
TreeTile[87]:=3316;
TreeTile[88]:=3317;
TreeTile[89]:=3318;
TreeTile[90]:=3319;
TreeTile[91]:=3320;
TreeTile[92]:=3321;
TreeTile[93]:=3322;
TreeTile[94]:=3323;
TreeTile[95]:=3324;
TreeTile[96]:=3325;
TreeTile[97]:=3326;
TreeTile[98]:=3327;
TreeTile[99]:=3328;
TreeTile[100]:=3329;
TreeTile[101]:=3330;
TreeTile[102]:=3331;
TreeTile[103]:=3393;
TreeTile[104]:=3394;
TreeTile[105]:=3395;
TreeTile[106]:=3396;
TreeTile[107]:=3397;
TreeTile[108]:=3398;
TreeTile[109]:=3399;
TreeTile[110]:=3400;
TreeTile[111]:=3401;
TreeTile[112]:=3402;
TreeTile[113]:=3403;
TreeTile[114]:=3404;
TreeTile[115]:=3405;
TreeTile[116]:=3406;
TreeTile[117]:=3407;
TreeTile[118]:=3408;
TreeTile[119]:=3409;
TreeTile[120]:=3410;
TreeTile[121]:=3411;
TreeTile[122]:=3412;
TreeTile[123]:=3413;
TreeTile[124]:=3414;
TreeTile[125]:=3415;
TreeTile[126]:=3416;
TreeTile[127]:=3417;
TreeTile[128]:=3418;
TreeTile[129]:=3419;
TreeTile[130]:=3420;
TreeTile[131]:=3421;
TreeTile[132]:=3422;
TreeTile[133]:=3423;
TreeTile[134]:=3424;
TreeTile[135]:=3425;
TreeTile[136]:=3426;
TreeTile[137]:=3427;
TreeTile[138]:=3428;
TreeTile[139]:=3429;
TreeTile[140]:=3430;
TreeTile[141]:=3431;
TreeTile[142]:=3432;
TreeTile[143]:=3433;
TreeTile[144]:=3434;
TreeTile[145]:=3435;
TreeTile[146]:=3436;
TreeTile[147]:=3437;
TreeTile[148]:=3438;
TreeTile[149]:=3439;
TreeTile[150]:=3440;
TreeTile[151]:=3441;
TreeTile[152]:=3442;
TreeTile[153]:=3443;
TreeTile[154]:=3444;
TreeTile[155]:=3445;
TreeTile[156]:=3446;
TreeTile[157]:=3447;
TreeTile[158]:=3448;
TreeTile[159]:=3449;
TreeTile[160]:=3450;
TreeTile[161]:=3451;
TreeTile[162]:=3452;
TreeTile[163]:=3453;
TreeTile[164]:=3454;
TreeTile[165]:=3455;
TreeTile[166]:=3456;
TreeTile[167]:=3457;
TreeTile[168]:=3458;
TreeTile[169]:=3459;
TreeTile[170]:=3460;
TreeTile[171]:=3461;
TreeTile[172]:=3462;
TreeTile[173]:=3463;
TreeTile[174]:=3464;
TreeTile[175]:=3465;
TreeTile[176]:=3466;
TreeTile[177]:=3467;
TreeTile[178]:=3468;
TreeTile[179]:=3469;
TreeTile[180]:=3470;
TreeTile[181]:=3471;
TreeTile[182]:=3472;
TreeTile[183]:=3473;
TreeTile[184]:=3474;
TreeTile[185]:=3475;
TreeTile[186]:=3476;
TreeTile[187]:=3477;
TreeTile[188]:=3478;
TreeTile[189]:=3479;
TreeTile[190]:=3480;
TreeTile[191]:=3481;
TreeTile[192]:=3482;
TreeTile[193]:=3483;
TreeTile[194]:=3484;
TreeTile[195]:=3485;
TreeTile[196]:=3486;
TreeTile[197]:=3487;
TreeTile[198]:=3488;
TreeTile[199]:=3489;
TreeTile[200]:=3490;
TreeTile[201]:=3491;
TreeTile[202]:=3492;
TreeTile[203]:=3493;
TreeTile[204]:=3494;
TreeTile[205]:=3495;
TreeTile[206]:=3496;
TreeTile[207]:=3497;
TreeTile[208]:=3498;
TreeTile[209]:=3499;
TreeTile[210]:=4790;
TreeTile[211]:=4791;
TreeTile[212]:=4792;
TreeTile[213]:=4793;
TreeTile[214]:=4794;
TreeTile[215]:=4795;
TreeTile[216]:=4796;
TreeTile[217]:=4797;
TreeTile[218]:=4798;
TreeTile[219]:=4799;
TreeTile[220]:=4800;
TreeTile[221]:=4801;
TreeTile[222]:=4802;
TreeTile[223]:=4803;
TreeTile[224]:=4804;
TreeTile[225]:=4805;
TreeTile[226]:=4806;
TreeTile[227]:=4807;
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('Сдох');
wait(10000);
if (not Dead) then MoveXY(StartX, StartY, true, 0, false);
end;
Lumber;
end;
SetARStatus(false);
Disconnect;
end.
Если ставлю меньше тайлов то начинает ходить и пытаться рубить ветки рубит только на некоторых деревьях.
и можно как не будь добавить чтоб видел текст в журнале при котором будет переходить к другому дереву и удалять журнал чтоб не видел повторно в журнале эту надпись при перепроверке, а не по количеству тыков