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

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

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

Post 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) срабатывал, вот только он ни так ни этак не работает.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Все просто:

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

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

Что надо поправить, догадаешься сам? :roll:
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Эх санч... не ужто мой пост не вразумил?
Говорил же что принимает все что угоно
а возвращает только строчку...
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post 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

Можно сделать как нить так чтобы она с числами работала, тк удобнее?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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' - это то, в каком виде функция возвращает значение.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Преогромное спасибо...
Post Reply