SA-MP Forums Archive
[Ayuda] Comando medio complicado - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Ayuda] Comando medio complicado (/showthread.php?tid=280364)



[Ayuda] Comando medio complicado - TiNcH010 - 31.08.2011

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


Re: [Ayuda] Comando medio complicado - SuperMarioRol - 31.08.2011

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.


Respuesta: Re: [Ayuda] Comando medio complicado - TiNcH010 - 31.08.2011

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?


Re: [Ayuda] Comando medio complicado - MrDeath537 - 31.08.2011

їPara quй sscanf?
Usб strval.


Respuesta: [Ayuda] Comando medio complicado - TiNcH010 - 31.08.2011

Ejemplos


Re: [Ayuda] Comando medio complicado - SuperMarioRol - 31.08.2011

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)


Respuesta: [Ayuda] Comando medio complicado - TheChaoz - 31.08.2011

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);
}



Respuesta: [Ayuda] Comando medio complicado - [J]ulian - 31.08.2011

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


Respuesta: [Ayuda] Comando medio complicado - TiNcH010 - 31.08.2011

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


Respuesta: [Ayuda] Comando medio complicado - TheChaoz - 31.08.2011

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.