Помощь в скриптах

General Injection issues

Moderators: Murderator+, Murderator

Post Reply
Immelstorn
Posts: 67
Joined: 2004-10-22 13:33:21

Помощь в скриптах

Post by Immelstorn »

Здравствуйте многоуважаемые комрады)
Я можно сказать тут новенький, только начал писать сам скрипты на инже и вот сразу возник один вопрос, информацию по которому мне негде найти не удалось. Поможете нубу?)
В-общем, задача такая. Необходимо сделать так, чтобы после каждого "проката" скрипта инжа брала следующую переменную из определенного массива и подставляла значение в какую-нибудь функцию. Например, реколлилась каждый раз в следующее место или брала следующий предмет из массива. Заранее благодарю)
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Re: Помощь в скриптах

Post by Sfagnum »

Code: Select all

sub test
var i
dim a[n]
a[0]='...'
.....
a[n-1]='...'
  for i = 0 to n-1
    ...
    funct(a[i])
    ...
  next
end sub
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

Code: Select all

sub init()
uo.setglobal("ArrCount","10")
uo.setglobal("ArrItem0","0x12345678")
uo.setglobal("ArrItem1","0x23456781")
uo.setglobal("ArrItem2","0x34567812")
....
uo.setglobal("ArrNow","0")
end sub

sub doit()
var x=val(uo.getglobal("ArrNow"))
uo.print(uo.getglobal("ArrItem"+str(x))
x=x+1
if x>val(uo.getglobal("ArrCount")) then
x=0
end if
uo.setglobal("ArrNow",str(x))
end sub

ещё раз напоминаю, что Set/GetGlobal и Set/GetEasyUO работают только с текстовыми данными, так что при необходимости используется преобразование
Immelstorn
Posts: 67
Joined: 2004-10-22 13:33:21

Post by Immelstorn »

Все отлично заработало, спасибо!
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Re: Помощь в скриптах

Post by Edred »

Sfagnum wrote:

Code: Select all

funct(a[i])


Вот так не делай. Получишь весьма неожиданный результат. Я уже напоролся. Надо вводить доп. переменную и присваивать ей значение ячейки массива, и потом уже это переменную передавать в качестве параметра.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Re: Помощь в скриптах

Post by Sfagnum »

Edred wrote:
Sfagnum wrote:

Code: Select all

funct(a[i])


Вот так не делай. Получишь весьма неожиданный результат. Я уже напоролся. Надо вводить доп. переменную и присваивать ей значение ячейки массива, и потом уже это переменную передавать в качестве параметра.
спасибо буду знать.
а тоя ещё на эти грабли не наступал.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Re: Помощь в скриптах

Post by Edred »

Sfagnum wrote:
Edred wrote:
Sfagnum wrote:

Code: Select all

funct(a[i])


Вот так не делай. Получишь весьма неожиданный результат. Я уже напоролся. Надо вводить доп. переменную и присваивать ей значение ячейки массива, и потом уже это переменную передавать в качестве параметра.
спасибо буду знать.
а тоя ещё на эти грабли не наступал.


Насколько я разобрался, скрипт передает в функцию не ячейку массива, а все равно весь массив (то есть сам массив). А так как на той стороне ожидается строка (у меня массив текстовых строк был) - то в нее засовывается то ли первый элемент массива, то ли последний, то ли все в одну строку склеиваются...
Immelstorn
Posts: 67
Joined: 2004-10-22 13:33:21

Post by Immelstorn »

Знаете, мне все это нужно было для написания подобных скриптов:

sub Test()
VAR i
DIM A[2]
A[0]='0x4022B5CD'
A[1]='0x401B61E6'
for i=0 to 1
uo.moveitem(A[i],1,'0x4029642F')
wait(1000)
next
end sub

И надо сказать, все заработало, так что никаких подводных камней не вижу))
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

Immelstorn wrote:И надо сказать, все заработало, так что никаких подводных камней не вижу))
эт нормально...
у меня вот тож скрипт сперва с UO.UseType('...') без проблем, потом начал глюковать безбожно, поработает-поработает, а потом УПС.. и type not founded, перешёл на UO.Exec("usetype '...'")... таже хрень... и опять же не сразу.
в итоге сейчас юзаю uo.useobject...
ттт - пока всё работает с неделю уже.
Post Reply