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