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

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


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

Для вывода в сообщение надо прочитать obj:clsid(), и результатом должно быть число, одинаковое для объектов одного типа. Я приводил значения из ТЧ; какие они в OGSR, как раз надо выяснить.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий

@Norman Eisenherz 33.
Спасибо.

Но с бочкой и ящиком поговорить уже не выйдет)

Но полагаю можно тем же способом выяснить при перетаскивании предмета...

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
Скрытый текст

 

    if type == "esc_blokpost" then
        return function (gulag)
            local actor = db.actor
            if not actor then
                return gulag.state
            elseif has_alife_info("dmb_karaul_arms") then
                return 3 
            elseif dont_has_alife_info("dmb_karaul_arms") then
                return 5 
            elseif dont_has_alife_info("dmb_karaul_arms") and dont_has_alife_info("dmb_first_karaul_task_start") and dont_has_alife_info("dmb_2_karaul_task_start") and dont_has_alife_info("dmb_3_karaul_task_start") and dont_has_alife_info("dmb_4_karaul_task_start") then
                return 4 -- всё гуд
            end

            for k,v in pairs(gulag.Object) do
                if v ~= true and v:best_enemy() ~= nil then
                    gulag.alarm_start = game.get_game_time()
                    actor:give_info_portion("esc_blockpost_alarm")
                    return 2 -- тревога
                end
            end

            if gulag.alarm_start == nil or
                game.get_game_time():diffSec(gulag.alarm_start) > 300 then
                if level.get_time_hours() >= 6 and level.get_time_hours() <= 22 then
                actor:give_info_portion("esc_blockpost_normal")
                    return 0  -- день
                else
                    return 1  -- ночь
                end
            else
                return 2
            end
        end

 

Подскажите, правильно ли написаны состояния для работ в гулагах? 

Ссылка на комментарий
3 часа назад, Hind сказал:

elseif has_alife_info("dmb_karaul_arms") then
                return 3 
            elseif dont_has_alife_info("dmb_karaul_arms") then
                return 5 

elseif not has_alife_info("dmb_karaul_arms") then

Изменено пользователем gam
Ссылка на комментарий

@gamв таком случае - синтаксическая ошибка, неписи выходят из гулага, и идут куда хотят. 

В общем старая песня о главном.. 

Надо, чтобы при получении инфы dmb_karaul_arms (прописанное как условие для работы под номером 3) все неписи бежали на работы (karaul1, 2, тд.). Для этого я установил им приоритет в 90+ единиц.

Получается инфа - они стоят никуда не идут. В чём дело? Ошибок в скрипте нема.  Прилагаю файлы.



 

Скрытый текст

 

[logic@esc_blokpost_ward1]
active = walker@esc_blokpost_ward1

[walker@esc_blokpost_ward1]
path_walk = ward_walk1
path_look = ward_look1
meet = meet@ward1

[meet@ward1]
use = true
use_wpn = true
victim = 15 | actor
victim_wpn 15 | actor

[logic@esc_blokpost_ward2]
active = walker@esc_blokpost_ward2

[walker@esc_blokpost_ward2]
path_walk = ward_walk2
path_look = ward_look2
meet = meet@ward2

[meet@ward2]
use = true
use_wpn = true
victim = 15 | actor
victim_wpn 15 | actor

[logic@esc_blokpost_ward3]
active = walker@esc_blokpost_ward3

[walker@esc_blokpost_ward3]
path_walk = ward_walk3
path_look = ward_look3
meet = meet@ward3

[meet@ward3]
use = true
use_wpn = true
victim = 15 | actor
victim_wpn 15 | actor

[logic@esc_blokpost_ward4]
active = walker@esc_blokpost_ward4

[walker@esc_blokpost_ward4]
path_walk = ward_walk4
path_look = ward_look4
meet = meet@ward4

[meet@ward4]
use = true
use_wpn = true
victim = 15 | actor
victim_wpn 15 | actor
meet_dialog = esc_ward_bustoff
target = actor

[logic@esc_blokpost_idle1]
active = walker@esc_blokpost_idle1

[walker@esc_blokpost_idle1]
path_walk = idle_walk1
path_look = idle_look1
meet = meet@look1

[meet@look1]
use = true
use_wpn = false
victim = 15 | actor
victim_wpn 15 | actor


[logic@esc_blokpost_idle2]
active = walker@esc_blokpost_idle2

[walker@esc_blokpost_idle2]
path_walk = idle_walk2
path_look = idle_look2
meet = meet@look2

[meet@look2]
use = true
use_wpn = true
victim = 15 | actor
victim_wpn 15 | actor

[logic@esc_blokpost_karaul1]
active = walker@esc_blokpost_karaul1

[walker@esc_blokpost_karaul1]
path_walk = karaul_walk1
path_look = karaul_look1
meet = no_meet
def_state_moving1 = assault
def_state_moving2 = assault
def_state_moving3 = assault
def_state_moving4 = assault

[logic@esc_blokpost_karaul2]
active = walker@esc_blokpost_karaul2

[walker@esc_blokpost_karaul2]
path_walk = karaul_walk2
path_look = karaul_look2
meet = no_meet

[logic@esc_blokpost_karaul3]
active = walker@esc_blokpost_karaul3

[walker@esc_blokpost_karaul3]
path_walk = karaul_walk3
path_look = karaul_look3
meet = no_meet

[logic@esc_blokpost_karaul4]
active = walker@esc_blokpost_karaul4

[walker@esc_blokpost_karaul4]
path_walk = karaul_walk4
path_look = karaul_look4
meet = no_meet

[logic@esc_blokpost_karaul5]
active = walker@esc_blokpost_karaul5

[walker@esc_blokpost_karaul5]
path_walk = karaul_walk5
path_look = karaul_look5
meet = no_meet
def_state_moving1 = sprint
def_state_moving2 = sprint
def_state_moving3 = sprint
def_state_moving4 = sprint

[logic@esc_blokpost_karaul6]
active = walker@esc_blokpost_karaul6

[walker@esc_blokpost_karaul6]
path_walk = karaul_walk6
path_look = karaul_look6
meet = no_meet

[logic@esc_blokpost_karaul7]
active = walker@esc_blokpost_karaul7

[walker@esc_blokpost_karaul7]
path_walk = karaul_walk7
path_look = karaul_look7
meet = no_meet

[logic@esc_blokpost_karaul8]
active = walker@esc_blokpost_karaul8

[walker@esc_blokpost_karaul8]
path_walk = karaul_walk8
path_look = karaul_look8
meet = no_meet

[logic@esc_blokpost_karaul9]
active = walker@esc_blokpost_karaul9

[walker@esc_blokpost_karaul9]
path_walk = karaul_walk9
path_look = karaul_look9
meet = no_meet

 



 

Скрытый текст

if type == "esc_blokpost" then
    t = { section = "logic@esc_blokpost_idle1",
        idle = 0,
        prior = 80, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_watch_tv1",
        idle = 0,
        prior = 79, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_watch_tv2",
        idle = 0,
        prior = 78, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp1",
        idle = 0,
        prior = 77, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blokpost_idle2",
        idle = 0,
        prior = 76, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blockpost_kamp2",
        idle = 0,
        prior = 75, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone",
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blokpost_ward1",
        idle = 0,
        prior = 55, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blokpost_ward2",
        idle = 0,
        prior = 21, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blokpost_ward3",
        idle = 0,
        prior = 72, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blokpost_ward4",
        idle = 0,
        prior = 71, state = {0,1},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blokpost_karaul1",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    
        t = { section = "logic@esc_blokpost_karaul2",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
            t = { section = "logic@esc_blokpost_karaul3",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
                t = { section = "logic@esc_blokpost_karaul4",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
                    t = { section = "logic@esc_blokpost_karaul5",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
                        t = { section = "logic@esc_blokpost_karaul6",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
                            t = { section = "logic@esc_blokpost_karaul7",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
                            t = { section = "logic@esc_blokpost_karaul8",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
    table.insert(sj, t)
    t = { section = "logic@esc_blokpost_karaul9",
        idle = 0,
        prior = 99, state = {3},
        position_threshold = 100,
            online = true,
        in_rest = "", out_rest = "escape_blockpost_zone"
    }
end



 

Скрытый текст

 

function load_states(gname, type)

    if type == "esc_blokpost" then
        return function (gulag)
            local actor = db.actor
            if not actor then
                return gulag.state
            elseif has_alife_info("dmb_karaul_arms") then
                return 3 
            elseif dont_has_alife_info("dmb_karaul_arms") then
                return 5 
            end
            for k,v in pairs(gulag.Object) do
                if v ~= true and v:best_enemy() ~= nil then
                    gulag.alarm_start = game.get_game_time()
                    actor:give_info_portion("esc_blockpost_alarm")
                    return 2 -- тревога
                end
            end

            if gulag.alarm_start == nil or
                game.get_game_time():diffSec(gulag.alarm_start) > 300 then
                if level.get_time_hours() >= 6 and level.get_time_hours() <= 22 then
                actor:give_info_portion("esc_blockpost_normal")
                    return 0  -- день
                else
                    return 1  -- ночь
                end
            else
                return 2
            end
        end
    end

 

 

Ссылка на комментарий

В чём может быть проблема?

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

Скрытый текст

[13.11.22 22:41:52.144] > g_spawn pseudodog_strong
[13.11.22 22:41:59.272] > g_spawn pseudodog_strong
[13.11.22 22:42:00.384] > g_spawn pseudodog_strong
[13.11.22 22:42:00.674] 
FATAL ERROR

[error]Expression    : FATAL ERROR
[error]Function      : dxRender_Visual::Load
[error]File          : D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\Layers\xrRender\FBasicVisual.cpp
[error]Line          : 110
[error]Description   : Invalid visual

[13.11.22 22:42:00.674] ***************************[ScriptCrashHandler]**********************************
[13.11.22 22:42:00.674] stack traceback:
[13.11.22 22:42:00.674] *********************************************************************************
[13.11.22 22:42:00.675] ********************************************************************************
[13.11.22 22:42:00.675] !![LogStackTrace] Thread: [UNKNOWN]
[13.11.22 22:42:02.834] !!stack trace:
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [0000000140046289], Fun: [BuildStackTrace()] + [41 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrCore\stacktrace_collector.cpp-->144]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [0000000140031E9D], Fun: [LogStackTrace()] + [65 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrCore\xrDebugNew.cpp-->74] + [10 byte(s)]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [0000000140032313], Fun: [xrDebug::backend()] + [599 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrCore\xrDebugNew.cpp-->182] + [426 byte(s)]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014003254D], Fun: [xrDebug::fatal()] + [117 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrCore\xrDebugNew.cpp-->247]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [0000000140260816], Fun: [dxRender_Visual::Load()] + [882 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\Layers\xrRender\FBasicVisual.cpp-->114]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014021434D], Fun: [Fvisual::Load()] + [45 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\Layers\xrRender\FVisual.cpp-->37]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014007E3C8], Fun: [CModelPool::Instance_Load()] + [408 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\Layers\xrRender\ModelPool.cpp-->120]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014007EE4F], Fun: [CModelPool::Create()] + [835 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\Layers\xrRender\ModelPool.cpp-->251]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FFE3914], Fun: [CObject::cNameVisual_set()] + [188 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\xr_object.cpp-->36]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FFE46B3], Fun: [CObject::Load()] + [1787 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\xr_object.cpp-->168]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [0000000140371298], Fun: [CInventoryItemObject::Load()] + [36 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrGame\inventory_item_object.cpp-->25] + [5 byte(s)]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001403BF546], Fun: [CLevel::g_sv_Spawn()] + [222 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrGame\Level_network_spawn.cpp-->103] + [76 byte(s)]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001403BF102], Fun: [CLevel::cl_Process_Spawn()] + [446 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrGame\Level_network_spawn.cpp-->51]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001402B2564], Fun: [CLevel::ProcessGameEvents()] + [352 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrGame\Level.cpp-->381]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001402B2836], Fun: [CLevel::OnFrame()] + [686 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xrGame\Level.cpp-->404]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001400136F3], Fun: [CRegistrator<pureFrame>::Process()] + [87 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\pure.h-->109]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000014001317F], Fun: [CRenderDevice::FrameMove()] + [387 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\device.cpp-->453]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [0000000140012316], Fun: [CRenderDevice::on_idle()] + [242 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\device.cpp-->208]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [0000000140012E6B], Fun: [CRenderDevice::Run()] + [575 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\device.cpp-->391] + [85 byte(s)]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FFDD298], Fun: [Startup()] + [1348 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\x_ray.cpp-->204]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FFDD92B], Fun: [WinMain_impl()] + [503 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\x_ray.cpp-->410]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013FFDDABB], Fun: [WinMain()] + [335 byte(s)], File-->Line: [D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\xr_3da\x_ray.cpp-->431]
! Module: [D:\S.T.A.L.K.E.R. Shadow of Chernobymod\bin_x64\xrEngine.exe], AddrPC.Offset: [00000001407C4112], Fun: [__scrt_common_main_seh()] + [262 byte(s)], File-->Line: [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl-->288] + [33 byte(s)]
! Module: [C:\Windows\system32\kernel32.dll], AddrPC.Offset: [000000007706651D], Fun: [BaseThreadInitThunk()] + [13 byte(s)]
! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [000000007775C201], Fun: [RtlUserThreadStart()] + [33 byte(s)]
[13.11.22 22:42:02.834] ********************************************************************************

 

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
2 часа назад, imcrazyhoudini сказал:

[error]Description   : Invalid visual

Игра не смогла прочитать чанки модели и возмутилась. И правильно, не надо для правки моделей использовать блокнот.

 

2 часа назад, imcrazyhoudini сказал:

D:\S.T.A.L.K.E.R. Shadow of Chernobymod\

И снова клятые точки с пробелами.

Ссылка на комментарий
10 часов назад, h0N0r сказал:

Игра не смогла прочитать чанки модели и возмутилась. И правильно, не надо для правки моделей использовать блокнот.

Я вообще не трогал модели - они оригинальные (для перепроверки качал с темы ресурсы с оригинальной трилогии).

 

10 часов назад, h0N0r сказал:

И снова клятые точки с пробелами.

Не замечал проблем из-за этого.

 

upd. поправочка - проблема исчезает когда вырезаю оружейный пак.

Как связано с собачкой - понятия не имею.

upd. ещё заметил - что даже если псевдособаке указать модель которая 100% работает (у меня есть секция с псевдособакой которая работает), то всё равно будет вылет.

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

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@imcrazyhoudini

может найдёшь косячную модельку:

mixed-бины ТЧ 1.0007: https://drive.google.com/file/d/1HT4GBerQgL0BM3zRCgQcdi9-z7ETOdG1/view?usp=share_link

Перед вылетом Invalid visual, будет сообщение в лог, типа: ! Invalid visual: имя модели.

  • Спасибо 1
Ссылка на комментарий

@h0N0r спасибо конечно, но я думаю модели ганслингера не переварит...

upd: дело было в хвосте псевдособаки.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

Всем добра. У меня вопрос такого плана:

Как на чистом ТЧ 1.0006 сделать вот такую проверку, если это возможно без правок движка. (пример)
1. У актера есть N предмет
2. Актер получает хит от аномалии Электра
3. Если 1 и 2 имеет место, то выполняем действие.

Pir%40t%40s.gif

Ссылка на комментарий

@Pir@t@s


1) if db.actor:object("bread") then -- если есть хлеб, то: НО это не будет работать для диалогов насколько я знаю.

2) вот тут не знаю.. Есть вариант зацепится за тип хита, сам так пробовал, но успехов не достиг. Но как ниточка - сойдет.
function nitka()
local h = hit()
if h.type = hit.shock then
db.actor.health = 0.5 -- отнимаем полхп актора
end
end

3) Не совсем понятна суть вопроса... ну, если я правильно понял - вот пример "если если то" с инфопоршнями:

function action()
if has_alife_info("esc_info") and has_alife_info("esc_info_2") then
db.actor.health = 0.5 -- отнимаем полхп актора
end
end


И везде надо ставить проверку (если надо лично тебе конечно, то есть проверка не будет вызываться какой то функцией) :guru:

Намутил функцию для маскировки

HUM.script ниже

Скрытый текст

function disguise()
local armor = db.actor:item_in_slot(7)  -- активна броня
if (string.find(armor, "soldier_outfit") and armor =~ nil) then -- если надета броня солдата и она НАДЕТА, тогда
npc:set_character_community("military", 0, 0) -- ставим гп актору военного
end
end


Поставил на апдейт, на стадии клиент: синхронизация, вылет с логом:
 

Скрытый текст

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ....k.e.r. hum 1.1\gamedata\scripts\bind_stalker.script:273: attempt to index global 'HUM' (a nil value)


 

  • Спасибо 1
Ссылка на комментарий
3 часа назад, Hind сказал:

на стадии клиент: синхронизация, вылет с логом:

Нужно так:

if armor and string.find(armor, "soldier_outfit") then

 

  • Спасибо 1

S.T.A.L.K.E.R. CoP Objects (upd 09.09.24)

Ссылка на комментарий
15 часов назад, Hind сказал:

db.actor:item_in_slot(7)

Если не ошибаюсь, то слот брони - 6 (system.ltx)

  • Спасибо 1

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

Непонятно, но интересно:

local back = CUIFrameWindow() --* !
back:SetAutoDelete(true)
  --* при превышении этих значений (640х480)
back:Init("ui_icons_PDA_dialog_frame", 0, 0, 640, 480)
self:AttachChild(back)

Имеет место быть вылет:

FATAL ERROR
[error]Expression    : assertion failed
[error]Function      : _VertexStream::Lock
[error]File          : E:\stalker\sources\trunk\xr_3da\R_DStreams.cpp
[error]Line          : 44
[error]Description   : (bytes_need<=mSize) && vl_Count
stack trace:

Действительно есть ограничения или ЧЯДНТ?

Ссылка на комментарий

Есть ограничение на количество "плиток", из которых выкладывается окно такого типа. Для элементов 4x4 максимальный размер окна 340x340, то есть 85x85 полных "плиток".

При прямоугольном окне можно дойти до больших значений – например 400x100. Видимо, ограничение действует не на линейный размер, а на площадь.

Изменено пользователем Norman Eisenherz
  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
15.11.2022 в 11:42, Pir@t@s сказал:

1. У актера есть N предмет...

Скрытый текст

1. У актера есть N предмет
2. Актер получает хит от аномалии Электра
3. Если 1 и 2 имеет место, то выполняем действие.

Скрытый текст

1.

        local obj = db.actor:object("wpn_knife")
        if obj then

            ...

        end 

2.

        local h = hit()
        h.draftsman = db.actor       
        h:bone("bip01_spine") -- учитывать костюм
        h.type = hit.shock
        h.power = 0.05
        db.actor:hit(h)
        -- Добавить саунд, партиклы и эффект
        sound_object("anomaly\\electra_blast1"):play_at_pos(db.actor,vector():set(0,0,1),0,sound_object.s2d)
        level.add_pp_effector("duality_circle.ppe", 100, false)
        particles_object("anomaly2\\electra2_blast"):play_at_pos(db.actor:position())

3.

Можно отловить разницу здоровья на обновлении ГГ, но это так себе способ. А отловить тип хита... :unknw:

 

 

Изменено пользователем mole venomous
  • Спасибо 1

Здесь могла быть ваша реклама.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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