ArenaCheckRU
From SA-MP Wiki
Проверка на нахождение в указанной зоне
Перевод статьи: [SFD]theAlone [gta-community.ru]
В этом туторе я покажу как сделать проверку для игрока на вхожение в указанную зону.
Во-первых, вы должны понять как работает это. А работает это примерно так:
_________________ Точка 2;
| |
| Это арена |
| которую вы |
| хотите |
| выделить |
|________________|
Точка 1;
Это очень простой и одновременно эффектный скрипт, который поможет создавать "Админ-арены"
Я покажу вам фото:
Вы правы. Именно на этом фото изображён гольф-клуб YellowBell в LV. Вот мне захотелось тут создать такое место, где хранятся тачки админа и только его. А как это сделать O_o?.
Просто.
Первое что мы должны сделать - это получить координаты.
Для этого можно воспользоваться /save, или же этой командой:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/pos", cmdtext, true) == 0)
{
new string1[256];
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
format(string1,sizeof(string1),"*Позиция = X: %.0f , Y: %.0f , Z: %.0f",X,Y,Z);
SendClientMessage(playerid,COLOR_GREEN,string1);
return 1;
}
return 0;
}
Когда вы напишите /pos, то вам выдаст сообщение "*Позиция = X: , Y: , Z: ". И со всем этим идём дальше.
Настраиваем карту на север, и теперь бежим на Юго-западную точку, затем в Северо-восточную. Узнаём координаты при помощи /pos.
Итак, создадим простой FS. Ставим вверх.
forward isPlayerInArea();
Идём в GameMode/FilterScriptInit, вставляем вверх функции:
SetTimer("isPlayerInArea",1000, 1);
Ага, теперь мы проверяем зону каждую секунду
Создадим паблик
public isPlayerInArea()
{
new Float:X, Float:Y, Float:Z; //Вары для XYZ
for(new i=0; i < MAX_PLAYERS; i++) //Делаем цикл
{
GetPlayerPos(i, X, Y, Z); //Этой командой узнаём XYZ
if (X <= -3915 && X >= -3694 && Y <= 401 && Y >= 37)
/* Это очень "нежная" (xD) хрень. Тут нужно менять числа в соответствии с координатами.
Формат: MinX, MaxX, MaxY, MinY
{
SetPlayerHealth(i, -999999.9); //Этим убиваем игрока если он зашёл
}
}
}
Это будет если он будет между X= -3915 and -3694 || Y= 401 and 37. Он сдохнет.
Если что-то не так исправьте плиз :D
