[DUDA] їPorquй falla este cуdigo? - 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: [DUDA] їPorquй falla este cуdigo? (
/showthread.php?tid=605977)
[DUDA] їPorquй falla este cуdigo? -
yesid001 - 27.04.2016
Buenas! Tengo un problema con un cуdigo creador por DesingMyCry: (El cуdigo fue creado por йl respondiendo una duda mнa en otro post, de hace mas de 1 aсo, el post ya murio)
PHP код:
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))];
}
* Los problemas son:
1° Si hay solo 1 jugador conectado, da un error que peta todo. (Puse el "obtenerIDrandom" en un CMD: y cuando uso el Comando, si solo hay 1 jugador conectado, me dice que el comando no existe)
2° Ejemplo: Hay 5 jugadores, de los 5 en el random solo salen del 1 a 4, la ultima/mayor ID nunca sale seleccionada en el random.
3° Si hay 2 jugadores, en el random sale siempre la ID mas "pequeсa" (Ejemplo: Hay 2 jugadores conectados, uno es ID 1 y el otro ID 2/3/4 Etc o mayor a la ID del jugador 1, entonces siempre selecciona la ID 1 (El jugador con la ID mas pequeсa de los 2 jugadores conectados, siempre va ser el seleccionado, es como si detectara solo 1 jugador conectado, pero como dije arriba, cuando hay solo 1 jugador conectado, se buguea y no sigue el codigo, o algo asн, como con el ejemplo del CMD que puse en el error 1°))
Gracias de ante mano, espero me puedan ayudar.
Respuesta: [DUDA] їPorquй falla este cуdigo? -
Swedky - 27.04.2016
pawn Код:
new rand;
while((rand = random(GetPlayerPoolSize() + 1)) && IsPlayerConnected(rand))
{
// rand es igual una ID random conectada.
}
EDIT: si utlizas foreach/y_iterate, utiliza la funciуn "Iter_Random(Player);"
Respuesta: [DUDA] їPorquй falla este cуdigo? -
aoEXE - 27.04.2016
Код:
stock obtenerIDrandom()
{
new a = 0, b[MAX_PLAYERS];
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(!IsPlayerConnected(playerid)) continue;
b[a++] = playerid;
}
if(a) return b[random(a)];
return INVALID_PLAYER_ID;
}
con eso basta.
Respuesta: [DUDA] їPorquй falla este cуdigo? -
yesid001 - 27.04.2016
Quote:
Originally Posted by EnzoMetlc
pawn Код:
new rand; while((rand = random(GetPlayerPoolSize() + 1)) && IsPlayerConnected(rand)) { // rand es igual una ID random conectada. }
EDIT: si utlizas foreach/y_iterate, utiliza la funciуn "Iter_Random(Player);"
|
Muchas Gracias, me quedo mas facil remplazar el codigo que descargar include y tal.
Quote:
Originally Posted by aoEXE
Код:
stock obtenerIDrandom()
{
new a = 0, b[MAX_PLAYERS];
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(!IsPlayerConnected(playerid)) continue;
b[a++] = playerid;
}
if(a) return b[random(a)];
return INVALID_PLAYER_ID;
}
con eso basta.
|
Muchas gracias, funciono perfectamente!