TomlnFerno 1 Опубликовано 19 Декабря 2016 (изменено) Прошерстил форум но подобного не нашел, так что рискну спросить (хотя скорее всего плохо искал, но не важно). В общем такая проблема. Создаю новый смарт террейн на кордоне (через алл спавн разумеется), вот код: [4848] ; cse_abstract properties section_name = smart_terrain name = esc_stalker_smart_terrain position = 112.035, -7.627, -16.692 direction = 0.975047,0.000000,-0.221997 id = 65535 version = 118 script_version = 6 spawn_id = 101 ; cse_alife_object properties game_vertex_id = 115 distance = 9.09999942779541 level_vertex_id = 413857 object_flags = 0xffffffbe custom_data = <<END [smart_terrain] type = esc_stalker_smart_terrain capacity = 3 squad = 1 groups = 5 END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0 :offset = 0,0,0 shape0:radius = 20.55957102775574 ; cse_alife_space_restrictor properties restrictor_type = 3 ; se_smart_terrain properties Далее прописываю логику в gulag_escape.ltx такого вида: [logic@esc_stalker_smart_terrain_stalker1_guard] active = guard@esc_stalker_smart_terrain_stalker1 [guard@esc_stalker_smart_terrain_stalker1] path_walk = stalker1_walk path_look = stalker1_look [logic@esc_stalker_smart_terrain_stalker2_kamp] active = kamp@esc_stalker_smart_terrain_stalker2 [kamp@esc_stalker_smart_terrain_stalker2] center_point = stalker2_kamp path_walk = stalker2_kamp_task [logic@esc_stalker_smart_terrain_stalker3_guard] active = guard@esc_stalker_smart_terrain_stalker3 [guard@esc_stalker_smart_terrain_stalker3] path_walk = stalker3_walk path_look = stalker3_look После прописываю работу для нпс в gulag_escape.script function load_job(sj, gname, type, squad, groups) if type == "esc_stalker_smart_terrain" then t = { section = "logic@esc_stalker_smart_terrain_stalker1_guard", idle = 0, prior = 4, state = {0, 1}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) t = { section = "logic@esc_stalker_smart_terrain_stalker2_kamp", idle = 0, prior = 3, state = {0, 1}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) t = { section = "logic@esc_stalker_smart_terrain_stalker3_guard", idle = 0, prior = 2, state = {0, 1}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end function load_states(gname, type) if type == "esc_stalker_smart_terrain" then return function(gulag) return 0 end end function checkStalker(npc_community, gulag_type, npc_rank, se_obj) if gulag_type == "esc_stalker_smart_terrain" then return npc_community == "stalker" end Ну и соответственно прописываю точки путей в way_l01_escape.ltx [stalker2_kamp] points = p0 p0:name = wp00 p0:position = 110.979, -6.744, -40.293 p0:game_vertex_id = 124 p0:level_vertex_id = 412974 [stalker2_kamp_task] points = p0 p0:name = wp00 p0:position = 110.947, -7.415, -37.927 p0:game_vertex_id = 124 p0:level_vertex_id = 412131 [stalker1_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = 93.997, -7.186, -11.203 p0:game_vertex_id = 121 p0:level_vertex_id = 391697 [stalker1_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = 86.658, -7.793, -11.119 p0:game_vertex_id = 114 p0:level_vertex_id = 382592 [stalker3_walk] points = p0 p0:name = wp00 p0:flags = 0x2 p0:position = 94.466, -7.183, -23.725 p0:game_vertex_id = 121 p0:level_vertex_id = 392591 [stalker3_look] points = p0 p0:name = wp00 p0:flags = 0x2 p0:position = 85.350, -7.911, -23.875 p0:game_vertex_id = 114 p0:level_vertex_id = 380758 И получаю вылет FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\smart_terrain.script:836: attempt to index a function value Кто в этом разбирается, буду признателен если глянете и объясните где ошибки и какие (чистый Сталкер ТЧ 1.0004) Изменено 20 Декабря 2016 пользователем Kirgudu Поделиться этим сообщением Ссылка на сообщение
TomlnFerno 1 Опубликовано 7 Мая 2019 А есть те кто копал OGSR ? Почему в окнах класса CUIScriptWnd метод : self.buttonname:Enable(false) вызывает вылет ? Там это как-то по-другому сделано или вообще вырезано ? Лог вылета: Скрытый текст [07.05.19 20:42:52.487] ********************************************************************************* [07.05.19 20:42:52.488] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR: ...нь Чернобыля\gamedata\scripts\amkii_dynamic_camps.script:254: attempt to index field 'buttonBurning' (a function value) stack traceback: [C]: in function '__index' ...нь Чернобыля\gamedata\scripts\amkii_dynamic_camps.script:254: in function <...нь Чернобыля\gamedata\scripts\amkii_dynamic_camps.script:252> [07.05.19 20:42:52.488] ********************************************************************************* [07.05.19 20:42:52.488] FATAL ERROR [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : c:\projects\ogsr-engine\ogsr_engine\common_ai\script_engine.cpp [error]Line : 52 [error]Description : [CScriptEngine::lua_pcall_failed]: ...нь Чернобыля\gamedata\scripts\amkii_dynamic_camps.script:254: attempt to index field 'buttonBurning' (a function value) [07.05.19 20:42:52.488] ***************************[ScriptCrashHandler]********************************** [07.05.19 20:42:52.488] stack traceback: [C]: in function '__index' ...нь Чернобыля\gamedata\scripts\amkii_dynamic_camps.script:254: in function <...нь Чернобыля\gamedata\scripts\amkii_dynamic_camps.script:252> [07.05.19 20:42:52.488] Locals: [07.05.19 20:42:52.488] string (*temporary) : ...нь Чернобыля\gamedata\scripts\amkii_dynamic_camps.script:254: attempt to index field 'buttonBurning' (a function value) [07.05.19 20:42:52.488] End [07.05.19 20:42:52.488] Locals: [07.05.19 20:42:52.488] Userdata: self [07.05.19 20:42:52.488] userdata self.owner : (CUIGameCustom): 000000002554A190 [07.05.19 20:42:52.488] number self.iRestId : 1023.000000 [07.05.19 20:42:52.488] function (*temporary) : [[function]] [07.05.19 20:42:52.488] number (*temporary) : 0.000000 [07.05.19 20:42:52.488] function (*temporary) : [[function]] [07.05.19 20:42:52.488] number (*temporary) : 1023.000000 [07.05.19 20:42:52.488] boolean (*temporary) : true [07.05.19 20:42:52.488] string (*temporary) : attempt to index field 'buttonBurning' (a function value) [07.05.19 20:42:52.488] End [07.05.19 20:42:52.488] ********************************************************************************* [07.05.19 20:42:52.488] ******************************************************************************** [07.05.19 20:42:52.723] !!stack trace: ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001400AC510], Fun: [BuildStackTrace()] + [48 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrcore\stacktrace_collector.cpp-->152] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014008F813], Fun: [LogStackTrace()] + [51 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrcore\xrdebugnew.cpp-->32] + [13 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014008F645], Fun: [xrDebug::backend()] + [165 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrcore\xrdebugnew.cpp-->149] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014008F584], Fun: [xrDebug::fatal()] + [132 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrcore\xrdebugnew.cpp-->229] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FB1E5DA], Fun: [CScriptEngine::lua_pcall_failed()] + [122 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\common_ai\script_engine.cpp-->53] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\LuaJIT.dll], AddrPC.Offset: [000007FEE8CB53A0], Fun: [lj_BC_FUNCC()] + [66 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\LuaJIT.dll], AddrPC.Offset: [000007FEE8CF2E24], Fun: [lj_err_run()] + [356 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\luajit\src\lj_err.c-->621] + [5 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\LuaJIT.dll], AddrPC.Offset: [000007FEE8CF2209], Fun: [err_msgv()] + [121 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\luajit\src\lj_err.c-->636] + [8 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\LuaJIT.dll], AddrPC.Offset: [000007FEE8CF2BE6], Fun: [lj_err_optype()] + [182 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\luajit\src\lj_err.c-->670] + [34 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\LuaJIT.dll], AddrPC.Offset: [000007FEE8D07058], Fun: [lj_meta_tget()] + [440 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\luajit\src\lj_meta.c-->147] + [17 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\LuaJIT.dll], AddrPC.Offset: [000007FEE8CB5887], Fun: [lj_vmeta_tgetv()] + [44 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\LuaJIT.dll], AddrPC.Offset: [000007FEE8CBEE7A], Fun: [lua_pcall()] + [186 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\luajit\src\lj_api.c-->1130] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001400DDB05], Fun: [luabind::detail::pcall()] + [101 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\luabind\src\pcall.cpp-->40] + [16 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FAB7042], Fun: [luabind::detail::proxy_functor_void_caller<luabind::object const *>::~proxy_functor_void_caller<luabind::object const *>()] + [98 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\luabind\luabind\functor.hpp-->292] + [15 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FAB6D79], Fun: [CScriptCallbackEx<void>::operator()<>()] + [89 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\script_callback_ex.h-->176] + [43 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FFCE704], Fun: [CUIDialogWndEx::SendMessageA()] + [180 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\ui\uiscriptwnd.cpp-->53] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FF6C1B7], Fun: [CUIButton::OnClick()] + [39 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\ui\uibutton.cpp-->141] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FCFAE6E], Fun: [CUI3tButton::OnClick()] + [14 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\ui\ui3tbutton.cpp-->39] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FF6C0F4], Fun: [CUIButton::OnMouse()] + [276 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\ui\uibutton.cpp-->92] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FA4798E], Fun: [CUIWindow::OnMouse()] + [1774 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\ui\uiwindow.cpp-->380] + [139 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FBDACAA], Fun: [CUIDialogWnd::IR_OnKeyboardRelease()] + [154 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\ui\uidialogwnd.cpp-->107] + [28 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FBA7F10], Fun: [CUI::IR_OnKeyboardRelease()] + [48 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\ui.cpp-->177] + [23 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FB9AEF7], Fun: [CLevel::IR_OnKeyboardRelease()] + [87 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xrgame\level_input.cpp-->352] + [30 byte(s)] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F95E52A], Fun: [CInput::MouseUpdate()] + [410 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\xr_input.cpp-->250] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F95F857], Fun: [CInput::OnFrame()] + [215 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\xr_input.cpp-->414] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F9BA2F2], Fun: [CRegistrator<pureFrame>::Process()] + [98 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\pure.h-->77] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F9B85F9], Fun: [CRenderDevice::FrameMove()] + [457 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\device.cpp-->348] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F9B8B34], Fun: [CRenderDevice::Run()] + [1284 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\device.cpp-->238] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F95C9AA], Fun: [Startup()] + [442 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\x_ray.cpp-->218] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F95D1A3], Fun: [WinMain_impl()] + [1363 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\x_ray.cpp-->438] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F9590E5], Fun: [WinMain()] + [69 byte(s)], File-->Line: [c:\projects\ogsr-engine\ogsr_engine\xr_3da\x_ray.cpp-->473] ! Module: [F:\S.T.A.L.K.E.R. Тень Чернобыля\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001400D9F72], Fun: [__scrt_common_main_seh()] + [262 byte(s)], File-->Line: [d:\agent\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl-->288] + [33 byte(s)] ! Module: [C:\Windows\system32\kernel32.dll], AddrPC.Offset: [0000000076CA59CD], Fun: [BaseThreadInitThunk()] + [13 byte(s)] ! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [0000000076F0383D], Fun: [RtlUserThreadStart()] + [29 byte(s)] [07.05.19 20:42:52.723] ******************************************************************************** Поделиться этим сообщением Ссылка на сообщение
TomlnFerno 1 Опубликовано 7 Мая 2019 1 час назад, lordmuzer сказал: @TomlnFerno в OGSR все так же. Ошибка говорит что в self.but tonname функция а не объект. Откуда береться self.but tonname ? делал так: Скрытый текст Тут обЪявили: function CAmkBurningMenu:InitInterface() self:Init(50,50,130,130) local xml = CScriptXmlInit() xml:ParseFile("ui_burning_menu.xml") self.buttonBurning = xml:Init3tButton("buttonBurning", self) self:Register(self.buttonBurning, "buttonBurning") end Вешаем коллбэк : function ui_craft:InitCallBacks() self:AddCallback("buttonBurning", ui_events.BUTTON_CLICKED, self.buttonBurning, self) end И далее: function CAmkBurningMenu:buttonBurning() CAmkDynamicCamps:campSwitch(self.iRestId, true) self.buttonBurning:Enable(false) -- при клике должна стать неактивой --self:buttonQuit() end Поделиться этим сообщением Ссылка на сообщение