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

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


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

Garry_Galler,

здесь вопрос не неточности, а скорее что хотим получить. Если измерять угол от точки взгляда, то это истинный конус взгляда выходит. Но при этом в него могут не попасть объекты рядом с ГГ и в упор не будет виден кто-либо, стоящий прямо перед ГГ (поскольку его координаты - это положение на земле). Поэтому более осмысленной будет функция yaw_degree, которая игнорирует координату y.

Между прочим, всё равно будет проблема с объектами слева и справа от "полупространства взгляда", поскольку ближе к ГГ оно сужается. Поэтому имеет смысл ближе определённого расстояния проверять на больший угол видимости. Или вообще-то стоит просто использовать угол обзора, полученный из разрешения монитора и fov камеры.

 

Значит при моем способе - использующем методы класса вектор все быстрее работает? :ny_wink:

А ты проверь. Возьми класс profile_timer и замеряй время.

 

Там упоминался метод основанный на октодереве - интересно а в сталкере какой алгоритм реализован...

Для физики не знаю, а при движении по AI сетке - никакой. Ну может только проверяется, что узел сетки кем-то занят и то не всегда. Известно же, что неписи ГГ зачастую игнорируют и сквозь стенки ходят и по воздуху гуляют.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Увидел в статье по созданию видео насчёт кодека (что нужен не свежий, а старый) всё пошло смог увидить эти Theora FOURCC – THEO, настроил, сконвертировал, открываю файл, пишет не может воспроизвести. Сунул в игру вылет сразу же с таким логом

Expression    : fatal error
Function      : CTexture::Load
File          : E:\stalker\sources\trunk\xr_3da\SH_Texture.cpp
Line          : 181
Description   : <no expression>
Arguments     : Can't open video stream

 

Подскажите что делать? В чём ошибка?

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

ЯДиск папка с крутым схроном!

Подскажите, а чем может быть вызвана вот такая ошибка?

 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...ль желанийguygu\gamedata\scripts\bind_stalker.script:244: attempt to index global 'srs' (a nil value)

 

Неужели никто не знает, что это за ошибка?

 

Starter У тебя настройки кажись неправильные

 

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

 

всем привет. вот пытался рандомно выводить сообщения (через 5 минут)

 

и в начале игры вылет:

 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...g\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:211: attempt to perform arithmetic on global 'last_time' (a nil value)

 

function actor_binder:update(delta)

object_binder.update(self, delta)

local time = game.time()

 

if (time - last_time) > 5*60*1000 then

local txt = msg[math.random(#msg)]

last_time = time

end

 

 

что не так?

Thank you for your honesty.

Now fuck off and die.

не задано первоначальное значение last_time

ЗЫ. И убери этого жирдяя с аватары - блевать тянет

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

Gonarh, а как должно быть правильно? напиши плиз.

ладно, уберу :D

Thank you for your honesty.

Now fuck off and die.

Подскажите чем может быть вызван вылет:

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: c:\s.t.a.l.k.e.r\gamedata\scripts\dialogs.script:34: attempt to index field '?' (a nil value)

Freedom

STARTS, синтаксическая ошибка в файле srs.script, или его отсутсвие.
Возможно всё, ну или почти всё.

Прошу помощи в адаптации мода артефакт для воскрешения любого НПСа к моду OGSE.

Первичную интеграцию (system.ltx и bind_stalker.script) я провел сам.

При попытке воскресить непись (помещении арта в инвентарь трупа) получаю такой вылет:

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: g:\stalker\soc\gamedata\scripts\ressurect.script:31: attempt to index field 'convert_npc' (a nil value)

Мод точно работает с АМК (и НС то же).

ressurect.script

 

Заранее спасибо :)

Gideon Vi, не может найти переменную convert_npc в файле amk.script.
Возможно всё, ну или почти всё.

8push5 Да не, файл есть, и то что в нём находится, тоже кажись без ошибок

 

function create_level_changer(
    p_story_id,    -- STORY_ID нового level_changer (понадобится нам позже)
    p_position,    -- вектор, координаты точки, в которой будет располагаться центр нового level_changer
    p_lvertex_id,    -- level_vertext_id  - идентифицируют уровень, на котором будет создан level_changer
    p_gvertex_id,    -- game_vertext_id       

    p_dest_lv,    -- level_vertex_id   - идентифицируют уровень, на который level_changer будет перебрасывать игрока 
    p_dest_gv,    -- game_vertex_id
    p_dest_pos,    -- координаты точки, в которой на новом уровне окажется игрок
    p_dest_dir,    -- направрение взгляда игрока
    p_dest_level,    -- название уровня, например "L11_Pripyat"
    p_silent    -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход)

    local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)

    level.map_add_object_spot(obj.id, "level_changer", "")

    local packet = net_packet()
    obj:STATE_Write(packet)

    -- свойства cse_alife_object
    local game_vertex_id             = packet:r_u16()
    local cse_alife_object__unk1_f32     = packet:r_float()
    local cse_alife_object__unk2_u32     = packet:r_u32()
    local level_vertex_id             = packet:r_u32()
    local object_flags             = packet:r_u32()
    local custom_data             = packet:r_stringZ()
    local story_id                 = packet:r_u32()
    local spawn_story_id            = packet:r_u32()

    -- свойства cse_shape
    local shape_count             = packet:r_u8()
    for i=1,shape_count do
        local shape_type         = packet:r_u8()
        if shape_type == 0 then
            -- sphere
            local center         = packet:r_vec3()
            local radius         = packet:r_float()
        else
            -- box
            local axis_x_x = packet:r_float()
            local axis_x_y = packet:r_float()
            local axis_x_z = packet:r_float()
            local axis_y_x = packet:r_float()
            local axis_y_y = packet:r_float()
            local axis_y_z = packet:r_float()
            local axis_z_x = packet:r_float()
            local axis_z_y = packet:r_float()
            local axis_z_z = packet:r_float()
            local offset_x = packet:r_float()
            local offset_y = packet:r_float()
            local offset_z = packet:r_float()
        end
    end

    -- свойства cse_alife_space_restrictor
    local restrictor_type             = packet:r_u8()

    -- свойства cse_level_changer
    local dest_game_vertex_id        = packet:r_u16()  
    local dest_level_vertex_id         = packet:r_u32()  
    local dest_position             = packet:r_vec3()
    local dest_direction             = packet:r_vec3()
    local dest_level_name             = packet:r_stringZ()
    local dest_graph_point             = packet:r_stringZ()
    local silent_mode             = packet:r_u8()


    packet:w_begin(game_vertex_id)            -- game_vertex_id
    packet:w_float(cse_alife_object__unk1_f32)
    packet:w_u32(cse_alife_object__unk2_u32) 
    packet:w_u32(level_vertex_id)            -- level_vertex_id
    packet:w_u32( bit_not(193) )            -- object_flags = -193 = 0xFFFFFF3E
    packet:w_stringZ(custom_data)
    packet:w_u32(p_story_id)            -- story_id
    packet:w_u32(spawn_story_id)

    packet:w_u8(1)            -- количество фигур
--        packet:w_u8(0)            -- тип фигуры: сфера
--        packet:w_vec3(vector():set(0, 0, 0))  -- sphere_center
--        packet:w_float(3.0)
    packet:w_u8(1)            -- тип фигуры: box
    packet:w_float(2)       -- axis_x_x
    packet:w_float(0)       -- axis_x_y
    packet:w_float(0)       -- axis_x_z
    packet:w_float(0)       -- axis_y_x
    packet:w_float(4)       -- axis_y_y
    packet:w_float(0)       -- axis_y_z
    packet:w_float(0)       -- axis_z_x
    packet:w_float(0)       -- axis_z_y
    packet:w_float(4)       -- axis_z_z
    packet:w_float(0)       -- offset_x
    packet:w_float(0)       -- offset_y
    packet:w_float(0)          -- offset_z

    packet:w_u8(3)            -- restrictor_type

    packet:w_u16(p_dest_gv)            -- destination game_vertex_id
    packet:w_s32(p_dest_lv)            -- destination level_vertex_id
    packet:w_vec3(p_dest_pos)        -- destination position
    packet:w_vec3(p_dest_dir)        -- destination direction (направление взгляда)
    packet:w_stringZ(p_dest_level)        -- destination level name
    packet:w_stringZ("start_actor_02")    -- some string, always const
    packet:w_u8(p_silent)            -- 1 for silent level changing

    packet:r_seek(0)
    obj:STATE_Read(packet, packet:w_tell())
level.add_pp_effector ("teleport.ppe", 2006, false)

end


function spawn_tele_bar(obj)
   -- local art_section = "af_electra_moonlight" 
    if obj:section() == "tele_bar" then --and db.actor:object(art_section) then
        local rnd = math.random(7)
        if rnd == 1 then
            bar()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 2 then
            bar2()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 3 then
            bar3()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 4 then
            bar4()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 5 then
            bar5()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 6 then
            bar6()
            alife():release(alife():object(obj:id()))    
        else
            bar7()
            alife():release(alife():object(obj:id()))    
        end
    end
end


function bar()    
        create_level_changer(9821, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 45474, 1188, vector():set(193.61143493652,0.097166806459427,71.526657104492), vector():set(0.0, 0.0, 0.0), "l05_bar", 1)
end    
function bar2()    
        create_level_changer(9843, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 47206, 1270, vector():set(198.24176025391,3.271665096283,-77.252685546875), vector():set(0.0, 0.0, 0.0),    "l05_bar",1)
end
function bar3()    
        create_level_changer(9844, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),59366,   1277,  vector():set(232.64491271973,5.1447978019714,-113.61502838135), vector():set(0.0, 0.0, 0.0),    "l05_bar", 1)
end
function bar5()    
        create_level_changer(9845, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),68763, 1274, vector():set(276.64755249023,0.055086404085159,-66.742523193359), vector():set(0.0, 0.0, 0.0),    "l05_bar", 1)
end
function bar6()    
        create_level_changer(9846, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),35860, 1238,vector():set(128.80438232422,-4.8249382972717,16.76756477356),    vector():set(0.0, 0.0, 0.0),"l05_bar",  1)
end
function bar7()    
        create_level_changer(9847, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),33903,   1239, vector():set(116.09830474854,-5.3052234649658,12.649393081665), vector():set(0.0, 0.0, 0.0),    "l05_bar",  1)
end
--################################################################################
####################

function spawn_stasok()
local obj = amk.spawn_item("stasok",vector():set(-234.90,-19.67,-156.88),47,20038) 
local tbl = amk.read_stalker_params(obj) 
tbl.health = 0 
tbl.updhealth = 0 
amk.write_stalker_params(tbl, obj) 
end

function flash(first_speaker, second_speaker)
   dialogs.relocate_item_section(first_speaker, "ogg_flash_1", "in")
end

function xna(stalker, player)
return stalker:object ("pda") ~= nil
end 

function pda(first_speaker, second_speaker)
   dialogs.relocate_item_section(second_speaker, "pda", "out")
end

function af_rak(first_speaker, second_speaker)
   dialogs.relocate_item_section(second_speaker, "af_wind", "out")
end




function proverka_antirad()
            if not db.actor:object("antirad") then 
            local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Напоминаю: %c[255,230,0,0]Противорадиационные препараты отстутствуют!%c[default]Автоматический ввод препаратов невозможен " 
            db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 3000)
end

 

 

 

 

RvP, lekzd - СПС вам, жаль + немогу поставить(((((

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

 

STARTS,
Checking .../new  2.script:
new  2.script (14): mismatched input 'local' expecting ')'
Found 1 errors.

Vita sine libertate, nihil

Vita sine litteris - mors est

STARTS,

function create_level_changer(
    p_story_id,    -- STORY_ID нового level_changer (понадобится нам позже)
    p_position,    -- вектор, координаты точки, в которой будет располагаться центр нового level_changer
    p_lvertex_id,    -- level_vertext_id  - идентифицируют уровень, на котором будет создан level_changer
    p_gvertex_id,    -- game_vertext_id       

    p_dest_lv,    -- level_vertex_id   - идентифицируют уровень, на который level_changer будет перебрасывать игрока 
    p_dest_gv,    -- game_vertex_id
    p_dest_pos,    -- координаты точки, в которой на новом уровне окажется игрок
    p_dest_dir,    -- направрение взгляда игрока
    p_dest_level,    -- название уровня, например "L11_Pripyat"
    p_silent    -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход)
)
    local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)

    level.map_add_object_spot(obj.id, "level_changer", "")

    local packet = net_packet()
    obj:STATE_Write(packet)

    -- свойства cse_alife_object
    local game_vertex_id             = packet:r_u16()
    local cse_alife_object__unk1_f32     = packet:r_float()
    local cse_alife_object__unk2_u32     = packet:r_u32()
    local level_vertex_id             = packet:r_u32()
    local object_flags             = packet:r_u32()
    local custom_data             = packet:r_stringZ()
    local story_id                 = packet:r_u32()
    local spawn_story_id            = packet:r_u32()

    -- свойства cse_shape
    local shape_count             = packet:r_u8()
    for i=1,shape_count do
        local shape_type         = packet:r_u8()
        if shape_type == 0 then
            -- sphere
            local center         = packet:r_vec3()
            local radius         = packet:r_float()
        else
            -- box
            local axis_x_x = packet:r_float()
            local axis_x_y = packet:r_float()
            local axis_x_z = packet:r_float()
            local axis_y_x = packet:r_float()
            local axis_y_y = packet:r_float()
            local axis_y_z = packet:r_float()
            local axis_z_x = packet:r_float()
            local axis_z_y = packet:r_float()
            local axis_z_z = packet:r_float()
            local offset_x = packet:r_float()
            local offset_y = packet:r_float()
            local offset_z = packet:r_float()
        end
    end

    -- свойства cse_alife_space_restrictor
    local restrictor_type             = packet:r_u8()

    -- свойства cse_level_changer
    local dest_game_vertex_id        = packet:r_u16()  
    local dest_level_vertex_id         = packet:r_u32()  
    local dest_position             = packet:r_vec3()
    local dest_direction             = packet:r_vec3()
    local dest_level_name             = packet:r_stringZ()
    local dest_graph_point             = packet:r_stringZ()
    local silent_mode             = packet:r_u8()


    packet:w_begin(game_vertex_id)            -- game_vertex_id
    packet:w_float(cse_alife_object__unk1_f32)
    packet:w_u32(cse_alife_object__unk2_u32) 
    packet:w_u32(level_vertex_id)            -- level_vertex_id
    packet:w_u32( bit_not(193) )            -- object_flags = -193 = 0xFFFFFF3E
    packet:w_stringZ(custom_data)
    packet:w_u32(p_story_id)            -- story_id
    packet:w_u32(spawn_story_id)

    packet:w_u8(1)            -- количество фигур
--        packet:w_u8(0)            -- тип фигуры: сфера
--        packet:w_vec3(vector():set(0, 0, 0))  -- sphere_center
--        packet:w_float(3.0)
    packet:w_u8(1)            -- тип фигуры: box
    packet:w_float(2)       -- axis_x_x
    packet:w_float(0)       -- axis_x_y
    packet:w_float(0)       -- axis_x_z
    packet:w_float(0)       -- axis_y_x
    packet:w_float(4)       -- axis_y_y
    packet:w_float(0)       -- axis_y_z
    packet:w_float(0)       -- axis_z_x
    packet:w_float(0)       -- axis_z_y
    packet:w_float(4)       -- axis_z_z
    packet:w_float(0)       -- offset_x
    packet:w_float(0)       -- offset_y
    packet:w_float(0)          -- offset_z

    packet:w_u8(3)            -- restrictor_type

    packet:w_u16(p_dest_gv)            -- destination game_vertex_id
    packet:w_s32(p_dest_lv)            -- destination level_vertex_id
    packet:w_vec3(p_dest_pos)        -- destination position
    packet:w_vec3(p_dest_dir)        -- destination direction (направление взгляда)
    packet:w_stringZ(p_dest_level)        -- destination level name
    packet:w_stringZ("start_actor_02")    -- some string, always const
    packet:w_u8(p_silent)            -- 1 for silent level changing

    packet:r_seek(0)
    obj:STATE_Read(packet, packet:w_tell())
level.add_pp_effector ("teleport.ppe", 2006, false)

end


function spawn_tele_bar(obj)
   -- local art_section = "af_electra_moonlight" 
    if obj:section() == "tele_bar" then --and db.actor:object(art_section) then
        local rnd = math.random(7)
        if rnd == 1 then
            bar()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 2 then
            bar2()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 3 then
            bar3()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 4 then
            bar4()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 5 then
            bar5()
            alife():release(alife():object(obj:id()))    
        elseif rnd == 6 then
            bar6()
            alife():release(alife():object(obj:id()))    
        else
            bar7()
            alife():release(alife():object(obj:id()))    
        end
    end
end


function bar()    
        create_level_changer(9821, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 45474, 1188, vector():set(193.61143493652,0.097166806459427,71.526657104492), vector():set(0.0, 0.0, 0.0), "l05_bar", 1)
end    
function bar2()    
        create_level_changer(9843, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 47206, 1270, vector():set(198.24176025391,3.271665096283,-77.252685546875), vector():set(0.0, 0.0, 0.0),    "l05_bar",1)
end
function bar3()    
        create_level_changer(9844, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),59366,   1277,  vector():set(232.64491271973,5.1447978019714,-113.61502838135), vector():set(0.0, 0.0, 0.0),    "l05_bar", 1)
end
function bar5()    
        create_level_changer(9845, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),68763, 1274, vector():set(276.64755249023,0.055086404085159,-66.742523193359), vector():set(0.0, 0.0, 0.0),    "l05_bar", 1)
end
function bar6()    
        create_level_changer(9846, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),35860, 1238,vector():set(128.80438232422,-4.8249382972717,16.76756477356),    vector():set(0.0, 0.0, 0.0),"l05_bar",  1)
end
function bar7()    
        create_level_changer(9847, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),33903,   1239, vector():set(116.09830474854,-5.3052234649658,12.649393081665), vector():set(0.0, 0.0, 0.0),    "l05_bar",  1)
end
--################################################################################
####################

function spawn_stasok()
local obj = amk.spawn_item("stasok",vector():set(-234.90,-19.67,-156.88),47,20038) 
local tbl = amk.read_stalker_params(obj) 
tbl.health = 0 
tbl.updhealth = 0 
amk.write_stalker_params(tbl, obj) 
end

function flash(first_speaker, second_speaker)
   dialogs.relocate_item_section(first_speaker, "ogg_flash_1", "in")
end

function xna(stalker, player)
return stalker:object ("pda") ~= nil
end 

function pda(first_speaker, second_speaker)
   dialogs.relocate_item_section(second_speaker, "pda", "out")
end

function af_rak(first_speaker, second_speaker)
   dialogs.relocate_item_section(second_speaker, "af_wind", "out")
end




function proverka_antirad()
            if not db.actor:object("antirad") then 
                local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Напоминаю: %c[255,230,0,0]Противорадиационные препараты отстутствуют!%c[default]Автоматический ввод препаратов невозможен " 
                db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 3000)
            end
end

 

 

2 ошибки были:

случайно сделал перенос в комментарии "--########"

пропустил один end в конце

 

в следующий раз юзай lua checker

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

не может найти переменную convert_npc в файле amk.script

Большое спасибо за информацию. Вот мой amk.script: 1 или 2. Если не очень сложно, поправь, пожалуйста.

Gideon Vi, возьми и сравни этот файл из того мода на котором он работает и все.
Возможно всё, ну или почти всё.

Вылетает при выдаче Волком:

FATAL ERROR

[error]Expression    : !hud_snd.sounds.empty()
[error]Function      : HUD_SOUND::LoadSound
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\HudSound.cpp
[error]Line          : 27
[error]Description   : there is no sounds for:
[error]Arguments     : wpn_m1891_30


stack trace:

 

Звуки есть, в конфиге прописано.

З.Ы. Это Винтовка Мосина, если что :) .

Я ВЕРНУСЬ И НАДЕРУ ВСЕМ ЗАДНИЦЫ (С) УИЛЛИС

Labus,

Через СДК не пропускал, да и ставил давно.

С другими стволами(ПКМ, РПД, М1 Томпсон и т.д.) ничего такого нет.

Он у тебя моно, 60Кб/сек, 44100Гц?

Да.

Я ВЕРНУСЬ И НАДЕРУ ВСЕМ ЗАДНИЦЫ (С) УИЛЛИС

всем привет. народ, где можно взять мод динамические новости? для чистой игры ТЧ

Thank you for your honesty.

Now fuck off and die.

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

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

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

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

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

Войти

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

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

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