KitkaT.Net 2 Опубликовано 22 Июля 2016 Добавил в скрипте глобальную переменную: 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 Есть идеи, почему это происходит? Ничто не вечно под луной. Поделиться этим сообщением Ссылка на сообщение
KitkaT.Net 2 Опубликовано 22 Июля 2016 (изменено) math.randomseed(os.time()) мне кажется это не совсем то, но сейчас проверю. Ваш совет даст постоянно разные рандомные числа, а у меня не срабатывает сравнение 2 и 2. upd: да, это не помогло)) У меня другая проблема. Если я не меняю значение своей глобальной переменной - то "==" срабатывает, если рандомлю ее (и ее значение после рандома я смотрю в логе), то нет. updupd: я понимаю что это звучит бредово, поэтому и решил здесь спросить. Может быть есть какие-нить особенности языка, которые я не знаю. Изменено 22 Июля 2016 пользователем KitkaT.Net Ничто не вечно под луной. Поделиться этим сообщением Ссылка на сообщение
KitkaT.Net 2 Опубликовано 23 Июля 2016 В общем значение глобальной переменной меняется только в функции, после выхода из нее оно становится прежним. Ищу как правильно менять значения глобальных переменных Ничто не вечно под луной. Поделиться этим сообщением Ссылка на сообщение
KitkaT.Net 2 Опубликовано 23 Июля 2016 (изменено) --глобальная переменная для того чтобы фильтры заспавнились только в одном вертолете 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 Изменено 23 Июля 2016 пользователем KitkaT.Net Ничто не вечно под луной. Поделиться этим сообщением Ссылка на сообщение
KitkaT.Net 2 Опубликовано 24 Июля 2016 @Malandrinus, я проверил, значение моей глобальной (ну получается в моем скрипте) переменной сбрасывается после перехода на другую локацию. Ничто не вечно под луной. Поделиться этим сообщением Ссылка на сообщение
KitkaT.Net 2 Опубликовано 24 Июля 2016 @Карлан, ну рандомизировать то мне по логике квеста надо один раз, поэтому обойдусь инфопоршнями на каждый из случаев. Ладно, хотя бы разобрался из-за чего у меня такая ерунда происходила Ничто не вечно под луной. Поделиться этим сообщением Ссылка на сообщение