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

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


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

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

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

 

Edit.

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

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

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

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

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); 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 ядер, 32 потока, 5.75 ГГц); 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 ядер, 32 потока, 5.75 ГГц); 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?).

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

@Капрал Хикс тип 2 - возможно, в эти места просто нельзя забегать мутантам?
В НЛС-ном аллспавне есть нечто подобное, для этих целей именно используемое - и больше никак.

  • Полезно 1

След от кругов на воде - это тоже след (с)

Ссылка на комментарий
1 час назад, Капрал Хикс сказал(а):

Кто-нибудь занимался глобальной очисткой спавна от всяческого мусора, который ну вот 100% не нужен нигде

Конечно занимался. Например я в СЗ весь мусор оригинального спавна вычищал.

Хотя, наверное в данном случае, в "мусор" попало куда больше, чем будет приемлемо для большинства модов.

1 час назад, Капрал Хикс сказал(а):

работает - не трогай

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

Вполне может оказаться, что там уже многое можно спокойно выкинуть за ненадобностью.

1 час назад, Капрал Хикс сказал(а):

так вообще можно писать с -1?

Можно. И вообще-то именно вот так - правильнее. Корректно сработает при любом беззнаковом диапазоне значения в движке.

А вот "4294967295" тут более скользкий вариант, способный работать лишь до тех пор, пока движок никто не трогает.

1 час назад, Капрал Хикс сказал(а):

явно глючного

Как определил "глючность"? :)

Для u32 это "верно", работать будет. Но если какая то правка в движке изменит тип переменной на, скажем, u64, то такие записи полетят в тартарары.

  • Полезно 1

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

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

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

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

весь мусор оригинального спавна вычищал.

Остались заметки какие-либо о том, что там в спавне не нужно? Буду весьма благодарен.

34 минуты назад, Zander_driver сказал(а):

Зловредное правило если подумать.

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

35 минут назад, Zander_driver сказал(а):

Можно. И вообще-то именно вот так - правильнее. Корректно сработает при любом беззнаковом диапазоне значения в движке.

А вот "4294967295" тут более скользкий вариант, способный работать лишь до тех пор, пока движок никто не трогает.

Благодарю за разъяснение, теперь ясно. Не хочу просто лезть править то, в чём не разбираюсь, просто сходу посчитал глючным такое большое число, раз его правили. Теперь знаю, как оно работает.

Ссылка на комментарий
Только что, Капрал Хикс сказал(а):

Остались заметки какие-либо о том, что там в спавне не нужно?

Заметок нет)

Файлы если только... открыть в WinMerge файл оригинального спавна ТЧ, и спавна СЗ. И сравнивать, что убрано, и что (вам) все таки нужно.

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

Только что, Капрал Хикс сказал(а):

в случае со сталкером трижды проверить не помешает

Тоже вот, расхожее убеждение, и пожалуй что ошибочное.

Только дважды.

Нашел, допустим, что-то непонятное в алл-спавне. Взять тотал коммандер или другое подобное по вкусу. Произвести поиск этого непонятного в папке скриптов, и в папке конфигов.

Не нашлось? Смело можно под нож, не повлияет ни на что.

  • Согласен 1
  • Полезно 1

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

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

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

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

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

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

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

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

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

Войти

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

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

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