Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Функция SpawnPlayerToKvadrat

Edwin

Мастер
Функция устанавливает позицию игрока рандомно в периметре указанного прямоугольника. Если не указывать позицию Z, сервер попытается установить её автоматически​


PHP:
SpawnPlayerToRect(playerid, Float:min_x, Float:min_y, Float:max_x, Float:max_y, Float:posZ = 65535.0)
{
    new Float:fPos[2];
    fPos[0] = fRand(floatround(min_x), floatround(max_x));
    fPos[1] = fRand(floatround(min_y), floatround(max_y));
    
    if(posZ == 65535.0)
		SetPlayerPosFindZ(playerid, fPos[0], fPos[1], posZ);
	else
		SetPlayerPos(playerid, fPos[0], fPos[1], posZ);
}
PHP:
stock Float:fRand(Float:min, Float:max)
	return floatadd(frandom(floatsub(max, min)), min);


Сюда же, дополнительно спавн по указанному радиусу. Аналогично предыдущей функции,
позиция по оси Z будет выставлена автоматически, если её не указать в аргументах​
PHP:
SpawnPlayerToCircle(playerid, Float:cRad, Float:cPosX, Float:cPosY, Float:cPosZ = 65535.0)
{
	new Float:rPos[2];
	rPos[0] = cRad *floatcos(random(360), degrees) +cPosX;
	rPos[1] = cRad *floatsin(random(360), degrees) +cPosY;

    if(cPosZ == 65535.0)
		SetPlayerPosFindZ(playerid, rPos[0], rPos[1], cPosZ);
	else
		SetPlayerPos(playerid, rPos[0], rPos[1], cPosZ);
}


Примечание:
Координата по оси Z вычисляется неточно, её правильность зависит от того, находится ли игрок в зоне видимости новой точки. Для более точного вычисления используйте плагин
 
Последнее редактирование:
Сверху Снизу