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

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


Halford

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

@abramcumner вот все файлы типа death_generic - может твой глаз сможет разглядеть ошибку.  Прописал вроде везде как положено, патроны должны спавниться ток в случае, если НПС вооружён ТТ или ППШ, но на скрине ни того, ни другого на трупе нет, а патронов как в ящике на складе у прапора.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@abramcumner у меня utf8 даже в ванильных файлах ТЧ и ЗП показывает (пользуюсь обычно Нотепадом, но проверка через базовый блокнот показала utf8)

Как тогда эту проблему лучше всего решить то (точнее в какую кодировку надо перевести, чтобы все правильно заработало)?

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@abramcumner поменял в death_generic во всех секциях патронов x на английскую. Проверка с НИ результата не дала - всё так-же куча патронов спавниться.

@I am Dead вот так фалы выглядя в блокноте и в Нотпаде. Причём попытка изменить формат ни к чему не приводит. При новом открытии всё возвращается в utf8.

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

добрый день господа

 

решил я реализовать квест с Угрюмым и Ко как в билде 2232 (где они по деревне шастают и в итоге от контролёра на водонапорной башне погибали выстреливая себе в голову из пистолета)

так то всё работает, но есть одно но - после того, как банда доходит до водонапорки и появляется контролёр, они тупо стреляют куда попало из автоматов, а не садятся на корты и пистолеты к голове подносят (при убийстве ГГ контролёра бойцы как положено подыхают по скрипту, хотя должны сами себя из пистолетов застрелить, когда контролёр спавниться) 

вот логики контролёра и угрюмого с командой + настройка вай-поинта в конечной точке пути охотника (у всех троих он одинаков)

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

function mil_controller_dead (actor, npc)
    local h = hit ();
    h.power = 1000;
    h.direction = vector():set( 1, 0, 0 );
    h.impulse = 1;
    h.draftsman = npc;
    h.type = hit.strike;
    local hunter = level_object_by_sid (725)
    if hunter ~= nil and hunter:alive () == true then
       printf ("KILL STALKER : %s", hunter:name ()) 
       hunter:hit (h)
    end    
    hunter = level_object_by_sid (726)
    if hunter ~= nil and hunter:alive () == true then
       printf ("KILL STALKER : %s", hunter:name ()) 
       hunter:hit (h)
    end    
    hunter = level_object_by_sid (727)
    if hunter ~= nil and hunter:alive () == true then
       printf ("KILL STALKER : %s", hunter:name ()) 
       hunter:hit (h)
    end    
end

function mil_hunters_psi_hit (actor, npc)
    --if npc == nil then return end
    local c = level_object_by_sid (729)
    if c == nil then return end
    local h = hit ()
    h.power = 100
    h.direction = vector():set( 1, 0, 0 )
    h.impulse = 1
    h.draftsman = c
    h.type = hit.telepatic
    
    local hunter = level_object_by_sid (725)
    if hunter ~= nil and hunter:alive () == true then
       if hunter.psy_health > 0.08 then
          hunter:hit (h)
       end   
    end   
    
    hunter = level_object_by_sid (726)
    if hunter ~= nil and hunter:alive () == true then
       if hunter.psy_health > 0.08 then
          hunter:hit (h)
       end   
    end   

    hunter = level_object_by_sid (727)
    if hunter ~= nil and hunter:alive () == true then
       if hunter.psy_health > 0.08 then
          hunter:hit (h)
       end   
    end   
end

Может кто знает, как подправить скрипты так, чтоб всё работало как было задумано (ну или хотя бы сделать так, что срабатывала анимация, когда НПС падали на коленях и брались за головы)

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Balavnik чтобы нормально положение актора поменять (или его спавн сделать на другой локации), надо в СДК это дело творить, через всякие АСДС такие вещи не делаются

Изменено пользователем DarkSnowder
  • Нравится 1
  • Не нравится 2

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

комрады, можете подсказать, с чем может быть связана пропажа оружия у НПС? (после начала НИ у некоторых НПС исчезает оружие, и те тупо бегают от врага по сей карте, хотя оружие у них прописано)

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Комрады, кто нить может расшифровать, что лог от меня хочет

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

[18.08.24 14:54:26.031] [20292] --------------------------------------------------------------------------------
[18.08.24 14:54:26.033] [20292] * [ D3D ]: textures count [2465]
[18.08.24 14:54:26.033] [20292] * [ D3D ]: textures[1215037 K]
[18.08.24 14:54:26.033] [20292] * [x-ray]: process heap[0 K], render[0 K]
[18.08.24 14:54:26.033] [20292] * [x-ray]: economy: strings[9305 K], smem[0 K]
[18.08.24 14:54:27.896] [20292] * MEMORY USAGE: 0 K
[18.08.24 14:54:27.896] [20292] * End of synchronization A[1] R[1]
[18.08.24 14:54:27.910] [20292] * phase time: 1886 ms
[18.08.24 14:54:27.910] [20292] * phase cmem: 0 K
[18.08.24 14:54:32.918] [20292] @ demo_record 1
[18.08.24 14:54:38.279] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [18.267400]ms, used: [89.804500]ms, free: [-71.537100]ms
[18.08.24 14:54:44.987] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [7.762000]ms, used: [219.874500]ms, free: [-212.112500]ms
[18.08.24 14:54:45.096] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [5.335600]ms, used: [106.431700]ms, free: [-101.096100]ms
[18.08.24 14:54:45.131] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [7.421100]ms, used: [17.278300]ms, free: [-9.857200]ms
[18.08.24 14:54:45.294] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [15.759800]ms, used: [98.027600]ms, free: [-82.267800]ms
[18.08.24 14:54:45.468] [26884] * [CPatrolPathStorage::safe_path]: path[pri_monolith_patrol6_look] pp[wp09] level_vertex_id[4294967295] -> 306738
[18.08.24 14:54:45.549] [26884] * [CPatrolPathStorage::safe_path]: path[pri_monolith_balcony_sniper1_look] pp[wp03|a=threat] level_vertex_id[4294967295] -> 163351
[18.08.24 14:54:45.566] [26884] * [CPatrolPathStorage::safe_path]: path[pri_monolith_balcony_sniper1_look] pp[wp05|a=threat] level_vertex_id[4294967295] -> 136583
[18.08.24 14:54:45.567] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [17.832800]ms, used: [45.230700]ms, free: [-27.397900]ms
[18.08.24 14:54:45.587] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [5.924300]ms, used: [18.091700]ms, free: [-12.167400]ms
[18.08.24 14:54:45.908] [19840] ! Can't find texture [wpn_crosshair_red]
[18.08.24 14:54:50.695] [20292] ! Single item [stol_8_ph_door] took whole update frame!!!
[18.08.24 14:54:55.403] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [17.193600]ms, used: [48.661700]ms, free: [-31.468100]ms
[18.08.24 14:55:06.474] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [13.823200]ms, used: [61.041800]ms, free: [-47.218600]ms
[18.08.24 14:55:12.921] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [15.649100]ms, used: [49.561900]ms, free: [-33.912800]ms
[18.08.24 14:55:14.539] [20292] ##[CRenderDevice::on_idle] Second thread work time is too long! Avail: [18.431800]ms, used: [42.891900]ms, free: [-24.460100]ms
[18.08.24 14:55:17.497] [20292] !!****************************[ABORT]*********************************
[18.08.24 14:55:17.497] [20292] stack traceback:
    d:\dreamreader\gamedata\scripts\_g.script:177: in function 'abort'
    d:\dreamreader\gamedata\scripts\move_mgr.script:599: in function <d:\dreamreader\gamedata\scripts\move_mgr.script:461>
[18.08.24 14:55:17.497] [20292] !!log3 failed: bad argument #4 to '?' (number expected, got string)
! stack traceback:
!     d:\dreamreader\gamedata\scripts\_g.script:170: in function 'log3'
!     d:\dreamreader\gamedata\scripts\_g.script:178: in function 'abort'
!     d:\dreamreader\gamedata\scripts\move_mgr.script:599: in function <d:\dreamreader\gamedata\scripts\move_mgr.script:461>
[18.08.24 14:55:17.497] [20292] !!********************************************************************
[18.08.24 14:55:17.497] [20292] *********************************************************************************
[18.08.24 14:55:17.497] [20292] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR:
d:\dreamreader\gamedata\scripts\_g.script:180: object '%s': path_walk '%s', index %d: cannot find corresponding point(s) on path_look '%s'
stack traceback:
    [C]: at 0x7ff6fd3efec4
    [C]: in function 'error'
    d:\dreamreader\gamedata\scripts\_g.script:180: in function 'abort'
    d:\dreamreader\gamedata\scripts\move_mgr.script:599: in function <d:\dreamreader\gamedata\scripts\move_mgr.script:461>
[18.08.24 14:55:17.497] [20292] *********************************************************************************
[18.08.24 14:55:17.497] [20292] 
FATAL ERROR

[error]Expression    : FATAL ERROR
[error]Function      : CScriptEngine::lua_pcall_failed
[error]File          : C:\Games\OGSR\ogsr_engine\COMMON_AI\script_engine.cpp
[error]Line          : 60
[error]Description   : [CScriptEngine::lua_pcall_failed]: d:\dreamreader\gamedata\scripts\_g.script:180: object '%s': path_walk '%s', index %d: cannot find corresponding point(s) on path_look '%s'


[18.08.24 14:55:17.497] [20292] ***************************[ScriptCrashHandler]**********************************
[18.08.24 14:55:17.497] [20292] stack traceback:
    [C]: at 0x7ff6fd3efec4
    [C]: in function 'error'
    d:\dreamreader\gamedata\scripts\_g.script:180: in function 'abort'
    d:\dreamreader\gamedata\scripts\move_mgr.script:599: in function <d:\dreamreader\gamedata\scripts\move_mgr.script:461>
[18.08.24 14:55:17.497] [20292]     Locals: 
[18.08.24 14:55:17.497] [20292]      string (*temporary) : d:\dreamreader\gamedata\scripts\_g.script:180: object '%s': path_walk '%s', index %d: cannot find corresponding point(s) on pat
[18.08.24 14:55:17.497] [20292]     End
[18.08.24 14:55:17.497] [20292]     Locals: 
[18.08.24 14:55:17.497] [20292]      string (*temporary) : object '%s': path_walk '%s', index %d: cannot find corresponding point(s) on path_look '%s'
[18.08.24 14:55:17.497] [20292]     End
[18.08.24 14:55:17.498] [20292]     Locals: 
[18.08.24 14:55:17.498] [20292]      string fmt : object '%s': path_walk '%s', index %d: cannot find corresponding point(s) on path_look '%s'
[18.08.24 14:55:17.498] [20292]     End
[18.08.24 14:55:17.498] [20292]     Locals: 
[18.08.24 14:55:17.498] [20292]      Userdata: self
[18.08.24 14:55:17.498] [20292]              Table: self.path_look_info
[18.08.24 14:55:17.498] [20292]                      table self.path_look_info.0 : [...]
[18.08.24 14:55:17.498] [20292] Can't dump script call stack - Engine corrupted
[18.08.24 14:55:17.498] [20292] ********************************************************************************
[18.08.24 14:55:17.498] [20292] !![LogStackTrace] Thread: [X-RAY Primary thread]
[18.08.24 14:55:17.515] [20292] !!stack trace:
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD21D595]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD206606]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD206ADC]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD206D07]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD3EFF3D]
! Module: [D:\DreamReader\bin_x64\LuaJIT.dll], AddrPC.Offset: [00007FFA6C2A54E0], Fun: [wscanf_s()] + [12487 byte(s)]
! Module: [D:\DreamReader\bin_x64\LuaJIT.dll], AddrPC.Offset: [00007FFA6C2E3A20], Fun: [wscanf_s()] + [267783 byte(s)]
! Module: [D:\DreamReader\bin_x64\LuaJIT.dll], AddrPC.Offset: [00007FFA6C2E3EA9], Fun: [wscanf_s()] + [268944 byte(s)]
! Module: [D:\DreamReader\bin_x64\LuaJIT.dll], AddrPC.Offset: [00007FFA6C2A54E0], Fun: [wscanf_s()] + [12487 byte(s)]
! Module: [D:\DreamReader\bin_x64\LuaJIT.dll], AddrPC.Offset: [00007FFA6C2AF1BA], Fun: [wscanf_s()] + [52641 byte(s)]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD8B3400]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD4685BE]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD86DB00]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD87A049]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD78DE8E]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD78E1FA]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD757095]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD756DC9]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD512769]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1B871C]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1B86F2]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1B8A5A]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1B4493]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD3A7517]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1E5F6C]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1E5A6E]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1E4B13]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1E57B7]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1AEB24]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1AF219]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD1AF352]
! Module: [D:\DreamReader\bin_x64\xrEngine.exe], AddrPC.Offset: [00007FF6FD91EA0E]
! Module: [C:\Windows\System32\KERNEL32.DLL], AddrPC.Offset: [00007FFA72F1257D], Fun: [BaseThreadInitThunk()] + [29 byte(s)]
! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00007FFA73CCAF28], Fun: [RtlUserThreadStart()] + [40 byte(s)]

[18.08.24 14:55:17.516] [20292] ********************************************************************************

На скок я понял, проблема в вай-поинтах. Ток вот в чём именно? 

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Labadal 

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

;*************** pri_monolith *******************
[logic@pri_monolith_leader]
active = walker1@pri_monolith_leader

[walker1@pri_monolith_leader]
path_walk = leader_walk
path_look = leader_look


[logic@pri_monolith_camper1]
active = camper1@pri_monolith

[camper1@pri_monolith]
path_walk = balcony_sniper1_walk
path_look = balcony_sniper1_look


[logic@pri_monolith_camper2]
active = camper2@pri_monolith

[camper2@pri_monolith]
path_walk = balcony_sniper2_walk
path_look = balcony_sniper2_look


[logic@pri_monolith_patrol1]
active = patrol1@pri_monolith

[patrol1@pri_monolith]
path_walk = patrol1_walk
path_look = patrol1_look


[logic@pri_monolith_patrol3]
active = patrol3@pri_monolith

[patrol3@pri_monolith]
path_walk = patrol3_walk
path_look = patrol3_look


[logic@pri_monolith_kamp1]
active = kamp1@pri_monolith

[kamp1@pri_monolith]
center_point  = kamp5
;path_walk = kamp5_task
radius = 2.4
danger = danger_ignore@pri_monolith
on_timer = 150000 | kamp3@pri_monolith

[kamp3@pri_monolith]
center_point  = kamp3
path_walk = kamp3_task
radius = 2.4
danger = danger_ignore@pri_monolith
on_timer = 150000 | kamp1@pri_monolith


[logic@pri_monolith_patrol4]
active = patrol4@pri_monolith

[patrol4@pri_monolith]
path_walk = patrol4_walk
path_look = patrol4_look


[logic@pri_monolith_kamp2]
active = kamp2@pri_monolith

[kamp2@pri_monolith]
center_point  = kamp5
path_walk = kamp5_task
radius = 2.4
danger = danger_ignore@pri_monolith


[logic@pri_monolith_patrol5]
active = patrol5@pri_monolith

[patrol5@pri_monolith]
path_walk = patrol5_walk
path_look = patrol5_look


[logic@pri_monolith_patrol6]
active = patrol6@pri_monolith

[patrol6@pri_monolith]
path_walk = patrol6_walk
path_look = patrol6_look


[logic@pri_monolith_patrol7]
active = patrol7@pri_monolith

[patrol7@pri_monolith]
path_walk = patrol7_walk
path_look = patrol7_look


[logic@pri_monolith_patrol8]
active = patrol8@pri_monolith

[patrol8@pri_monolith]
path_walk = patrol8_walk
path_look = patrol8_look


[logic@pri_monolith_patrol10]
active = patrol10@pri_monolith

[patrol10@pri_monolith]
path_walk = patrol10_walk
path_look = patrol10_look

[logic@pri_monolith_patrol11]
active = patrol11@pri_monolith

[patrol11@pri_monolith]
path_walk = patrol11_walk
path_look = patrol11_look


[logic@pri_monolith_patrol12]
active = patrol12@pri_monolith

[patrol12@pri_monolith]
path_walk = patrol12_walk
path_look = patrol12_look


[logic@pri_monolith_patrol14]
active = patrol14@pri_monolith

[patrol14@pri_monolith]
path_walk = patrol14_walk
path_look = patrol14_look

[logic@pri_monolith_walker1]
active = walker1@pri_monolith

[walker1@pri_monolith]
path_walk = prayer1_walk
path_look = prayer_look2


[logic@pri_monolith_walker2]
active = walker2@pri_monolith

[walker2@pri_monolith]
path_walk = prayer2_walk
path_look = prayer_look2


[logic@pri_monolith_walker3]
active = walker3@pri_monolith

[walker3@pri_monolith]
path_walk = prayer3_walk
path_look = prayer_look2


[logic@pri_monolith_walker4]
active = walker4@pri_monolith

[walker4@pri_monolith]
path_walk = prayer4_walk
path_look = prayer_look1


[logic@pri_monolith_walker5]
active = walker5@pri_monolith

[walker5@pri_monolith]
path_walk = prayer5_walk
path_look = prayer_look1


[logic@pri_monolith_walker6]
active = walker6@pri_monolith

[walker6@pri_monolith]
path_walk = prayer6_walk
path_look = prayer_look1


[danger_ignore@pri_monolith]
ignore_distance = 5

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

--' Главная база монолита (обновлённая)
    if type == "pri_monolith" then
        t = { section = "logic@pri_monolith_leader",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = "",
            position_threshold = 600,
            predicate = function(obj_info)
                            return obj_info.profile_name == "pri_monolith_leader"
                        end    
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_camper1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_camper2",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol3",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_kamp1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol4",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_kamp2",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol5",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol6",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol7",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol8",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol10",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol11",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol12",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_patrol14",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_walker1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_walker2",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_walker3",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_walker4",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_walker5",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@pri_monolith_walker6",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        end    
end    

вот сами точки в редакторе

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Столкнулся с такой проблемой - прописал в вай-поинтах код на проигрывание фразы у НПС, когда он к этой точке подходит

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

wp02|a=walk|s=chern_patogenic1

В конфиге script_sound тоже фразу прописал

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

[chern_patogenic1_seq]
stalker     = 0,characters_voice\human_02\bandit\states\health\health_1

В sound_theme скрипт тоже прописал

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

chern_patogenic1                = {min_snd = 3, max_snd = 5, rnd = 100, prior = 5, rnd_id = id(), into_id = id(), max_ids = {}},

но Бот в упор не хоче ничего произносить. Где косяк допустил, не подскажите?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Народ, такой вопросец - прописал значит монстру такую логику

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

[logic]
active = mob_camp1
on_combat = mob_combat
on_death = mob_death@cher_izlom_ded

[mob_combat]
on_info = nil %=disable_combat_handler%

 

[mob_camp1]
path_home = cher_izlom_walk
path_look = cher_izlom_look
state = invis
;friendly = true
on_actor_dist_le = 3 | mob_camp2 %=monster_berserk%
on_info = {+cher_pathogenic_search_novice_izlom} mob_camp2 %=monster_berserk%

 

[mob_camp2]
path_home = cher_izlom_attack_walk
path_look = cher_izlom_attack_look
state = vis
;on_actor_dist_le = 3 | nil
;friendly = true
;on_signal = arrived | nil

 

[mob_death@cher_izlom_ded]
on_info = %+cher_izlom_hunt_dead%

 В итоге при переходе с camp1 на camp2 вылетает с жалобой на "invis"

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

[25.08.24 20:12:58.918] [38852] !!****************************[ABORT]*********************************
[25.08.24 20:12:58.918] [38852] stack traceback:
    d:\dreamreader\gamedata\scripts\_g.script:177: in function 'abort'
    d:\dreamreader\gamedata\scripts\mob_state_mgr.script:40: in function 'set_state'
    d:\dreamreader\gamedata\scripts\mob_camp.script:28: in function <d:\dreamreader\gamedata\scripts\mob_camp.script:24>
    d:\dreamreader\gamedata\scripts\xr_logic.script:498: in function 'issue_event'
    d:\dreamreader\gamedata\scripts\xr_logic.script:385: in function 'activate_by_section'
    d:\dreamreader\gamedata\scripts\xr_logic.script:1436: in function 'initialize_obj'
    d:\dreamreader\gamedata\scripts\xr_gulag.script:1189: in function 'setup_gulag_and_logic_on_spawn'
    d:\dreamreader\gamedata\scripts\bind_monster.script:139: in function <d:\dreamreader\gamedata\scripts\bind_monster.script:132>
[25.08.24 20:12:58.918] [38852] mob_state_mgr: object ''cher_fracture_weak_guest'': unknown state ''invis'' requested
[25.08.24 20:12:58.918] [38852] !!********************************************************************
[25.08.24 20:12:58.918] [38852] *********************************************************************************
[25.08.24 20:12:58.918] [38852] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR:
d:\dreamreader\gamedata\scripts\_g.script:180: mob_state_mgr: object '%s': unknown state '%s' requested
stack traceback:
    [C]: at 0x7ff687e9fec4
    [C]: in function 'error'
    d:\dreamreader\gamedata\scripts\_g.script:180: in function 'abort'
    d:\dreamreader\gamedata\scripts\mob_state_mgr.script:40: in function 'set_state'
    d:\dreamreader\gamedata\scripts\mob_camp.script:28: in function <d:\dreamreader\gamedata\scripts\mob_camp.script:24>
    d:\dreamreader\gamedata\scripts\xr_logic.script:498: in function 'issue_event'
    d:\dreamreader\gamedata\scripts\xr_logic.script:385: in function 'activate_by_section'
    d:\dreamreader\gamedata\scripts\xr_logic.script:1436: in function 'initialize_obj'
    d:\dreamreader\gamedata\scripts\xr_gulag.script:1189: in function 'setup_gulag_and_logic_on_spawn'
    d:\dreamreader\gamedata\scripts\bind_monster.script:139: in function <d:\dreamreader\gamedata\scripts\bind_monster.script:132>
[25.08.24 20:12:58.918] [38852] *********************************************************************************
[25.08.24 20:12:58.918] [38852] 
FATAL ERROR

[error]Expression    : FATAL ERROR
[error]Function      : CScriptEngine::lua_pcall_failed
[error]File          : C:\Games\OGSR\ogsr_engine\COMMON_AI\script_engine.cpp
[error]Line          : 60
[error]Description   : [CScriptEngine::lua_pcall_failed]: d:\dreamreader\gamedata\scripts\_g.script:180: mob_state_mgr: object '%s': unknown state '%s' requested


[25.08.24 20:12:58.918] [38852] ********************************************************************************
[25.08.24 20:12:58.918] [38852] !![LogStackTrace] Thread: [TTAPI thread 6]
[25.08.24 20:12:58.945] [38852] !!stack trace:
 

Причём у другого моба с таким же state вылета нет (ну помните того сосыча в ТД, который на новиса Меченого ловил)

 

Я так понял state = invis-vis отвечает за видимость моба (типа в camp1 он невидим, а во втором уже видим) Мне как раз надо, чтоб сцена засады работала нормально, но вот чёт крашиться.

 

Может кто совет по логике подсказать?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Народ, может я что-то путаю - есть ли логика, которая заставляет НПС включать фонарики вне зависимости от времени суток, ну чтоб в подземельях НПС с включёнными фонарями ходили?

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Всем чистого неба коллеги

 

вопросец - в секции торговли для соответсвующих НПС есть такие строки

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

buy_condition = trade_generic_buy
sell_condition = {+mil_lukash_dolg_task_complete} trade_friend_sell, trade_generic_sell
buy_supplies = {+mil_leader_quest2_complete} supplies_exp_2,{+mil_lukash_dolg_task_complete} supplies_exp_1, supplies_generic

 сдесь как говориться записаны поршни, по которым происходит смена асортимента. 

 

Вопрос - можно ли заменить зависимость от поршней зависмостью от ранга ГГ и от его отношении с группировкой (ну чтоб если ГГ свободе друг, (не обязательно он должен состоять в группировке), цены были меньше, а если ГГ ранга ветеран - менялся асортимент?

 

Если да - то какие данные нужно писать взамен инфопоршней?

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Norman Eisenherz в кондишине стоят проверки на ранг ботов, под ранг ГГ ничё такого нет

 

зато в диалог.скрипт есть упоминания на проверку ранга ГГ

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

function gar_actor_rank_newbie(actor,npc)
    local actor = db.actor
    if actor:character_rank() < 300 then
        return true
    end
end

по идее, можно на основании такой функции выдавать инфопоршень, который и будет активировать доп.хабар в торговлю.

Ток как такую функцию прописать, а главное, потом её вызвать (хоть через тот-же инфопоршень хотя бы)?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Norman Eisenherz не всё так просто походу

вот прописал в конфигах продавца условия

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

[trader]
buy_condition = trade_generic_buy
sell_condition = {=actor_friend} trade_friend_sell, trade_generic_sell
buy_supplies = {=actor_rank_veteran} supplies_exp_2, {=actor_rank_experienced} supplies_exp_1, supplies_generic

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

-- функции на проверку ранга актора
function actor_rank_newbie()
    return db.actor:character_rank() < 300
end

function actor_rank_experienced()
    return db.actor:character_rank() < 600
end

function actor_rank_veteran()
    return db.actor:character_rank() < 900
end

function actor_rank_master()
    return db.actor:character_rank() > 900
end
 

на старте у меня ГГ новичок, но в продаже появляются предметы, что должны ток на ранге опытный и ветеран появлятся

  • Смешно 1

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@abramcumner в игре ранговая система вроде как такая

от 0 до 300 - новичок, от 300 до 600 - опытный, от 600 да 900 ветеран, а все кто свыше 900 мастера

 

то бишь как я хочу сделать - если ГГ новичок (то бишь его ранг не достиг 300 - продавать по таблице supplies_generic, если ранг ГГ опытный (от 300 до 600) - асортимент идёт по таблице supplies_exp_1, на а если свыше 600 - то продавать по supplies_exp_2.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@abramcumner ну чёт не срабатывает проверка видимо

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

buy_condition = trade_generic_buy
sell_condition = {!actor_friend} trade_friend_sell, trade_generic_sell
buy_supplies = {!actor_rank_veteran} supplies_exp_2, {!actor_rank_experienced} supplies_exp_1, supplies_generic

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

-- функции на проверку ранга актора
function actor_rank_newbie(actor, npc)
    return db.actor:character_rank() < 300
end

function actor_rank_experienced()
    local rank = db.actor:character_rank(actor, npc)
    return rank >= 300 and rank < 600
end

function actor_rank_veteran(actor, npc)
    local rank = db.actor:character_rank()
    return rank >= 600 and rank < 900
end

function actor_rank_master(actor, npc)
    return db.actor:character_rank() >= 900
end

ГГ спавнится с рангом 0, а всё равно в продаже предметы, что должны появляться при условии опытный и ветеран

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

народ, подскажите по братски

сделал пару циклических квестов на поиски предметов, добавил нужный диалог торгашу, в итоге наблюдаю такое

список есть, а взять их невозможно

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

[jaba_find_item_1]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_1_text
description = st_jaba_recover_item_1_descr
parent = jaba
target = cher_quest_wpn_pm_1
reward_money = 1500
reward_reputation = +15
reward_rank = 2
time = 86400

 

[jaba_find_item_2]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_2_text
description = st_jaba_recover_item_2_descr
parent = jaba
target = cher_quest_wpn_ak74u_1
reward_money = 3000
reward_reputation = +15
reward_rank = 5
time = 86400

 

[jaba_find_item_3]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_3_text
description = st_jaba_recover_item_3_descr
parent = jaba
target = cher_quest_af_cristall_flower_1
reward_money = 6000
reward_reputation = +15
reward_rank = 3
time = 86400

 

[jaba_find_item_4]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_4_text
description = st_jaba_recover_item_4_descr
parent = jaba
target = cher_quest_scout_pda
reward_money = 15000
reward_reputation = +15
reward_rank = 10
time = 86400

 

[jaba_find_item_5]
type = find_item
community = actor
;condlist = {+agroprom_military_case_done}
text = st_jaba_recover_item_5_text
description = st_jaba_recover_item_5_descr
parent = jaba
target = cher_quest_killer_outfit_1
reward_money = 8000
reward_reputation = +15
reward_rank = 7
time = 86400

 

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

всем добра

 

коллеги, есть у меня на полуподземной локация область, накрытая рестриктором с такой логикой

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

[logic]
active = sr_idle@check_in

[sr_idle@check_in]
on_actor_inside = {-damned_weathers_indoor} sr_idle@check_out %+damned_weathers_indoor =set_weather(sarkofag:true)%

[sr_idle@check_out]
on_actor_outside = {-damned_weathers_outdoor} sr_idle@t10 %-damned_weathers_indoor +damned_weathers_outdoor =set_weather(default:true)%

[sr_idle@t10]
on_game_timer = 10 | sr_idle@check_in %-damned_weathers_outdoor%

тобишь, чтоб при заходе под землю, погода менялась на подземную и т.д.

в эффект.скрипт строка функции тоже прописана

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

function set_weather(actor, npc, p)
    if (p[1]) then
        if (p[2] == "true") then
            level.set_weather(p[1], true)
        else
            level.set_weather(p[1], false)
        end
    end
end

но смены погоды при заходе в зону не происходит.

Кто подскажет в чём я прокололся?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Капрал Хикс дык а как в таком случае должна выглядеть логика рестриктора, при входе в которую поршень выдается, а при выходе "забирается"? У меня из подземки выходы на другие уровни есть, да и с других локаций под землю тоже тропы ведут.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Marafon6540 ну вообще смысл есть, но подземка довольно разветвлённая, а env_зоны в редакторе только сферические.

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

×
×
  • Создать...