Ayuda con este par de comandos
#1

Sucede que tengo estos comandos..

Para espectar a un jugador:

pawn Код:
dcmd_spec(playerid, params[])
{
    new SpecID[MAX_PLAYERS];
    new
    id;
    if (sscanf(params, "u", id)) SendClientMessage(playerid,-1, "USO: /spec [id]");
    else if (id == INVALID_PLAYER_ID) SendClientMessage(playerid,-1, "Jugador no conectado.");
    else
    if(IsPlayerAdmin(playerid))
    {
        TogglePlayerSpectating(playerid, 1);
        SpecID[playerid] = id;
        // SetTimerEx("SpecUpdate", 3000, true, "i",playerid);
        if(GetPlayerState(id) == PLAYER_STATE_DRIVER)  PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
        else PlayerSpectatePlayer(playerid, id);

    }
    return 1;
}
Problema: Solo sirve cuando estoy logueado como RCON y no entiendo por que, si lo he puesto para nivel 1 de esta manera:

pawn Код:
if ( IsPlayerAdmin( playerid ) || pData[ playerid ][ P_LEVEL ] >= _:P_LEVEL_MOD )
    {
        dcmd(spec,4,cmdtext);
    }
Y quisiera que me dijeran como hago para que cuando este espectando salga encima del jugador espectado su salud y blindaje (que no aparece con el codigo que tengo).

El otro comando es /slap:
pawn Код:
dcmd_slap(playerid, params[])
{
    new pName[24];
    GetPlayerName(playerid, pName, 24);

    new id, string[126], Float: PPos[3];
    if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "USO: /slap [id]");

    GetPlayerPos(id, PPos[0], PPos[1], PPos[2]);
    SetPlayerPos(id, PPos[0], PPos[1], PPos[2]+4);

    format(string, sizeof(string), "Hiciste slap a %s", pName);
    SendClientMessage(playerid, -1, string);
    return 1;
}
En este lo que ocurre es que funciona correctamente pero en el ClientMessage pone el nombre de uno mismo.. o sea, si yo slapeo a otro jugador me sale "Hiciste slap a [MINOMBRE]" y no entiendo por que.

Gracias por leer y Saludos!
Reply
#2

En el comando spec debes hacer la restricciуn es dentro del comando

pawn Код:
dcmd_spec(playerid, params[])
{
    new SpecID[MAX_PLAYERS];
    new
    id;
    if (sscanf(params, "u", id)) SendClientMessage(playerid,-1, "USO: /spec [id]");
    else if (id == INVALID_PLAYER_ID) SendClientMessage(playerid,-1, "Jugador no conectado.");
    else
    if(IsPlayerAdmin(playerid) || pData[playerid][P_LEVEL] >= _:P_LEVEL_MOD)
    {
        TogglePlayerSpectating(playerid, 1);
        SpecID[playerid] = id;
        // SetTimerEx("SpecUpdate", 3000, true, "i",playerid);
        if(GetPlayerState(id) == PLAYER_STATE_DRIVER)  PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
        else PlayerSpectatePlayer(playerid, id);

    }
    return 1;
}

//OnPlayerCommandText

dcmd(spec,4,cmdtext);
en el comando slap estabas sacando el nombre de 'playerid' (el que ejecuta el comando) y no el de 'id' (el parбmetro)

pawn Код:
dcmd_slap(playerid, params[])
{
    new pName[24];

    new id, string[126], Float: PPos[3];
    if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "USO: /slap [id]");

    GetPlayerPos(id, PPos[0], PPos[1], PPos[2]);
    SetPlayerPos(id, PPos[0], PPos[1], PPos[2]+4);
    GetPlayerName(id, pName, 24);

    format(string, sizeof(string), "Hiciste slap a %s", pName);
    SendClientMessage(playerid, -1, string);
    return 1;
}
Reply
#3

Quote:
Originally Posted by aoEXE
Посмотреть сообщение
En el comando spec debes hacer la restricciуn es dentro del comando

pawn Код:
dcmd_spec(playerid, params[])
{
    new SpecID[MAX_PLAYERS];
    new
    id;
    if (sscanf(params, "u", id)) SendClientMessage(playerid,-1, "USO: /spec [id]");
    else if (id == INVALID_PLAYER_ID) SendClientMessage(playerid,-1, "Jugador no conectado.");
    else
    if(IsPlayerAdmin(playerid) || pData[playerid][P_LEVEL] >= _:P_LEVEL_MOD)
    {
        TogglePlayerSpectating(playerid, 1);
        SpecID[playerid] = id;
        // SetTimerEx("SpecUpdate", 3000, true, "i",playerid);
        if(GetPlayerState(id) == PLAYER_STATE_DRIVER)  PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
        else PlayerSpectatePlayer(playerid, id);

    }
    return 1;
}

//OnPlayerCommandText

dcmd(spec,4,cmdtext);
en el comando slap estabas sacando el nombre de 'playerid' (el que ejecuta el comando) y no el de 'id' (el parбmetro)

pawn Код:
dcmd_slap(playerid, params[])
{
    new pName[24];

    new id, string[126], Float: PPos[3];
    if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "USO: /slap [id]");

    GetPlayerPos(id, PPos[0], PPos[1], PPos[2]);
    SetPlayerPos(id, PPos[0], PPos[1], PPos[2]+4);
    GetPlayerName(id, pName, 24);

    format(string, sizeof(string), "Hiciste slap a %s", pName);
    SendClientMessage(playerid, -1, string);
    return 1;
}
Gracias
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)