[Ayuda] Comando medio complicado
#1

Hola, bueno basicamente esto es para los RP. Hice todos sistemas y entre ellos uno de DNI.
Los jugadores compran un DNI y les da un randomnumero hasta 8 caracteres.
Lo que quiero es (usando sscanf o lo que fuere) un comando, x ejemplo.
/rdni [numero de dni]
Y le diga a esa persona (que puso el comando) el nombre del dueсo de ese DNI, si es incorrecto el numero (osea que no existe) que le diga que ese numero no exista xD

Aca un pequeсo avance...

pawn Код:
//Definiciones:

//DNI: PlayerInfo[playerid][pDni]
//Nombre: NombreJugador(playerid)

dcmd_rdni(playerid, params[])
{
    new dniid;
    if(sscanf(params, "d", dniid)) return SendClientMessage(playerid, COLOR_YELLOW, "USA: /rdni (DNI) para rastrear un DNI.");
    {
                        // accion
                        return 1;
    }
}
Saludos, espero que entiendan
Reply
#2

Si haces un loop a todos los jugadores (conectados) y comparas el DNI que tienes con el que tienen los demбs, puede ser una forma.
Reply
#3

Quote:
Originally Posted by SuperMarioRol
Посмотреть сообщение
Si haces un loop a todos los jugadores (conectados) y comparas el DNI que tienes con el que tienen los demбs, puede ser una forma.
Como, un ejemplo?
Reply
#4

їPara quй sscanf?
Usб strval.
Reply
#5

Ejemplos
Reply
#6

Ahora mismo no tengo tiempo para hacertelo pero simplemente haz un loop con todos los jugadores, que viene a ser
pawn Код:
for (new i = 0; i != MAX_PLAYERS; ++i)
{
    if (IsPlayerConnected(i))
    {
        //blabla
    }
}
// O con foreach
foreach (Player, i)
{
    printf("Player %d is connected", i);
}
Y luego compara los DNIs obtenidos con el dni que obtiene sscanf, o strval. Si buscas por algъn LARP o por ahн habrб algo parecido (No como comando)
Reply
#7

no es dificil, solo hay que pensar 5 minutos.
fijate si te funciona y contanos.
pawn Код:
dcmd_rdini(playerid, params[])
{
    if(!strlen(params))return SendClientMessage(playerid, 0xFFFFFFFF, "Uso: /rdini <numero>");
    new i, dni = strval(params);
    for(; i<GetMaxPlayers(); i++)if(IsPlayerConnected(i) && PlayerInfo[i][pDni] == dni)break;
    if(PlayerInfo[i][pDni] != dni)return SendClientMessage(playerid, 0xFF0000FF, "No se encontro a esa persona, (puede que no este conectada)");
    new str[58+MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(str, sizeof(str), "Server: Ese numero de dini, corresponde al jugador %s(%i).", name, i);
    return SendClientMessage(playerid, 0xFFFF00FF, str);
}
Reply
#8

pawn Код:
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
Ahн deberнa ser "i", creo. Si no le da el nombre del que usa el cmd.
Reply
#9

No chaoz, no funciona. Esta re bug ese comando
Si pongo /rdni y pongo "asd", "0" cualkier cosa me dice q me corresponde (id 150 wtf) pero esta bug.
Y si pongo otro numero 234 o 25 me dice q no esta conectado
ta re mal

EDIT: Ya probй con lo que dijo Julian, pero es lo mismo xD
Reply
#10

pawn Код:
dcmd_rdini(playerid, params[])
{
    if(!strlen(params))return SendClientMessage(playerid, 0xFFFFFFFF, "Uso: /rdini <numero>");
    if(!IsNumeric(params) || strlen(params) != 8)return SendClientMessage(playerid, 0xFF0000FF, "Error: Ese documento no existe.");
    new i, dni = strval(params);
    for(; i<GetMaxPlayers(); i++)
        if(IsPlayerConnected(i) && PlayerInfo[i][pDni] == dni)break;
    if(PlayerInfo[i][pDni] != dni)return SendClientMessage(playerid, 0xFF0000FF, "No se encontro a esa persona, (puede que no este conectada)");
    new str[58+MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
    GetPlayerName(i, name, MAX_PLAYER_NAME);
    format(str, sizeof(str), "Server: Ese numero de dini, corresponde al jugador %s(%i).", name, i);
    return SendClientMessage(playerid, 0xFFFF00FF, str);
}
el cmd hace lo que pedis, el punto es que solo reconoce los documentos de los jugadores conectados. si el documento existe y el jugador no esta conectado, entonces no lo va a reconocer, tendrias que editar tu sistema para eso y buscar en un archivo o base de datos. ahi le agregue algo mas. El cmd supone que el documento tiene que tener un largo de 8 caracteres, o no lo toma como valido.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)