RU
Вывод действий в цикле с передачей параметров - глюк?
Воден
#360
•
20.08.2012 18:16
•
2 comments
•
6370 views
$item_name[0] = 'маленький камешек'
$item_get[0] = 'Подобрать камешек'
$item_name[1] = 'камень'
$item_get[1] = 'Подобрать камень'
$item_name[2] = 'булыжник'
$item_get[2] = 'Подобрать булыжник'
#item_size = ARRSize('item_name')
#i = 0
:loop
act $item_get[#i]: gs 'взять', #i
#i = #i + 1
if #i < #item_size: jump 'loop'
Но вот беда:
в локации “взять” в ARGS[0] ВСЕГДА 3
ЧЯДНТ?
Воден,
цитирую справку:
Есть цикл, в котором добавляются действия. К сожалению, при выборе добавленного действия, используются значения переменных не на момент добавления, а текущие значения. Как решить проблему?
1) Наилучший вариант - вычислять значения переменных по названию выбранного действия:
i = 0
:nextEnemy
if i < enemies:
$actdesc='Атаковать <<i + 1>>'
n_enemy[$actdesc] = i
act $actdesc: n = n_enemy[$selact] & xgt 'атака'
i = i + 1
jump 'nextEnemy'
end
2) Добавление действия с помощью оператора “DYNAMIC”:
i = 0
:nextEnemy
if i < enemies:
dynamic " act 'Атаковать <<i + 1>>': n = <<i>> & xgt 'атака' "
i = i + 1
jump 'nextEnemy'
end
При этом значения всех подвыражений будут вычислены перед добавлением действия.
Ага! А слона-то я и не приметил!
Спасибо!