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

Out Of Range

тут можно задать вопрос по скриптингу
Post Reply
untouch
Neophyte
Neophyte
Posts: 14
Joined: 09.01.2012 22:56

Out Of Range

Post by untouch »

Добрый день,
подскажите в чем может быть проблема?

Code: Select all

...
var
...
i, tmp : integer;
treetile: array [0..15] of word;
treecoord: array [0..35] of tfoundtile;

procedure init_tree;
begin
treetile[0]:= 3293;
treetile[1]:= 3290;
treetile[2]:= 3286;
treetile[3]:= 3288;
treetile[4]:= 3288;
treetile[5]:= 3293;
treetile[6]:= 3280;
treetile[7]:= 3280;
treetile[8]:= 3296;
treetile[9]:= 3277;
treetile[10]:= 3293;
treetile[11]:= 3296;
treetile[12]:= 3290;
treetile[13]:= 3290;
treetile[14]:= 3288;
treetile[15]:= 3288;
treetile[16]:= 3280;
treetile[17]:= 3277;
treetile[18]:= 3290;
treetile[19]:= 3302;
treetile[20]:= 3283;
treetile[21]:= 3290;
treetile[22]:= 3283;
treetile[23]:= 3283;
treetile[24]:= 3296;
treetile[25]:= 3293;
treetile[26]:= 3277;
treetile[27]:= 3283;
treetile[28]:= 3293;
treetile[29]:= 3293;
treetile[30]:= 3296;
treetile[31]:= 3280;
end;

procedure changetree;
begin
treecoord[0].x:= 1500;
treecoord[0].y:= 1110;
treecoord[1].x:= 1500;
treecoord[1].y:= 1113;
treecoord[2].x:= 1512;
treecoord[2].y:= 1107;
treecoord[3].x:= 1512;
treecoord[3].y:= 1110;
treecoord[4].x:= 1552;
treecoord[4].y:= 1095;
treecoord[5].x:= 1552;
treecoord[5].y:= 1098;
treecoord[6].x:= 1564;
treecoord[6].y:= 1089;
treecoord[7].x:= 1564;
treecoord[7].y:= 1092;
treecoord[8].x:= 1576;
treecoord[8].y:= 1086;
treecoord[9].x:= 1576;
treecoord[9].y:= 1089;
treecoord[10].x:= 1608;
treecoord[10].y:= 1080;
treecoord[11].x:= 1608;
treecoord[11].y:= 1083;
treecoord[12].x:= 1620;
treecoord[12].y:= 1089;
treecoord[13].x:= 1620;
treecoord[13].y:= 1092;
treecoord[14].x:= 1632;
treecoord[14].y:= 1095;
treecoord[15].x:= 1632;
treecoord[15].y:= 1098;
treecoord[16].x:= 1644;
treecoord[16].y:= 1080;
treecoord[17].x:= 1644;
treecoord[17].y:= 1083;
treecoord[18].x:= 1612;
treecoord[18].y:= 1059;
treecoord[19].x:= 1612;
treecoord[19].y:= 1062;
treecoord[20].x:= 1604;
treecoord[20].y:= 1053;
treecoord[21].x:= 1604;
treecoord[21].y:= 1056;
treecoord[22].x:= 1600;
treecoord[22].y:= 1047;
treecoord[23].x:= 1600;
treecoord[23].y:= 1050;
treecoord[24].x:= 1588;
treecoord[24].y:= 1044;
treecoord[25].x:= 1588;
treecoord[25].y:= 1047;
treecoord[26].x:= 1584;
treecoord[26].y:= 1047;
treecoord[27].x:= 1584;
treecoord[27].y:= 1050;
treecoord[28].x:= 1572;
treecoord[28].y:= 1032;
treecoord[29].x:= 1572;
treecoord[29].y:= 1035;
treecoord[30].x:= 1560;
treecoord[30].y:= 1017;
treecoord[31].x:= 1560;
treecoord[31].y:= 1020;
end;

procedure chop;
begin
init_tree;
changetree;
for j:=tmp to tmp+1 do //вот тут по-моему беда, только я никак не пойму вчем конкретно ошибка
begin
repeat
if targetpresent then canceltarget;
wait(500);
if warmode = true then setwarmode(false);
ctime := Now;
waittargettile(treetile[j], treecoord[j].x, treecoord[j].y, 0);
useobject(objatlayerex(Lhandlayer,self));
wait(500);
z := 0;
repeat 
wait(100); 
z := z + 1; 
m0 := injournalbetweentimes(mes0, ctime, Now);
m1 := injournalbetweentimes(mes1, ctime, Now); 
m2 := injournalbetweentimes(mes2, ctime, Now); 
m3 := injournalbetweentimes(mes3, ctime, Now); 
m4 := injournalbetweentimes(mes4, ctime, Now); 
m5 := injournalbetweentimes(mes5, ctime, Now); 
until (m0<>-1) or (m1<>-1) or (m2<>-1) or (m3<>-1) or (m4<>-1) or (m5<>-1) or Dead or (z > 50);
until (m2<>-1) or (m3<>-1) or (m4<>-1);

end;
tmp:=tmp+1; 
end;

Begin
setarstatus(true);
while not dead do
begin
tmp := 0;
...
chop;
end;
end;
End.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Out Of Range

Post by Vizit0r »

"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
untouch
Neophyte
Neophyte
Posts: 14
Joined: 09.01.2012 22:56

Re: Out Of Range

Post by untouch »

я читал этот топ, прошу указать мне почему не работает мой цикл?

Code: Select all

for j:=tmp to tmp+1 do
вот тут я неправильно его организовал?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Out Of Range

Post by Vizit0r »

ты смотри на верхнюю границу.
чтобы не стало у тебя j = 32 и тогда при обращении к массивам деревьев может как раз и вылететь ошибка.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
untouch
Neophyte
Neophyte
Posts: 14
Joined: 09.01.2012 22:56

Re: Out Of Range

Post by untouch »

я хотел таким способом задать правильный цикл

объясню логику скрипта:
в рунбуке 16 рун, каждая точка из рун которых имеет два дерева, которые надо прорубать, итого имеем 32 дерева
решил ввести переменную tmp, которая вытаскивала бы правильные два индекса из массива (два дерева), таким образом чтобы было
1 точка: от 0 до 1
2 точка: от 2 до 3
...
16 точка: от 30 до 31

Code: Select all

tmp:=0
for i:= 0 to 15 // осн цикл
...
for j:= tmp to tmp+1 // цикл для "двух" деревьев
...
end;
tmp:= tmp+1
end;
т.е. j никак не станет 32 из-за его обнуления
хоть я и понимаю, что сам скрипт не ставит циклу явные четкие рамки для верхней границы
а как тогда можно сделать еще?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Out Of Range

Post by Vizit0r »

ну если обнуляется перед входом в процедуру - то надо смотреть на работу скрипта.
падает всегда в одном месте, или случайно?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
untouch
Neophyte
Neophyte
Posts: 14
Joined: 09.01.2012 22:56

Re: Out Of Range

Post by untouch »

да, падает сразу перед началом рубки 1-го древа
untouch
Neophyte
Neophyte
Posts: 14
Joined: 09.01.2012 22:56

Re: Out Of Range

Post by untouch »

пардон, только что перепроверил метками, падает перед чтением процедуры
ошибку пока одну нашел, размерность массива не верно указана была :oops:
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Out Of Range

Post by Vizit0r »

ну так на отладке пошаговкой смотри, где именно падает.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
untouch
Neophyte
Neophyte
Posts: 14
Joined: 09.01.2012 22:56

Re: Out Of Range

Post by untouch »

ппц, все работает
ошибка была в размерности массива, указал вместо 32 16 элементов...
спс за подсазки :lol:
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Out Of Range

Post by Vizit0r »

а, ну да)
я туда и не смотрел.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply