Page 1 of 1

ID Айтемов(трабла)

Posted: 2005-01-23 07:21:41
by Goggy
Инжа чёто нехочет использовать ID номера итемов пишет что он неверный, то есть когда в скрипте прописываешь например:

Code: Select all

var Runa = 0x40083b3c
А если идёт как добавление предмета

Code: Select all

exec("addobject Runa")
и указуешь прицелом то всё норм, почему так ?

P.S. И скажите плиз как можно обойти

Posted: 2005-01-23 14:24:49
by Yoko
всё зависит от того, как написан скрипт.
большинство скриптов ожидают сериал обьекта как текстовую строку.
более того, скрипт может ожидать обьект добавленый в список обьектов.
конкретно для этого скрипта, видимо ожидается последний вариант: exec("addobject Runa 0x40083b3c")

Posted: 2005-01-24 00:14:58
by Goggy
Yoko wrote:всё зависит от того, как написан скрипт.
большинство скриптов ожидают сериал обьекта как текстовую строку.
более того, скрипт может ожидать обьект добавленый в список обьектов.
конкретно для этого скрипта, видимо ожидается последний вариант: exec("addobject Runa 0x40083b3c")
Я думаю что это завит всё таки от сферы, т.к. выводит инвалид сериал индекс для любого скрипта который ябы не написал(использование предмета по ID и тд.), для верности вот именно скрипт в котором надо разобратся...

Code: Select all

###########################*Скупка регов*###############
#########################***By Goggy V1.1***############
sub BuyReagents()
VAR Meshok = 0x4007B72B		# ID мешка для сброса регов
var i,k
var BlackPerls = 0x0f7a 		#Тип Блэк пёрлов (реги)
var NightShade = 0x0f88  		#Тип Нитшейда (реги)
var HomeRun = 0x4002B8CD  		# ID руны домой
dim Runka[11]			# Массив ID Рун к вендорам
 Runka[0] = '0x4002578B'
 Runka[1] = '0x40035B49'
 Runka[2] = '0x40024626'
 Runka[3] = '0x400427EB'
 Runka[4] = '0x400619CC'
 Runka[5] = '0x40053B61'
 Runka[6] = '0x4000B252'
 Runka[7] = '0x40035A77'
 Runka[8] = '0x40061A4C'
 Runka[9] = '0x4002852E'
 Runka[10] = '0x40061A88'

repeat
while UO.bp > 20 or UO.mr > 20 or UO.bm > 20
for i = 0 to 10
Recall(Runka[i])
buy('rr')
next

Recall(HomeRun)

BagRelease('Meshok','NightShade') 
wait(500)
BagRelease('Meshok','BlackPerls') 
wait(500)
wend

GetReagents(Meshok)
until UO.Dead()
end sub

########################################################
sub Recall(Rune) 
repeat
Mana()
UO.deletejournal()
UO.Print("!!Прыгаем ДоМОЙ!!") 
uo.cast('Recall', 'Rune') 
wait(10000)
until uo.InJournal("fizzles")
UO.deletejournal()
end sub 

########################################################

sub Mana()
while UO.Mana < UO.Int
UO.Useskill('Meditation')
wait(100)
wend
end sub

#########################################################
sub BagRelease(Meshok,Regi) 
wait(600) 
UO.SetReceivingContainer(Meshok) 
uo.findtype('Regi',-1,'my') 
wait(500) 
UO.Grab('all','finditem')  
wait(500) 
UO.UnSetReceivingContainer() 
end sub 

########################################################
sub GetReagents(Meshok)
var k
Dim regs[3]		# Массив тайпов регов(BP,BM,MR)
 regs[0] = 0x0f7a
 regs[1] = 0x0f7b
 regs[2] = 0x0f86

for k = 0 to 2
wait(500)
UO.SetReceivingContainer('my') 
uo.findtype('regs[k]',-1,'Meshok') 
wait(500) 
UO.Grab(100,'finditem')  
wait(500) 
UO.UnSetReceivingContainer() 
end sub
этот скриптик я так своял на скорую руку(просто делать было нечего :) ), но так на утовне тэста и застрял так как нехочу брать ID аддобжектами (у меня это производит к некоторім глюкам клиента).

И ещё... инжа всё таки воспринимает єти IDшники, но тока после того как был произведён аддобжект, тоесть сначала запускаем скрипт с аддобжект->останавливает->коментируем(аддобжект)->вставляем сам ID, и тогда всё работает, но меня это неустраивает(к сожалению :) )

P.S. скрипт ещё недокончен, так как немогу произвести тест и этого участочка :(

Posted: 2005-01-24 01:28:50
by AlexeyVorotnikov
По-моему, надо вот так (я оставил только изменённые строчки и названия процедур):

Code: Select all

VAR Meshok = '0x4007B72B'      # ID мешка для сброса регов 
... 
var BlackPerls = '0x0f7a'       #Тип Блэк пёрлов (реги) 
var NightShade = '0x0f88'        #Тип Нитшейда (реги) 
var HomeRun = '0x4002B8CD'        # ID руны домой 
...
BagRelease(Meshok,NightShade) 
...
BagRelease(Meshok,BlackPerls) 
...
sub Recall(Rune) 
...
uo.cast('Recall', Rune) 
...
end sub 
...
sub BagRelease(Meshok,Regi) 
...
uo.findtype(Regi,-1,'my') 
...
end sub
... 
sub GetReagents(Meshok) 
...
Dim regs[3]      # Массив тайпов регов(BP,BM,MR) 
 regs[0] = '0x0f7a' 
 regs[1] = '0x0f7b' 
 regs[2] = '0x0f86' 

...
uo.findtype(regs[k],-1,Meshok) 
...
end sub 
Обрати внимание на использование кавычек в этих строчках.