Page 1 of 1

Не получается использовать uo...global(****

Posted: 2006-04-01 00:08:10
by Sanch
Не получается использовать setglobal() и getglobal, мож я че неплаьно делаю:

sub Mining()
uo.setglobal('per1', '0')
uo.print('Укажите сундук с регами, кирками, инвизками, манками')
uo.exec('addobject Sunduk1')
while uo.targeting()
wait(100)
wend
..............
...............
DropOre()
end sub

sub DropOre()
if uo.getglobal('per1') == 1 then
DIM Ore[4]
Ore[0] = '0x19B9'
Ore[1] = '0x19B7'
Ore[2] = '0x19BA'
Ore[3] = '0x19B8'
for var a = 0 to 3
uo.findtype(Ore[a])
while uo.findcount() > 0
uo.moveitem('finditem', '-1', 'Sunduk2')
wait(1000)
uo.findtype(Ore[a])
wend
next
endif
uo.setglobal('per1', '1')
end sub

Задумка была такова, чтоыб при первом запуске скритп не срабатывал, а при последующем (не через саб minimg) срабатывал, вот только он ни так ни этак не работает.

Posted: 2006-04-01 01:03:52
by Edred
Все просто:

uo.setglobal('per1', '0') - этой командой ты запихиваешь в глобалку 0 строкой.

uo.getglobal('per1') == 1 - тут ты берешь строку из глобалки и пытаешься ее сравнивать с числом. Преобразование строки в число по умолчанию всегда 0, ноль всегда не равен единице...

Что надо поправить, догадаешься сам? :roll:

Posted: 2006-04-01 03:15:54
by Grin
Эх санч... не ужто мой пост не вразумил?
Говорил же что принимает все что угоно
а возвращает только строчку...

Posted: 2006-04-01 06:12:16
by Sanch
Вы меня запутали, лан буд разбираться что она делает методом тыка, а вообще я не програмист и всего неделю от силы пытаюсь написать что нить стоящее, ничего в этом не шаря, должно быть так?

sub Mining()
uo.setglobal('per1', 'abd')
uo.print('Укажите сундук с регами, кирками, инвизками, манками')
uo.exec('addobject Sunduk1')
while uo.targeting()
wait(100)
wend
..............
...............
DropOre()
end sub

sub DropOre()
if uo.getglobal('per1') == 'abc' then
DIM Ore[4]
Ore[0] = '0x19B9'
Ore[1] = '0x19B7'
Ore[2] = '0x19BA'
Ore[3] = '0x19B8'
for var a = 0 to 3
uo.findtype(Ore[a])
while uo.findcount() > 0
uo.moveitem('finditem', '-1', 'Sunduk2')
wait(1000)
uo.findtype(Ore[a])
wend
next
endif
uo.setglobal('per1', 'abc')
end sub

Можно сделать как нить так чтобы она с числами работала, тк удобнее?

Posted: 2006-04-01 09:23:13
by Edred
Эх, ну тебе надо же всего лишь в первом скрипте подставить кавычки:

Code: Select all

if uo.getglobal('per1') == '1' then


И всех делов-то... Ну а если тебе очень хочется именно числом, то тогда так:

Code: Select all

if val(uo.getglobal('per1')) == 1 then


Вообще, когда пользуешься хелпом, весьма настойчиво рекомендую обращать внимание на обозначение перед именем функции:
Синтакс: text uo.GetGlobal(name)

Тут написано 'text' - это то, в каком виде функция возвращает значение.

Posted: 2006-04-01 13:40:57
by Sanch
Преогромное спасибо...