Редактирование движка X-Ray - Страница 164 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

Редактирование движка 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 - там все, что касается окна инвентаря. Там и обработчик дропа предмета. Найдешь сам, или тебя еще и в саму ф-цию тыкнуть?

@AndreySol, таких файлов нет в зп)

но я нашёл данный обработчик в другом месте и всё сделал

  • Нравится 1

@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 минуту назад, Shkiper2012 сказал(а):

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

Аудиоредактор в зубы!

  • Нравится 2
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 пользователей

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