[Pawn] Admin Script
#1

Could somone give me a tutorial on how to make a player an admin and then make players able to /report to admins for help. the script I have now isnt working -


// report command///////////////////////////////////////////////////////
dcmd_report(playerid, params[])
{
static pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME], str[128], reason, iD;
if (sscanf(params, "ds", iD, reason)) return SendClientMessage(playerid, 0xAA3333AA, "Usage: /report [id] [reason]");
if (iD == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xAA3333AA, "Invalid ID.");
if (playerid == iD) return SendClientMessage(playerid, 0xAA3333AA, "You can't report yourself.");
GetPlayerName(playerid, pName, sizeof(pName));
GetPlayerName(iD, aName, sizeof(aName));
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
new zName[MAX_PLAYER_NAME], file[128];
GetPlayerName(i, zName, sizeof(zName));
format(file, sizeof(file), "Users\%s.ini", zName);
if (IsPlayerAdmin(i) || dini_Int(file, "AdminLevel") >= 1)
{
format(str, sizeof(str), "%s(%d) has reported %s(%d) for: %s", pName, playerid, aName, iD, reason);
SendClientMessage(i, 0xFFFFFFFF, str);
}
}
}
return 1;
}
///////////////////////////////////////////////////////////////////////////
// make admin command///////////////////////////////////////////////////
dcmd_setadmin(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
new file[128];
static ID, adminLevel;
if (sscanf(params, "ii", ID, adminLevel)) return SendClientMessage(playerid, 0xAA3333AA, "Usage: /setadmin [id] [level 1-3]");
if (adminLevel > 3) return adminLevel = 3;
dini_IntSet(file, "AdminLevel", adminLevel);
return 1;
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "You do not have sufficient permissions to use this command.");
return 0;
}

}
Reply
#2

you have scriptfiles/users ?
Reply
#3

yeah
Reply
#4

Can you Edit your Post to with [/CODE] Tags,

Cheers

Ezay

\o/
Reply
#5

never mind guys ill just use rcon admin
Reply
#6

if you need a admin system.. then visit:
https://sampforum.blast.hk/showthread.php?tid=120724 - Lux Admin by lukurion
https://sampforum.blast.hk/showthread.php?tid=19819p - Ladmin4v2 by lethal

Some of the best admin systems..
Reply
#7

Put is in top in you script
pawn Код:
new iAdmin[MAX_PLAYERS char];
#define SetAdmin(%0,%2)                     iAdmin{%0} = %2
#define IsAdminLevel(%0)                    iAdmin{%0}
#define IsAdmin(%0)                         IsAdminLevel(%0) != 0
#define ResetAdmin(%0)                      iAdmin{%0} = 0
Put is in finale of script
pawn Код:
/* Stock's Functions */
stock GetNick(p)
{
    static
        Nom[24]
    ;
    GetPlayerName(p, Nom, 24);
    return Nom;
}


The Commands!
pawn Код:
dcmd_report(playerid, params[])
{
    static pid, reason[32];
   
    if(sscanf(params, "us", pid, reason))
        return SendClientMessage(playerid, 0xAA3333AA, "Usage: /report [id] [reason]");


    if(!IsPlayerConnected(pid) || playerid == pid || pid < 0 || strlen(reason) < 3)
        return SendClientMessage(playerid, 0xAA3333AA, "Invalid use, Try again.");
       
    new
        str[128]
    ;
   
    for(new i, e = GetMaxPlayers(); i != e; ++i){
        if(IsPlayerConnected(i) && IsAdmin(i)){
            format(str, sizeof(str), "%s(%d) has reported %s(%d) for: %s", GetNick(playerid), playerid, GetNick(pid), pid, reason);
            SendClientMessage(i, -1, str);
         }
    }
    return true;
}


dcmd_setadmin(playerid, params[])
{
    if(IsAdminLevel(playerid) < 5)
        return SendClientMessage(playerid, 0xAA3333AA, "You no have permission");


    static
        id,
        level
    ;
   
   
    if(sscanf(params, "ui", id, level))
        return SendClientMessage(playerid, 0xAA3333AA, "Usage: /setadmin [id] [level]");

    if(!IsPlayerConnected(id) || id < 0 || level < 0)
        return SendClientMessage(playerid, 0xAA3333AA, "Invalid use, Try again.");
       
       

    new
        str[128]
    ;
   
   
    SetAdmin(id, level);
   
    format(str, sizeof(str),"%s(%d) has seted you level to %d", GetNick(playerid), playerid, level); SendClientMessage(id, -1, str);
    format(str, sizeof(str),"You setted level of %s(%d) to %d", GetNick(id), id, level); SendClientMessage(playerid, -1, str);
    return true;
}
Using the new funcions
pawn Код:
// Reset player admin (put is in OnPlayerConnect or OnPlayerDisconnect)
    ResetAdmin(playerid);


    // Set Player admin
    SetAdmin(playerid, 5);


    // check's player admin
    if(IsAdmin(playerid))
    {
        print("IsAdmin");
    }

    // check player has 4 level admin
    if(IsAdminLevel(playerid) == 4)
    {
        printf("Her has 4 level is admin");
    }

Credits: DarkScripter.
Reply
#8

Here did it for you as this is really annoying lol.

pawn Код:
// report command///////////////////////////////////////////////////////
dcmd_report(playerid, params[])
{
static pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME], str[128], reason, iD;
if (sscanf(params, "ds", iD, reason)) return SendClientMessage(playerid, 0xAA3333AA, "Usage: /report [id] [reason]");
if (iD == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xAA3333AA, "Invalid ID.");
if (playerid == iD) return SendClientMessage(playerid, 0xAA3333AA, "You can't report yourself.");
GetPlayerName(playerid, pName, sizeof(pName));
GetPlayerName(iD, aName, sizeof(aName));
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
new zName[MAX_PLAYER_NAME], file[128];
GetPlayerName(i, zName, sizeof(zName));
format(file, sizeof(file), "Users\%s.ini", zName);
if (IsPlayerAdmin(i) || dini_Int(file, "AdminLevel") >= 1)
{
format(str, sizeof(str), "%s(%d) has reported %s(%d) for: %s", pName, playerid, aName, iD, reason);
SendClientMessage(i, 0xFFFFFFFF, str);
}
}
}
return 1;
}
///////////////////////////////////////////////////////////////////////////
// make admin command///////////////////////////////////////////////////
dcmd_setadmin(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
new file[128];
static ID, adminLevel;
if (sscanf(params, "ii", ID, adminLevel)) return SendClientMessage(playerid, 0xAA3333AA, "Usage: /setadmin [id] [level 1-3]");
if (adminLevel > 3) return adminLevel = 3;
dini_IntSet(file, "AdminLevel", adminLevel);
return 1;
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "You do not have sufficient permissions to use this command.");
return 0;
}

}
Reply
#9

@ViruZz

Cheers .

Its Pretty Annoying xD

@Darkscripter

Nice
Reply
#10

thanks guys
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)