Page 1 of 1

Глобальные переменные

Posted: 2015-12-24 22:03:09
by kobol

Code: Select all

var wParID="2222"

##########################
sub w1()
wParID="111111"
uo.print (wParID)
end sub


##########################
sub w2() 
uo.print (wParID)
end sub

В процедуре W1() wParID присваивается"111111"
Почему, если после этого выполнить процедуру W2(), то wParID все равно остается равен "2222"?

Re: Глобальные переменные

Posted: 2015-12-24 22:36:07
by Mirage
вынесенная за sub главнее внутренних. :roll:

Re: Глобальные переменные

Posted: 2015-12-24 23:10:21
by kobol
Mirage wrote:вынесенная за sub главнее внутренних. :roll:
Ну, по идее, конечно так не должно быть. Глобальная переменная должна бы сохранять значение после изменения из функции.

Хочу в одной функции инициализировать набор переменных (искать ванды и присваивать их серийники переменным WandSerialXX), а d другой функции вызывать useobject(WandSerialXX).

Вернее по хоткею вызывать функцию в которой выполняется useobject(WandSerialXX) с сохраненным серийником данного ванда.

Как это лучше сделать, где сохранять серийники?

Re: Глобальные переменные

Posted: 2015-12-25 05:36:48
by Mirage
вверху сделай такую кучку:

Code: Select all

VAR rezka = 1
var menu
##################
### Контейнеры ###
VAR body			= '0x2006'	; труп (не разделанный)
VAR LootID
var LootType		= '0x0E75'
var LootColour		= '0x0027'
##################
### Инструменты ###
VAR Dagger			= '0x0F51'
VAR Cleaver		= '0x0EC2'
VAR NCleaver		= '0x0EC3'
;VAR Scissors		= '0x0F9E'	; ножницы  Colour: 0x08FC
##################
### Сырье ###
VAR hides			= '0x1078'	; шкура животного
VAR leather			= '0x1067'	; готовая кожа
##################
### Продукты производства ###
VAR Lockpick		= '0x14FB'	; отмычка
VAR Bottle			= '0x0F0E'	; бутылка
##################
### Оружие ###
VAR SuperiorBow		= '0x4070274C'	; +3 Mirage's Superior Bow
##################
### Еда ###
VAR FishSteaks		= '0x097B'	; жареные рыбные котлеты
##################
### Вспомогательные константы ###
VAR lootwait		= 125		; пауза
VAR printcolour		= '1069'	; цвет сообщений
VAR GetCotton		= 1		; если 1 то берет из сундука хлопок и скидывает в сундук нитки. Если 0 то нет
VAR HIDE			= 1		; если 1 прячемся, если 0 нет.
;VAR LootDist		= 2
##################
### Переменные ###
VAR MeshSer, d, LastTimer, timemove
VAR Type_Cleaver, Colour_Cleaver, itemCont, itemID, itemType, itemColor, TType, Type1, Type2, Color, SourceContainer, TargetContainer
VAR corpse, a, hair, reg, colhides, res
VAR request, TypeQ, ColorQ, NameQ, TypeT, ColorT, NameT, TypeM, ColorM, NameM, TypeC, ColorC, NameC
##################
### Сообщения ###
VAR msg = 'destroyed|You put|положили|fail|не удалось|You broke|сломали|izzle|uccess|in your pack'
##################

##################
; типы обычных реагентов
var BP          = 0x0F7A        ; Bleack Pearl
var BM          = 0x0F7B        ; Blood Moss
var MR          = 0x0F86        ; Mandrake Root
var NS          = 0x0F88        ; Nightshade
var SS          = 0x0F8D        ; Spider Silk
var SA          = 0x0F8C        ; Sulphurous Ash
var GA          = 0x0F84        ; Garlic
var GI          = 0x0F85        ; Ginseng
а внутри минимизируй и использую ID-ишники. Проще будет корректировать. Все будет в 1 месте а не в теле скрипта. КОгда автолоад строк на несколько тысяч строк это очень облегчает работу со скриптом ;)

Re: Глобальные переменные

Posted: 2015-12-25 07:35:24
by kobol
Ванды невозможно использовать по типу. Надо каждый раз перебирать в паке, искать нужное имя и потом юзать. Хотелось бы сделать это один раз и запомнить ID найденных вандов, чтобы потом использовать UseObject(wandSerial). Вопрос - где хранить найденные ID, чтобы потом их использовать. Может можно создать какой-нибудь list? Иначе придется сохранять в файле ))

Re: Глобальные переменные

Posted: 2015-12-25 10:48:46
by Incorrect User
kobol wrote:Глобальная переменная
Это не глобальная переменная. Для глобальных используй uo.setglobal() uo.getglobal()

Re: Глобальные переменные

Posted: 2015-12-25 17:37:43
by kobol
Как все специфично )

ps. Работает, спасибо ))