[DUDA]їCуmo hacer comando /admins un poquito especial?
#1

Buenas, me gustarнa plantearles una duda, cуmo podrнa hacer un comando /admins con las siguientes caracterнsticas:

-Me gustarнa que a los users les salgan los administradores que estбn conectados, cuando el administrador se pusiese onduty a los users les tendrнa que salir, ejemplo: [ONDUTY]Admin Dueсo Anonymous_XD, y cuando se pusiese offduty, [OFFDUTY]Admin Dueсo Anonymous_XD. Me gustarнa que saliese en color verde el [ONDUTY] y en rojo el [OFFDUTY].

Les comento lo que intentй yo, estoy aprendiendo a scriptear asн que intentй hacerlo de esta forma:

Код:
zcmd(admins, playerid, params[]) // Comando /admins
   {
       new string[128];
      if(AdminDuty[playerid] == 1)
      {
         if(Info[playerid][pAdmin] == 1)
					{
                        format(string, sizeof(string), "[ONDUTY] {0x41FF2FFF} Moderador a Pruebas: '%s'{0xFFFFFFAA}", GetPlayerNameEx(playerid));
                    }
                    else if(Info[playerid][pAdmin] == 2)
					{
                        format(string, sizeof(string), "[ONDUTY] {0x41FF2FFF} Admin Junior: '%s'{0x41FFECFF}", GetPlayerNameEx(playerid));
                    }
                    else if(Info[playerid][pAdmin] == 3)
					{
                        format(string, sizeof(string), "[ONDUTY] {0x41FF2FFF} Administrador: '%s'{0xFF7617FF}", GetPlayerNameEx(playerid));
                    }
                    else if(Info[playerid][pAdmin] == 4)
					{
                        format(string, sizeof(string), "[ONDUTY] {0x41FF2FFF} Administrador Global: '%s'{0xFFFF00FF}", GetPlayerNameEx(playerid));
                    }
                    else if(Info[playerid][pAdmin] == 5)
					{
                        format(string, sizeof(string), "[ONDUTY] {0x41FF2FFF} Admin Lнder: '%s'{0x41FF2FFF}", GetPlayerNameEx(playerid));
                    }
                    else if(Info[playerid][pAdmin] == 1338)
					{
                        format(string, sizeof(string), "[ONDUTY] {0x41FF2FFF} Admin SubDueсo: '%s'{0x9600FF2E}", GetPlayerNameEx(playerid));
                    }
                    else if(Info[playerid][pAdmin] == 99999)
					{
                        format(string, sizeof(string), "[ONDUTY] {0x41FF2FFF} Admin Dueсo: '%s'{0xFF0606FF}", GetPlayerNameEx(playerid));
}
         return 1;
      }
Lo intentй y me compila bien, pero no me funciona. Me gustarнa saber quй errores estoy cometiendo, realmente no entiendo mucho para que sirve los "strings" se que estбn relacionados con el nъmero de celdas pero no lo pillo. Espero que me puedan ayudar. Saludos.
Reply
#2

pawn Код:
stock ShowAdmins(playerid)
{
    new
        string[100],
        Name[MAX_PLAYER_NAME];
   
    for(new i; i < MAX_PLAYERS; i++)//loop
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))//jugadores conectados, y no npcs
        {
            if(Info[i][pAdmin])//si son admins
            {
                GetPlayerName(i, Name, 24);//almacenamos en name el nombre
                format(string, 100, "%s {ffffff}%s %s",(Duty[i]) ? ("[ONDUTY]") : ("[OFFDUTY]"), GetAdminNameLevel( Info[i][pAdmin] ), Name );
                SendClientMessage(playerid, (Duty[i]) ? (0x0000FF00) : (0xFF000000), string);
            }
        }
    }
    return 1;
}

stock GetAdminLevelName(level)
{
        new Admin[20];
    switch(level)
    {
        case 1: Admin = "Moderador";
        case 1338: Admin = "Sub Dueсo";
        // y agregas todos los rangos con el formato mensionado arriba
    }
    return Admin;
}
Reply
#3

Pero supuestamente esto lo pongo debajo de mi comando en zcmd?
Reply
#4

pawn Код:
zcmd(admins, playerid, params[])
{
       ShowAdmins(playerid);
       return 1;
}
Reply
#5

Lo pegй asн:
Код:
	zcmd(admins, playerid, params[])
{
       ShowAdmins(playerid);
       return 1;
}
stock ShowAdmins(playerid)
{
    new
        string[100],
        Name[MAX_PLAYER_NAME];

    for(new i; i < MAX_PLAYERS; i++)//loop
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))//jugadores conectados, y no npcs
        {
            if(Info[i][pAdmin])//si son admins
            {
                GetPlayerName(i, Name, 24);//almacenamos en name el nombre
                format(string, 100, "%s {ffffff}%s %s",(Duty[i]) ? ("[ONDUTY]") : ("[OFFDUTY]"), GetAdminNameLevel( Info[i][pAdmin] ), Name );
                SendClientMessage(playerid, (Duty[i]) ? (0x0000FF00) : (0xFF000000), string);
            }
        }
    }
    return 1;
}

stock GetAdminLevelName(level)
{
        new Admin[20];
    switch(level)
    {
        case 1: Admin = "Moderador a pruebas";
        case 2: Admin = "Admin Junior";
        case 3: Admin = "Administrador";
        case 4: Admin = "Administrador Global";
        case 5: Admin = "Admin Lнder";
        case 1338: Admin = "Sub Dueсo";
        case 99999: Admin = "Admin Dueсo";
        // y agregas todos los rangos con el formato mensionado arriba
    }
    return Admin;
}
Pero me da estos errores:

Код:
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28401) : error 021: symbol already defined: "cmd_admins"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28409) : warning 219: local variable "Name" shadows a variable at a preceding level
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28417) : error 035: argument type mismatch (argument 2)
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : error 017: undefined symbol "Duty"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : error 029: invalid expression, assumed zero
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : error 029: invalid expression, assumed zero
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


6 Errors.
Reply
#6

Quote:
Originally Posted by AnonymousXD
Посмотреть сообщение
Lo pegй asн:
Код:
	zcmd(admins, playerid, params[])
{
       ShowAdmins(playerid);
       return 1;
}
stock ShowAdmins(playerid)
{
    new
        string[100],
        Name[MAX_PLAYER_NAME];

    for(new i; i < MAX_PLAYERS; i++)//loop
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))//jugadores conectados, y no npcs
        {
            if(Info[i][pAdmin])//si son admins
            {
                GetPlayerName(i, Name, 24);//almacenamos en name el nombre
                format(string, 100, "%s {ffffff}%s %s",(Duty[i]) ? ("[ONDUTY]") : ("[OFFDUTY]"), GetAdminNameLevel( Info[i][pAdmin] ), Name );
                SendClientMessage(playerid, (Duty[i]) ? (0x0000FF00) : (0xFF000000), string);
            }
        }
    }
    return 1;
}

stock GetAdminLevelName(level)
{
        new Admin[20];
    switch(level)
    {
        case 1: Admin = "Moderador a pruebas";
        case 2: Admin = "Admin Junior";
        case 3: Admin = "Administrador";
        case 4: Admin = "Administrador Global";
        case 5: Admin = "Admin Lнder";
        case 1338: Admin = "Sub Dueсo";
        case 99999: Admin = "Admin Dueсo";
        // y agregas todos los rangos con el formato mensionado arriba
    }
    return Admin;
}
Pero me da estos errores:

Код:
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28401) : error 021: symbol already defined: "cmd_admins"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28409) : warning 219: local variable "Name" shadows a variable at a preceding level
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28417) : error 035: argument type mismatch (argument 2)
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : error 017: undefined symbol "Duty"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : error 029: invalid expression, assumed zero
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : error 029: invalid expression, assumed zero
C:\Users\Kevin\AppData\Local\Temp\Rar$DI43.664\HighQuality.net.pwn(28418) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


6 Errors.
Probe el codigo y a mi no me sale ningun error, asegurate que todos los codigos esten puestos correctamente.
Reply
#7

saca el comando zcmd(admins que tenes antes, no pueden haber dos. Y cambia la parte donde dice "Duty[i]" por tu variable (encontrala en adminduty)
Reply
#8

Ahora me da menos errores pero aun asн siguen estando:

Код:
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(1902) : warning 219: local variable "Name" shadows a variable at a preceding level
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(1910) : error 035: argument type mismatch (argument 2)
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(1911) : error 017: undefined symbol "GetAdminNameLevel"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(1902) : warning 204: symbol is assigned a value that is never used: "Name"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(50136) : warning 203: symbol is never used: "IsAForbidden"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(50136) : warning 203: symbol is never used: "dynamicgift"
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(50136) : warning 203: symbol is never used: "dynamicgift3DText"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


2 Errors.

El cуdigo lo peguй asн ahora corregido:

pawn Код:
stock ShowAdmins(playerid)
{
    new
        string[100],
        Name[MAX_PLAYER_NAME];

    for(new i; i < MAX_PLAYERS; i++)//loop
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))//jugadores conectados, y no npcs
        {
            if(Info[i][pAdmin])//si son admins
            {
                GetPlayerName(i, Name, 24);//almacenamos en name el nombre
                format(string, 100, "%s {ffffff}%s %s",(AdminDuty[i]) ? ("[ONDUTY]") : ("[OFFDUTY]"), GetAdminNameLevel( Info[i][pAdmin] ), Name );
                SendClientMessage(playerid, (AdminDuty[i]) ? (0x0000FF00) : (0xFF000000), string);
            }
        }
    }
    return 1;
}

stock GetAdminLevelName(level)
{
        new Admin[20];
    switch(level)
    {
        case 1: Admin = "Moderador a pruebas";
        case 2: Admin = "Admin Junior";
        case 3: Admin = "Administrador";
        case 4: Admin = "Administrador Global";
        case 5: Admin = "Admin Lнder";
        case 1338: Admin = "Sub Dueсo";
        case 99999: Admin = "Admin Dueсo";
        // y agregas todos los rangos con el formato mensionado arriba
    }
    return Admin;
}


zcmd(adminson, playerid, params[])
    {
       ShowAdmins(playerid);
       return 1;
    }
Reply
#9

hola, bueno para no abrir un post casi igual pregunto aca, como podria hacer esto en dialog, porque intente con strcat pero me provoca bugs menores, como por ejemplo que el texto diciendo el nombre e info del admin se repite 2 veces en el dialog, bueno eso, gracias de antemano c:
Reply
#10

Код:
C:\Users\Kevin\AppData\Local\Temp\Rar$DI16.632\HighQuality.net.pwn(1911) : error 017: undefined symbol "GetAdminNameLevel"
Ese error me parece que es porque en el cуdigo pusiste 'GetAdminNameLevel' y en realidad el stock que creaste es 'GetAdminLevelName', o sea, reemplaza el nombre por el correcto.

Y el otro error que estб aquн me parece:

Код:
format(string, 100, "%s {ffffff}%s %s",(AdminDuty[i]) ? ("[ONDUTY]") : ("[OFFDUTY]"), GetAdminNameLevel( Info[i][pAdmin] ), Name );
Es por lo mismo de antes, el stock es 'GetAdminLevelName' y lo pusiste al contrario.

Cбmbialo por esto:

Код:
format(string, 100, "%s {ffffff}%s %s",(AdminDuty[i]) ? ("[ONDUTY]") : ("[OFFDUTY]"), GetAdminLevelName( Info[i][pAdmin] ), Name );
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)