Перейти к содержанию

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

 
 

Всем привет. Подскажите пожалуйса, как это исправить?  Не понимаю, из-за чего это может быть

Спойлер

fe84a5cfe4579332.jpg?ex=67686117&is=6767

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

sosiska23 grenade_vel в конфиге подствольника.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 поставил 1000, гранаты летят также

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


Ссылка на сообщение
Поделиться на другие сайты
 

Пытаюсь повторить в ЗП интро-катсцену из ЧН с пролетом камеры, но при запуске игры у камеры почему-то "сбиваются" координаты и она воспроизводит полет совсем в другом месте.

Если это поможет, то анимацию камеры взял из ЧН (сцена из интро, где камера пролетает по комнате, в которой находятся Шрам, Лебедев и Каланча). Локация Болота (вся геометрия уровня полностью взята из оригинала).

При этом в СДК при импорте анимации камеры, она ее проигрывает корректно, там, где нужно. Но в игре почему-то стартует совсем в другом месте. 

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

Изменено пользователем Бессмертный

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


Ссылка на сообщение
Поделиться на другие сайты
 

sosiska23 Причины:
1. Меняли не там
2. Новую игру не начинали


Бессмертный Анимация камеры может проигрывается в двух режимах: в глобальных координатах и относительных. Проверяйте в каких сделана сама анимация и как ее проигрываете.

Изменено пользователем denis2000
  • Лайк 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000  

Спойлер

[wpn_addon_grenade_launcher]:identity_immunities
GroupControlSection    = spawn_group
discovery_dependency =
$spawn            = "weapons\addons\grenade_launcher" ; option for Level Editor
class            = WP_GLAUN
cform           = skeleton
visual          = dynamics\weapons\wpn_upgrade\wpn_grenade_launcher.ogf
description        = st_grenade_launcher_descr
$prefetch         = 32

cost                     = 2000
inv_name        = st_grenade_launcher
inv_name_short    = st_grenade_launcher
inv_weight        = 1.3

inv_grid_width        = 2
inv_grid_height        = 1
inv_grid_x            = 18
inv_grid_y            = 0
grenade_vel         =  1000 ;55

новую игру начинал, тогда где менять?

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


Ссылка на сообщение
Поделиться на другие сайты
 
39 минут назад, denis2000 сказал:

sosiska23 Причины:
1. Меняли не там
2. Новую игру не начинали


Бессмертный Анимация камеры может проигрывается в двух режимах: в глобальных координатах и относительных. Проверяйте в каких сделана сама анимация и как ее проигрываете.

Благодарю. Есть понимание, чем отличаются эти режимы? И как определить, в каком режиме сделана анимация, и в каком режиме я ее проигрываю?

Изменено пользователем Бессмертный

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, sosiska23 сказал:

тогда где менять?

В актуальной секции подствольника, для вашей пушки. Где она и как называется известно только вам!


Бессмертный 
Чем отличаются режимы:
1. Режим в глобальных координатах - анимация проигрывается в координатах относительно "глобального" нуля координат на локации (0,0,0). Движковый метод level.add_cam_effector2
2. Режим в относительных координатах - анимация проигрывается относительно текущей точки координат камеры. Движковый метод level.add_cam_effector.

Как отличить в каких координатах записана анимация - загрузить ее в SDK и посмотреть, если камера анимирована возле нуля координат, то она относительная, а если анимация расположена далеко в стороне, в конкретном месте локации, то абсолютная.

Изменено пользователем denis2000
  • Лайк 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 подствольник находиться в weapons.ltx, там все slinser launcher и grenade_launcher я поменял параметры, где подствольник может быть еще прописан? в конфигах пушки параметров подствольника я не нашел

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
40 минут назад, denis2000 сказал:

В актуальной секции подствольника, для вашей пушки. Где она и как называется известно только вам!


Бессмертный 
Чем отличаются режимы:
1. Режим в глобальных координатах - анимация проигрывается в координатах относительно "глобального" нуля координат на локации (0,0,0). Движковый метод level.add_cam_effector2
2. Режим в относительных координатах - анимация проигрывается относительно текущей точки координат камеры. Движковый метод level.add_cam_effector.

Как отличить в каких координатах записана анимация - загрузить ее в SDK и посмотреть, если камера анимирована возле нуля координат, то она относительная, а если анимация расположена далеко в стороне, в конкретном месте локации, то абсолютная.

Как понял из вашего объяснения, камера работает в глобальных (абсолютных) координатах. Посмотрел в СДК ЧН, координаты камеры и там, и в СДК ЗП совпадают. В СДК обеих частей все проигрывается корректно.

Как изменить метод проигрывания, чтобы она срабатывала там же, где в СДК?

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


Ссылка на сообщение
Поделиться на другие сайты
 
5 часов назад, Бессмертный сказал:

Как изменить метод проигрывания, чтобы она срабатывала там же, где в СДК?

За метод проигрывания отвечают разные движковые функции (приводил выше). Если вы используете логику sr_cutscene то там есть специальный параметр: global_cameffect = true


5 часов назад, sosiska23 сказал:

в конфигах пушки параметров подствольника я не нашел

Параметр grenade_launcher_name

Изменено пользователем denis2000
  • Мастер! 1
  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

Как сильно нагружают игру spacerestrictor'ы с логикой? Т.е стоит ли удалять рестрикторы ориг зп во имя оптимизации(если что я про квестовые, которые ждут что либо)? Такой-же вопрос к smart cover'ам.


 1540412914_ezgif.com-optimize(1).gif.ec7250e918399802d8fe85d6d4fd7081.gif

«Если долго мучиться, что-нибудь получится»

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


Ссылка на сообщение
Поделиться на другие сайты
 

Pavel2000 если чего-либо много наспавнить, то будет лагать. 


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

На что влияет значение "switch_factor" в файле alife.ltx? Сделать больше - что изменится?

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


Ссылка на сообщение
Поделиться на другие сайты
 

Sidorovich Участвует в формуле расчета минимального расстояния, при котором объект переходит в онлайн и максимального расстояния, при котором объект переходит в офлайн.
Сделаешь больше, разница между m_online_distance и m_offline_distance соответственно будет больше, кароче лучше не трогать.

Спойлер

image.png.e2bb8c6cd955df1658e07f23a9c57d9f.png 

 

  • Мастер! 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

Такая проблема: хотел я объединить возможность отрезания частей мутантов со спавном Сидоровича (конечно, не с нуля: использовал мод Мясник и файлы для спавна торговца). Знаю, проблема не нова, но искать референсы, как по мне, долговато. Сами-то они по отдельности работают, но при объединении, то есть в скрипте bind_monster, игра либо вылетает, либо торговец спавнится, но отрезать монстрам части уже нельзя. И нет, я не просто заменял скрипт на другой, а именно правил внутри (этакий франкенштейн).

Корень проблемы я знаю, а именно то, что в функции bind(obj) для торговца local new_binder = generic_object_binder(obj) заменяется на local new_binder = trader_object_binder(obj), но как решить этот недуг у меня уже котелок не варит. Буду благодарен тем, у кого IQ больше, чему меня.

Спойлер

Только измененные моменты:

function generic_object_binder:death_callback(victim, who)
     (По сути, в функции оригинальный код, но в конце добавляется это)
    --' Подключим колбэк юзанья, для возможности снятия частей монстров
    self:exist_use()
end

--' Поддержка юзанья частей монстров '-------------------------------------------------------------------------------

function generic_object_binder:exist_use()
    local ini = system_ini()
    if ini:line_exist(self.object:section(), "Spawn_Inventory_Item_Section") then
        local conf = ini:r_string(self.object:section(), "Spawn_Inventory_Item_Section")
        local items = {}
        for s in string.gfind(conf, "%s*([^,]+)%s*") do
            table.insert(items, s)
        end
        self.item = items[1]
        if self.item and system_ini():section_exist(self.item) then 
            self.item_count = tonumber(items[2]) or 1
            self:set_use(ini)
        end
    end
end

function generic_object_binder:set_use(ini)
    --//определяем и устанавливаем надпись юза
    local character_use = (ini:r_string(self.object:section(), "character_use")) or "monstr_character_use"
    self.object:set_tip_text(character_use)
    --// устанавливаем каллбэк
    self.object:set_callback(callback.use_object, self.on_use, self)
    --// устанавливаем озвучку юза
    self.sound_use = sound_object("material\\dead-body\\collide\\hithard0"..tostring(math.random(1, 6)).."hl")
    if not self.use then self.use = true end
end

function generic_object_binder:on_use(obj, who)
    --// спавним в инвентарь юзающего, части монстра
    for i=1, self.item_count do
        alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id())
    end
    --// отключаем каллбэк
    self.object:set_callback(callback.use_object, nil)
    --// убираем надпись юза
    self.object:set_tip_text("")
    self.use = false
    --// дадим небольшой хит по телу трупа
    local ini = system_ini()
    local h = hit()
    h.draftsman = self.object
    h.type = hit.fire_wound
    h.direction = vector():set(0,1,0)
    h:bone( (ini:r_string(self.object:section(), "bone_impuls_abscission")) or "bip01_spine" )
    h.power = 1
    h.impulse = ( (ini:r_u32(self.object:section(), "impuls_abscission")) or 100 )
    self.object:hit(h)
    --// производим озвучку юза
    self.sound_use:play_at_pos(self.object, self.object:position(), sound_object.s3d)
end

--'-----------------------------------------------------------------------------------------------------------------------

function generic_object_binder:save(packet)

      (По сути, в функции оригинальный код, но в конце добавляется это)
    --------- use -----------
    packet:w_bool(self.use)
    -------------------------
end

function generic_object_binder:load(reader)
     (По сути, в функции оригинальный код, но в конце добавляется это)
    ---------- use -----------
    self.use = reader:r_bool()
    if self.use then
        self:exist_use()
    end
    -------------------------
end

Спойлер

-----------------------------------------------------------------------------------
-- Sidor etc binding
-----------------------------------------------------------------------------------

function bind(obj)
    local new_binder = trader_object_binder(obj)
    obj:bind_object(new_binder)
end
------------------------------------------------------------------------------------
class "trader_object_binder" (object_binder)

function trader_object_binder:__init(obj) super(obj)
    self.loaded = false
end


function trader_object_binder:reload(section)
    object_binder.reload(self, section)
end

function trader_object_binder:reinit()
    object_binder.reinit(self)

    db.storage[self.object:id()] = { }

    self.st = db.storage[self.object:id()]
end

function trader_object_binder:update(delta)
    object_binder.update(self, delta)

    -- јпдейт торговли
    if self.object:clsid() == clsid.script_trader then
        trade_manager.update(self.object)
    end

    local st = db.storage[self.object:id()]
    if st ~= nil and st.active_scheme ~= nil then
        xr_logic.try_switch_to_another_section(self.object, st[st.active_scheme], db.actor)
    end
    
    if self.st.active_section ~= nil then
        xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta)
    end
end

function trader_object_binder:net_spawn(sobject)
    if not object_binder.net_spawn(self, sobject) then
        return false
    end

    local on_offline_condlist = db.storage[self.object:id()] and db.storage[self.object:id()].overrides and db.storage[self.object:id()].overrides.on_offline_condlist
    if on_offline_condlist ~= nil then
        xr_logic.pick_section_from_condlist(db.actor, self.object, on_offline_condlist)
    end

    if not self.object:alive() then
        return true
    end
    
    if alife():object(self.object:id()) == nil then
        return false
    end

    db.add_obj(self.object)
    if self.object:clsid() == clsid.script_trader then
        self.object:set_trader_global_anim("idle_spinka")
        smart_terrain.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_trader, self.loaded)
    end
    
    return true
end

function trader_object_binder:net_destroy()
    xr_sound.stop_sounds_by_id(self.object:id())

    local st = db.storage[self.object:id()]
    if st and st.active_scheme then
        xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy")
    end

    if db.offline_objects[self.object:id()] then
        db.offline_objects[self.object:id()].level_vertex_id = self.object:level_vertex_id()
        db.offline_objects[self.object:id()].active_section = db.storage[self.object:id()].active_section
    end

    db.del_obj(self.object)
    db.storage[self.object:id()] = nil
    object_binder.net_destroy(self)
end

function trader_object_binder:net_save_relevant()
    return true
end

function trader_object_binder:save(packet)
    set_save_marker(packet, "save", false, "trader_object_binder")
    object_binder.save(self, packet)
    xr_logic.save_obj(self.object, packet)
    if self.object:clsid() == clsid.script_trader then
        trade_manager.save(self.object, packet)
    end
    set_save_marker(packet, "save", true, "trader_object_binder")
end

function trader_object_binder:load(reader)
    self.loaded = true
    set_save_marker(reader, "load", false, "trader_object_binder")
    object_binder.load(self, reader)
    xr_logic.load_obj(self.object, reader)
    if self.object:clsid() == clsid.script_trader then
        trade_manager.load(self.object, reader)
    end
    set_save_marker(reader, "load", true, "trader_object_binder")
end

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

Sidorovich StrawFlux switch_distance можно менять спокойно, это просто увеличит\уменьшит радиус спавна НПС в онлайн. 

Conserva а что вообще за скрипт для спавна Сидировича? Что он делает? Мне казалось восстановить Сидоровича гораздо проще - https://modfaq.ru/Восстановление_Сидоровича

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Conserva Не пытайтесь все утоптать в один биндер сделайте для Сидоровича отдельный:
Для мутантов правки в bind_monster.script, для Сидора в bind_trader.script. В секции Сидора поставьте script_binding = bind_trader.bind

  • Мастер! 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Ребят всем привет, я хочу начать свой путь в моддинг, скажите пожалуйста где мне найти информацию о том как мне собрать сборку X-Ray 1.6.02, исходный код движка игры, для работы над модификациями S.T.A.L.K.E.R. Call of Pripyat (так же буду не против если подскажете где можно найти исходник движка Clear Sky), я хочу сделать свой первый мод на чистую оригинальную версию игры, буду благодарен за помощь.

p.s. я мог немного не понятно задать вопрос ибо, я честно не знаю как его задать, задал как смог)

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

golosgo https://ap-pro.ru/forums/26-rabota-s-sdk/ 

1)устанавливаете нужный вам sdk

2)ищите в интернете гайды и уроки как ими пользоваться

3)Изучаете

4)Начинаете свой путь в модинг

(при появлении вопросов пишете сюда)

 

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

исходный код движка игры

это для супер прошаренных программистов, скорее всего вам нужно распаковать оригинальные ресурсы игры

в этом вам поможет 

 


Дополнено 4 минуты спустя

стрелок_2009 вроде в этих inventory_upgrades.ltx и stalkers_upgrade_info.ltx

  • Мастер! 1

 1540412914_ezgif.com-optimize(1).gif.ec7250e918399802d8fe85d6d4fd7081.gif

«Если долго мучиться, что-нибудь получится»

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн