ИД обьекта передать в переменную

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Chico
Posts: 46
Joined: 2005-05-02 17:37:12
Contact:

ИД обьекта передать в переменную

Post by Chico »

При присваивании переменной из объекта пользуйюь такой примитивной конструкцией

Code: Select all

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 
надо что то типа
Runebookid = 'RB_TM' + str(n)

но напрямую из Обьекта передать в переменную не выходит, кто что подксажет ?
[/code]
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Не понял твоего кода =\ В чём его смысл?
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Re: ИД обьекта передать в переменную

Post by DerMeister =) »

Chico wrote:При присваивании переменной из объекта пользуйюь такой примитивной конструкцией

Code: Select all

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 
надо что то типа
Runebookid = 'RB_TM' + str(n)

но напрямую из Обьекта передать в переменную не выходит, кто что подксажет ?
[/code]
Какого "Объекта"? В мире много языков программирования и все они имеют свою особенную терминологию. В нашем понимании (инжекта), "объект" это часть "мира" УО, имеющая свой серийный номер, тип, цвет и тд и тп... Поэтому поясни что ты имел ввиду.
ЗЫ: А, кстате, Runebookid = 'RB_TM' + str(n) должно работать.
DerMeister сейчас на нейрале!
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Re: ИД обьекта передать в переменную

Post by Edred »

DerMeister =) wrote: Какого "Объекта"?
ЗЫ: А, кстате, Runebookid = 'RB_TM' + str(n) должно работать.
Он имел в виду наверняка объекты, им определенные на закладке объектов. То есть те, которые в скрипте пишутся в кавычках. Кстати,
Chico wrote:Runebookid = 'RB_TM1'
это не должно работать. Если RB_TM1 - это объект, определенный на закладке объектов. Тебе надо писать:

Code: Select all

Runebookid = UO.GetSerial('RB_TM1')
И, кстати, тебе никто не мешает написать:

Code: Select all

Runebookid = UO.GetSerial('RB_TM' + str(n))
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Хмм, угу...
А он так написал, что я ничё не понял... Меня сбило с толку Runebookid = 'RB_TM1'... до сих пор не могу представить, что это попытка обращения к объекту...
DerMeister сейчас на нейрале!
Chico
Posts: 46
Joined: 2005-05-02 17:37:12
Contact:

Post by Chico »

Ну да Я имел ввиду, обьекты на закладке Object - я решил что все поймут, так как объекты в мире имеют ID а ниакак не название RB_TM1
А конструкция

Code: Select all

Runebookid = '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

И мне вышеприведенная конструкция не наравится, хотя весь скрипт и работает изумиетльно, но перебор по условию сдишком громоздок, и нельзя сделать большое число рунбук
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

А, теперь ясно...

Токо Эдред то тебе всё уже подсказал:
Вместо

Code: Select all

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
Сделай просто:

Code: Select all

Runebookid = UO.GetSerial('RB_TM' + str(n))
DerMeister сейчас на нейрале!
Post Reply