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

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


Rolan

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

Доброго времени суток, господа. У меня тут пара вопросов возникла, правда найти ответы не могу, но знаю что они где-то рядом)

1.В движке нету отдельно взятой функции, которая бы сохраняла дочерние элементы для класса inventory_box и при загрузке игры спавнила их обратно. Значит эта функция есть в базовом классе. Значит новый предмет должен наследовать этот же класс чтобы дочерние элементы сохранялись?

2.Как можно проверить синхронизацию объекта для сервера и клиента?

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

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


Ссылка на сообщение

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

  • Не нравится 1

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


Ссылка на сообщение
(изменено)

Я писал ответ на gameru, стоит ли дублировать его сюда? Да и ответ есть в исходниках nlc7, к тому же я теперь понял почему никто не помог)

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

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


Ссылка на сообщение
(изменено)

ну я пришёл к такому решению так: как происходит спавн предметов у ГГ? Я думал сначала что это spawn_supplies, но нет - правильный ответ add_online. Базовая функция прописана в двух серверных классах: alife_trader_abstract и alife_dynamic_object, все остальные всего лишь наследуют эту функцию. Для исправления нужно в цикл добавить проверку на наличие дочерних элементов у дочернего элемента и вызвать эту же функцию для него) Ещё стоит дополнить и add_offline, но не уверен что нужно.

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

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


Ссылка на сообщение

@Kondr48, добавь #include "имя_файла_откуда_тебе_нужна_функция.h" и вызывай. Это немного грубовато)

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


Ссылка на сообщение
(изменено)

Такой вопрос - можно ли через движок поменять значение в xml файле? Интересует именно actor_menu.xml, хочу менять кол-во ячеек в dragdrop'ах в зависимости от кое-каких условий.

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

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


Ссылка на сообщение
(изменено)

@Kondr48, это даже лучше,но я не знаю такого места). Там где я ковыряю ui создаётся в коде движка, но такие параметры как координаты и ячейки читаются из xml файла и выводятся в другом месте. 

Нашёл где по идее можно поменять значений, но пока не получается.

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

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


Ссылка на сообщение

@Карлан, уже нашёл, я даже прикрутил в конфиг предмета настройки кол-ва ячеек для инвентаря)

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


Ссылка на сообщение

может кто подсказать как исправить: error C2466: невозможно выделить память для массива постоянного нулевого размера.Вот пример кода где возникает ошибка:

 

PIItem item  = m_pInventory->ItemFromSlot(VEST_SLOT);	
	if (item)
	{
		CVest* vest = smart_cast<CVest*>(item);
		if (vest)
		{
			xr_vector<u16>::const_iterator it = vest->m_pocket.begin();
			xr_vector<u16>::const_iterator it_e = vest->m_pocket.end();
			for (; it != it_e; ++it)
			{
				CWeaponAmmo*	pAmmo = smart_cast<CWeaponAmmo*>(*it);
				if (pAmmo && (pAmmo->cNameSect() == ammo_type))
				{
					res += pAmmo->m_boxCurr;
				}
			}
		}
	} 

 

 

Вот стоит мне убрать CWeaponAmmo*    pAmmo = smart_cast<CWeaponAmmo*>(*it); то код спокойно компилируется.Самое интересное что в функции есть ещё два подобных вызова,но их проблема не затрагивает.

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


Ссылка на сообщение
(изменено)

Доброго времени суток! Можете подсказать в чём может быть проблема и как её можно решить - у меня сборка очень часто валится с таким вот логом:

stack trace:
0023:5EC7F189 MSVCR120.dll, memmove()
[error][       8] : Недостаточно памяти для обработки команды.

Сборка open xray, master branch. Вылет абсолютно рандомный. Правки в основном связаны только с инвентарём + несколько новых итемов, менять что-то более серьёзное я пока не умею)

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

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


Ссылка на сообщение

Подскажите где в движке находится функция которая используется в db.actor:object("название секции")? Мне нужно поправить эту функцию на доп. проверки.

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


Ссылка на сообщение

@Дизель, ещё бы кто выложил стабильные исходники под 13\15 студию без серьёзных правок (вроде CoC'a и других проектов). То что сейчас лежит в open xray плохо приспособлено к жизни - половина фиксов которые я бы хотел взять сделаны на основе уже серьёзных изменений движка ( совмещение некоторых классов в один, переименование и какие-то непонятые движения с lua). Из правок могу только выложить инфу как своё портативное хранилище сделать, что я ещё менял не помню уже. Ну ещё хочу обратить внимание на прокол в работе инвентаря - попробуйте перенести пистолет из трупа или ящика в слот автомата. Куда он попадёт? Правильно, в тот слот который прописан в конфиге. Почему-то игра обрабатывает такие действия так как будто мы подняли итем с земли. Это не сильно мешает, но для работы рюкзака пришлось делать костыль.

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


Ссылка на сообщение
(изменено)

@Карлан, я вообще переношу инв на частично списочную систему как в arma III ). Уже кое-что намечается, хотя работы предстоит ещё много,но могу сказать точно - работает такой инв гораздо быстрее родного, причину вы сами назвали)

 

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

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

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


Ссылка на сообщение

@Карлан, не знал что в тч всё настолько плохо с ui . Вы подкинули неплохую пищу для размышления, буду думать над этим.

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


Ссылка на сообщение

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

  • Нравится 1

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


Ссылка на сообщение

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

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


Ссылка на сообщение

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

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


Ссылка на сообщение

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

 

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

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


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

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

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

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


Ссылка на сообщение

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

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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