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

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


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

3 часа назад, Zander_driver сказал(а):

Перетягивание итема на итем - по-моему, уже и так есть.

Разве? А где находится?

 

3 часа назад, Zander_driver сказал(а):

Метод EqualTo и возможность его переписать, тем более есть.

Если не ошибаюсь, метод EqualTo отвечает за объединение одинаковых предметов в одну ячейку инвентаря с указанием количества объединённых предметов. А мне нужно, чтобы я перетащил один предмет на другой, они оба удалились и заменились нужным (скрины прикрепляю) https://disk.yandex.ru/d/CiSnzNXKkj58nQ?w=1

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

метод EqualTo отвечает за объединение одинаковых предметов

Или НЕ-объединение )
Он этим управляет.

Только что, ARTLantist сказал(а):

А где находится?

CUIDragDropListEx::OnItemStartDragging, CUIDragDropListEx::OnItemDrop посмотри. Окно, где взяли и куда уронили, там точно имеется. Координаты тоже.

Остальное уже арифметика)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

@ARTLantist, вот что я васянил по этому поводу для Выбора. UIActorMenu_action.cpp

	{
	Ivector2 it_cell_pos				= new_owner->PickCell(GetUICursor().GetCursorPosition());
	CUICellItem* cell = (it_cell_pos.x > -1 && it_cell_pos.y > -1)?new_owner->GetCellAt(it_cell_pos).m_item:NULL;
	PIItem niitem	= cell ? (PIItem)cell->m_pData : NULL;
	luabind::functor<void> StackCalback;
	if (niitem && ai().script_engine().functor("_a.stack_script_calback", StackCalback))
	StackCalback(CurrentIItem()->object().ID(), niitem->object().ID());
	}

	if ( old_owner==new_owner)
	{
		return false;
	}

В _a.stack_script_calback в данном случае идет передача ID объектов, но можно делать напрямую тут, ну или вызывать функцию какую. Это были мои первые потуги в двигоправке, так что может быть быдлокодом.

Изменено пользователем _ХоЗаР_
Скрытый текст

6 ГБ ОЗУ DDR3 1098 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.5 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

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

@_ХоЗаР_ попробую вставить и посмотреть, что да как. Просто я уже сам сделал функцию, и пришлось добавить её в UIDragDropListEx.cpp, т.к. из UIActorMenu_action.cpp почему-то не вызывалось

у тебя она норм вызывается?

Ссылка на комментарий
18 часов назад, ARTLantist сказал(а):

у тебя она норм вызывается?

Ну да. Только как я и сказал у меня она отсылает на скрипт.

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

6 ГБ ОЗУ DDR3 1098 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.5 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

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

@_ХоЗаР_ не знаю, у меня из данной функции вызывается скрипт только после того, как я перемещу предмет в другой слот, а не в пределах одного слота (в том числе рюкзака)

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

Ссылка на комментарий
2 часа назад, ARTLantist сказал(а):

как я перемещу предмет в другой слот

Я в скриншоте прикрепил правленую строчку на проверку текущего овнера. Ее тоже желательно повторить. Тогда не будет проблем.

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

6 ГБ ОЗУ DDR3 1098 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.5 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

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

Как можно пофиксить вылет при перетаскивании патронов на пояс, которые занимают 2 ячейки, а на поясе свободна только 1? Причём если отправлять туда патроны двойным нажатием ЛКМ, то всё норм, они просто не отправляются, а если перетаскивать, то получаешь вылет. Где-то же должна быть проверка, которая проверяет, можно ли поместить предмет на пояс? Только её нужно доработать для проверки размера предмета, помещаемого на пояс.

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

@ARTLantist Ощущение, что ты правишь движок наугад и не пытаясь разобраться в том, что тебе интересно.

UIInventoryWnd.cpp, UIInventoryWnd2.cpp, UIInventoryWnd3.cpp - там все, что касается окна инвентаря. Там и обработчик дропа предмета. Найдешь сам, или тебя еще и в саму ф-цию тыкнуть?

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

@ARTLantist Понял.

Тут, может стоит прдъяву админам выставить - пора разделить ковырялку движка на три раздела?

И я уже предлагал - давайте тему "Заказы". Мне лень задаром писать скрипты\движковые правки по просьбам, но если бы меня простимулировали парой соток на пивасик - почему нет? Я не алкаш, я просто достаточно ленив...

  • Нравится 1
  • Согласен 2
  • Смешно 1
  • Сомнительно 1
Ссылка на комментарий
6 минут назад, AndreySol сказал(а):

разделить ковырялку движка на три раздела?

Можно просто в шапке описать-перечислить неугодных публике...

Или даже не в шапке. Просто ежу понятно, что если так как ты говоришь, сделать, то куча движков попадет в "не канон" и харам на обсуждения их.

Уже проходили.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Парни, может кто знает, как изменить скорость проигрывания звука(ускорить)? Нужно для дела.

Сейчас разбираюсь в исходниках "xrSound/xrGame" и не знаю с какой стороны подступится.

Движок ЗП.

Ссылка на комментарий
21.03.2021 в 19:37, Shkiper2012 сказал(а):

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


Не в курсе, для какой именно нужды это требуется, однако, советую глянуть xrSound/SoundRender_TargetA.cpp, а именно локальную переменную _pitch:
 

float _pitch = m_pEmitter->p_source.freq; 
clamp(_pitch, EPS_L, 2.f);

 

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

День добрый, есть объект CCar, к нему приаттачиваю объект из инвентаря ГГ, т.е. для предмета указываю родителем (H_SetParent) текущий объект. Проблема в том что после сейв-лоада попытка найти объект с таким айди как у приаттаченого предмета возвращает null Как это исправить?

void CCar::OnEvent(NET_Packet& P, u16 type)
{
	inherited::OnEvent		(P,type);
	CExplosive::OnEvent		(P,type);

	//обработка сообщений, нужных для работы с багажником машины
	u16 id;
	switch (type)
	{
		case GE_OWNERSHIP_TAKE:
		{
			P.r_u16(id);
			CObject* itm = Level().Objects.net_Find(id);
			m_trunk_items.push_back(id);
			itm->H_SetParent(this);
			itm->setVisible(FALSE);
			itm->setEnabled(FALSE);
		}break;
	}

}

 

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

В чистой зп есть такой небольшой баг, я думаю, что не я один его замечал: когда мы пытаемся перетащить предмет из одной клетки сетки рюкзака в другую - это не всегда выходит (предмет возвращается обратно, либо ставится в другую). Прикол в том, что нужно перетягивать этот предмет не в любую точку клетки, а со смещением от центра к правому нижнему углу - тогда всегда предмет переносится в эту клетку. Ну так вот, как пофиксить данный баг? Чтобы можно было перетянуть предмет в любую точку ДАННОЙ клетки и он туда без труда поместился.

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

Приветствую!

Прикручивал на движок ТЧ (форк xp-dev) отображение миникарты по зажатию клавиши. Соорудил работающую проверку:

UIMainIngameWnd.cpp

void CUIMainIngameWnd::Draw()
{
...
	if (Level().IR_GetKeyState(DIK_TAB))
	UIZoneMap->Render();
...
}

 

Вопрос - подскажите как проверять не хардкодную клавишу (TAB в моём примере) а некое действие к которому забиндена кнопка в настройках, типа kSCORES ?

Попытка проверять в духе

if (Level().IR_GetKeyState(get_binded_action(kSCORES)))

результатов не дала

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

@xer-urg Ну я в ЗП делал примерно так. 

	int dik = get_action_dik(kWPN_RELOAD);
	if (dik && g_pGameLevel->IR_GetKeyState(dik)) {
		...
	}

 

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

6 ГБ ОЗУ DDR3 1098 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.5 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

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

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

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

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

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

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

Войти

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

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

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