TOP PLAYERS POR KILLS BUG
#1

Hola Amigos Es que Estoy Trancado Por Decirlo Asi miren este script me permite que hallan 10 jugadores en un top de kills
pawn Код:
#include a_samp

#define MEJORES_PLAYERS 10

enum oInfo {
oKills,
oDeaths,
oNombre

}
new OnPlayerInfo[MEJORES_PLAYERS+1][oInfo];
new DIALOG_TOP[2000];


public OnPlayerDeath(playerid, killerid, reason)
{
 


OnPlayerInfo[killerid][oKills] ++;
OnPlayerInfo[playerid][oDeaths] ++;


return 1;
}


public OnPlayerCommandText(playerid, cmdtext[])
{


if(strcmp(cmdtext, "/aa", true) == 0)
{
ShowPlayerDialog(playerid,11,DIALOG_STYLE_MSGBOX,"Top Players",DIALOG_TOP,"aa","aa");
return 1;
}

return 1;
}



public OnGameModeInit()
{

SetTimer("TopPlayersKills", 1000, true);

}



forward TopPlayersKills(playerid);
public  TopPlayersKills(playerid)
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new
Posicion

;
while(Posicion< MEJORES_PLAYERS+1)
{
if(strlen(OnPlayerInfo[Lugar][oKills])) {
format(DIALOG_TOP, sizeof(DIALOG_TOP),
"Nombre: %s   Kills: %d  Deaths: %d \n",
PlayerName(Posicion),OnPlayerInfo[Posicion][oKills],OnPlayerInfo[Posicion][oDeaths]);
}
Posicion++;
}

}
}
return 1;
}


Les Explico El Problema esta en que cuando escribo el comando solo me da el top de una persona
y que el top de esa persona le setea el nick de otra me pueden ayudar es que ya no puedo mas
solo necesito esa ayuda de ante mano gracias
Reply
#2

Cambia esto:
Код:
Posicion++;
Y ponlo abajo del formato DIALOG_TOP, ANTES de la llave.
Reply
#3

Quote:
Originally Posted by Bu11Sh0t
Посмотреть сообщение
Cambia esto:
Код:
Posicion++;
Y ponlo abajo del formato DIALOG_TOP, ANTES de la llave.
Gracias Bulldhot ahora el problema es que solo aparece el top de una sola persona osea deberia se asi

1є juan kill 10

2є andres kill 5

3є jesus kill 1

pero solo aparece uno solo

ejemplo solo aparece jesus kill 1 (teniendo en cuenta que juan tiene mas kill deberia por lo menos aparecer juan no crees me puedes ayudar )
Reply
#4

Te sugiero que revises el scrip, ya que podrias producir un overflow al utilizar "OnPlayerInfo" con un tamaсo de 11 celdas en su 1є dimencion cuando puedes necesitar 500 (excepto que tu servidor sea de 10 jugadores). їA quй me refiero? Definiste OnPlayerInfo de la siguiente forma:
pawn Код:
new OnPlayerInfo[MEJORES_PLAYERS+1][oInfo];
їQuй pasaria si el jugador con el id 100 mata al id 55?
El callback "OnPlayerDeath" seria llamado de la siguiente forma:
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    OnPlayerInfo[killerid][oKills] ++;//Overflow, tamaсo maximo 10, pero killerid es 100.
    OnPlayerInfo[playerid][oDeaths] ++;//Overflow, tamaсo maximo 10, pero playerid es 55.
    return 1:
}
Y para detectar los mejores, te sugiero utilizar el algoritmo "QuickSort" o en su defecto "BubleSort".
Reply
#5

----> http://forum.sa-mp.com/showthread.ph...ight=BubleSort
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)