Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Помогите исправить макрос на ламбер

тут можно задать вопрос по скриптингу
Post Reply
Crazylammer
Posts: 2
Joined: 02.02.2013 22:52

Помогите исправить макрос на ламбер

Post by Crazylammer »

Есть макрос на ламбер ( макрос на самом деле отличный ) Но есть проблема он находит тока деревья из статики а мне его надо переделать под деревья которые я посадил у себя в ГК. тайлы деревьем в массиве прописаны но он их тупо даже не пытаетса искать. помогите добрые дяди скриптеры пусть ишет деревья рядом с собой а не из статики

Code: Select all

Program Lumber;

/// Настройки ///
const
RadiusX=13;
RadiusY=13;
Axe=$0F47;
////////////////////
//Wend, ICQ 492280//
//v. 1.3


type
TreeRecord = Record
  t,x,y: integer;
  end;

var
TreeTile: array[0..50] of integer;
TreePlace: array[0..500] of TreeRecord;
TreeCount: integer;
s: boolean;
x,y,c,a,len,i: 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 (not dead) and (FindCount = 0) and (ObjAtLayer(LHandLayer) = 0) then
   begin
    AddToSystemJournal('Нет топора');
    s:=false;
    result:=false;
   end
  else
    result:=true;      
end;


procedure CheckTree;
var
LCount: integer;
t: integer;
TTile: TStaticCell;

begin
TTile:=ReadStaticsXY(x, y, WorldNum);
LCount:=GetLayerCount(x, y, WorldNum);
for i:=0 to LCount-1 do
  begin
   for t:=0 to len-1 do
    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;  
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 Lumber;
var
t: TDateTime;

begin
for a:=0 to TreeCount do
  begin
   if not Dead and CheckTool then
    repeat
     CheckCon;
     NewMoveXY(TreePlace[a].x, TreePlace[a].y, true, 1, false);
     if TargetPresent then CancelTarget;
     t:=now;
     WaitTargetTile(TreePlace[a].t, TreePlace[a].x, TreePlace[a].y, 1);
     UseType(Axe, $FFFF);
     WaitJournalLine(t, 'stop lumberjacking|any wood', 120000);
    until (InJournalBetweenTimes('no wood|any wood', t, now) > 0) or Dead
   else break;    
  end;
end;


begin


s:=true;

TreeTile[0]:=3240;
TreeTile[1]:=3242;
TreeTile[2]:=3277;
TreeTile[3]:=3283;
TreeTile[4]:=3286;
TreeTile[5]:=3288;
TreeTile[6]:=3289;
TreeTile[7]:=3290;
TreeTile[8]:=3291;
TreeTile[9]:=3294;
TreeTile[10]:=3296;
TreeTile[11]:=3299;
TreeTile[12]:=3302;
TreeTile[13]:=3393;
TreeTile[14]:=3394;
TreeTile[15]:=3395;
TreeTile[16]:=3396;
TreeTile[17]:=3415;
TreeTile[18]:=3416;
TreeTile[19]:=3417;
TreeTile[20]:=3418;
TreeTile[21]:=3419;
TreeTile[22]:=3438;
TreeTile[23]:=3439;
TreeTile[24]:=3440;
TreeTile[25]:=3441;
TreeTile[26]:=3442;
TreeTile[27]:=3460;
TreeTile[28]:=3461;
TreeTile[29]:=3488;
TreeTile[30]:=3480;
TreeTile[31]:=3482;
TreeTile[32]:=3498;  

for i:=0 to Length(TreeTile)-1 do
  if TreeTile[i] <> 0 then
   len:=len+1;

CheckCon;

FindTree;
AddToSystemJournal('Найдено деревьев: '+IntToStr(TreeCount));

while (not Dead) and s and CheckTool do
  Lumber;

  
end.
Last edited by Crazylammer on 02.02.2013 23:03, edited 1 time in total.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Помогите исправить макрос на ламбер

Post by Vizit0r »

может потому что твои деревья вполне себе обьекты, а не статика? поэтому CheckTree накрывается медным тазом. вообще ее выкинуть. WaitTargetTile заменить на WaitTargetObject. что-то еще с ходу не увидел, но наверняка всплывет :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Crazylammer
Posts: 2
Joined: 02.02.2013 22:52

Re: Помогите исправить макрос на ламбер

Post by Crazylammer »

Vizit0r wrote:может потому что твои деревья вполне себе обьекты, а не статика? поэтому CheckTree накрывается медным тазом. вообще ее выкинуть. WaitTargetTile заменить на WaitTargetObject. что-то еще с ходу не увидел, но наверняка всплывет :)
То что это обьекты я понимаю но я не писал скриптов не когда поэтому не разбераюсь ) и прошу более умных в этом вопросе мне помочь)
Post Reply