Comando con nombre [AYUDA]
#1

Hola. Estoy un poco confundido con esto. Quiero que cuando, por ejemplo, yo ponga el comando /ir [ID] tambiйn se pueda ir con el nombre, ejemplo: /ir godoy (/ir [ID/Nombre])
No se como hacerlo y estoy complicado.
Saludos.
Reply
#2

men yo noce pero creoo que esa funcion tenes que usar GetPlayerName y MAX_PLAYER_NAME creoooo
Reply
#3

Utilizб la funciуn ReturnUser, ej:

pawn Код:
new Float:x, Float:y, Floatz, usuario = ReturnUser(tmp);
GetPlayerPos(usuario, x, y, z);
SetPlayerPos(playerid, x, y, z);
Reply
#4

usa sscanf

pawn Код:
if (sscanf(params, "u", nombre)) return SendClientMessage(playerid, 0xFF0000AA, "Uso /ir [Id/Nombre]");
Reply
#5

El ya tiene el "/ir id" ( asн que no necesita lo que le estбs diciendo ), lo que quiere es que sea por el nombre tambiйn, la manera mбs fбcil ( para mi ) es la de ReturnUser.
Reply
#6

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Utilizб la funciуn ReturnUser, ej:

pawn Код:
new Float:x, Float:y, Floatz, usuario = ReturnUser(tmp);
GetPlayerPos(usuario, x, y, z);
SetPlayerPos(playerid, x, y, z);
Gracias, funciona perfecto
Reply
#7

Perdonen que reviva el tema, pero surgio un nuevo problema.
Resulta que estaba probando el comando 'transferir' (banco) y si uno poner, por ejemplo: /transferir vicho 5000 sale 'No te puedes transferir a ti mismo'
Acб estб el code
pawn Код:
dcmd_transferir(playerid,params[])
{
        new Index;
        new tmp[256];  tmp  = strtok(params,Index);
        new tmp2[256]; tmp2 = strtok(params,Index);
        new player1;
        new cash = strval(tmp2);
        if(!IsNumeric(tmp2))
        player1 = ReturnUser(tmp);
        else player1 = strval(tmp);
        if(player1 == playerid) return SendClientMessage(playerid,COLOR_RED,"No te puedes transferir a ti mismo");
        if(!IsRangeToBank(playerid)) return SendClientMessage(playerid,COLOR_RED,"No estas en un banco");
        if(pInfo[playerid][Balance] < cash) return SendClientMessage(playerid,COLOR_RED,"No tienes esa cantidad en el banco");
        if(!strlen(tmp) || !strlen(tmp2) || !IsNumeric(tmp2)) return SendClientMessage(playerid,COLOR_RED,"Usa: /transferir [ID/Nombre] [Cantidad]");
        pInfo[playerid][Balance] -= cash;
        pInfo[player1][Balance] += cash;
        new string[128];
        format(string,sizeof(string),"Transferiste %d$ a %s ",cash, pName(player1));
        SendClientMessage(playerid,COLOR_YELLOW,string);
        new file[100];
        dini_IntSet(file,"Deposit",pInfo[playerid][Balance]);
        new string2[128]; format(string2,128,"Tu nuevo balance es %d$",pInfo[playerid][Balance]);
        SendClientMessage(playerid,color,string2);
        new string3[128]; format(string3,128,"%s (%d) te transfiriу $%d a tu cuenta",pName(playerid),playerid,cash);
        SendClientMessage(player1,COLOR_YELLOW,string3);
        new string4[128]; format(string4,128,"Tu nuevo balance es: %d$",pInfo[chosenpid][Balance]);
        SendClientMessage(player1,color,string4);
        return 1;
}
Ojala me puedan ayudar
Reply
#8

Prueba asi:

pawn Код:
dcmd_transferir(playerid,params[])
{
        new Index;
        new tmp[256];  tmp  = strtok(params,Index);
        new tmp2[256]; tmp2 = strtok(params,Index);
        new player1;
        new cash = strval(tmp2);
        if(!IsNumeric(tmp2))
        player1 = ReturnUser(tmp);
        if(IsPlayerConnected(player1)){
        SendClientMessage(playerid,COLOR_RED,"Jugador no Conectado");
        return 1;}
        else player1 = strval(tmp);
        if(player1 == playerid) return SendClientMessage(playerid,COLOR_RED,"No te puedes transferir a ti mismo");
        if(!IsRangeToBank(playerid)) return SendClientMessage(playerid,COLOR_RED,"No estas en un banco");
        if(pInfo[playerid][Balance] < cash) return SendClientMessage(playerid,COLOR_RED,"No tienes esa cantidad en el banco");
        if(!strlen(tmp) || !strlen(tmp2) || !IsNumeric(tmp2)) return SendClientMessage(playerid,COLOR_RED,"Usa: /transferir [ID/Nombre] [Cantidad]");
        pInfo[playerid][Balance] -= cash;
        pInfo[player1][Balance] += cash;
        new string[128];
        format(string,sizeof(string),"Transferiste %d$ a %s ",cash, pName(player1));
        SendClientMessage(playerid,COLOR_YELLOW,string);
        new file[100];
        dini_IntSet(file,"Deposit",pInfo[playerid][Balance]);
        new string2[128]; format(string2,128,"Tu nuevo balance es %d$",pInfo[playerid][Balance]);
        SendClientMessage(playerid,color,string2);
        new string3[128]; format(string3,128,"%s (%d) te transfiriу $%d a tu cuenta",pName(playerid),playerid,cash);
        SendClientMessage(player1,COLOR_YELLOW,string3);
        new string4[128]; format(string4,128,"Tu nuevo balance es: %d$",pInfo[chosenpid][Balance]);
        SendClientMessage(player1,color,string4);
        }
        return 1;
        }
Reply
#9

No es necesario comprobar si es o no numйrico, la funciуn ReturnUser siempre devuelve la ID del jugador, lo que hace es comprobar si es un nombre conectado devolverte la ID. Asн:

pawn Код:
dcmd_transferir(playerid,params[])
{
        new Index;
        new tmp[256];  tmp  = strtok(params,Index);
        new tmp2[256]; tmp2 = strtok(params,Index);
        new player1 = ReturnUser(tmp);;
        new cash = strval(tmp2);
        if(player1 == playerid) return SendClientMessage(playerid,COLOR_RED,"No te puedes transferir a ti mismo");
        if(!IsRangeToBank(playerid)) return SendClientMessage(playerid,COLOR_RED,"No estas en un banco");
        if(pInfo[playerid][Balance] < cash) return SendClientMessage(playerid,COLOR_RED,"No tienes esa cantidad en el banco");
        if(!strlen(tmp) || !strlen(tmp2) || !IsNumeric(tmp2)) return SendClientMessage(playerid,COLOR_RED,"Usa: /transferir [ID/Nombre] [Cantidad]");
        pInfo[playerid][Balance] -= cash;
        pInfo[player1][Balance] += cash;
        new string[128];
        format(string,sizeof(string),"Transferiste %d$ a %s ",cash, pName(player1));
        SendClientMessage(playerid,COLOR_YELLOW,string);
        new file[100];
        dini_IntSet(file,"Deposit",pInfo[playerid][Balance]);
        new string2[128]; format(string2,128,"Tu nuevo balance es %d$",pInfo[playerid][Balance]);
        SendClientMessage(playerid,color,string2);
        new string3[128]; format(string3,128,"%s (%d) te transfiriу $%d a tu cuenta",pName(playerid),playerid,cash);
        SendClientMessage(player1,COLOR_YELLOW,string3);
        new string4[128]; format(string4,128,"Tu nuevo balance es: %d$",pInfo[chosenpid][Balance]);
        SendClientMessage(player1,color,string4);
        return 1;
}
Reply
#10

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
No es necesario comprobar si es o no numйrico, la funciуn ReturnUser siempre devuelve la ID del jugador, lo que hace es comprobar si es un nombre conectado devolverte la ID. Asн:

pawn Код:
dcmd_transferir(playerid,params[])
{
        new Index;
        new tmp[256];  tmp  = strtok(params,Index);
        new tmp2[256]; tmp2 = strtok(params,Index);
        new player1 = ReturnUser(tmp);;
        new cash = strval(tmp2);
        if(player1 == playerid) return SendClientMessage(playerid,COLOR_RED,"No te puedes transferir a ti mismo");
        if(!IsRangeToBank(playerid)) return SendClientMessage(playerid,COLOR_RED,"No estas en un banco");
        if(pInfo[playerid][Balance] < cash) return SendClientMessage(playerid,COLOR_RED,"No tienes esa cantidad en el banco");
        if(!strlen(tmp) || !strlen(tmp2) || !IsNumeric(tmp2)) return SendClientMessage(playerid,COLOR_RED,"Usa: /transferir [ID/Nombre] [Cantidad]");
        pInfo[playerid][Balance] -= cash;
        pInfo[player1][Balance] += cash;
        new string[128];
        format(string,sizeof(string),"Transferiste %d$ a %s ",cash, pName(player1));
        SendClientMessage(playerid,COLOR_YELLOW,string);
        new file[100];
        dini_IntSet(file,"Deposit",pInfo[playerid][Balance]);
        new string2[128]; format(string2,128,"Tu nuevo balance es %d$",pInfo[playerid][Balance]);
        SendClientMessage(playerid,color,string2);
        new string3[128]; format(string3,128,"%s (%d) te transfiriу $%d a tu cuenta",pName(playerid),playerid,cash);
        SendClientMessage(player1,COLOR_YELLOW,string3);
        new string4[128]; format(string4,128,"Tu nuevo balance es: %d$",pInfo[chosenpid][Balance]);
        SendClientMessage(player1,color,string4);
        return 1;
}
Sigue ocurriendo, solo que ahora, sale que el comando no existe.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)