RU

Вывод действий в цикле с передачей параметров - глюк?

Воден #360 20.08.2012 18:16 2 comments 6368 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

При этом значения всех подвыражений будут вычислены перед добавлением действия.

Ага! А слона-то я и не приметил!
Спасибо!

Log in or Register to post comments.