[Duda] Forzar comando a otro player.
#1

Bueno estaba intentando hacer un comando por zcmd para forzar a otro jugador a usar el comando que yo indique de la siguiente manera

pawn Код:
/Forzarcmd [ID] [Comando]
Lo hice en strcmp tal que asн y funciona correctamente:

pawn Код:
if(strcmp(cmd, "/Forzarcmd", true) == 0)
{
    tmp = strtokex(cmdtext, idx);
    if(!strlen(tmp))    return  SendClientMessage(playerid, Blanco, "USO: /Forzarcmd [IdJugador/ParteDelNombre] [Comando]");
    new player1;
    if(!IsNumeric(tmp))
    player1 = ReturnUser(tmp,playerid);
    else player1 = strval(tmp);
    if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
    {
        new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[128];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result)) { SendClientMessage(playerid, Blanco, "USO: /Forzarcmd [IdJugador/ParteDelNombre] [Command]"); return 1; }
        OnPlayerCommandText(player1, result);
    }
    return 1;
}
Luego lo quise pasar a zcmd de tal manera:

pawn Код:
CMD:forzarc(playerid, params[])
{
    new string[128];
    if(sscanf(params, "us[128]", params[0], params[1]))     return  SendClientMessage(playerid, -1, "Utilize: /forzarz [ID/Nombre] [CMD]");
    if(params[0] == INVALID_PLAYER_ID)                      return  SendClientMessage(playerid, -1, "Jugador no conectado.");
    format(string, sizeof(string), "[Info:] Forzaste a %s a usar el cmd %s", NombreEx(params[0]), params[1]);
    SendClientMessage(playerid,-1,string);
    OnPlayerCommandReceived(params[0], params[1]);
    return 1;
}
Pero no funciona. їAlguna idea ?.
Reply
#2

Usalo asн

pawn Код:
new a[128];
format(a, sizeof(a), "cmd_%s", a);
CallLocalFunction(a, "i", params[0]);
Reply
#3

pawn Код:
//si el comando esta en el mismo lugar, ejemplo: forzarcmd en GM y comando a llamar en GM
COMMAND:forzarcmd(playerid, params[]) {
    new data[100];
    if(sscanf(params, "rs[20]", params[0], params[1])) return SendClientMessage(playerid, -1, " Escribe: /forzarcmd [id] [comando] ");
    format(data, sizeof(data), "/%s", params[1]);
    CallLocalFunction("OnPlayerCommandText", "is", params[0], data);
    return true;
}
//si el comando esta en distinto lugar ejemplo: forzarcmd en GM y comando a llamar en FS
COMMAND:forzarcmd(playerid, params[]) {
    new data[100];
    if(sscanf(params, "rs[20]", params[0], params[1])) return SendClientMessage(playerid, -1, " Escribe: /forzarcmd [id] [comando] ");
    format(data, sizeof(data), "/%s", params[1]);
    CallRemoteFunction("OnPlayerCommandText", "is", params[0], data);
    return true;
}
https://sampwiki.blast.hk/wiki/CallLocalFunction
https://sampwiki.blast.hk/wiki/CallRemoteFunction
Reply
#4

Sigue sin funcionar ....

pawn Код:
CallLocalFunction("OnPlayerCommandText", "is", params[0], data);
їSeria OnPlayerCommandText o OnPlayerCommandReceived ?
Reply
#5

Quote:
Originally Posted by Tirael
Посмотреть сообщение
Sigue sin funcionar ....

pawn Код:
CallLocalFunction("OnPlayerCommandText", "is", params[0], data);
їSeria OnPlayerCommandText o OnPlayerCommandReceived ?
no, OnPlayerCommandText.
ami me funciona perfecto los comandos con zcmd y con strcmp :S.
Reply
#6



Duda solucionada.
Reply
#7

їCuбl era la soluciуn?
Reply
#8

¬¬ se fue sin decirnos la solucion -_-...
Reply
#9

Quote:
Originally Posted by OTACON
Посмотреть сообщение
pawn Код:
//si el comando esta en el mismo lugar, ejemplo: forzarcmd en GM y comando a llamar en GM
COMMAND:forzarcmd(playerid, params[]) {
    new data[100];
    if(sscanf(params, "rs[20]", params[0], params[1])) return SendClientMessage(playerid, -1, " Escribe: /forzarcmd [id] [comando] ");
    format(data, sizeof(data), "/%s", params[1]);
    CallLocalFunction("OnPlayerCommandText", "is", params[0], data);
    return true;
}
//si el comando esta en distinto lugar ejemplo: forzarcmd en GM y comando a llamar en FS
COMMAND:forzarcmd(playerid, params[]) {
    new data[100];
    if(sscanf(params, "rs[20]", params[0], params[1])) return SendClientMessage(playerid, -1, " Escribe: /forzarcmd [id] [comando] ");
    format(data, sizeof(data), "/%s", params[1]);
    CallRemoteFunction("OnPlayerCommandText", "is", params[0], data);
    return true;
}
https://sampwiki.blast.hk/wiki/CallLocalFunction
https://sampwiki.blast.hk/wiki/CallRemoteFunction
He ahн la soluciуn.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)