Доступ к архиву

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

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

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

ArenaCheck

Статус
В этой теме нельзя размещать новые ответы.

Stive_Leroy[GRA]

Умник
В этом туторе я покажу как сделать проверку для игрока на вхожение в указанную зону.
Во-первых, вы должны понять как работает это. А работает это примерно так:​

PHP:
                                        Точка 2
                |               |
                |   Нужная      |
                |         Зона  |
                |_______________|


Точка 1.

Это очень простой и одновременно эффектный скрипт, который поможет создавать "Админ-арены"

Первое что мы должны сделать - это получить координаты.

Для этого можно воспользоваться /save, или же этой командой:


PHP:
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. Ставим вверх.

PHP:
forward isPlayerInArea();
Идём в GameMode/FilterScriptInit, вставляем вверх функции:
PHP:
SetTimer("isPlayerInArea",1000, 1);
So, теперь мы проверяем зону каждую секунду. Создадим паблик.
PHP:
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. Он сдохнет.
Если что-то не так пишите.

Спасибо!


by Stive​


---------- Post added at 16:23 ---------- Previous post was at 15:30 ----------

Коммент хоть чтоль оставьте))
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу