Page 1 of 1

uo.recall или работа с str

Posted: 2006-04-27 17:07:23
by pumbey
Итак
Для шарда zhr.ru. Дорабатывая скрипт на ламбер, столкнулся с тем что у нас на сервере классовому крафту не очень желательно иметь майджери , то есть хочеться реколиться с помощью uo.recall
итак скрипт
(предаврительно пытка рунбуки infogump'ом показала - 16=1 руне,17=2, 18=3, и т.д.)

Code: Select all

Sub main()
var runbook = 0x00000
UO.Set("Norbcheck 1")
UO.Set("NorbCalc 1")
uo.recall('runbook 17');то есть рекол по руне №2
end sub


В поиске я нащел подобную тему но к сожалению отвта на свой вопрос не нашел :(
И что характерно - все работает
Немного оформим скрипт

Code: Select all

Sub main()
var runbook = 0x00000 - серийник книжки
var rh=4 ;руна домой - порядковый номер в рунбуке
var rl=12 ;руна в лес - порядковый номер в рунбуке
UO.Set("Norbcheck 1")
UO.Set("NorbCalc 1")
uo.recall('runbook str(rh+15)');то есть рекол по руне №2
end sub
-начинает жаловаться на неверный usage
при эиом если
f= str(rh+15)
uo.print(f)
то выдает правильное значение, то есть 19(в данном случае)
...
Вопрос, как все таки забить номер руны в переменную?

Posted: 2006-04-27 18:42:07
by DerMeister =)

Code: Select all

uo.recall(runebookobject,runenumber)

Скорее всего нужно передавать в качестве параметра runenumder число , а не строку...

Попробуй

Code: Select all

uo.recall('runbook val(rh+15)')

Posted: 2006-04-27 20:50:19
by admir
uo.recall('runbook str(rh+15)')
? запатая и кавычки
uo.recall('runbook', 'rh+15')

Re: uo.recall или работа с str

Posted: 2006-04-27 23:53:41
by Edred
pumbey wrote:

Code: Select all

uo.recall('runbook str(rh+15)');то есть рекол по руне №2
Вопрос, как все таки забить номер руны в переменную?


Кавычки означают - все внутри текст. В том числе и вызов str(). Проверь:

Code: Select all

UO.Print( 'Привет str(10)' )

На экране получишь именно такой же текст. Уже догадался что тебе надо?

Code: Select all

uo.recall('runbook ' + str(rh+15))


ЗЫ: 15 + 4 = 19, а не 17 :lol:

Posted: 2006-04-28 07:04:15
by Grin
кто вочто горазд... что не пост так ошибка..
uo.recall(runbook, str(rh+15))

Posted: 2006-04-28 09:12:11
by Destruction
Grin wrote:кто вочто горазд... что не пост так ошибка..
uo.recall(runbook, str(rh+15))

Здравомыслящий человек наконец-то пришёл :roll:

Posted: 2006-04-28 09:49:23
by Edred
Grin wrote:кто вочто горазд... что не пост так ошибка..
uo.recall(runbook, str(rh+15))


Включая твой :) runbook - насколько я понял - это ссылка на уже определенный объект, так что в кавычках его писать надо:

Code: Select all

uo.recall('runbook', str(rh+15))


:lol:

Posted: 2006-04-28 10:02:13
by Grin

Code: Select all

Sub main() 
var runbook = 0x00000 - серийник книжки
var rh=4 ;руна домой - порядковый номер в рунбуке
var rl=12 ;руна в лес - порядковый номер в рунбуке
UO.Set("Norbcheck 1")
UO.Set("NorbCalc 1")
uo.recall('runbook str(rh+15)');то есть рекол по руне №2
end sub


Читай прежде чем писать... гррр

Posted: 2006-04-28 12:11:55
by Edred
Мдя, склероз... :oops:

Destruction: Согласен, ты даже забыл, что флудить - это плохо!

Posted: 2006-04-28 18:03:45
by admir
и вправду ) все объявленные переменные должны быть без кавычек )

Posted: 2006-04-28 18:21:04
by SLAK
admir wrote:и вправду ) все объявленные переменные должны быть без кавычек )
]

Code: Select all

var book=0x12345678
uo.recall('book','1')

Posted: 2006-04-28 18:24:24
by pumbey
Итак.. Спасибо всем кто принял живое участие в данной проблеме..ЛАрчик открылся довольно просто

Code: Select all

sub test()
var rh=1
var runebook=0x60B0D0A5
var done=rh+15
UO.Set('norbcheck', '1')
UO.Set('norbcalc', '1')
uo.recall(runebook, done)
end sub
- вот наконец то заработавщий вариант..
к сожалению ни val, ни str не заработали - если небыло удовлетворительного аргумента - скидывалось на 0

З.Ы.Отдельный респект 2Grin за идею

Posted: 2006-04-28 20:53:37
by Grin
кстати очень страно почему рекол не отработал;)
это одна из немногих функций которая делат правельную конвертацию.. хотя и лишнею;)
в общем юзайте перл%) он таким не страдает%)