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

Редактирование движка X-Ray


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

 

 

это пересборка прям? Или просто build?
Ребилд. При сборке игровой делки, остальные это бжик, я даже не считаю прелюдию, там пять - десять минут на них, и больше часа на основную.

andreyholkin.gif

rod_cccp.gif

 

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

Ребят, на сколько хлопотно ввести анимации бег с ножом и подстволом на патч 4?

Давольно хлопотно. Исходников нет, а дизассемблировать и ставит ждампы в 0004 мало кто согласится.

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

 

 

Что вообще делает функция UpdateXForm()
Эта функция рассчитывает положение модели в руках носителя, на основе позиций костей рук и параметров смещения из конфига.
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

 

Graff46, XE есть колбеки на помещение предмета в слот и рюкзак, а также в 7 патче. Можно использовать их и просто проверять костюм ли там или нет.

 

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

Кто сидит на исходниках ТЧ, что делали со звуком?

Я звук портировал из ЗП, уже стало лучше. Хочу подключать openal soft, чтобы получить HRTF и прочие прелести, но не уверен, каким образом его с EAX подружить.

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

@Kondr48, Я видел в справке, но мне надо что бы событие вызвалось когда из слота уберут предмет тоже

Изменено пользователем Graff46
Ссылка на комментарий

@Graff46, Они все вызываются. При убирании из слота - дроп или перемещение в рюкзак, как сказано выше.

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

  • Спасибо 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.0007

1) CInventory::Slot

здесь, например, у меня сразу 3-и вызова калбека - перемещение из пояса,перемещение из рюкзака, перемещение в слот

2)CInventory::Belt - перемещение из слота, перемещение из рюкзака, перемещение на пояс

3) CInventory::Ruck  - перемещение из слота, перемещение из пояса, перемещение в рюкзак

4) CInventory::Eat  - перемещение из рюкзака

в результате это выглядит как вызов одного и того же калбека с двумя параметрами - итем и константа, говорящая что с ним произошло. для скрипта - это прицепленый калбек для любого НПС (в том числе и для актора) с проверкой на второй параметр.

p.s. Ну раз тема "Редактирование движка" - то понятно, что это все делается при наличии исходников. В каких либо других вариантах (отдельные патчи exe)  - это может быть реализовано по другому.

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

@Winsor, на мой взгляд это кощунство. Есть методы, которые говорят о том, где находится (или находился, в зависимости от места вызова) предмет, в связке с тем, где он находится (находился) и сработавшим коллбеком можно определить откуда и куда пришел итем безо всяких констант. Добавлять константы я согласен только в какие-то неопределенные коллбеки, более того, я сам давно добавил такую константу в дроп коллбек, так как она мне нужна была в реализации рюкзаков, но перемещение из различных мест внутри инвентаря отслеживается без проблем.

Изменено пользователем Карлан
Ссылка на комментарий

или находился, в зависимости от места вызова

перемещение из различных мест внутри инвентаря отслеживается без проблем

 

методы в оригинале, который бы говорил, где предмет находился до перемещения - InBelt/InRuck - используют итераторы, единственный более быстрый - это InSlot. т.е. для того чтобы определить место, где предмет был - необходимо

1) доэкспортировать методы аналогичные InBelt/InSlot/InRuck в скрипты

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

3) забыть о асинхронных таймерах при обработке этого калбека из скрипта

4) Вам все равно придется делать вызовы калбека на перед каждым изменением положения предмета, ибо после m_ruck.erase(it); InRuck уже никак не скажет где предмет был...

 

 Возьмем например CInventory::Slot - функция помещения предмета в слот. в ней два итератора - по рюкзаку и по поясу. Причем они вызываются последовательно, а не через ИЛИ и удаление предмета это просто erase из списка (не Drop, не REJECT_PARENT). т.е. для того чтобы сказать однозначно откуда был убран предмет в моем случае надо вызвать один и тот же калбек со второй константой 

callMovingCallback(pIItem,InventoryPlaceChange::removeFromBelt);
или
callMovingCallback(pIItem,InventoryPlaceChange::removeFromRuck);

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

callMovingCallback(pIItem,InventoryPlaceChange::putToSlot);

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

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

Сразу оговорюсь, я не программист и мало что смыслю в этом, поправьте меня если я не прав. 

Хотел изменить GUI главного меню, а именно изменить расположение кнопок "Новая игра","Загрузить игру","Настройки" etc

Так вот, по отдельности их переместить нельзя, только комплексно в составе "shniaga_wnd" (по другому ее и назвать нельзя) в xml файле главного меню.

Немного поковырялся в скриптах и мне кажется, что кнопки эти вшиты на уровне движка в UIMMShniaga.cpp и UIMMSniaga.h, я прав?

Если да, то пытался кто-нибудь ковырять движок в этом направлении, чтобы отцепить кнопки главного меню от этой "шняги"?

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

@AndreyGants, мысль:

<shniaga_wnd> продублировать в движке, как <shniaga_wnd2> и т.д.

И для каждой кнопки сделать свою шнягу.

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

andreyholkin.gif

rod_cccp.gif

 

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

Дизель, тогда уж просто в движке наделать сколько душе угодно кнопок, зачем дублировать список элементов и в каждом оставлять по одному?  :)  Другое дело что мельком глянув этот файл в движке я в нем никакой "очередности" не увидел. Просто грузится эта самая shniaga либо одна, либо та где первой стоит пункт последнее сохранение. И у меня очень сильное чувство что найти ее, как и поменять порядок надписей можно в конфиге.

Изменено пользователем Kondr48
  • Согласен 1
Ссылка на комментарий
@AndreyGants, легко делается и без движка, любое меню (хоть как в гта или любой другой игре, хоть из твоей головы), было бы желание и терпение. 916d515458ccc0f05dd81c466a1b09286db84826 Изменено пользователем HellRatz
  • Нравится 3
  • Согласен 1
Ссылка на комментарий

@HellRatz, Я так понимаю, ваш мод еще не вышел? Можете подробнее объяснить как это сделать, если не секрет? И будет ли работать тоже самое на ЗП?

Ссылка на комментарий
@AndreyGants, просто выкинь эту шнягу и используй обычные CUIButton или CUI3tButton. Их можно ставить независимо друг от друга где душе угодно. На скрине камрада @HellRatz, вернее всего, так и сделано. Изменено пользователем naxac

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

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

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

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

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

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

Войти

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

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

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