SA:MP Arizona Аризона рп | lua | админ тулс

unToxa

Новичок
Автор темы
6
1
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R3
  3. Другая
На просторах какого-то форума откопал код. Может, кто-нибудь взглянуть на него и сказать, рабочий ли он?
код:
#include <a_samp>

// Константы для уровней администраторов
#define ADMIN_LEVEL_NONE 0
#define ADMIN_LEVEL_BASIC 1
#define ADMIN_LEVEL_MODERATOR 2
#define ADMIN_LEVEL_ADMIN 3
#define ADMIN_LEVEL_SUPER_ADMIN 4

// Массив для хранения уровней администраторов
new gAdminLevel[MAX_PLAYERS];

// Инициализация уровней администраторов
public OnPlayerConnect(playerid)
{
    gAdminLevel[playerid] = ADMIN_LEVEL_NONE;
    return 1;
}

// Управление игроками
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!strcmp(cmdtext, "/kick", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[6]);
            if (targetid != INVALID_PLAYER_ID)
            {
                Kick(targetid);
                SendClientMessage(playerid, -1, "Игрок успешно кикнут.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/ban", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_ADMIN)
        {
            new targetid = GetPlayerIdFromName(cmdtext[5]);
            if (targetid != INVALID_PLAYER_ID)
            {
                Ban(targetid);
                SendClientMessage(playerid, -1, "Игрок успешно забанен.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/mute", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[6]);
            if (targetid != INVALID_PLAYER_ID)
            {
                TogglePlayerSpectator(targetid, 1);
                SendClientMessage(playerid, -1, "Игрок успешно замучен.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/unmute", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[8]);
            if (targetid != INVALID_PLAYER_ID)
            {
                TogglePlayerSpectator(targetid, 0);
                SendClientMessage(playerid, -1, "Игрок успешно размучен.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/tp", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[4]);
            if (targetid != INVALID_PLAYER_ID)
            {
                new Float:x, Float:y, Float:z;
                GetPlayerPos(playerid, x, y, z);
                SetPlayerPos(targetid, x, y, z);
                SendClientMessage(playerid, -1, "Вы телепортировали игрока.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/tphere", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[8]);
            if (targetid != INVALID_PLAYER_ID)
            {
                new Float:x, Float:y, Float:z;
                GetPlayerPos(targetid, x, y, z);
                SetPlayerPos(playerid, x, y, z);
                SendClientMessage(playerid, -1, "Вы телепортировались к игроку.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/pm", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_BASIC)
        {
            new targetid = GetPlayerIdFromName(cmdtext[4]);
            if (targetid != INVALID_PLAYER_ID)
            {
                new message[128];
                GetCmdParams(cmdtext, 4, message, sizeof(message));
                SendClientMessage(targetid, -1, message);
                SendClientMessage(playerid, -1, "Сообщение отправлено.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/announce", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_ADMIN)
        {
            new message[128];
            GetCmdParams(cmdtext, 9, message, sizeof(message));
            SendClientMessageToAll(-1, message);
            SendClientMessage(playerid, -1, "Объявление сделано.");
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    return 0;
}
 

Black_Cow

Активный
197
68
На просторах какого-то форума откопал код. Может, кто-нибудь взглянуть на него и сказать, рабочий ли он?
код:
#include <a_samp>

// Константы для уровней администраторов
#define ADMIN_LEVEL_NONE 0
#define ADMIN_LEVEL_BASIC 1
#define ADMIN_LEVEL_MODERATOR 2
#define ADMIN_LEVEL_ADMIN 3
#define ADMIN_LEVEL_SUPER_ADMIN 4

// Массив для хранения уровней администраторов
new gAdminLevel[MAX_PLAYERS];

// Инициализация уровней администраторов
public OnPlayerConnect(playerid)
{
    gAdminLevel[playerid] = ADMIN_LEVEL_NONE;
    return 1;
}

// Управление игроками
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!strcmp(cmdtext, "/kick", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[6]);
            if (targetid != INVALID_PLAYER_ID)
            {
                Kick(targetid);
                SendClientMessage(playerid, -1, "Игрок успешно кикнут.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/ban", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_ADMIN)
        {
            new targetid = GetPlayerIdFromName(cmdtext[5]);
            if (targetid != INVALID_PLAYER_ID)
            {
                Ban(targetid);
                SendClientMessage(playerid, -1, "Игрок успешно забанен.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/mute", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[6]);
            if (targetid != INVALID_PLAYER_ID)
            {
                TogglePlayerSpectator(targetid, 1);
                SendClientMessage(playerid, -1, "Игрок успешно замучен.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/unmute", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[8]);
            if (targetid != INVALID_PLAYER_ID)
            {
                TogglePlayerSpectator(targetid, 0);
                SendClientMessage(playerid, -1, "Игрок успешно размучен.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/tp", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[4]);
            if (targetid != INVALID_PLAYER_ID)
            {
                new Float:x, Float:y, Float:z;
                GetPlayerPos(playerid, x, y, z);
                SetPlayerPos(targetid, x, y, z);
                SendClientMessage(playerid, -1, "Вы телепортировали игрока.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/tphere", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_MODERATOR)
        {
            new targetid = GetPlayerIdFromName(cmdtext[8]);
            if (targetid != INVALID_PLAYER_ID)
            {
                new Float:x, Float:y, Float:z;
                GetPlayerPos(targetid, x, y, z);
                SetPlayerPos(playerid, x, y, z);
                SendClientMessage(playerid, -1, "Вы телепортировались к игроку.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/pm", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_BASIC)
        {
            new targetid = GetPlayerIdFromName(cmdtext[4]);
            if (targetid != INVALID_PLAYER_ID)
            {
                new message[128];
                GetCmdParams(cmdtext, 4, message, sizeof(message));
                SendClientMessage(targetid, -1, message);
                SendClientMessage(playerid, -1, "Сообщение отправлено.");
            }
            else
            {
                SendClientMessage(playerid, -1, "Игрок не найден.");
            }
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    if (!strcmp(cmdtext, "/announce", true))
    {
        if (gAdminLevel[playerid] >= ADMIN_LEVEL_ADMIN)
        {
            new message[128];
            GetCmdParams(cmdtext, 9, message, sizeof(message));
            SendClientMessageToAll(-1, message);
            SendClientMessage(playerid, -1, "Объявление сделано.");
        }
        else
        {
            SendClientMessage(playerid, -1, "У вас недостаточно прав для этой команды.");
        }
        return 1;
    }

    return 0;
}
Это павн а не луа, скрипт написан с помощью ИИ, команды с аргументами (/kick,/ban,/pm и т.д.) работать не будут, так как вызовы написаны неправильно. Пример как правильно писать вызов с аргументом
pawn:
GetPlayerIdFromName(cmdtext + 6)
А в скрипте написано
pawn:
GetPlayerIdFromName(cmdtext[6])

Да и ваще там довольно таки много ошибок, есть выдуманные функции и т.д. Так что скрипт если скомпилировать работать не будет.