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

[SoC] Ковыряемся в файлах


Halford

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

Прошерстил форум но подобного не нашел, так что рискну спросить (хотя скорее всего плохо искал, но не важно).

В общем такая проблема. Создаю новый смарт террейн на кордоне (через алл спавн разумеется), вот код:

 

[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)

Изменено пользователем Kirgudu

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


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

А есть те кто копал 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] ********************************************************************************

 

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


Ссылка на сообщение
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


 

 

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


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

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