Перейти к контенту

Язык Lua. Общие вопросы программирования


Malandrinus

Рекомендуемые сообщения

Добавил в скрипте глобальную переменную:

FILTERS_PLACE=0

 

Далее в одной из функций записываю в нее результат рандома:

 

FILTERS_PLACE=math.random(2)
printf("FILTERS_PLACE= %s",FILTERS_PLACE) --чтобы сразу посмотреть в игре
 
Значение переменной меняется, все норм. Но почему то в этом ветвлении всегда выполняется второй вариант:

if xr_conditions.actor_in_zone(actor, npc, {"jup_b8_heli_4"})
		then
		if FILTERS_PLACE==1 then
			db.actor:give_info_portion("soulsDiedArmorsHeliJupiterDone")
			alife():create("dust_filter", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
			alife():create("dust_filter", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
		else
			db.actor:give_info_portion("soulsDiedArmorsHeliJupiterDone")
			news_manager.send_tip(db.actor, "no_filters", nil, "seeker", nil, nil)
		end
		
	end

 

 

 

Есть идеи, почему это происходит?

Ничто не вечно под луной.

Поделиться этим сообщением


Ссылка на сообщение
math.randomseed(os.time())

мне кажется это не совсем то, но сейчас проверю. Ваш совет даст постоянно разные рандомные числа, а у меня не срабатывает сравнение 2 и 2.

 

upd: да, это не помогло)) У меня другая проблема. Если я не меняю значение своей глобальной переменной - то "==" срабатывает, если рандомлю ее (и ее значение после рандома я смотрю в логе), то нет.

 

updupd: я понимаю что это звучит бредово, поэтому и решил здесь спросить. Может быть есть какие-нить особенности языка, которые я не знаю.

Изменено пользователем KitkaT.Net

Ничто не вечно под луной.

Поделиться этим сообщением


Ссылка на сообщение

В общем значение глобальной переменной меняется только в функции, после выхода из нее оно становится прежним. Ищу как правильно менять значения глобальных переменных :mellow:

Ничто не вечно под луной.

Поделиться этим сообщением


Ссылка на сообщение

 

 


--глобальная переменная для того чтобы фильтры заспавнились только в одном вертолете
FILTERS_PLACE=nil

function souls_died_armors_give_quest() 
    task_manager.get_task_manager():give_task("souls_died_armors_task")
	task_manager.get_task_manager():give_task("souls_died_armors_task_jup")
	task_manager.get_task_manager():give_task("souls_died_armors_task_zat")
	--task_manager.get_task_manager():give_task("souls_died_armors_task_zat2")	--так как нельзя залезть на плато
	task_manager.get_task_manager():give_task("souls_died_armors_task_zat3")
	
	math.randomseed(os.time()) 
	FILTERS_PLACE=math.random(3)
	
	printf("FILTERS_PLACE= %s",FILTERS_PLACE)
	--news_manager.send_tip(db.actor, FILTERS_PLACE, nil, "seeker", nil, nil)
end

function searchingHeliJupiter(actor, npc)
	if xr_conditions.actor_in_zone(actor, npc, {"jup_b8_heli_4"})
		then
		printf("FILTERS_PLACE= %s", FILTERS_PLACE)
		if FILTERS_PLACE==1 then
			db.actor:give_info_portion("soulsDiedArmorsHeliJupiterDone")
			db.actor:give_info_portion("soulsDiedArmorsHeliFounded")
			alife():create("dust_filter", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
			alife():create("dust_filter", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
		else
			db.actor:give_info_portion("soulsDiedArmorsHeliJupiterDone")
			news_manager.send_tip(db.actor, "no_filters2", nil, "seeker", nil, nil)
		end
		
	end
end

 

 

Изменено пользователем KitkaT.Net

Ничто не вечно под луной.

Поделиться этим сообщением


Ссылка на сообщение

@Malandrinus, я проверил, значение моей глобальной (ну получается в моем скрипте) переменной сбрасывается после перехода на другую локацию.

Ничто не вечно под луной.

Поделиться этим сообщением


Ссылка на сообщение

@Карлан, ну рандомизировать то мне по логике квеста надо один раз, поэтому обойдусь инфопоршнями на каждый из случаев. Ладно, хотя бы разобрался из-за чего у меня такая ерунда происходила :)

Ничто не вечно под луной.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...