[Consola RCON]Comandos.
#1

Hola, estoy agregando comandos para usar desde la consola RCON, cuando compilo me aparecen varios errores (idx etc.) pero se que el comando esta MUY mal hecho.
Este es el que uso dentro del servidor. Quisiera saber como pasarlo a RCON para usar desde la consola.
pawn Код:
if(strcmp(cmd, "msg", true) == 0)
    {
        GetPlayerName(playerid, sendername, sizeof(sendername));
        new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /msg [texto]");
        format(string, sizeof(string), "* Admin: %s",result);
        SendClientMessageToAll(COLOR_GREEN, string);
        return 1;
    }
Tambien si pueden ayudarme a hacer un comando de ban (para consola), para que aparezca **** fue baneado. Razon: **** y en la razon aparezca un mensaje.
Reply
#2

ese comando lo tienes en el GM?
Reply
#3

No, en el FS de admin.
Reply
#4

y que errores te sale?
Reply
#5

pawn Код:
if(strcmp(cmd, "msg", true) == 0)
    {
        GetPlayerName(playerid, sendername, sizeof(sendername));
        new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /msg [texto]");
        format(string, sizeof(string), "* Admin: %s",result);
        SendClientMessageToAll(COLOR_GREEN, string);
        return 1;
    }
}
Reply
#6

No, aparecen estos errores:

Код:
error 017: undefined symbol "playerid"
error 017: undefined symbol "cmdtext"
error 017: undefined symbol "idx"
error 029: invalid expression, assumed zero
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
Aclaro de nuevo que es para usar en
pawn Код:
public OnRconCommand(cmd[])
{
Y si agrego la definicion de la funcino abajo de OnRconCommand aparece esto:
Код:
warning 219: local variable "cmd" shadows a variable at a preceding level
undefined symbol "cmdtext"
undefined symbol "playerid"
undefined symbol "cmdtext"
undefined symbol "cmdtext"
invalid expression, assumed zero
invalid expression, assumed zero
fatal error 107: too many error messages on one line
Eso aparece si elimino el segundo } abajo del Return, si no lo elimino queda tildado y aparece "Pawn.exe ha detectado un problema y debe cerrarse" y queda colgado en el cuadro gris de los errores sin ningun error pero no compila.
Reply
#7

En ese callback no esta definido el "playerid" y al no estar definido no puedes usar esas funciones como el "SendClientMessage" o cualquier otra que se ejecute hacia un jugador. de todas formas se puede definir y hacerlo funcionar como corresponde.

En ese callback tienes que usar "print o printf" porque los mensajes se muestran solo por consola rcon o estando logeado como rcon dentro del server.


prueba con este y me dices si te funciono, no lo e probado
pawn Код:
if(!strcmp(cmd, "msg", .length = 3))
    {
        new argumento = argpos(cmd), mensaje[128];
        if ( !cmd[argumento] || cmd[argumento] < '0') print("Uso Correcto: msg  [Mensaje]");
        else
        {
            format(mensaje, sizeof(mensaje), "Admin RCON: %s", cmd[argumento]);
            SendClientMessageToAll(COLOR_WHITE, mensaje);
            printf("Admin RCON: %s", cmd[argumento] );
        }
        return 1;
    }
recuerda que este call tiene que ir en un FS
Reply
#8

Hola, parece que ese funciona mejor.
Solamente aparece este error
Код:
error 017: undefined symbol "argpos"
en la linea

pawn Код:
new argumento = argpos(cmd), mensaje[128];
Reply
#9

sorry no puse la funciуn

aquн te la dejo
pawn Код:
argpos(const string[], idx = 0, sep = ' '){for(new i = idx, j = strlen(string); i < j; i++)if (string[i] == sep && string[i+1] != sep) return i+1; return -1;}
Reply
#10

No.
Код:
error 017: undefined symbol "argpos"
error 017: undefined symbol "argpos"
error 029: invalid expression, assumed zero
error 017: undefined symbol "string"
fatal error 107: too many error messages on one line
En la linea
pawn Код:
argpos(const string[], idx = 0, sep = ' '){for(new i = idx, j = strlen(string); i < j; i++)if (string[i] == sep && string[i+1] != sep) return i+1; return -1;}
Reply
#11

prueba asi
pawn Code:
argpos(const string[], idx = 0, sep = ' ')
{
    for(new i = idx, j = strlen(string); i < j; i++)
        if (string[i] == sep && string[i+1] != sep)
            return i+1;

    return -1;
}
nose porque salio horizontal el codigo :S puede que eso te de problemas
Reply
#12

Todos la complicaron demasiado:
pawn Code:
public OnRconCommand(cmd[])
{
    if(!strcmp(cmd, "msg", true, 3)){
        new str[128];
        format(str, 128, "* Admin: %s", cmd[4]);
        return SendClientMessageToAll(COLOR_GREEN, str);
    }return 1;
}
Reply
#13

Ahi esta gracias a los dos.
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)