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

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

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

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

Мануал Система радаров скорости MySQL

Bren

Умник
Решил выложить система радаров, которую делал для одного уже не активного проекта.
Похожие работы уже есть, но в них нет такого функционала.

​

Возможности
  • Добавление радаров прям на сервере или в phpMyAdmin.
  • Редактирование и удаление созданных радаров.
  • Изменение лимита скорости.
  • Изменение радиуса действия.
  • Изменение скорости срабатывания.
  • Изменение суммы штрафа.
  • Просмотр подробной информации о радаре
​
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

Требования: plugins / Includes
Код:
MySQL R41-4
sscanf2
Streamer
mdialog

Список изменений:
- Полностью обновил код системы радаров.
- Добавил возможность создание, удаление и редактирование радаров прям из игры.
- Добавил возможность подключить систему радаров как модульную систему.
- Добавил обнуление статистики срабатываний и обнуление статистики штрафов.
- Добавил новые команды такие как /radarlist, /radartp, /radarcreate /radardelete.
- Добавил define для простой настройки дальности отображение 3D текст и самой дистанции объекта.

Установка:
  1. Удалите старую систему радаров если она есть.
  2. Скачайте архив Car Radar System.zip и разархивируйте его.
  3. Поместите файл CarRadarSystem.inc из архива в папку include.
  4. Добавьте файл radars.sql в свою базу Таблицы MySQL.
  5. Откройте ваш мод, и добавьте после всех new строчку - #include <CarRadarSystem.inc>
  6. Откройте загруженный файл CarRadarSystem.inc, и через поиск заменить все переменные MysqlConnectID на своё название MySQL:handle
  7. Опять открыть свой мод, и в OnGameModeInit вставляем запрос на загрузку радаров -
Pawn:
mysql_tquery(/*тут используйте свою переменную mysql connect (MySQL:handle) */, "SELECT * FROM radars", "AutoRadarLoad");

Готово!


Таблица MySQL
Код:
CREATE TABLE `radars` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `Pos` varchar(80) NOT NULL COMMENT 'x, y, z,  rx, ry, rz',
  `VirtualWorld` int(10) NOT NULL,
  `Interior` int(10) NOT NULL,
  `Range` float NOT NULL COMMENT 'радиус действия',
  `SpeedLimit` int(3) NOT NULL COMMENT 'лимит скорости',
  `Fine` int(10) NOT NULL COMMENT 'сумма штрафа',
  `Triggers` int(10) NOT NULL DEFAULT '0' COMMENT 'Общие количество нарушений',
  `TotalFines` int(10) NOT NULL DEFAULT '0' COMMENT 'Общяя сумма штрафов',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Спосок команды
/radarlist - Настройки радаров
/radarcreate - Создать новый радар
/radardelete - Удалить радар
/radartp - Телепортироваться к радару

Весь код целиком
Код:
/*Creator: @Bren828 - 2022.12.29*/

#define CAR_RADAR_MAX                       200
#define CAR_RADAR_OBJECT_STREAM_DISTANCE    200.0
#define CAR_RADAR_3DTEXT_STREAM_DISTANCE    15.0

enum CARRADAR_EN
{
    rsRadarID,
    Float:rsPos[6],
    rsVirtualWorld,
    rsInterior,
    Float:rsRange,
    rsSpeedLimit,
    rsFine,
    rsTriggers,
    rsTotalFines,
   
    rsObjects,
    rsSphere,
    Text3D:rsText3D
}
new CarRadarSystem[CAR_RADAR_MAX][CARRADAR_EN];

enum CARRADAR_PLAYER_EN
{
    crpPage,
    crpPage_Button_Back,
    crpRadarSlotID[20],
    crpLineID,
    crpEditRadar
}

new CarRadarSystemPlayer[MAX_PLAYERS][CARRADAR_PLAYER_EN];
/*
public OnGameModeInit()
{
    mysql_tquery(MysqlConnectID, "SELECT * FROM radars", "AutoRadarLoad");
    return 1;
}
*/

forward AutoRadarLoad();
public AutoRadarLoad()
{
    new rows;
    cache_get_row_count(rows);
    if(!rows) return print("Радары не загружены!");
    new string[76+10], RadarMax;
    for(new x; x < rows; x ++)
    {
        if(RadarMax >= CAR_RADAR_MAX)
        {
            print(">> Увеличьте define 'CAR_RADAR_MAX' !");
            break;
        }
        cache_get_value_name_int(x, "id", CarRadarSystem[RadarMax][rsRadarID]);
        cache_get_value_name(x, "Pos", string);
        sscanf(string, "p<,>a<f>[6]", CarRadarSystem[RadarMax][rsPos]);
        cache_get_value_name_int(x, "VirtualWorld", CarRadarSystem[RadarMax][rsVirtualWorld]);
        cache_get_value_name_int(x, "Interior", CarRadarSystem[RadarMax][rsInterior]);
        cache_get_value_name_float(x, "Range", CarRadarSystem[RadarMax][rsRange]);
        cache_get_value_name_int(x, "SpeedLimit", CarRadarSystem[RadarMax][rsSpeedLimit]);
        cache_get_value_name_int(x, "Fine", CarRadarSystem[RadarMax][rsFine]);
        cache_get_value_name_int(x, "Triggers", CarRadarSystem[RadarMax][rsTriggers]);
        cache_get_value_name_int(x, "TotalFines", CarRadarSystem[RadarMax][rsTotalFines]);
        CarRadarSystem[RadarMax][rsObjects] = CreateDynamicObject(18880, CarRadarSystem[RadarMax][rsPos][0], CarRadarSystem[RadarMax][rsPos][1], CarRadarSystem[RadarMax][rsPos][2],  CarRadarSystem[RadarMax][rsPos][3], CarRadarSystem[RadarMax][rsPos][4], CarRadarSystem[RadarMax][rsPos][5], CarRadarSystem[RadarMax][rsVirtualWorld], CarRadarSystem[RadarMax][rsInterior], -1, CAR_RADAR_OBJECT_STREAM_DISTANCE, CAR_RADAR_OBJECT_STREAM_DISTANCE);
        CarRadarSystem[RadarMax][rsSphere] = CreateDynamicSphere(CarRadarSystem[RadarMax][rsPos][0], CarRadarSystem[RadarMax][rsPos][1], CarRadarSystem[RadarMax][rsPos][2], CarRadarSystem[RadarMax][rsRange], CarRadarSystem[RadarMax][rsVirtualWorld], CarRadarSystem[RadarMax][rsInterior]);
        if(CarRadarSystem[RadarMax][rsSpeedLimit] == 0) format(string, sizeof(string), "Радар скорости {00FF00}№%d{FF0000}\nОтключен", RadarMax+1);
        else format(string, sizeof(string), "Радар скорости {00FF00}№%d{FFFFFF}\nМаксимальная скорость: {00FF00}%d (км/ч)", RadarMax+1, CarRadarSystem[RadarMax][rsSpeedLimit]);
        CarRadarSystem[RadarMax][rsText3D] = CreateDynamic3DTextLabel(string, -1, CarRadarSystem[RadarMax][rsPos][0], CarRadarSystem[RadarMax][rsPos][1], CarRadarSystem[RadarMax][rsPos][2]+6.0, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, CarRadarSystem[RadarMax][rsVirtualWorld], CarRadarSystem[RadarMax][rsInterior], -1, CAR_RADAR_3DTEXT_STREAM_DISTANCE);
       
        RadarMax ++;
    }
    printf("-> Загружено %d радаров", RadarMax);
    return 1;
}

CMD:radartp(playerid, params[])//телепорт по радарам
{
    if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "/radartp [Номер радара]");
    if(params[0] < 1 || params[0] > CAR_RADAR_MAX)
    {
        new string[26+10];
        format(string, sizeof(string), "Номер радара от 1 до %d", CAR_RADAR_MAX);
        return SendClientMessage(playerid, -1, string);
    }
    if(CarRadarSystem[params[0]][rsRadarID] == 0) return SendClientMessage(playerid, -1, "Радара с данным номером нет.");
    SetPlayerVirtualWorld(playerid, CarRadarSystem[params[0]-1][rsVirtualWorld]);
    SetPlayerInterior(playerid, CarRadarSystem[params[0]-1][rsInterior]);
    SetPlayerPos(playerid, CarRadarSystem[params[0]-1][rsPos][0]+0.5, CarRadarSystem[params[0]-1][rsPos][1]+0.5, CarRadarSystem[params[0]-1][rsPos][2]+1.7);
    return 1;
}

CMD:radarcreate(playerid, params[])//создать новый радар
{
    new Float:Range, SpeedLimit, Fine;
    if(sscanf(params, "fdd", Range, SpeedLimit, Fine)) return SendClientMessage(playerid, -1, "/radarcreate [Радиус] [Лимит скорости] [Сумма штрафа]");
    if(Range < 1.0) return SendClientMessage(playerid, -1, "Неверный радиус");
    if(SpeedLimit < 1) return SendClientMessage(playerid, -1, "Неверная скорость");
    if(Fine < 0) return SendClientMessage(playerid, -1, "Неверная сумма");
    new newSlot = -1;
    for(new x; x < CAR_RADAR_MAX; x ++)
    {
        if(CarRadarSystem[x][rsRadarID] != 0) continue;
        newSlot = x;
        break;
    }
    if(newSlot == -1) return SendClientMessage(playerid, -1, "Увеличьте define 'MAX_RADAR' !");
   
    new string[144+ 28+ 10+10+10+10+10], Float:x, Float:y, Float:z, Float:ang, World = GetPlayerVirtualWorld(playerid), Interior = GetPlayerInterior(playerid);
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, ang);
    z -= 1.2;
    mysql_format(MysqlConnectID, string, sizeof(string),
        "INSERT INTO radars (`Pos`,`VirtualWorld`,`Interior`,`Range`,`SpeedLimit`,`Fine`) VALUE ('%.2f,%.2f,%.2f, 0.0,0.0,%.2f','%d','%d','%f','%d','%d')",
    x, y, z,ang, World, Interior, Range, SpeedLimit, Fine);
    new Cache:result = mysql_query(MysqlConnectID, string);
    if(!cache_is_valid(result))
    {
        SendClientMessage(playerid, -1, "Ошибка Mysql создания радара");
        cache_delete(result);
        return 1;
    }
    new IDMqs = cache_insert_id();
    cache_delete(result);
    CarRadarSystem[newSlot][rsRadarID] = IDMqs;
    CarRadarSystem[newSlot][rsPos][0] = x;
    CarRadarSystem[newSlot][rsPos][1] = y;
    CarRadarSystem[newSlot][rsPos][2] = z;
    CarRadarSystem[newSlot][rsPos][3] = 0.0;
    CarRadarSystem[newSlot][rsPos][4] = 0.0;
    CarRadarSystem[newSlot][rsPos][5] = ang;
    CarRadarSystem[newSlot][rsVirtualWorld] = World;
    CarRadarSystem[newSlot][rsInterior] = Interior;
    CarRadarSystem[newSlot][rsRange] = Range;
    CarRadarSystem[newSlot][rsSpeedLimit] = SpeedLimit;
    CarRadarSystem[newSlot][rsFine] = Fine;
    CarRadarSystem[newSlot][rsTriggers] = 0;
    CarRadarSystem[newSlot][rsTotalFines] = 0;
    CarRadarSystem[newSlot][rsObjects] = CreateDynamicObject(18880, CarRadarSystem[newSlot][rsPos][0], CarRadarSystem[newSlot][rsPos][1], CarRadarSystem[newSlot][rsPos][2],  CarRadarSystem[newSlot][rsPos][3], CarRadarSystem[newSlot][rsPos][4], CarRadarSystem[newSlot][rsPos][5], CarRadarSystem[newSlot][rsVirtualWorld], CarRadarSystem[newSlot][rsInterior], -1, CAR_RADAR_OBJECT_STREAM_DISTANCE, CAR_RADAR_OBJECT_STREAM_DISTANCE);
    CarRadarSystem[newSlot][rsSphere] = CreateDynamicSphere(CarRadarSystem[newSlot][rsPos][0], CarRadarSystem[newSlot][rsPos][1], CarRadarSystem[newSlot][rsPos][2], CarRadarSystem[newSlot][rsRange], CarRadarSystem[newSlot][rsVirtualWorld], CarRadarSystem[newSlot][rsInterior]);
    if(CarRadarSystem[newSlot][rsSpeedLimit] == 0) format(string, sizeof(string), "Радар скорости {00FF00}№%d{FF0000}\nОтключен", newSlot+1);
    else format(string, sizeof(string), "Радар скорости {00FF00}№%d{FFFFFF}\nМаксимальная скорость: {00FF00}%d (км/ч)", newSlot+1, CarRadarSystem[newSlot][rsSpeedLimit]);
    CarRadarSystem[newSlot][rsText3D] = CreateDynamic3DTextLabel(string, -1, CarRadarSystem[newSlot][rsPos][0], CarRadarSystem[newSlot][rsPos][1], CarRadarSystem[newSlot][rsPos][2]+6.0, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, CarRadarSystem[newSlot][rsVirtualWorld], CarRadarSystem[newSlot][rsInterior], -1, CAR_RADAR_3DTEXT_STREAM_DISTANCE);
   
    SetPlayerPos(playerid, x+0.5, y+0.5, z+1.2);
    format(string, sizeof(string), "Вы создали радар под номером %d", newSlot+1);
    SendClientMessage(playerid, -1, string);
    return 1;
}

CMD:radardelete(playerid, params[])//удалить радар
{
    if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "/radarcreate [Номер радара]");
    if(params[0] < 1 || params[0] > CAR_RADAR_MAX) return SendClientMessage(playerid, -1, "Неверный номер радара");
    if(CarRadarSystem[params[0]-1][rsRadarID] == 0) return SendClientMessage(playerid, -1, "Радара с данным номером нет.");
    new string[38+10];
    mysql_format(MysqlConnectID, string, sizeof(string), "DELETE FROM radars WHERE id=%d LIMIT 1", CarRadarSystem[params[0]-1][rsRadarID]),
    mysql_query(MysqlConnectID, string);
    CarRadarSystem[params[0]-1][rsRadarID] = 0;
    DestroyDynamicObject(CarRadarSystem[params[0]-1][rsObjects]);
    DestroyDynamicArea(CarRadarSystem[params[0]-1][rsSphere]);
    DestroyDynamic3DTextLabel(CarRadarSystem[params[0]-1][rsText3D]);
    format(string, sizeof(string), "Вы удалили радар под номером %d", params[0]);
    SendClientMessage(playerid, -1, string);
    return 1;
}

CMD:radarlist(playerid, params[])//удалить радар
{
    CarRadarSystemPlayer[playerid][crpPage] = 0;
    CarRadarSystemPlayer[playerid][crpPage_Button_Back] = 0;
    Dialog_Show(playerid, Dialog:RadarSystemList);
    return 1;
}
 
DialogCreate:RadarSystemList(playerid)
{
    new string[(50 * 20) + 50], speedT[17] = "{f44747}Отключен", slot[2];
    strcat(string, "{FFFFFF}Номер\t{FFFFFF}Скорость\t{FFFFFF}Штраф\t\n");
    for(new x = (20*CarRadarSystemPlayer[playerid][crpPage]); x < CAR_RADAR_MAX; x ++)
    {
        if(CarRadarSystem[x][rsRadarID] == 0) continue;
        if(slot[0] <= 19)
        {
            if(CarRadarSystem[x][rsSpeedLimit] >= 1) format(speedT, sizeof(speedT), "%d", CarRadarSystem[x][rsSpeedLimit]);
           
            format(string, sizeof(string), "%s Радар %d\t%s\t$%d\n", string,x+1, speedT, CarRadarSystem[x][rsFine]);
            CarRadarSystemPlayer[playerid][crpRadarSlotID][slot[0]] = x;
            speedT = "{f44747}Отключен";
            if(x >= CAR_RADAR_MAX-1)
            {
                if(CarRadarSystemPlayer[playerid][crpPage] >= 1)
                {
                    slot[1] = 1;
                    strcat(string, "< Назад\n");
                    CarRadarSystemPlayer[x][crpPage_Button_Back] = slot[0]+2;
                }
                break;
            }
        }
        slot[0] ++;
        if(slot[0] >= 21)
        {
            slot[1] = 1;
            strcat(string, "> Дальше\n");
            if(CarRadarSystemPlayer[playerid][crpPage] >= 1) strcat(string, "< Назад\n");
            break;
        }
    }
    if(slot[0] == 0) return Dialog_Message(playerid, "Список радаров", "{FFFFFF}Нет созданных радаров.", "Закрыть");
    if(CarRadarSystemPlayer[playerid][crpPage] >= 1 && slot[1] == 0)
    {
        strcat(string, "< Назад\n");
        CarRadarSystemPlayer[playerid][crpPage_Button_Back] = slot[0]+1;
    }
    Dialog_Open(playerid, Dialog:RadarSystemList, DIALOG_STYLE_TABLIST_HEADERS, "Список радаров", string, "Выбрать", "Отмена");
    return 1;
}

DialogResponse:RadarSystemList(playerid, response, listitem, inputtext[])
{
    if(!response) return 1;
    switch(listitem)
    {
        case 20:
        {
            if(CarRadarSystemPlayer[playerid][crpPage_Button_Back] >= 1 && CarRadarSystemPlayer[playerid][crpPage_Button_Back] == listitem+1 && CarRadarSystemPlayer[playerid][crpPage] >= 1)
            {
                CarRadarSystemPlayer[playerid][crpPage] --;
                CarRadarSystemPlayer[playerid][crpPage_Button_Back] = 0;
            }
            else CarRadarSystemPlayer[playerid][crpPage] ++;
            return Dialog_Show(playerid, Dialog:RadarSystemList);
        }
        case 21:
        {
            if(CarRadarSystemPlayer[playerid][crpPage] <= 0) return 1;
            CarRadarSystemPlayer[playerid][crpPage] --;
            return Dialog_Show(playerid, Dialog:RadarSystemList);
        }
        default:
        {
            if(CarRadarSystemPlayer[playerid][crpPage_Button_Back] >= 1 && CarRadarSystemPlayer[playerid][crpPage_Button_Back] == listitem+1 && CarRadarSystemPlayer[playerid][crpPage] >= 1)
            {
                CarRadarSystemPlayer[playerid][crpPage] --;
                CarRadarSystemPlayer[playerid][crpPage_Button_Back] = 0;
                return Dialog_Show(playerid, Dialog:RadarSystemList);
            }
            CarRadarSystemPlayer[playerid][crpLineID] = CarRadarSystemPlayer[playerid][crpRadarSlotID][listitem];
            Dialog_Show(playerid, Dialog:RadarSystemEdit);
            return 1;
        }
    }
    return 1;
}

DialogCreate:RadarSystemEdit(playerid)
{
    Dialog_Open(playerid, Dialog:RadarSystemEdit, DIALOG_STYLE_LIST, "Действия",
        "Информация о радаре\n\
        Изменить лимит скорости\n\
        Изменить штраф за превышение\n\
        Сбросить количество срабатываний\n\
        Сбросить количество штрафов\n\
        Телепорт к радару\n\
        Редактировать положение\n\
        Удалить радар",
    "Выбрать", "Назад");
    return 1;
}

DialogResponse:RadarSystemEdit(playerid, response, listitem, inputtext[])
{
    if(!response) return Dialog_Show(playerid, Dialog:RadarSystemList);
    new slot = CarRadarSystemPlayer[playerid][crpLineID];
    if(CarRadarSystem[slot][rsRadarID] == 0) return 1; 
    switch(listitem)
    {
        case 0:
        {
            new string[170+10+4+10+10+10];
            format(string, sizeof(string),
                "{FFFFFF}Номер радара\t\t\t%d\n\
                Радиус действия\t\t%.1f метров\n\
                Лимит скорости\t\t%d\n\
                Штраф за превышения\t$%d\n\
                Сработал\t\t\t%d раз(a)\n\
                Общяя сумма штрафов\t$%d",
            slot+1,
            CarRadarSystem[slot][rsRange],
            CarRadarSystem[slot][rsSpeedLimit],
            CarRadarSystem[slot][rsFine],
            CarRadarSystem[slot][rsTriggers],
            CarRadarSystem[slot][rsTotalFines]);
            Dialog_Open(playerid, Dialog:RadarSystemEdit_Info, DIALOG_STYLE_MSGBOX, "Информация о радаре", string, "Закрыть", "Назад");
            return 1;
        }
        case 1:
        {
            Dialog_Open(playerid, Dialog:RadarSystemEdit_LimitSpeed, DIALOG_STYLE_INPUT, "Изменить лимит скорости", "{FFFFFF}Введите новый лимит скорости:\nДля отключение радара используйте число 0", "Изменить", "Назад");
            return 1;
        }
        case 2:
        {
            Dialog_Open(playerid, Dialog:RadarSystemEdit_Fine, DIALOG_STYLE_INPUT, "Изменить штраф за превышение", "{FFFFFF}Введите новый штраф за превышение:", "Изменить", "Назад");
            return 1;
        }
        case 3:
        {
            new string[48+10];
            CarRadarSystem[slot][rsTriggers] = 0;
            mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET Triggers=0 WHERE id=%d LIMIT 1", CarRadarSystem[slot][rsRadarID]);
            mysql_tquery(MysqlConnectID, string);
            SendClientMessage(playerid, -1, "Вы сбросили количество срабатываний.");
            Dialog_Show(playerid, Dialog:RadarSystemEdit);
            return 1;
        }
        case 4:
        {
            new string[50+10];
            CarRadarSystem[slot][rsTotalFines] = 0;
            mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET TotalFines=0 WHERE id=%d LIMIT 1", CarRadarSystem[slot][rsRadarID]);
            mysql_tquery(MysqlConnectID, string);
            SendClientMessage(playerid, -1, "Вы сбросили общую сумму штрафов.");
            Dialog_Show(playerid, Dialog:RadarSystemEdit);
            return 1;
        }
        case 5, 6:
        {
            if(listitem == 5 || listitem == 6 && !IsPlayerInRangeOfPoint(playerid, 20.0, CarRadarSystem[slot][rsPos][0], CarRadarSystem[slot][rsPos][1], CarRadarSystem[slot][rsPos][2]))
            {
                SetPlayerVirtualWorld(playerid, CarRadarSystem[slot][rsVirtualWorld]);
                SetPlayerInterior(playerid, CarRadarSystem[slot][rsInterior]);
                SetPlayerPos(playerid, CarRadarSystem[slot][rsPos][0]+0.5, CarRadarSystem[slot][rsPos][1]+0.5, CarRadarSystem[slot][rsPos][2]+1.7);
            }
            if(listitem == 6)
            {
                CarRadarSystemPlayer[playerid][crpEditRadar] = slot+1;
                EditDynamicObject(playerid, CarRadarSystem[slot][rsObjects]);
            }
            return 1;
        }
        case 7:
        {
            new str[10];
            format(str, sizeof(str), "%d", CarRadarSystemPlayer[playerid][crpLineID]+1);
            callcmd::radardelete(playerid, str);
            return 1;
        }
    }
    return 1;
}

DialogResponse:RadarSystemEdit_Info(playerid, response, listitem, inputtext[])
{
    if(!response) return Dialog_Show(playerid, Dialog:RadarSystemEdit);
    return 1;
}

DialogResponse:RadarSystemEdit_LimitSpeed(playerid, response, listitem, inputtext[])
{
    if(!response) return Dialog_Show(playerid, Dialog:RadarSystemEdit);
    if(strval(inputtext) < 0 || strval(inputtext) > 400) return Dialog_Open(playerid, Dialog:RadarSystemEdit_LimitSpeed, DIALOG_STYLE_INPUT, "Изменить лимит скорости", "{FFFFFF}Введите новый лимит скорости:\nДля отключение радара используйте число 0\n{FF0000}Лимит скорости от 0 до 400 км!", "Изменить", "Назад");
    new string[76+10+10], slot = CarRadarSystemPlayer[playerid][crpLineID];
    if(CarRadarSystem[slot][rsRadarID] == 0) return 1;
   
    CarRadarSystem[slot][rsSpeedLimit] = strval(inputtext);
    mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET SpeedLimit=%d WHERE id=%d LIMIT 1", strval(inputtext), CarRadarSystem[slot][rsRadarID]);
    mysql_tquery(MysqlConnectID, string);
    format(string, sizeof(string), "Вы изменили скорость на %d км.", strval(inputtext));
    SendClientMessage(playerid, -1, string);
    if(CarRadarSystem[slot][rsSpeedLimit] == 0) format(string, sizeof(string), "Радар скорости {00FF00}№%d{FF0000}\nОтключен", slot+1);
    else format(string, sizeof(string), "Радар скорости {00FF00}№%d{FFFFFF}\nМаксимальная скорость: {00FF00}%d (км/ч)", slot+1, CarRadarSystem[slot][rsSpeedLimit]);
    UpdateDynamic3DTextLabelText(CarRadarSystem[slot][rsText3D], -1, string);
    Dialog_Show(playerid, Dialog:RadarSystemEdit);
    return 1;
}
DialogResponse:RadarSystemEdit_Fine(playerid, response, listitem, inputtext[])
{
    if(!response) return Dialog_Show(playerid, Dialog:RadarSystemEdit);
    if(strval(inputtext) < 0 || strval(inputtext) > 50000000) return Dialog_Open(playerid, Dialog:RadarSystemEdit_Fine, DIALOG_STYLE_INPUT, "Изменить штраф за превышение", "{FFFFFF}Введите новый штраф за превышение:\n{FF0000}Максимальный штраф от $0 до $50 000 000!", "Изменить", "Назад");
    new string[45+10+10], slot = CarRadarSystemPlayer[playerid][crpLineID];
    if(CarRadarSystem[slot][rsRadarID] == 0) return 1;   
    CarRadarSystem[slot][rsFine] = strval(inputtext);
    mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET Fine=%d WHERE id=%d LIMIT 1", strval(inputtext), CarRadarSystem[slot][rsRadarID]);
    mysql_tquery(MysqlConnectID, string);
    format(string, sizeof(string), "Вы изменили сумму штрафа на на $%d", strval(inputtext));
    SendClientMessage(playerid, -1, string);
    Dialog_Show(playerid, Dialog:RadarSystemEdit);
    return 1;
}

public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
    if(CarRadarSystemPlayer[playerid][crpEditRadar] != 0 && (response == EDIT_RESPONSE_FINAL || response == EDIT_RESPONSE_CANCEL))
    {
        new slot = CarRadarSystemPlayer[playerid][crpEditRadar]-1;
        CarRadarSystemPlayer[playerid][crpEditRadar] = 0;
        if(CarRadarSystem[slot][rsRadarID] == 0) return 1;
        if(response == EDIT_RESPONSE_CANCEL)
        {
            SetDynamicObjectPos(objectid, CarRadarSystem[slot][rsPos][0], CarRadarSystem[slot][rsPos][1], CarRadarSystem[slot][rsPos][2]);
            SetDynamicObjectRot(objectid, CarRadarSystem[slot][rsPos][3], CarRadarSystem[slot][rsPos][4], CarRadarSystem[slot][rsPos][5]);
        }
        else if(response == EDIT_RESPONSE_FINAL)
        {   
            new string[74+ 43+10];
            CarRadarSystem[slot][rsPos][0] = x;
            CarRadarSystem[slot][rsPos][1] = y;
            CarRadarSystem[slot][rsPos][2] = z;
            CarRadarSystem[slot][rsPos][3] = rx;
            CarRadarSystem[slot][rsPos][4] = ry;
            CarRadarSystem[slot][rsPos][5] = rz;
            SetDynamicObjectPos(objectid, x, y, z);
            SetDynamicObjectRot(objectid, rx, ry, rz);
            DestroyDynamic3DTextLabel(CarRadarSystem[slot][rsText3D]);
            if(CarRadarSystem[slot][rsSpeedLimit] == 0) format(string, sizeof(string), "Радар скорости {00FF00}№%d{FF0000}\nОтключен", slot+1);
            else format(string, sizeof(string), "Радар скорости {00FF00}№%d{FFFFFF}\nМаксимальная скорость: {00FF00}%d (км/ч)", slot+1, CarRadarSystem[slot][rsSpeedLimit]);
            CarRadarSystem[slot][rsText3D] = CreateDynamic3DTextLabel(string, -1, CarRadarSystem[slot][rsPos][0], CarRadarSystem[slot][rsPos][1], CarRadarSystem[slot][rsPos][2]+6.0, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, CarRadarSystem[slot][rsVirtualWorld], CarRadarSystem[slot][rsInterior], -1, CAR_RADAR_3DTEXT_STREAM_DISTANCE);
   
            mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET Pos='%.2f,%.2f,%.2f, %.2f,%.2f,%.2f' WHERE id=%d LIMIT 1",
                x, y, z, rx, ry, rz,
                CarRadarSystem[slot][rsRadarID]);
            mysql_tquery(MysqlConnectID, string);
        }
        return 1;
    }
    return 1;
}

public OnPlayerEnterDynamicArea(playerid, areaid)
{
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) >= 1)
    {
        new slot = -1, vehicleid = GetPlayerVehicleID(playerid);
        for(new x; x < CAR_RADAR_MAX; x ++)
        {
            if(CarRadarSystem[x][rsRadarID] == 0) continue;
            if(CarRadarSystem[x][rsSphere] != areaid) continue;
            if(GetVehicleSpeed(vehicleid) < CarRadarSystem[x][rsSpeedLimit]) break;
            slot = x;
            break;
        }
        if(slot != -1)
        {
            new string[63+10+10+10];
            if(GetPlayerMoney(playerid) > CarRadarSystem[slot][rsFine])//вид штрафа.
            {
                GivePlayerMoney(playerid, -CarRadarSystem[slot][rsFine]);
                CarRadarSystem[slot][rsTotalFines] += CarRadarSystem[slot][rsFine];//общая сумма штрафов
                if(GetPlayerWantedLevel(playerid) <= 5) SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1); //розыск за нарушение
                format(string, sizeof(string), "Вы получили штраф в размере $%d, за превышение скорость на %d км/ч", CarRadarSystem[slot][rsFine], GetVehicleSpeed(vehicleid)-CarRadarSystem[slot][rsSpeedLimit]);
                SendClientMessage(playerid, -1, string);
            }
            else if(GetPlayerWantedLevel(playerid) <= 5) //розыск за нарушение
            {
                SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1);
                SendClientMessage(playerid, -1, "Ва были объявлены в розыск за превышение скорости!");
            }
            CarRadarSystem[slot][rsTriggers] ++;//количество срабатываний
            mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET Triggers=%d,TotalFines=%d WHERE id=%d LIMIT 1", CarRadarSystem[slot][rsTriggers], CarRadarSystem[slot][rsTotalFines], CarRadarSystem[slot][rsRadarID]);
            mysql_tquery(MysqlConnectID, string);
        }
    }
    return 1;
}


Нужны плагины
Код:
MySQL R41-4
sscanf2
Streamer

Сам код
В самый верх мода
PHP:
#define MAX_RADAR 15// максимальное количество радаров

new RadarValue[MAX_PLAYERS][3], RadarValueLine[MAX_PLAYERS][20], RadarCheck[MAX_RADAR][6], Text3D:RadarText3D[MAX_RADAR], RadarMax;

В OnGameModeInit
Загружаем все радары
PHP:
mysql_tquery(/*тут используйте свою переменную mysql connect, у меня это: */MysqlConnectID, "SELECT * FROM radars", "OnRadarAll", "dd", 0, 0); //загружаем радары

В OnPlayerEnterDynamicArea
PHP:
if(areaid >= RadarCheck[0][4] && areaid <= RadarCheck[RadarMax-1][4] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
    new vehicleid = GetPlayerVehicleID(playerid), slot = -1, string[81];
    if(vehicleid <= 0) return 1;
    for(new x; x < RadarMax; x ++)//поиск нужного радара. Если у вас много радаров, и вы не желаете использовать цикл. Можете хранить ID радара в отдельной переменной.
    {
        if(areaid != RadarCheck[x][4]) continue;
        slot = x;
        break;
    }
    if(slot == -1 || RadarCheck[slot][0] == 0 || GetVehicleSpeed(vehicleid) < RadarCheck[slot][0]) return 1;

    if(GetPlayerMoney(playerid) > RadarCheck[slot][1])//вид штрафа.
    {
        GivePlayerMoney(playerid, -RadarCheck[slot][1]);
        RadarCheck[slot][3] += RadarCheck[slot][1];//общая сумма штрафов
        if(GetPlayerWantedLevel(playerid) <= 5) SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1); //розыск за нарушение

        format(string, sizeof(string), "Вы получили штраф в размере $%d, за превышение скорость на %d км/ч", RadarCheck[slot][1], GetVehicleSpeed(vehicleid)-RadarCheck[slot][0]);
        SendClientMessage(playerid, -1, string);
    }
    else if(GetPlayerWantedLevel(playerid) <= 5) //розыск за нарушение
    {
        SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1);
        SendClientMessage(playerid, -1, "Вам были объявлены в розыск за превышение скорости!");
    }

    RadarCheck[slot][2] ++;//количество срабатываний
    mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET Caught=%d,FineAll=%d WHERE id=%d", RadarCheck[slot][2], RadarCheck[slot][3], RadarCheck[slot][5]);
    mysql_tquery(MysqlConnectID, string);
}

В OnDialogResponse
PHP:
case 3102:
{
    if(!response) return 1;
    switch(listitem)
    {
        case 20:
        {
            if(RadarValue[playerid][1] >= 1 && RadarValue[playerid][1] == listitem+1 && RadarValue[playerid][0] >= 1)
            {
                RadarValue[playerid][0] --;
                RadarValue[playerid][1] = 0;
            }
            else RadarValue[playerid][0] ++;
            return OnRadarAll(playerid, 1, 0);
        }
        case 21:
        {
            if(RadarValue[playerid][0] <= 0) return 1;
            RadarValue[playerid][0] --;
            return OnRadarAll(playerid, 1, 0);
        }
        default:
        {
            if(RadarValue[playerid][1] >= 1 && RadarValue[playerid][1] == listitem+1 && RadarValue[playerid][0] >= 1)
            {
                RadarValue[playerid][0] --;
                RadarValue[playerid][1] = 0;
                return OnRadarAll(playerid, 1, 0);
            }
            RadarValue[playerid][2] = RadarValueLine[playerid][listitem];
            return ShowPlayerDialog(playerid, 3103, DIALOG_STYLE_LIST, "Действия", "- Информация о радаре\n- Изменить лимит скорости\n- Изменить штраф за превышение\n- Отметить местонахождение на карте", "Выбрать", "Назад");
        }
    }
    return 1;
}
case 3103:
{
    if(!response) return OnRadarAll(playerid, 1, 0);
    switch(listitem)
    {
        case 0:
        {
            new string[40+10];
            format(string, sizeof(string), "SELECT * FROM radars WHERE id=%d LIMIT 1", RadarValue[playerid][2]);
            return mysql_tquery(MysqlConnectID, string, "OnRadarAll", "dd", playerid, 3);
        }
        case 1: return ShowPlayerDialog(playerid, 3104, DIALOG_STYLE_INPUT, "Изменить лимит скорости", "{FFFFFF}Введите новый лимит скорости:\nДля отключение радара используйте число 0", "Дальше", "Назад");
        case 2: return ShowPlayerDialog(playerid, 3106, DIALOG_STYLE_INPUT, "Изменить штраф за превышение", "{FFFFFF}Введите новый штраф за превышение:", "Дальше", "Назад");
        case 3:
        {
            for(new x; x < RadarMax; x ++)
            {
                if(RadarValue[playerid][2] != RadarCheck[x][5]) continue;
                new Float:Pos[3];
                GetDynamicPos(STREAMER_TYPE_AREA, RadarCheck[x][4], Pos[0], Pos[1], Pos[2]);

                SetPlayerCheckpoint(playerid, Pos[0], Pos[1], Pos[2], 6.0);//Контрольная точка не отключается при достижении её. Обычно вы тут должны использовать свою систему GPS
                break;
            }
            return ShowPlayerDialog(playerid, 3107, DIALOG_STYLE_MSGBOX, "Отметить местонахождение на карте", "{FFFFFF}Местонахождение радара отмечено на карте.", "Назад", "Закрыть");
        }
    }
    return 1;
}
case 3104:
{
    if(!response) return ShowPlayerDialog(playerid, 3103, DIALOG_STYLE_LIST, "Действия", "- Информация о радаре\n- Изменить лимит скорости\n- Изменить штраф за превышение\n- Отметить местонахождение на карте", "Выбрать", "Назад");
    if(strval(inputtext) != 0 && (strval(inputtext) < 60 || strval(inputtext) > 200)) return ShowPlayerDialog(playerid, 3104, DIALOG_STYLE_INPUT, "Изменить лимит скорости", "{FFFFFF}Введите новый лимит скорости:\nДля отключение радара используйте число 0\n{FF0000}Лимит скорости от 60 до 200 км!", "Дальше", "Назад");

    for(new x; x < RadarMax; x ++)//обновление скорости
    {
        if(RadarValue[playerid][2] != RadarCheck[x][5]) continue;
        RadarCheck[x][0] = strval(inputtext);
        OnRadarAll(playerid, 4, x);//обновление 3DText
        break;
    }
    new string[65];
    mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET SpeedLimit=%d WHERE id=%d", strval(inputtext), RadarValue[playerid][2]);
    mysql_tquery(MysqlConnectID, string);

    format(string, sizeof(string), "{FFFFFF}Вы изменили лимит скорости на {00FF00}%d {FFFFFF}км", strval(inputtext));
    return ShowPlayerDialog(playerid, 3105, DIALOG_STYLE_MSGBOX, "Изменить лимит скорости", string, "Назад", "Закрыть");
}
case 3105:
{
    if(!response) return 1;
    return OnRadarAll(playerid, 1, 0);
}
case 3106:
{
    if(!response) return ShowPlayerDialog(playerid, 3103, DIALOG_STYLE_LIST, "Действия", "- Информация о радаре\n- Изменить лимит скорости\n- Изменить штраф за превышение\n- Отметить местонахождение на карте", "Выбрать", "Назад");
    if(strval(inputtext) < 100 || strval(inputtext) > 3000) return ShowPlayerDialog(playerid, 3106, DIALOG_STYLE_INPUT, "Изменить штраф за превышение", "{FFFFFF}Введите новый штраф за превышение:\n{FF0000}Максимальный штраф от $100 до $3 000!", "Дальше", "Назад");

    for(new x; x < RadarMax; x ++)//обновление цены штрафа
    {
        if(RadarValue[playerid][2] != RadarCheck[x][5]) continue;
        RadarCheck[x][1] = strval(inputtext);
        OnRadarAll(playerid, 4, x);//обновление 3DText
        break;
    }
    new string[63+10];
    mysql_format(MysqlConnectID, string, sizeof(string), "UPDATE radars SET Fine=%d WHERE id=%d", strval(inputtext), RadarValue[playerid][2]);
    mysql_tquery(MysqlConnectID, string);

    format(string, sizeof(string), "{FFFFFF}Вы изменили штраф за превышение скорости на {00FF00}$%d", strval(inputtext));
    return ShowPlayerDialog(playerid, 3105, DIALOG_STYLE_MSGBOX, "Изменить штраф за превышение", string, "Назад", "Закрыть");
}
case 3107:
{
    if(!response) return 1;
    return ShowPlayerDialog(playerid, 3103, DIALOG_STYLE_LIST, "Действия", "- Информация о радаре\n- Изменить лимит скорости\n- Изменить штраф за превышение\n- Отметить местонахождение на карте", "Выбрать", "Назад");        
}

В самый конец мода добавляем public
PHP:
forward OnRadarAll(playerid, line, line2);
public OnRadarAll(playerid, line, line2)
{
    new rows, slot[6];
    switch(line)
    {
        case 0://загрузка
        {    
            cache_get_row_count(rows);
            if(!rows) return print("Радары не загружены!");
            new Float:Pos[6], string[100], Range;
            for(new x; x < rows; x ++)
            {
                if(RadarMax >= MAX_RADAR)
                {
                    print(">> MAX_RADAR!!");
                    break;
                }
                cache_get_value_name_int(x, "id", RadarCheck[RadarMax][5]);
                cache_get_value_name(x, "Pos", string);
                sscanf(string, "p<,>a<f>[6]", Pos);
                cache_get_value_name_int(x, "Range", Range);
                cache_get_value_name_int(x, "SpeedLimit", RadarCheck[RadarMax][0]);
                cache_get_value_name_int(x, "Fine", RadarCheck[RadarMax][1]);
                cache_get_value_name_int(x, "Caught", RadarCheck[RadarMax][2]);
                cache_get_value_name_int(x, "FineAll", RadarCheck[RadarMax][3]);

                RadarCheck[RadarMax][4] = CreateDynamicSphere(Pos[0], Pos[1], Pos[2], float(Range), 0, 0);
                CreateDynamicObject(18880, Pos[0], Pos[1], Pos[2],  Pos[3], Pos[4], Pos[5], 0, 0, -1, 250.0, 250.0);
                if(RadarCheck[RadarMax][0] == 0) format(string, sizeof(string), "Радар скорости {00FF00}№%i{FF0000}\nОтключен", RadarMax+1);
                else format(string, sizeof(string), "Радар скорости {00FF00}№%i{FFFFFF}\nМаксимальная скорость: {00FF00}%d (км/ч)", RadarMax+1, RadarCheck[RadarMax][0]);
                RadarText3D[RadarMax] = CreateDynamic3DTextLabel(string, -1, Pos[0], Pos[1], Pos[2]+6.0, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, 0, -1, 15.0);
                RadarMax ++;
            }
            return printf("-> Загружено %d радаров", RadarMax);
        }
        case 1://показ списка
        {
            new string[49+20];
            if(line2 == 1)//первый показ с обнулением
            {
                RadarValue[playerid][0] = 0;
                RadarValue[playerid][1] = 0;
            }
            format(string, sizeof(string), "SELECT id,SpeedLimit,Fine FROM radars LIMIT %d,%d", 20*RadarValue[playerid][0], 20*RadarValue[playerid][0]+21);
            return mysql_tquery(MysqlConnectID, string, "OnRadarAll", "dd", playerid, 2);
        }
        case 2:
        {
            cache_get_row_count(rows);
            if(!rows) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Список радаров", "{FFFFFF}Радар не найден!", "Закрыть", "");
            new string[50*20 +39+50];
            strcat(string, "{FFFFFF}Номер\t{FFFFFF}Скорость\t{FFFFFF}Штраф\t\n");
            for(new x; x < rows; x ++)
            {
                slot[0] ++;
                if(slot[0] <= 20)
                {
                    if(x >= rows)
                    {
                        if(RadarValue[playerid][0] >= 1)
                        {
                            slot[1] = 1;
                            strcat(string, "< Назад\n");
                            RadarValue[playerid][1] = slot[0]+1;
                        }
                        break;
                    }
                    cache_get_value_name_int(x, "id", slot[2]);
                    cache_get_value_name_int(x, "SpeedLimit", slot[3]);
                    cache_get_value_name_int(x, "Fine", slot[4]);

                    if(slot[3] == 0) format(string, sizeof(string), "%s- Радар %d\t{f44747}Отключен\t$%d\n", string, slot[0], slot[4]);
                    else format(string, sizeof(string), "%s- Радар %d\t%d\t$%d\n", string, slot[0], slot[3], slot[4]);
                    RadarValueLine[playerid][slot[0]-1] = slot[2];
                }
                else
                {
                    slot[1] = 1;
                    if(RadarValue[playerid][0] >= 1) strcat(string, "> Дальше\n< Назад");
                    else strcat(string, "> Дальше\n");
                    break;
                }
            }
            if(slot[0] == 0) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Список радаров", "{FFFFFF}Радар не найден!", "Закрыть", "");
            if(RadarValue[playerid][0] >= 1 && slot[1] == 0)
            {
                strcat(string, "< Назад\n");
                RadarValue[playerid][1] = slot[0]+1;
            }
            return ShowPlayerDialog(playerid, 3102, DIALOG_STYLE_TABLIST_HEADERS, "Список радаров", string, "Выбрать", "Назад");
        }
        case 3:
        {
            cache_get_row_count(rows);
            if(!rows) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Информация о радаре", "{FFFFFF}Радар не найден!", "Закрыть", "");
            new string[201];
            cache_get_value_name_int(0, "id", slot[0]);
            cache_get_value_name_int(0, "Range", slot[1]);
            cache_get_value_name_int(0, "SpeedLimit", slot[2]);
            cache_get_value_name_int(0, "Fine", slot[3]);
            cache_get_value_name_int(0, "Caught", slot[4]);
            cache_get_value_name_int(0, "FineAll", slot[5]);

            format(string, sizeof(string),
            "{FFFFFF}Номер радара\t\t%d\n\
            Радиус действия\t%d метров\n\
            Лимит скорости\t%d\n\
            Штраф за превышения\t$%d\n\
            Сработал\t\t%d раз(a)\n\
            Общяя сумма штрафов\t$%d",
            slot[0], slot[1], slot[2], slot[3], slot[4], slot[5]);
            return ShowPlayerDialog(playerid, 3107, DIALOG_STYLE_MSGBOX, "Информация о радаре", string, "Назад", "Закрыть");
        }
        case 4://обновление 3dText
        {
            new string[82];
            if(RadarCheck[line2][0] == 0) format(string, sizeof(string), "Радар скорости {00FF00}№%i{FF0000}\nОтключен", line2+1);
            else format(string, sizeof(string), "Радар скорости {00FF00}№%i{FFFFFF}\nМаксимальная скорость: {00FF00}%d (км/ч)", line2+1, RadarCheck[line2][0]);
            return UpdateDynamic3DTextLabelText(RadarText3D[line2], -1, string);
        }
    }
    return 1;
}

И последние 2 stock тоже в конец
PHP:
stock GetDynamicPos(type, id, &Float:x, &Float:y, &Float:z)
{
    Streamer_GetFloatData(type, id, E_STREAMER_X, x);
    Streamer_GetFloatData(type, id, E_STREAMER_Y, y);
    return Streamer_GetFloatData(type, id, E_STREAMER_Z, z);
}
stock GetVehicleSpeed(vehicleid)
{
    if(vehicleid <= 0) return 0;
    new Float:Pos[3];
    GetVehicleVelocity(vehicleid, Pos[0], Pos[1], Pos[2]);
    return floatround(floatsqroot(((Pos[0]*Pos[0])+(Pos[1]*Pos[1]))+(Pos[2]*Pos[2]))*180.0);
}

Для отображение списка, используйте вызов паблика со следующими значениями:
PHP:
OnRadarAll(playerid, 1, 1);


Необязательная команда для телепорта по радарам
PHP:
CMD:tpradar(playerid, params[])// Pawn.CMD
{
    if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "/tpradar [id радара]");
    if(params[0] < 1 || params[0] > RadarMax) return SendClientMessage(playerid, -1, "Неверный ID радара! от 1 ++");
    new Float:Pos[3];
    GetDynamicPos(STREAMER_TYPE_AREA, RadarCheck[params[0]-1][4], Pos[0], Pos[1], Pos[2]);

    return SetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
}

Таблица MySQL
PHP:
CREATE TABLE `radars` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `Pos` varchar(80) NOT NULL COMMENT 'x, y, z,  rx, ry, rz',
  `Range` int(2) NOT NULL DEFAULT '20' COMMENT 'радиус действия',
  `SpeedLimit` int(3) NOT NULL DEFAULT '105' COMMENT 'лимит скорости',
  `Fine` int(10) NOT NULL DEFAULT '100' COMMENT 'сумма штрафа',
  `Caught` int(10) NOT NULL DEFAULT '0' COMMENT 'Общие количество нарушений',
  `FineAll` int(10) NOT NULL DEFAULT '0' COMMENT 'Общяя сумма штрафов',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

Готово!

Готовый GameMode для теста:
Таблица:

Автор: Bren


Автор: Bren
 

Вложения

Последнее редактирование:
Сверху Снизу