[DUDA/AYUDA] seleccion ramdom de ID -
PitbullKiller - 15.11.2014
Hola que tal amigos! 
Bueno, quisiera saber como hacer para que me seleccione una ID(Un Jugador) en modo ramdom, de los que ahн conectados claro... 
(Obviamente yo poder usar en otra funciуn esa ID que escogiу en el ramdom)
Por favor, si saben como o tienen ideas, me encantarнa y les agradecerнa mucho que me lo aportaran.
Respuesta -
Ygzeb - 15.11.2014
Pruebe con:
pawn Код:
new Rand = -1;
while(!IsPlayerConnected(Rand)) Rand = random(MAX_PLAYERS);
SendClientMessage(Rand, -1, "Random player".); // Asн le aplica la funciуn al jugador elegido.
Suerte
Respuesta: [DUDA/AYUDA] seleccion ramdom de ID -
Zume - 15.11.2014
pawn Код:
SelectPlayerRandom()
{
static
players[MAX_PLAYERS],
conectados;
for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)){
players[conectados++] = i;
}
return random(players[random(conectados)]);
}
Intenta con eso, no sй si funcione ya que las ID pueden estar puestas no en el orden natural (0, 1, 2, 3, 4) pueden haber faltas de ID entre sн.
Respuesta: [DUDA/AYUDA] seleccion ramdom de ID -
jotajeda - 15.11.2014
Espero te sirva, es solo para escoger un jugador al azar pero que estй conectado.
pawn Код:
for (new i = 0; i != MAX_PLAYERS; ++i)
{
if (IsPlayerConnected(i))
{
new Seleccionado = random(i);//saldrб al azar cualquier id de todos los players conectados. "solo conectados"
GivePlayerMoney (Seleccionado, 50000);
//mas funciones
//mas funciones bla bla bla.
}
}
Re: [DUDA/AYUDA] seleccion ramdom de ID -
LiMPiTo - 16.11.2014
pawn Код:
connectedGetRandomID()
{
new RandomID = random(GetMaxPlayers()), total_players_count;
for(new i; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
total_players_count ++;
if(IsPlayerConnected(RandomID))
{
return RandomID;
}
}
}
if(total_players_count > 1) // si hay mбs de un conectado, y el ID del random estб offline, se repite
{
return connectedGetRandomID(); // se repetirб hasta encontrar un random que estй conectado
}
else // caso contrario (hay solo un user, retorna con la ID del ъnico user online)
{
for(new i; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
return i;
}
}
}
return -1;
}
Modo de uso:
pawn Код:
public OnGameModeInit()
{
SetTimer("FUNCION_RANDOM_EJEMPLAR", 10000, true); // cada 10 seg. se sortea el random
return 1;
}
forward FUNCION_RANDOM_EJEMPLAR();
public FUNCION_RANDOM_EJEMPLAR()
{
new msg_char[150], rand_id = connectedGetRandomID();
if(rand_id != -1) // si no hay error al realizar el random
{
format(msg_char, sizeof(msg_char), "ID: %i (conectado) ha ganado el random", rand_id);
}
return SendClientMessageToAll(-1, msg_char);
}
Respuesta: Re: [DUDA/AYUDA] seleccion ramdom de ID -
jotajeda - 16.11.2014
Quote:
Originally Posted by LiMPiTo
pawn Код:
connectedGetRandomID() { new RandomID = random(GetMaxPlayers()), total_players_count; for(new i; i < GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { total_players_count ++; if(IsPlayerConnected(RandomID)) { return RandomID; } } } if(total_players_count > 1) // si hay mбs de un conectado, y el ID del random estб offline, se repite { return connectedGetRandomID(); // se repetirб hasta encontrar un random que estй conectado } else // caso contrario (hay solo un user, retorna con la ID del ъnico user online) { for(new i; i < GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { return i; } } } return -1; }
Modo de uso:
pawn Код:
public OnGameModeInit() { SetTimer("FUNCION_RANDOM_EJEMPLAR", 10000, true); // cada 10 seg. se sortea el random return 1; }
forward FUNCION_RANDOM_EJEMPLAR(); public FUNCION_RANDOM_EJEMPLAR() { new msg_char[150], rand_id = connectedGetRandomID(); if(rand_id != -1) // si no hay error al realizar el random { format(msg_char, sizeof(msg_char), "ID: %i (conectado) ha ganado el random", rand_id); } return SendClientMessageToAll(-1, msg_char); }
|
Que bonito seсor arquitecto, mi codigo no funcionу pero ya me estoy haciendo uno :3
Respuesta: [DUDA/AYUDA] seleccion ramdom de ID -
DesingMyCry - 16.11.2014
De verdad tanto problema para algo tan simple? Veo que comentan los que supuestamente "saben"...
Es bastante simple; primero guardamos los IDs conectados y luego entre esos hacemos un azar. A pawn serнa algo como:
pawn Код:
stock obtenerIDrandom()
{
new a, b[MAX_PLAYERS];
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(!IsPlayerConnected(playerid)) continue;
b[a++] = playerid;
}
return b[random((a)-(0b01)))];
}
Respuesta: [DUDA/AYUDA] seleccion ramdom de ID -
jotajeda - 16.11.2014
Amigo como tu querнas que salga al azar solo de los jugadores conectados un solo ganador aqui estб el codigo, lo probй y funciona a la perfecciуn.
pawn Код:
new Total_Conectados;// variable global.
CMD:seleccionar(playerid, params[])
{
new string[128];
format(string, sizeof(string), "Total de conectados: %i ",Total_Conectados);
SendClientMessage(playerid, -1, string);
new Seleccionado = random(Total_Conectados);
format(string, sizeof(string), "id escogida: %i ",Seleccionado);
SendClientMessage(playerid, -1, string);
GivePlayerMoney (Seleccionado, 50000);
//mas funciones
//mas funciones bla bla bla.
return true;
}
public OnPlayerConnect(playerid)
{
Total_Conectados++;//suma los conectas
//las demas funciones.
}
public OnPlayerDisconnect(playerid, reason)
{
Total_Conectados--;//resta de los conectados
//las demas funciones.
}
Respuesta: [DUDA/AYUDA] seleccion ramdom de ID -
DesingMyCry - 16.11.2014
No jotajeda. Ese cуdigo te funcionу porque solo habнa 1 jugador conectado.
Ya dejй la soluciуn.
Respuesta: [DUDA/AYUDA] seleccion ramdom de ID -
jotajeda - 16.11.2014
Quote:
Originally Posted by DesingMyCry
No jotajeda. Ese cуdigo te funcionу porque solo habнa 1 jugador conectado.
Ya dejй la soluciуn.
|
Lo has probado? jajaja, yo si, probй con tres jugadores conectados, y me daba a uno, luego al otro, y asн al azar.
їLo probaste siquiera?