Jump to content

[Pawno] - Comanda /makeadmin


KeNNyAdv
 Share

Recommended Posts

In acest topic, voi explica pas cu pas cum se face comanda de makeadmin.

1. Creem 1 enum, in care datele vor fi stocate.

enum PlayerInfo
{
    pAdmin
} // ATENTIE: Dupa fiecare enum creat, va trebui sa aveti " , " pentru a functiona.
2. Creem o variabila globala in care nivelul de admin este definit si alte enum-uri vor fi definite.
new Player[MAX_PLAYERS][PlayerInfo];
[MAX_PLAYERS] vine de la numarul maxim de playeri - cand va fi folosit pentru 1 player, acesta va fi transformat in [playerid]. [PlayerInfo] vine de la enum-ul pe care l-am creat.
3. Creem comanda.
CMD:makeadmin(playerid, params[]) // zcmd
{
if(!IsPlayerAdmin(playerid)) // Daca jucatorul nu este RCON admin nu va putea folosi aceasta comanda.
return SendClientMessage(playerid, ADMIN_COLOR, ADMIN_MESSAGE); // Trimite un mesaj cu "Nu ai permisiune de-a folosi aceasta comanda."
 
    new para1, level; // creem 2 variabile: para1 ( pentru jucatorul care va primi nivelul de admin) si level, unde nivelul de admin va fi stocat.
    if (sscanf(params, "ui", para1, level)) return SendClientMessage(playerid, -1, "{00E6FF}USAGE:{FFFFFF} /makeadmin [PlayerID/PartOfName] [level(0-1338)]"); // daca comanda este scrisa in chat, va primi mesajul cu SYNTAX.
    if (para1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Invalid player"); // Daca jucatorul 2 (para1) nu este conectat sau este un ID invalid, playerid-ul va primi un mesaj cu "Jucator invalid".
    if (!(0 <= level <= 1340)) return SendClientMessage(playerid, -1, "Invalid level. It must be between 0 and 1340"); // daca nivelul nu este intre 0-1340 sau egal cu acele 2, un mesaj va fi trimis catre client.  
if(level >= 6 && level <= 1336) return SCM(pid, -1, "You cannot do this!"); // daca nivelul este intre 6-1336 si egal cu acele 2 va trimite un mesaj clientului cu "nu poti face asta".
 
    new giveplayer[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME], string[144]; // 3 string-uri, giveplayer, sendername si string
 
    GetPlayerName(para1, giveplayer, sizeof(giveplayer)); // definim numele jucatorului 2 ( para1 ) ca "giveplayer".
    GetPlayerName(playerid, sendername, sizeof(sendername)); // definim numele playerid-ului ca "sendername".
 
Player[para1][pAdmin] = level; // stocam nivelul de admin al jucatorului 2 in level (ATENTIE: para1 in loc de playerid, daca puneti playerid, nivelul va fi pus pe playerid ( cel care da admin ) )
 
    printf("AdmWarning: %s has set %s to a level %d admin.", sendername, giveplayer, level); // mesaj in consola cu " sendername a dat lui giveplayer admin de level %d" , %s vine de la string, si %d de la integre. sendername, giveplayer si level trebuie puse la sfarsit pentru a afisa mesajul cu succes.
    format(string, sizeof(string), " Your admin level has been set to %d by administrator %s. Use /ah for help.", level, sendername); // formatam stringurile cum esaje
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "{D11515}[AdmWarning]: {CC00FF}%s {FFFFFF}has set {CC00FF}%s {FFFFFF}to a level {CC00FF}%d {FFFFFF}admin.", sendername, giveplayer, level);
SendAdminMessage(-1, string); 
format(string, sizeof(string), " You have set %s's admin level to %d. ", giveplayer, level);
SendClientMessage(pid, COLOR_LIGHTBLUE, string);
return 1;
}

ADMIN_MESSAGE, ADMIN_COLOR vor fi definite de catre voi - sunt pe preferinta mea.

SCM = SendClientMessage

 

Link to comment
Share on other sites

S-au strecurat cateva greseli, probabil o sa va dea cateva erori la compliare asa ca va voi ajuta eu. Deci nu s-a creat functia SendAdminMessage.

 

~Apasati butonul SPOILER~ Functia SendAdminMessage, daca aveti include-ul numit foreach.inc atuncti nu mai scrieti acel for si scrieti "foreach(Player, i)"

 

 

stock SendAdminMessage(Color, Message[])
{
     for(new i=0; i < MAX_PLAYERS; i++)
     {
          if(Player[i][pAdmin] >= 1)
          {
               SendClientMessage(i, Color, Message[]);
          }
     }
     return 1;
}

 

 

Include-uri & Define-uri pe care le puneti la inceputul scriptului

 

 

#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define ADMIN_MESSAGE "Error: Nu esti un admin pentru a face acest lucru." #define ADMIN_COLOR {FFFFFF}

 

 

 

In rest nu am testat-o dar ma voi uita peste ea cand voi ajunge acasa, daca aveti nelamuriri PM mie sau lui DreQusor.

Link to comment
Share on other sites

 

In acest topic, voi explica pas cu pas cum se face comanda de makeadmin.

1. Creem 1 enum, in care datele vor fi stocate.

enum PlayerInfo
{
    pAdmin
} // ATENTIE: Dupa fiecare enum creat, va trebui sa aveti " , " pentru a functiona.
2. Creem o variabila globala in care nivelul de admin este definit si alte enum-uri vor fi definite.
new Player[MAX_PLAYERS][PlayerInfo];
[MAX_PLAYERS] vine de la numarul maxim de playeri - cand va fi folosit pentru 1 player, acesta va fi transformat in [playerid]. [PlayerInfo] vine de la enum-ul pe care l-am creat.
3. Creem comanda.
CMD:makeadmin(playerid, params[]) // zcmd
{
if(!IsPlayerAdmin(playerid)) // Daca jucatorul nu este RCON admin nu va putea folosi aceasta comanda.
return SendClientMessage(playerid, ADMIN_COLOR, ADMIN_MESSAGE); // Trimite un mesaj cu "Nu ai permisiune de-a folosi aceasta comanda."
 
    new para1, level; // creem 2 variabile: para1 ( pentru jucatorul care va primi nivelul de admin) si level, unde nivelul de admin va fi stocat.
    if (sscanf(params, "ui", para1, level)) return SendClientMessage(playerid, -1, "{00E6FF}USAGE:{FFFFFF} /makeadmin [PlayerID/PartOfName] [level(0-1338)]"); // daca comanda este scrisa in chat, va primi mesajul cu SYNTAX.
    if (para1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Invalid player"); // Daca jucatorul 2 (para1) nu este conectat sau este un ID invalid, playerid-ul va primi un mesaj cu "Jucator invalid".
    if (!(0 <= level <= 1340)) return SendClientMessage(playerid, -1, "Invalid level. It must be between 0 and 1340"); // daca nivelul nu este intre 0-1340 sau egal cu acele 2, un mesaj va fi trimis catre client.  
if(level >= 6 && level <= 1336) return SCM(pid, -1, "You cannot do this!"); // daca nivelul este intre 6-1336 si egal cu acele 2 va trimite un mesaj clientului cu "nu poti face asta".
 
    new giveplayer[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME], string[144]; // 3 string-uri, giveplayer, sendername si string
 
    GetPlayerName(para1, giveplayer, sizeof(giveplayer)); // definim numele jucatorului 2 ( para1 ) ca "giveplayer".
    GetPlayerName(playerid, sendername, sizeof(sendername)); // definim numele playerid-ului ca "sendername".
 
Player[para1][pAdmin] = level; // stocam nivelul de admin al jucatorului 2 in level (ATENTIE: para1 in loc de playerid, daca puneti playerid, nivelul va fi pus pe playerid ( cel care da admin ) )
 
    printf("AdmWarning: %s has set %s to a level %d admin.", sendername, giveplayer, level); // mesaj in consola cu " sendername a dat lui giveplayer admin de level %d" , %s vine de la string, si %d de la integre. sendername, giveplayer si level trebuie puse la sfarsit pentru a afisa mesajul cu succes.
    format(string, sizeof(string), " Your admin level has been set to %d by administrator %s. Use /ah for help.", level, sendername); // formatam stringurile cum esaje
SendClientMessage(para1, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "{D11515}[AdmWarning]: {CC00FF}%s {FFFFFF}has set {CC00FF}%s {FFFFFF}to a level {CC00FF}%d {FFFFFF}admin.", sendername, giveplayer, level);
SendAdminMessage(-1, string); 
format(string, sizeof(string), " You have set %s's admin level to %d. ", giveplayer, level);
SendClientMessage(pid, COLOR_LIGHTBLUE, string);
return 1;
}

ADMIN_MESSAGE, ADMIN_COLOR vor fi definite de catre voi - sunt pe preferinta mea.

SCM = SendClientMessage

 

 

E bun, dar puteai sa faci un tutorial putin mai avansat si sa stochezi acel enum in MySql. Era mai util pentru incepatori.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.