Page 1 of 1
Работа с массивом
Posted: 23.01.2012 19:34
by untouch
Здравствуйте,
При написании скрипта столкнулся с проблемой, а именно с работой массива, вот ниже пример:
Допустим, необходимо произвести действие с рядом стоящими объектами, по-очереди:
Code: Select all
Program test;
{$Include 'all.inc'}
var
i : integer;
obj :array[0..4] of cardinal;
Begin
obj[0] := $1239ABFF;
obj[1] := $1239B519;
obj[2] := $1239FD99;
obj[3] := $123A1540;
obj[4] := $123A7EBF;
for i:=0 to 4 do
UseObject(ObjAtLayerEx(RhandLayer, self));
WaitTargetObject(obj[i]);
wait(1000);
End.
где здесь ошибка и почему?
(разбираюсь в скриптинге сам, поэтому не судите меня строго)
Re: Работа с массивом
Posted: 23.01.2012 19:45
by nah nah
Code: Select all
for i:=0 to 4 do
begin
UseObject(ObjAtLayerEx(RhandLayer, self));
WaitTargetObject(obj[i]);
wait(1000);
end;
Re: Работа с массивом
Posted: 23.01.2012 21:28
by untouch
[quote="nah nah"][/quote]
капец,
спс
Re: Работа с массивом
Posted: 23.01.2012 22:42
by nah nah
На питоне разбираться удобнее. Весь код можно было бы уместить в 4 строки
Code: Select all
for i in (0x1239ABFF, 0x1239B519, 0x1239FD99, 0x123A1540, 0x123A7EBF):
UseObject(ObjAtLayerEx(RhandLayer(), Self()))
WaitTargetObject(i)
Wait(1000)
Re: Работа с массивом
Posted: 23.01.2012 23:25
by Vizit0r
что ни тема, то питонщики рассказывают за красоту и удобство кода:)
Re: Работа с массивом
Posted: 23.01.2012 23:49
by Lietman
Сделали б уроки на питоне =) было бы круто =)
Re: Работа с массивом
Posted: 24.01.2012 0:19
by chernysh
Lietman wrote:Сделали б уроки на питоне =) было бы круто =)
А что их делать? Все тоже самое, только синтаксис питона понять нужно.
Из преимуществ, нету типизации, т.е не нужно задавать везде переменные String, Char, Cardinal, Word. Да и синтаксис удобный

Re: Работа с массивом
Posted: 24.01.2012 0:24
by Alex
Vizit0r wrote:что ни тема, то питонщики рассказывают за красоту и удобство кода:)

Re: Работа с массивом
Posted: 24.01.2012 6:25
by Scripts Writer
nah nah wrote:На питоне разбираться удобнее. Весь код можно было бы уместить в 4 строки
Code: Select all
for i in (0x1239ABFF, 0x1239B519, 0x1239FD99, 0x123A1540, 0x123A7EBF):
UseObject(ObjAtLayerEx(RhandLayer(), Self()))
WaitTargetObject(i)
Wait(1000)
А если у тебя будет 50 элементов массива и понадобится работать с ним в 5 разных местах, продублируешь код 5 раз с коллекций по 50 элементов для перебора в каждом?
Re: Работа с массивом
Posted: 24.01.2012 9:34
by chernysh
Scripts Writer wrote:nah nah wrote:На питоне разбираться удобнее. Весь код можно было бы уместить в 4 строки
Code: Select all
for i in (0x1239ABFF, 0x1239B519, 0x1239FD99, 0x123A1540, 0x123A7EBF):
UseObject(ObjAtLayerEx(RhandLayer(), Self()))
WaitTargetObject(i)
Wait(1000)
А если у тебя будет 50 элементов массива и понадобится работать с ним в 5 разных местах, продублируешь код 5 раз с коллекций по 50 элементов для перебора в каждом?
На самом деле это был пример говнокода

Не в обиду автора.
Конечно же, писать нужно так:
Code: Select all
obj_ids = [0x1239ABFF, 0x1239B519, 0x1239FD99, 0x123A1540, 0x123A7EBF]
for obj in obj_ids:
UseObject(ObjAtLayerEx(RhandLayer(), Self()))
WaitTargetObject(obj)
Wait(1000)
Re: Работа с массивом
Posted: 24.01.2012 9:35
by nah nah
Scripts Writer wrote:А если у тебя будет 50 элементов массива и понадобится работать с ним в 5 разных местах, продублируешь код 5 раз с коллекций по 50 элементов для перебора в каждом?
Я бы присвоил список переменной
зы. не успел ответить
Re: Работа с массивом
Posted: 05.03.2012 13:40
by Tomers
У меня реализовано так:
Code: Select all
var
obj:array of cardinal;
i:integer;
begin
obj:=[$1239ABFF,$1239B519,$1239FD99,$123A1540,$123A7EBF];
for i:=0 to hight(obj) do begin
...
end;
End.
Плюс этого метода в том, что при необходимости увеличения колличества обрабатываемых предметов, просто добавляеш их в obj:=[$1239ABFF,$1239B519,...]; и все.
Впринципе и твой код верен, тут проблема не в масиве, у меня была подобна проблема, когда просто не успевал отработать прицел. Не особо вдаваясь в причину я ставил после юза объекта: wait(200);
п.с. С юзом объекта из руки не работал по причине отсутствия необходимости в таковой.
Re: Работа с массивом
Posted: 05.03.2012 15:06
by nah nah
Tomers wrote:тут проблема не в масиве
Верно! У топик-стартера просто не было
begin и
end в скрипте после
for