Comando simple
#1

Hola, no queria llegar aqui por esto pero se me acaba el tiempo y quiero terminarlo... seguramente a muchos les parecera estupido pero necesito ayuda con esto:

pawn Код:
dcmd_health(playerid,params[])
{
    {
        new jugadorid;
        new string[128];
        new pName[24];
        GetPlayerName(playerid, pName, 24);
        if(sscanf(params,"u",jugadorid)) return SCM(playerid, -1, "USAGE: /health [id]");
        if(!IsPlayerConnected(jugadorid)) return SCM(playerid,COLOR_RED,"ERROR: Jugador no conectado.");
        SetPlayerHealth(jugadorid, 100);
        format(string,sizeof(string),"Recargaste la salud de {FFFFFF}%s",pName);
        SendClientMessage(playerid,COLOR_ORANGE,string);
    }
    return 1;
}
Lo que pasa es que cuando pongo /health id hace su funcion pero en el mensaje pone el nombre de quien ejecuta el comando y no del jugador al que se le aplica el comando .. Como soluciono?
Reply
#2

pawn Код:
dcmd_health(playerid,params[])
{
    {
        new jugadorid;
        new string[128];
        new pName[24];
        if(sscanf(params,"u",jugadorid)) return SCM(playerid, -1, "USAGE: /health [id]");
        if(!IsPlayerConnected(jugadorid)) return SCM(playerid,COLOR_RED,"ERROR: Jugador no conectado.");
        GetPlayerName(jugadorid, pName, 24);
        SetPlayerHealth(jugadorid, 100);
        format(string,sizeof(string),"Recargaste la salud de {FFFFFF}%s",pName);
        SendClientMessage(playerid,COLOR_ORANGE,string);
    }
    return 1;
}
Reply
#3

Solo tenia que pasar eso hasta abajo?
Reply
#4

No, eso es opcional, lo que habнas que hacer era cambiar "playerid" por "jugadorid" en GetPlayerName(ACA...
Reply
#5

Quote:
Originally Posted by FlavioCesar
Посмотреть сообщение
Solo tenia que pasar eso hasta abajo?
Espero que leas con atencion y aprendas.
pawn Код:
dcmd_health(playerid,params[])  
//dcmd = Es el procesador de comandos,
//health = es el comando que ingresas en el chat del texto.
//playerid = es el numero int "id" del jugador que pone el comando,
//params = son los parametros indefinidos ejemplo /health parametro1 parametro2 parametro3
{
    {
        new jugadorid;
        new string[128];
        new pName[24];
        if(sscanf(params,"u",jugadorid)) return SCM(playerid, -1, "USAGE: /health [id]");
// jugadorid es el numero enterio "ID" del jugador al cual se le darб mas healt
        if(!IsPlayerConnected(jugadorid)) return SCM(playerid,COLOR_RED,"ERROR: Jugador no conectado.");
        GetPlayerName(jugadorid, pName, 24);
//GetPlayerName = funcion para extraer el nombre del jugador jugadorid en una cadena
//jugadorid = es el numero int del jugador al cual se le va a extraer el nombre en una cadena.
//pName = es en donde se va a almacenar los nombre obtenidos con GetPlayerName del jugador jugadorid
//24 = es el tamaсo de la cadena que se va a obtener y almecenar.

        SetPlayerHealth(jugadorid, 100);
        format(string,sizeof(string),"Recargaste la salud de {FFFFFF}%s",pName);
        SendClientMessage(playerid,COLOR_ORANGE,string);
    }
    return 1;
}
Reply
#6

Quote:
Originally Posted by _Zume
Посмотреть сообщение
No, eso es opcional, lo que habнas que hacer era cambiar "playerid" por "jugadorid" en GetPlayerName(ACA...
Antes lo tenia en jugadorid y estaba igual


Quote:
Originally Posted by jotajeda
Посмотреть сообщение
Espero que leas con atencion y aprendas.
pawn Код:
dcmd_health(playerid,params[])  
//dcmd = Es el procesador de comandos,
//health = es el comando que ingresas en el chat del texto.
//playerid = es el numero int "id" del jugador que pone el comando,
//params = son los parametros indefinidos ejemplo /health parametro1 parametro2 parametro3
{
    {
        new jugadorid;
        new string[128];
        new pName[24];
        if(sscanf(params,"u",jugadorid)) return SCM(playerid, -1, "USAGE: /health [id]");
// jugadorid es el numero enterio "ID" del jugador al cual se le darб mas healt
        if(!IsPlayerConnected(jugadorid)) return SCM(playerid,COLOR_RED,"ERROR: Jugador no conectado.");
        GetPlayerName(jugadorid, pName, 24);
//GetPlayerName = funcion para extraer el nombre del jugador jugadorid en una cadena
//jugadorid = es el numero int del jugador al cual se le va a extraer el nombre en una cadena.
//pName = es en donde se va a almacenar los nombre obtenidos con GetPlayerName del jugador jugadorid
//24 = es el tamaсo de la cadena que se va a obtener y almecenar.

        SetPlayerHealth(jugadorid, 100);
        format(string,sizeof(string),"Recargaste la salud de {FFFFFF}%s",pName);
        SendClientMessage(playerid,COLOR_ORANGE,string);
    }
    return 1;
}
Gracias jotajeda, me has ayudado bastante estos dнas. Gracias!!
Reply
#7

Podrнas usar los slots de sscanf & dejar de declarar nuevas variables locales, solo usarнas strings. Mira .

pawn Код:
dcmd_health(playerid, params[])
{
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, "uso: /health [playerid/nombre].");
    if(IsPlayerConnected(params[0]) && params[0] != INVALID_PLAYER_ID) // si el parametro estб conectado y no es invalido.
    {
        new nombre_parametro[24], string[56]; // no desperdicies espacio.
        GetPlayerName(params[0], nombre_parametro, 24); // obtiene el nombre del parametro.
        format(string, sizeof(string), "Recargaste la salud de {FFFFFF}%s", Nombre_parametro); //formato
        SendClientMessage(playerid, -1, string); // envia mensaje.
        SetPlayerHealth(params[0], 100.0); // Establece la vida del jugador en 100.0.
    }
    else
    {
        SendClientMessage(playerid, -1, "Player no conectado.");
    }
    return true;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)