[Guía] Crear un sistema de administración básico.

Aprende lo que no sabes de este lenguaje y encuentra herramientas y códigos útiles.

Moderador: Ayudantes

Reglas del Foro
  • Si tu código es corto, no crees un tema nuevo para liberarlo, publica un mensaje en el tema [Funciones] ¡Publica tu código aquí!.
  • Si creas una guía, debes explicar el código claramente. Evita poner la explicación en forma de comentarios dentro del mismo y no olvides utilizar el BBCode correspondiente: [Pawn]Código aquí[/Pawn].
  • No postear códigos sin probar. Publicar códigos con errores (que impidan compilar el script para el cual está destinado) en este apartado es motivo de sanción.
  • Si tu código necesita plugins, includes u otros códigos adicionales para funcionar, debes mencionarlo en el mensaje.
  • Si has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
  • Si tu aporte es para un GameMode en específico, debes publicar el tema en el apartado "Guías y Aportes para GameModes específicos".
Responder
Avatar de Usuario
gless
Avanzado
Avanzado
Mensajes: 448
Registrado: 22 Oct 2017 04:10
Ubicación: Soy de una casa versátil.
Reputación: 28

06 Dic 2017 14:12

Hola Invitado En está guía, aprenderemos a crear un sistema de administración básico sin usar librerias.. (Solo la de a_samp por supuesto).. continuemos.. -hi



Esto incluirá la biblioteca SA-MP con nativos normales y devoluciones de llamada:
 Codigo Pawno:
1

#include <a_samp>
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

Ahora, definiremos las funciones de el administrador.
Para hacer esto, necesitará definir variables para hacer el script. Agregue esto en cualquier lugar en la parte superior, pero debajo de a_samp(siempre hágalo cuando defina algo):
 Codigo Pawno:
1
2
3
4
5

enum Info
{
   NivelAdmin,
}
new PlayerInfo[MAX_PLAYERS][Info];
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 5
El motivo por el que está enum es porque lo necesitará cuando finalice el tutorial del sistema de inicio de sesión. PlayerInfo es la variable que estás definiendo.


Ahora haremos un comando qué use el administrador:
Ahora, te mostraré cómo hacer un comando que te hará administrador. Agregue lo siguiente a la devolución de llamada OnPlayerCommandText.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

new cmd[256], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/hacermeadministrador", true) == 0)
{
       new string[128];
       new tmp[256];
       new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
       new giveplayerid;
       if (IsPlayerAdmin(playerid)) //log rcon
       {
               tmp = strtok(cmdtext, idx);
               if(!strlen(tmp))
               {
                       SendClientMessage(playerid, ORANGE, "USAGE: /hacermeadministrador [playerid] [nivel]");
                       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][NivelAdmin] = level;
                       printf("Admin %s hizo %s  nivel %d de administrador.", player, giveplayer, level);
                       format(string, sizeof(string), "Ahora eres un administrador nivel %d gracias a %s.", level,  player);
                       SendClientMessage(giveplayerid, 0x00C2ECFF, string);
                       format(string, sizeof(string), "Has dado a %s nivel %d de admin.",  giveplayer,PlayerInfo[giveplayerid][NivelAdmin]);
                               SendClientMessage(playerid, 0x00C2ECFF, string);
               }
               else if(giveplayerid == INVALID_PLAYER_ID)
               {
                       format(string, sizeof(string), "%i No es un jugador activo.", giveplayerid);
                       SendClientMessage(playerid, 0xE60000FF, string);
               }
       }
       else
       {
           SendClientMessage(playerid, 0xE60000FF, "Usted no es un administrador principal ( Logeado RCON )!");
       }
       return 1;
}
  Cantidad de llaves: Abiertas(6)-Cerradas(6) | Lineas Totales: 42
NOTA: Esto requiere ReturnUser, strtok y IsNumeric

Debemos asegurarnos de que cuando un jugador se conecta, ¡no obtiene ningún nivel de administrador!
 Codigo Pawno:
1
2
3
4
5

OnPlayerConnect(playerid)
{
    PlayerInfo[playerid][NivelAdmin] = 0;
    return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 5
Productor músical
Programador
Editor Gráfico
Compositor
Cantante
Editor Audiovisual
AMX Booster
Mastering
Webmaster
Scripter
Y odioso, jeje..

Perdí mi facebook, cualquier problema hablarme por privado..

Liberaciones y aportes qué recuerdo.....

[AFK System Pause]: Ir a el sistema
[Pawno y sus funciones] [GUÍA]: Ir a la guía
[Include easyDialog]: Ir a la librería
Tunear vehículo vía comando]: Ir a el sistema
Include foreach: Ir a la librería
Declaraciones ¡RECOMENDADO!: Ir a la guía
Depuraciones y crasheos ¡RECOMENDADO! Ir a la guía
Ordenador policial para OZ: Ir al aporte
Cambiar personaje cómo GTA V: Ir al filterscript
Gamemode Stories of Sa: Ir al gamemode
Mensajes aleatorios: Ir al aporte
Sistema de administración BÁSICO: Ir a el sistema
Modifica tu servidor desde un comando: Ir al aporte
Mapa VC Para GTA.. Ir al aporte

"Pensemos en la modalidad de ayudar al prójimo y no en la competencia.."


Avatar de Usuario
MrDave
Ayudante
Ayudante
Mensajes: 998
Registrado: 05 Oct 2017 12:13
Reputación: 109

06 Dic 2017 20:02

La función strcmp ya no se usa actualmente para crear instrucciones al jugador, porqué consume más código.
Lo recomendable es utilizar zcmd o Pawn.CMD.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

#include <Pawn.CMD>
#include <sscanf>

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

alias:hacermeadministrador("/daradmin", "/setlevel", "/darlevel", "/darnivel"); 
cmd:hacermeadministrador(playerid, params[])
{
if(sscanf(params, "dd", params[0], params[1])) return SendClientMessage(playerid,-1,"USO: /hacermeadministrador [playerid] [level]");
PlayerInfo[params[0]][NivelAdmin] = params[1];
//demás instrucciones..
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 17

- Temporalmente estoy retirado de SA-MP; por lo tanto no me envíen propuestas de proyectos.
- No respondo dudas por privado, usa la sección de preguntas.
Angel_Cassiidy
Aprendiz
Aprendiz
Mensajes: 35
Registrado: 05 Jul 2017 07:35
Reputación: 0

29 May 2018 14:55

MrDave escribió:
06 Dic 2017 20:02
La función strcmp ya no se usa actualmente para crear instrucciones al jugador, porqué consume más código.
Lo recomendable es utilizar zcmd o Pawn.CMD.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

#include <Pawn.CMD>
#include <sscanf>

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

alias:hacermeadministrador("/daradmin", "/setlevel", "/darlevel", "/darnivel"); 
cmd:hacermeadministrador(playerid, params[])
{
if(sscanf(params, "dd", params[0], params[1])) return SendClientMessage(playerid,-1,"USO: /hacermeadministrador [playerid] [level]");
PlayerInfo[params[0]][NivelAdmin] = params[1];
//demás instrucciones..
return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 17
Hola, como se le agrega niveles? soy nuevo
Avatar de Usuario
Hernyl
Aprendiz
Aprendiz
Mensajes: 48
Registrado: 26 Ene 2016 14:42
Reputación: 1

25 Feb 2019 03:54

-beg la volverías a subir?
Spoiler:
#include

int main(int argc, char *argv[]) {
printf("Solo busco encajar en esta sociedad");
return 0;
}
Responder