exDeMODER 100 Опубликовано 21 Августа 2017 Создал простую функцию, которая начисляет "опыт" ГГ при убийстве НПС. Не могу сохранить эти данные в игре, при лоаде все обратно возвращается на 0. Наставьте на путь истинный, я без понятия как эти данные правильно сохранять. Функция: point_skill = 0 rank = 0 need_init = false function kill_exp() local rank_random = math.random(1, 90) point_skill = point_skill + rank_random rank_random = nil need_init = true end function actor_on_update() local hud = get_hud() hud:AddCustomStatic("skills_static") hud:GetCustomStatic("skills_static"):wnd():TextControl():SetTextST("Опыт: "..point_skill.."") end ---------->>[[Загрузка\Сохранение пакетов]]<<----------- -- Сохраняем function save(package) package:w_u32(point_skill) end -- Загружаем function load(package) package:r_u32(point_skill) end Поделиться этим сообщением Ссылка на сообщение
exDeMODER 100 Опубликовано 21 Августа 2017 @Jurok , не сработало, увы. Возможно надо подключать функции на сейв/лоад еще куда-то кроме bind_stalker.script? Поделиться этим сообщением Ссылка на сообщение
exDeMODER 100 Опубликовано 9 Сентября 2017 Почему то вылетает, когда в ГУИ после нажатии кнопки я эту самую кнопку - блокирую Функция: function window_gui:l1p1_button_clicked() if not has_alife_info ("get_new") then off_message() elseif has_alife_info ("get_new") then on_message() end self.l1p1:Enable(false) -- хм? self:HideDialog() end Лог: Expression : <no expression> Function : CScriptEngine::lua_error File : ..\xrServerEntities\script_engine.cpp Line : 189 Description : fatal error Arguments : LUA error: e:\games\stalker\gamedata\scripts\window_gui.script:112: attempt to index field 'l1p1' (a nil value) stack trace: Сама кнопка зарегестрирована "вроде как" правильно: self:AddCallback("l1p1", ui_events.BUTTON_CLICKED, self.l1p1_button_clicked, self) self:Register(xml:Init3tButton("main_frame:l1p1", self.main_frame), "l1p1") Поделиться этим сообщением Ссылка на сообщение
exDeMODER 100 Опубликовано 10 Сентября 2017 6 часов назад, naxac сказал: Хотя не понимаю, нафига дизаблить кнопку, сли сразу после этого окно полностью закрывается) Есть зачем, так как меню будет открыватся не один раз, а задизаблить нужно аж 3 кнопки. Поделиться этим сообщением Ссылка на сообщение
exDeMODER 100 Опубликовано 10 Сентября 2017 Хочу реализовать в игре небольшую фичу, чтобы увеличить/уменьшить время принятия медикаментов (внутри игры, а не в конфиге). В принципе функция то и работает, но время не увеличивается. Функция: local item_sec = obj:section() if (item_sec == "medkit" or item_sec == "medkit_army" or item_sec == "medkit_scientic") then local boost_time = system_ini():r_float_ex(item_sec,"boost_time") utils.save_var(db.actor,item_sec.."_expiration",utils.CTimeAddSec(game.get_game_time(),boost_time*level.get_time_factor()*10)) -- Апдейт: допер, что я только считываю значение в конфиге и в итоге ничего не меняю. Но не допёр как все же изменить это самое значение и засейвить в игре. end Буду благодарен, если поправите. Поделиться этим сообщением Ссылка на сообщение
exDeMODER 100 Опубликовано 18 Сентября 2017 Хочу сделать такую функцию, чтобы при перемещении определенной брони в слот - броня скидывалась обратно в инвентарь. Прошу помощи, так как перепробовал разными методами, но с каждым разом выходили еще более разные баги. Функция: function actor_item_to_slot(obj) if not has_alife_info ("power_1_add") then local outfit = db.actor:item_in_slot(7) if (outfit and obj:section() == "exo_outfit") then ui_dyn_msg_box.msg_box_ui("message_box_ok",true,game.translate_string("Вы не настолько сильны и ловки, чтобы таскать на себе такую тяжесть")) ... -- Без понятия что дальше end end end Поделиться этим сообщением Ссылка на сообщение