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

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

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

 

 

Если сможете сделать такое - поделитесь результатами)
был бы я программистом и вопросов бы у меня возможно было меньше...

 

 

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

@Серый Волк,  когда инвентарь закрыт сеток формально не существует. Сетка не более чем простая визуализация.

 

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

 

 

игра в этот момент может проверить только вес.

а может игра проверить тип/категорию/имя предмета и пропускать в инвентарь только указанные предметы?

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

 

 

а может игра проверить тип/категорию/имя предмета и пропускать в инвентарь только указанные предметы?
Хотите совет обоим? Почитайте этот форум внимательнее. Всё это уже давно решено и ... реализовано. Эх, молодо-зелено...
Ссылка на комментарий
@Serge!, я что-то не видел ни одного проекта с нормальной реализацией. Решено? Тыкните носом, ибо то что я видел - костыли, а потом уже говорите про "молодо-зелено". Я хотел сделать переносной контейнер, знаете сколько информации я нашёл по этому вопросу? Целый нуль, хотя стоит поблагодарить некоторых людей за помощь - ваши намёки где искать очень помогли.

а может игра проверить тип/категорию/имя предмета и пропускать в инвентарь только указанные предметы?

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

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

 

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

А заключается она в следующем:

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

 

2. сам рюкзак можно сделать взяв за основу: переносной рюкзак и "контейнер для артов", на сколько ячеек или предметов внесешь в конфигуратор - на такое количество и будет "рюкзак", за счет этого можно разнообразить ассортимент.

 

ЗЫ: ну вот и высказался, теперь можете пинать и тыкать носом...

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

@mortan@Серый Волк, Прочитал. Мне надо врямя на подумать, а такого сегедня иет. Но, я обязательно отвечу. Без обид, надеюсь.

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

Call of Chernobyl собирается из достаточно сильно изменных исходников на основе OpenXray.

Вроде как репозиторий с исходниками вот: https://github.com/revolucas/X-Ray_CallOfChernobyl

 

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

Гораздо проще добавить посылку инфопоршня в исходники.

 

А скорее всего можно попросить добавить прямо автора - это одна строка в исходниках.

Спасибо, а не можешь подсказать, что именно прописывать в исходники? В X-Ray Extensions код написан на asm.

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

Странная реакция... не хают, не пинают, и вообще ничего не говорят.

Народ, по возможности, отпишитесь, пожалуйста, что думаете по поводу выше описанных мыслей об инвентаре.

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

есть ли функция для перезагрузки конфига итема? Если повторно вызывать функцию Load то она не очень хорошо работает - пушки перестают стрелять и спавнятся патроны)

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

Спасибо, а не можешь подсказать, что именно прописывать в исходники? В X-Ray Extensions код написан на asm.

UIPdaWnd.cpp: в функцию SetActiveSubdialog после строки:

UITabControl->SetActiveTab( section );

добавить строку:

InventoryUtilities::SendInfoToActor(section.c_str());

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

все что написано далее - относиться к ТЧ.

Количество ячеек не влияет на количество итемов в них. есть класс CUIDragDropListEx (на нем реализован любое визуальное отображение итемов в инвентаре)- ему все равно, сколько в нем ячеек прорисовано. хоть один итем на 5х5 ячеек. т.е. контролировать количество CUICellItem-ов в одном отдельно взятом CUIDragDropListEx - это задача не CUICellItem. Посмотрите, как реализована функция CUIInventoryWnd::ToSlot - вот там ответ на Ваш вопрос - "аналогия с оружейными слотами, вещь просто возвращается на место".

реализация самого рюкзака на спине - 

1) это отдельное окно, опять таки с CUIDragDropListEx 

2) у того же CUIDragDropListEx  его заполнение выполняется с помощью цепочки SetItem - в нем Вы сможете по каким либо признакам разрешать или запрещать добавлять итемы в CUICellContainer. Получить CInventoryItem с CUICellItem можно по полю m_pData

3) отображение в рюкзаке - я бы добавил для CUICellItem какой нибудь признак, отображать ли его в инвентаре, или в рюкзаке. единственное - надо выбрать либо из существующих, что сохраняются в сейве, либо добавить в класс CInventoryItem свой признак. я бы использовал m_eItemPlace - он сохраняется в сейве и подходит для такой задачи. 

Изменено пользователем Winsor
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

подскажите, можно ли получить серверный CSE_ALifeDynamicObject зная его ID? Я вот не могу вспомнить что я для этого делал. Ну или на крайняк мне просто нужно получить серверный класс из клиентского.

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

@Winsor, судя по написанному идея имеет право на жизнь и даже реализуема, я правильно понимаю?

 

 

все что написано далее - относиться к ТЧ.
а к ЗП можно это применить?
Ссылка на комментарий

интересно, а можно ли заставить итем полностью сбросить свои изменённые свойства на родные, из конфига?) Я тут делаю удаление апгрейдов из предмета - но вот писать под каждое изменяемое свойство функцию отмены что-то не очень хочется. Можно ли такое сделать если принудительно в оффлайн\онлайн отправить?

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

 

 

право на жизнь и даже реализуема
- Да, почему нет. классы необходимые для этого есть. единственная проблема, над которой я сейчас размышляю - это научить CUIDragDropListEx принимать в себя не InventoryItems, а просто визуал объекта, секцию. спицифическое такое желание. :)

Подходит ли это для ЗП? скорее всего да, разницы в классах я не изучал, но не думаю что очень сильно различаются.

 

 

Можно ли такое сделать если принудительно в оффлайн\онлайн отправить
- все зависит от того как Вы храните информацию о апгрейдах. в идеале - это отдельный список, который можно обнулять, и на основании которого у Вас применяются какие то свойства. если это отдельные поля объектов - то проще придумать наследуемую функцию, которая обнуляет эти параметры в своем классе и вызывает inherited. так что от архитектуры зависит. Иногда и отдельные функции под каждое свойство - проще чем то что я написал.
  • Спасибо 1
Ссылка на комментарий

@Winsor, я ничего не менял - все функции написаны ПЫС. Я уже понял что лучше всего писать обратный код либо спавнить новый итем. Я кстати разобрался как получить ID предмета при спавне) Правда почему-то я не могу его найти функцией перебора итемов по id, но да ладно. Свойств у пушек дофига(

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

 

 

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

@Winsor, зачем? Не вижу смысла даже - просто спавнишь новый итем,задаёшь ему износ как у старого и ставишь на него те же апгрейды за исключением тех которые нужно удалить. Всё работает, проблема в том что после этих манипуляций придётся каждый раз выбирать новый итем - в окне модификации продолжает отображаться старый. Я вам про одно,а вы мне про другое - я не понял каким боком тут "nocopyable"

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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