Ну да Я имел ввиду, обьекты на закладке Object - я решил что все поймут, так как объекты в мире имеют ID а ниакак не название RB_TM1
А конструкция
прекрасно всегда работала и работает, у меня она используется повсеместно, а зачем использовать UO.GetSerial('RB_TM1'), если сериал уже и есть RB_TM1. UO.GetSerial мной используется для преобразования тип-> обьект.
Короче говоря, мне надо на основании сгенереных динамично объектов получать ID в переменную.
То есть
В шапке указываю количество рунбук
var kol_buk = 5
потом делаю
Code: Select all
for i= 1 to Kol_buk
uo.Exec('addobject Runebookid')
while Uo.Targeting()
wait(100)
wend
RB = "RB_TM"+str(i)
Uo.addobject(RB,'Runebookid')
next
У меня создается кучка объектов с именами RB_TM1, RB_TM2и т.д., столько сколько надо. от 1 до бесконечности
Потом у меня есть процедурка смены буки при прохождении первой
Code: Select all
Sub Smena_run()
var v = val(uo.getglobal('Tek_run_tm'))
var n = val(uo.getglobal('nomer_buki'))
if v < kol_run - 1 then ; Если текущий номер меньше всего количества рун то
uo.setglobal('Tek_run_tm',str(v+1)) ; + 1 к счетчику рунок
else
uo.setglobal('Tek_run_tm','0') ; Иначе начинаем цикл сначала
uo.print('bila buka - ' + str(n))
if n == kol_buk then
uo.print('stala buka - ' + str(1)) ; Если текущий номер равен количству рунбук то к первой иначе к следующей
uo.setglobal('nomer_buki',str(1))
else
uo.print('stala buka - ' + str(n+1))
uo.setglobal('nomer_buki',str(n+1))
end if
end if
wait(500)
end sub
То есть при прохождении буки до конца начинается следующая, до последней и сначала.
А вот реколится по букам так
Code: Select all
sub Rec_to_home()
var Udacha = 0
var Run, Runebookid
var v = val(uo.getglobal('Tek_run_tm'))
var n = val(uo.getglobal('nomer_buki'))
uo.set( "norbcheck", "1" )
uo.set( "norbcalc", "1" )
if n == 1 then
Runebookid = 'RB_TM1'
end if
if n == 2 then
Runebookid = 'RB_TM2'
end if
if n == 3 then
Runebookid = 'RB_TM3'
end if
if n == 4 then
Runebookid = 'RB_TM4'
end if
if n == 5 then
Runebookid = 'RB_TM5'
end if
run = v + 9
repeat
UO.FindType('0x0e43', '-1', '1') ; Ищем сундуки
wait(100)
If UO.FindCount() < 1 Then ; если не находим сундук то значит еще в лесу
uo.cast("Recall",Runebookid)
wait(8000)
else
Udacha = 1
end if
until Udacha == 1
Udacha = 0
end sub
И мне вышеприведенная конструкция не наравится, хотя весь скрипт и работает изумиетльно, но перебор по условию сдишком громоздок, и нельзя сделать большое число рунбук