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

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

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

@Houdini_one@AndreySol ,@AndrewMor,

В конфиге лут-ящика можно выставить и так:

[autoremove_parts]
time                      = -1 

что бы обломки вообще не удалялись. Однако, перезагрузка всё равно приведёт к неизбежному и преждевременному удалению. Здесь, видимо, нужна правка движка. Или скриптовый костыль, как обычно. Создавать на месте ящика что-либо с визуалом его обломков...

  • Нравится 1

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


Подарки

  • 2
  • 2
  • 5
  • 4
  • Ссылка на комментарий

    Всем привет, такая проблема решил я значит звуки при использовании предметов сделать. По этой статье http://stalkerin.gameru.net/wiki/index.php?title=Звук_при_использовании_предмета но при использовании предмета, заместо звука получаю вылет. Жалуется на эту строку:

    item_sounds.use_snd(obj)

    Что тут не так?

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

    @AndrewMor после того, как объект разбит, я сквозь его обломки могу проходить.
    В настройках у меня это:
     

    ;-------------------------------------------------------------------------------
    ;--- collide -------------------------------------------------------------------
    ;-------------------------------------------------------------------------------

    [collide]
    not_collide_parts = 1

    ;-------------------------------------------------------------------------------
    ;--- destroyed part ------------------------------------------------------------
    ;-------------------------------------------------------------------------------
    [collide_parts]
    small_object

    Как у ящика в общем. Но не помогает.

    • Нравится 1

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

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

    @Сталкер Одиночка , код в студию! Вариант пусть и небезупречный, но вполне себе работоспособный. Звуки по соответствующим путям точно присутствуют?

     

    @Houdini_one , очевидное, но невероятное: а шейпы у осколков, получающихся при разбивании объекта, часом не забыл настроить?

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

    0101.jpg

     

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

    @Houdini_one Удали строку small_object, и у объекта и у обломков. Если нужно также, чтобы обломки контактировали друг с другом, убери not_collide_parts.

    • Полезно 1

    Подарки

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

    @ru trash_ добавить алгоритм, проверяющий, что на игрока надет шлем. И если да, то воспроизвести звук, зацикленно.

    Можно через скрипты, можно через движок. Зависит от того, как у вас шлемы реализованы. В оригинале-то, их нет вовсе. Поэтому и невозможно на ваш вопрос, ответить каким-то определенным, программным кодом.

     

    Edit.

    Значит, вот эти скрипты и править.

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

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    @ru trash_ вот пример скрипта, который в том числе и звуки дыхания запускает

    https://github.com/dsh2dsh/op2ogse/blob/5feadcdd0fd903c9165e039d9ce2696ed27a1977/gamedata/scripts/dsh/dsh_hud_fx.script#L271

     

    Разберешься - молодец. Не разберешься - меня ни о чем не спрашивай.

     

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

    Всем привет.

    Внедрил Энциклопедию, по типу того, что OGSM Team делала для ЧН. Но закладка Об энциклопедии почему-то сдвинулась вниз, что не верно: http://f26.i-fotki.info/thumb/e3e59c724502ce05cab76c82d454c8654d6ff7396646073.jpg

    Вопрос: как/где можно это поправить?

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

    Подарки

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

    @monk 

    эту статью (<article>about_enciclopedia</article>) надо выдавать, при новой игре, сразу же (и раньше других), тогда и будет 1-й в списке. В оригинале выдаётся вместе с заданием Убить Стрелка.

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

    Золотой шар основан на ОГСЕ, скриптов движковая реализация. Задействованы добавленные в движок скриптовые методы по воспроизведению анимаций.

     Моя нычкаНычка в арендованном у Опричника холодильнике  

    Мы хорошие ребята, жаль патронов маловато:):ukostra:

    UriZzz.gif

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

    Есть у нас тут еще любители поковыряться в интерфейсе?

    Я уже три часа ломаю голову над тем, каким волшебным образом работает эта дурацкая менюшка со слайдером (который ПЫС обзывают "шнягой") в главном меню? Как я только не рассчитывал координаты бегунка, он всегда не совпадает с окном, если включить эффект линзы (текстура ui_magnifier). Чаще всего ровно на один шаг.

       <shniaga_wnd x="638" y="408" width="274" height="290">
            <buttons_region    x="11" y="27" width="251" height="248" always_show_scroll="false"/> <!-- y должен быть = 30. но тогда слайдер не центре текста -->
            
            <shniaga x="0" y="0" width="274" height="75">
                <texture>ui_main_menu_slider</texture>
                <magnifire x="19" y="30" width="236" height="29" stretch="1"> <!-- дурацкий эффект линзы, который ломает все, если его не отключить -->
                    <texture>ui\ui_magnifier</texture>
                </magnifire>
    
                <left_anim x="0" y="1023" width="1" height="1" stretch="1" heading="1" alignment="c">
                    <texture></texture>
                </left_anim>            
                <right_anim x="0" y="1023" width="1" height="1" stretch="1" heading="1" alignment="c">
                    <texture></texture>
                </right_anim>
                <left_grating x="0" y="1023" width="1" height="1">
                    <texture></texture>
                </left_grating>
                <right_grating x="0" y="1023" width="1" height="1">
                    <texture></texture>
                </right_grating>
            </shniaga>        
        </shniaga_wnd>

    Набросал по быстрому настройки окна с пунктами меню. Сори за дерьмовое качество, пришлось сильно увеличить из-за родного разрешения ui игры в 1024х768:

    http://j-p-g.net/if/2021/02/27/0431256001614445834.jpg

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

    aka Stalker_AleX333
     
    Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

    Подскажите плиз как можно переложить все предметы из тайника в инвентарь игроку? По идее через iterate_inventory, но у меня не получается. Вот код:
     

    Скрытый текст
    
    function cheat()
    for a=1,65535 do
    obj=level.object_by_id(a)
    if obj then
    if IsInventoryBox(obj) then
    obj:iterate_inventory(function(npc, item)
    if item:section() == "bolt" or item:section() == "device_torch" or item:section() == "device_pda" then
    return false
    end
    npc:transfer_item(item, db.actor)
    end, obj)
    end
    end
    end
    end
    
    function IsInventoryBox(obj)
    local otype = obj:clsid()
    if
    otype == clsid.inventory_box then
    return true
    else
    return false
    end
    end

     

     

    Ссылка на комментарий
    8 часов назад, Pug-Lover сказал(а):

    iterate_inventory

    В оригинале работает только для тех объектов, в числе родителей у которых имеется CInventoryOwner.

    Этому можно сколько угодно удивляться, но, тайники (InventoryBox) к таким не относятся. И iterate_inventory для них не работает.

    Есть два способа это обойти/исправить.

    1) Перебирая все 65к объектов, сравнивать их parent_id с id тайника, и таким образом найти все те, которые ему принадлежат.

    2) Править движок, чтобы у тайников метод тоже работал (Потребуется и сам класс CInventoryBox тоже подправить)

     

    Upd. А так работать оно и не будет. Ты берешь парент- объект, и его засовываешь в аргумент функции object_by_id... А надо в данном случае с владельца (parent), взять id, и его сравнивать с id тайника.

    7 часов назад, Pug-Lover сказал(а):

    if level.object_by_id(obj:parent()):clsid()

    Изменено пользователем Zander_driver
    • Спасибо 1
    • Нравится 1

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

     

    Скрытый текст
    5 минут назад, Zander_driver сказал(а):

    В оригинале работает только для тех объектов, в числе родителей у которых имеется CInventoryOwner.

    Этому можно сколько угодно удивляться, но, тайники (InventoryBox) к таким не относятся. И iterate_inventory для них не работает.

    Есть два способа это обойти/исправить.

    1) Перебирая все 65к объектов, сравнивать их parent_id с id тайника, и таким образом найти все те, которые ему принадлежат.

    2) Править движок, чтобы у тайников метод тоже работал (Потребуется и сам класс CInventoryBox тоже подправить)

     

    сделал по первому варианту и результата ноль, даже не вылетает
     

    Скрытый текст
    
    function ch_5:cheat26()
    for a=1,65535 do
    obj=level.object_by_id(a)
    if obj then
    if level.object_by_id(obj:parent()):clsid()==clsid.inventory_box then
    level.object_by_id(obj:parent()):transfer_item(obj, db.actor)
    end
    end
    end
    end

     

     

    Только что сделал по-другому, работает с помощью симуляции передачи предмета спавном, но теперь мне нужно как-то передать данные об обвесах, состоянии, патронах и т.д. в объект, которым заменяем. Пытался сделать подобное этим:

    xrs_utils.set_weapon_data(xrs_utils.get_weapon_data(obj),replacement)

    Скрытый текст
    
    function cheat()
    for a=1,65535 do
    obj=alife():object(a)
    if obj then
    if obj.parent_id~=nil and obj.parent_id~=65535 then
    if alife():object(obj.parent_id):clsid()==clsid.inventory_box then
    replacement=alife():create(obj:section_name(),db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --xrs_utils.set_weapon_data(xrs_utils.get_weapon_data(obj),replacement)
    alife():release(obj, true)
    end
    end
    end
    end
    end

    Название функции в прошлом сообщении было другим т.к. я забыл поправить.

     

    Ссылка на комментарий
    7 часов назад, Pug-Lover сказал(а):

    теперь мне нужно как-то передать данные об обвесах, состоянии, патронах и т.д. в объект, которым заменяем.

    Не нужно. Изобретать костыль, для сокрытия последствий применения другого костыля. Тебе нужно трансферить - просто трансферь.

    • Согласен 1

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    Так как отдельной темы по all.spawn нет, спрошу здесь... Кто-нибудь занимался глобальной очисткой спавна от всяческого мусора, который ну вот 100% не нужен нигде и удаление которого не приведёт к вылету? Как пример приведу файл для Тёмной долины, где есть вот такие 4 чудных спейс рестриктора без роду и племени:

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

     

    [2424]
    ; cse_abstract properties
    section_name = space_restrictor
    name = _space_restrictor
    position = 35.393367767334,-1.96477317810059,-56.8688201904297
    direction = 0,0,0

    ; cse_alife_object properties
    game_vertex_id = 811
    distance = 0
    level_vertex_id = 316473
    object_flags = 0xffffff3e

    ; cse_shape properties
    shapes = shape0
    shape0:type = box
    shape0:axis_x = 1.7837952375412,0,0
    shape0:axis_y = 0,1.93420171737671,0
    shape0:axis_z = 0,0,1.7837952375412
    shape0:offset = 0,0,0

    ; cse_alife_space_restrictor properties
    restrictor_type = 2
     

    [2427]
    ; cse_abstract properties
    section_name = space_restrictor
    name = _space_restrictor_0000
    position = 46.5568656921387,8.59524917602539,-30.9014167785645
    direction = 0,0,-6.11010409556911e-006

    ; cse_alife_object properties
    game_vertex_id = 811
    distance = 0
    level_vertex_id = 316473
    object_flags = 0xffffff3e

    ; cse_shape properties
    shapes = shape0
    shape0:type = box
    shape0:axis_x = 1.7837952375412,0,0
    shape0:axis_y = 0,1.93420171737671,0
    shape0:axis_z = 0,0,1.7837952375412
    shape0:offset = 0,0,0

    ; cse_alife_space_restrictor properties
    restrictor_type = 2

     

    [2435]
    ; cse_abstract properties
    section_name = space_restrictor
    name = _space_restrictor_0001
    position = 148.444839477539,0.765969753265381,-232.418548583984
    direction = 0,0,0

    ; cse_alife_object properties
    game_vertex_id = 811
    distance = 0
    level_vertex_id = 316473
    object_flags = 0xffffff3e

    ; cse_shape properties
    shapes = shape0
    shape0:type = box
    shape0:axis_x = 1.7837952375412,0,0
    shape0:axis_y = 0,1.93420171737671,0
    shape0:axis_z = 0,0,1.7837952375412
    shape0:offset = 0,0,0

    ; cse_alife_space_restrictor properties
    restrictor_type = 2

     

    [2437]
    ; cse_abstract properties
    section_name = space_restrictor
    name = _space_restrictor_0002
    position = 142.275543212891,0.697487950325012,-272.112213134766
    direction = 0,0,0

    ; cse_alife_object properties
    game_vertex_id = 811
    distance = 0
    level_vertex_id = 316473
    object_flags = 0xffffff3e

    ; cse_shape properties
    shapes = shape0
    shape0:type = box
    shape0:axis_x = 1.7837952375412,0,0
    shape0:axis_y = 0,1.93420171737671,0
    shape0:axis_z = 0,0,1.7837952375412
    shape0:offset = 0,0,0

    ; cse_alife_space_restrictor properties
    restrictor_type = 2

     

    Зачем они вообще там нужны? Остатки от билдов? Оно-то конечно "работает - не трогай", но хотелось бы избавить спавн от возможных косяков. Я знаю, что многое поправлено в спавне в зарубежном моде ZRP, но бездумно тянуть оттуда все правки как-то не хочется, особенно когда я вижу там странные правки вида: p3:level_vertex_id = -1 вместо p3:level_vertex_id = 4294967295 (явно глючного) (так вообще можно писать с -1?).


    Подарки

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

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