Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
dOOmcLiF

Спавн предметов по прицелу

Всем доброго времени суток. Есть мод на промокоды, который позволяет спавнить предметы при вводе определенного промокода. Однако вещь появляется под персонажем. Как я понимаю процесс спавна описан в этом методе: 

private static ItemBase CreateItem( string class_name, bool on_ground, PlayerBase player )
	{
		ItemBase item;
		if ( on_ground ) 
		{
			item = ItemBase.Cast( GetGame().CreateObject( class_name, player.GetPosition() ) );
		} 
		else 
		{
			item = ItemBase.Cast( player.GetInventory().CreateInInventory( class_name ) );
		}
		if ( item != NULL ) 
		{
			item.SetQuantity(item.GetQuantityMax());
		}
		return item;
	}

Я попытался немного изменить код, чтобы вещи появлялись по прицелу персонажа, но всё равно ничего не получилось - вещи так и спавнятся по координатам персонажа.

private static ItemBase CreateItem( string class_name, bool on_crosshair, PlayerBase player )
	{
		float distance = vector.Distance( pos_player, hitPos );
		float dist = vector.Distance( player.GetPosition(), player.GetAimPosition() )
		Print(dist);
		Print(player.GetAimPosition());
		vector position = player.GetPosition() + ( player.GetAimPosition() * distance );
		Print(position)
		ItemBase item;
		if ( on_crosshair ) 
		{
			item = ItemBase.Cast( GetGame().CreateObject( class_name, position ));
			vector pos = item.GetPosition();
			Print(pos);
		} 
		else 
		{
			item = ItemBase.Cast( player.GetInventory().CreateInInventory( class_name ) );
		}
		if ( item != NULL ) 
		{
			item.SetQuantity(item.GetQuantityMax());
		}
		return item;
	}

При дебаге, в логи выводились огромные значения vector dist, однако персонаж смотрел в пол в нескольких метрах от себя

Может кто подсказать в какую сторону копать?

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


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

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

  • 0

hitPos не вижу где сетится может в нем проблема
player.GetPosition() - это точка в ногах
player.GetAimPosition() - это направление прицеливания, перед тем как умножать её на дистанцию хорошо бы её нормализовать на всякий пожарный
если ты точку откладываешь от свои ног то очень вероятно что hitPos окажется опять же в ногах

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


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

Пробовал не «on crosshair» прописать, а «At crosshair», просто как я помню даже в админке пишется через at

 

In inventory - в инвентаре
On Ground - под игроком (на земле)
At crosshair - в прицеле 

 

по сути даже от такой ошибки может не работать

Изменено пользователем Maksik180597 (история изменений)

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


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

Создайте аккаунт или войдите в него для комментирования

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

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

Зарегистрируйтесь для получения аккаунта. Это просто!

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

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

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

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка