Перейти к содержанию

IsPlayerInCube - функция для проверки нахождения игрока в кубе


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

Бывают ситуации, когда нам нужно проверить находится ли игрок в определенном квадрате и на определенной высоте. Сделать это можно при помощи функции, которую мы сейчас придумаем.

Чтобы проверить игрока в кубе, нам нужно написать в любом месте скрипта такую функцию:

stock IsPlayerInCube(playerid, Float:xmin, Float:ymin, Float:zmin, Float:xmax, Float:ymax, Float:zmax)
{
	new Float:x, Float:y, Float:z;
	GetPlayerPos(playerid, x, y, z);
	if(x > xmin && y > ymin && z > zmin && x < xmax && y < ymax && z < zmax)return 1;
	return 0;
}

Теперь мы можем ставить такие условия:

if(IsPlayerInCube(playerid, Xmin, Ymin, Zmin, Xmax, Ymax, Zmax))

Эту проверку можно поместить, например, внутри команды.

Теперь о том, как правильно получить все 6 координат, указанные в скобках функции.

Для этого мы встаем в левый нижний угол создаваемой вами зоны, получаем координаты командой /save. Далее 
встаем в правый верхний угол и снова получаем координаты командой /save. Проще говоря, мы получаем все нужные нам координаты из двух точек.

Допустим, мы уже получили вот такие координаты:

AddPlayerClass(0,2021.0109,1343.0779,10.8130,256.6816,0,0,0,0,0,0); 
AddPlayerClass(0,2038.6593,1343.9640,10.3990,180.1545,0,0,0,0,0,0);

Забираем нужные нам координаты, т.е. это все X, Y и Z-координаты. Для Xmin - берем из этих координат 
минимальную X-координату - 2021.0109. Ставим ее первой в скобках, затем, через запятую, для Ymin берем минимальную Y-координату - 1343.0779. Дальше то же самое, но уже максимальные координаты.
Должно получиться так:

if(IsPlayerInCube(playerid, 2021.0109, 1343.0779, 10.3990, 2038.6593, 1343.9640, 10.8130)) return 1;

Проверка готова.

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

  • 101 изменил название на IsPlayerInCube - функция для проверки нахождения игрока в кубе

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

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...