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

Редактирование движка 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 посмотри. Окно, где взяли и куда уронили, там точно имеется. Координаты тоже.

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

Мод, где не бывает одинаковых путей - Судьба Зоны.

...что хотел сказать, большинству мододелов. Послушайте.

Любите орехи? А вот первая ступенька. Пути. Там еще вторая, третья, их много... я давно всем показывал но никто не видит. Все любят, шорох орехов.

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


Ссылка на сообщение
Поделиться на других сайтах

@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 1066 мГц (Разносорт)

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, ARTLantist сказал(а):

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

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

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

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

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, ARTLantist сказал(а):

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

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

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

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

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах

а из-за чего багает физика? Это пысовцы делов натворили?

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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


Ссылка на сообщение
Поделиться на других сайтах

@ARTLantist Понял.

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

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

  • Нравится 1
  • Согласен 2
  • Смешно 1
  • Сомнительно 1

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


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, AndreySol сказал(а):

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

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

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

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

Мод, где не бывает одинаковых путей - Судьба Зоны.

...что хотел сказать, большинству мододелов. Послушайте.

Любите орехи? А вот первая ступенька. Пути. Там еще вторая, третья, их много... я давно всем показывал но никто не видит. Все любят, шорох орехов.

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

Движок ЗП.

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


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, Shkiper2012 сказал(а):

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
21.03.2021 в 19:37, Shkiper2012 сказал(а):

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


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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах

День добрый, есть объект 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)) {
		...
	}

 

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

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

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

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