[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.