Люди, спальник некорректно работает, вот скажите, что за ошибка в скрипте:
function sleep(obj) if obj ~= nil then if obj:section() == "sleep_bag" then local hud = sleep_ui(get_hud()) level.start_stop_menu(hud, true) end end end
class "sleep_ui" (CUIScriptWnd)
function sleep_ui:__init(owner) super() self.owner = owner self:InitControls() self:InitCallBacks() end
function sleep_ui:__finalize() end
function sleep_ui:InitControls() self:Init(50,50,550,450)
local xml = CScriptXmlInit() xml:ParseFile("ui_sleep.xml")
xml:InitStatic("back_video", self)
xml:InitStatic("background", self)
self:Register(xml:Init3tButton("caption", self),"caption") self:Register(xml:Init3tButton("btn_1", self),"btn_1") self:Register(xml:Init3tButton("btn_2", self),"btn_2") self:Register(xml:Init3tButton("btn_3", self),"btn_3") if db.actor.health < 0.9 then self:Register(xml:Init3tButton("btn_4", self),"btn_4") end self:Register(xml:Init3tButton("btn_quit", self),"btn_quit") end
function sleep_ui:InitCallBacks() self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.sleep_ui1, self) self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.sleep_ui2, self) self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.sleep_ui3, self) if db.actor.health < 0.9 then self:AddCallback("btn_4", ui_events.BUTTON_CLICKED, self.sleep_ui4, self) end self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.on_quit, self) end
function sleep_ui:OnKeyboard(dik, keyboard_action) CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self:on_quit() end if dik == DIK_keys.DIK_NUMPAD1 then self:sleep_ui1() end if dik == DIK_keys.DIK_NUMPAD2 then self:sleep_ui2() end if dik == DIK_keys.DIK_NUMPAD3 then self:sleep_ui3() end if dik == DIK_keys.DIK_NUMPAD4 then self:sleep_ui4() end end return true end
function sleep_ui:sleep_ui1() main_sleep.sleep_one_hour() self:on_quit() -- выход end function sleep_ui:sleep_ui2() main_sleep.sleep_three_hours() self:on_quit() end function sleep_ui:sleep_ui3() main_sleep.sleep_nine_hours() self:on_quit() end function sleep_ui:sleep_ui4() main_sleep.sleep_health(scale) self:on_quit() end
function sleep_ui:check_game() local check = false if level.present() and (db.actor ~= nil) and db.actor:alive() then check = true end return check end
function sleep_ui:on_quit() self:GetHolder():start_stop_menu(self, true) alife():create("sleep_bag", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end
function sleep_one_hour() main_sleep.main(1) end
function sleep_three_hours() main_sleep.main(3) end
function sleep_nine_hours() main_sleep.main(9) end
function sleep_health(scale) local sleep_time = (1 - db.actor.health)*5.00 main_sleep.main(sleep_time) end
function main(scale) basic_time_factor = level.get_time_factor () db.actor:stop_talk() db.actor:hide_weapon() level.disable_input() main_sleep.starter (scale) end
function starter(scale) local factor = scale * 2650 game.start_tutorial("time_scaling") level.set_time_factor(factor) end
function dreamer() level.set_time_factor(basic_time_factor) local dream = dream.sleep_video_name_callback () if dream ~= "" then game.start_tutorial(dream) else game.start_tutorial("without_dream") end end
function stopper() level.add_cam_effector("camera_effects\\dream.anm", 1, false, "") db.actor:restore_weapon() level.enable_input() level.add_pp_effector("yantar_underground_psi.ppe", 222, false, "") if db.actor.health <= 0.60 then main_sleep.eat_food() end end
function eat_food() if db.actor:eat(db.actor:object("conserva")) ~= nil or db.actor:eat(db.actor:object("bread")) ~= nil or db.actor:eat(db.actor:object("kolbasa")) ~= nil then end end
6poHR777, хотелось бы узнать как именно он некорректно работает, в смысле он используется? вызывается ли окно спальника, нажимаются ли кнопки и тп... лопатить весь скрипт мало кто возьмется...
Viнt@rь, извините в общем, окно вызывается, всё в порядке, но когда выбираешь заснуть на 1, 3, 9 часов, он засыпает, но не просыпается, даже Эскейп не робит в общем время мотается долго, пока ГГ не умрёт от голода, а главное слышно, время мотается, но не 1 раз, а несколько, будто услышал всю погоду локации.
Всем привет. Вылеты с непонятными логами опять досаждают(
Code
Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : .... - Зов Припяти\gamedata\scripts\xr_motivator.script:344: attempt to index field 'object' (a nil value)
Я файл xr_motivator.script вообще не трогал. Вылет возникает при разговоре с Сычом. Последнее, что я с ним делал - добавил ему в продажу несколько новых волын, но все работало, оружие продавалось. Всё началось, как только перезапустил игру. Этот вылет, как с неба свалился, чес слово. Подскажите как его убрать, пожалуйста!(
6poHR777, мог что то напутать в game_tutorials.xml, возможно не вызываются функции нужные или еще что для остановки, если я правильно понял как устроена работа твоего скрипта, то все верно написано, вот только по завершению ролика(сна) должна вызываться функция