Creating a normal admin script

From SA-MP Wiki

Jump to: navigation, search

Contents

Before starting

With this tutorial, you will be able to create an administration filterscript without any includes required!

First, start Pawno>File>New. Delete everything in there. Then add this at the top of your script:

#include <a_samp>

This will include the SA-MP library with the normal natives and callbacks.

Defining the Admin functions

In order to make this script, you'll need to define variables to make the script. Add this anywhere at the top, but below the a_samp include (always do so when defining anything):

enum Info
{
   AdminLevel,
}
new PlayerInfo[MAX_PLAYERS][Info];

The reason why it's enum is because you will need this when the Login system tutorial is finished. PlayerInfo is the variable you're defining.

Making an admin command

Now, I will show you how to make a command that will make you admin. Add the following to the OnPlayerCommandText callback.

new cmd[256], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/makeadmin", true) == 0)
{
       new string[128];
       new tmp[256];
       new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
       new giveplayerid;
       if (IsPlayerAdmin(playerid))
       {
               tmp = strtok(cmdtext, idx);
               if(!strlen(tmp))
               {
                       SendClientMessage(playerid, ORANGE, "USAGE: /makeadmin [playerid] [level]");
                       SendClientMessage(playerid, ORANGE, "FUNCTION: Player will be an admin.");
                       return 1;
               }
               giveplayerid = ReturnUser(tmp);
               tmp = strtok(cmdtext, idx);
               new level = strval(tmp);
               if(giveplayerid != INVALID_PLAYER_ID)
               {
                       GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                       GetPlayerName(playerid, player, sizeof(player));
                       PlayerInfo[giveplayerid][AdminLevel] = level;
                       printf("Admin %s made %s a level %d admin.", player, giveplayer, level);
                       format(string, sizeof(string), "You are now an administrator level %d thanks to %s.", level,  player);
                       SendClientMessage(giveplayerid, 0x00C2ECFF, string);
                       format(string, sizeof(string), "You have given %s level %d admin.",  giveplayer,PlayerInfo[giveplayerid][AdminLevel]);
                               SendClientMessage(playerid, 0x00C2ECFF, string);
               }
               else if(giveplayerid == INVALID_PLAYER_ID)
               {
                       format(string, sizeof(string), "%i is not an active player.", giveplayerid);
                       SendClientMessage(playerid, 0xE60000FF, string);
               }
       }
       else
       {
           SendClientMessage(playerid, 0xE60000FF, "You are not a lead admin!");
       }
       return 1;
}

Usage: /makeadmin playerid level This will make the player an admin with the level you entered. NOTE: This requires ReturnUser, strtok and IsNumeric

Final Touch

Now to end this tutorial, we need to make sure that when a player connects, he doesn't get any admin level!

OnPlayerConnect(playerid)
{
    PlayerInfo[playerid][AdminLevel] = 0;
    return 1;
}

You made an admin filterscript! Now all you need to do is create more commands. ;)

Personal tools