[Pedido] Rank Top10
#2

Eu usava o dele. Porйm eu dei uma pequena mexida e arrumei faz 1 ano eu acho. Deixei atй ele em dialog. Vou abrir o baъ aqui kkkk'

PS: Ele ler Apenas do LvL 1 para cima. LvL 0 apresenta conflitos.
Nгo vou arrumar mais e optimizar ele no momento.

pawn Код:
/* AONDE QUER QUE APAREЗA: MostrarRankJFS(playerid)
Ex: */

if (!strcmp("/top5", cmdtext, true)) return MostrarRankJFS(playerid);



// ADICIONAR AO FINAL DO GM/FS
forward MostrarRankJFS(playerid);
public MostrarRankJFS(playerid)
{
    new
        playerScores[MAX_PLAYERS][rankingEnum],
        index
    ;
    for(new i; i != MAX_PLAYERS; ++i)
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            playerScores[index][player_Score] = GetPlayerScore(i);
            playerScores[index++][player_ID] = i;
        }
    }
    GetPlayerHighestScores(playerScores, 0, index);
    new
        score_Text[256] = "\n",
        player_Name[MAX_PLAYER_NAME]
    ;
    for(new i; i < 5; ++i)
    {
          if(i < index)
          {
                GetPlayerName(playerScores[i][player_ID], player_Name, sizeof(player_Name));
                format(score_Text, sizeof(score_Text), "%s\n{FFFFFF}%d. {FF7777}%s - {FFFFFF}%d", score_Text, i + 1, player_Name, playerScores[i][player_Score]);
          }
          else
          {
                format(score_Text, sizeof(score_Text), "%s\n{FFFFFF}%d.  {FF7777}N/A", score_Text, i + 1);
          }
    }
    ShowPlayerDialog(playerid, 2742, DIALOG_STYLE_MSGBOX, "Rank Players Online", score_Text, "Fechar", "");
    return true;
}
 
 // Ryder
stock GetPlayerHighestScores(array[][rankingEnum], left, right)
{
    new
        tempLeft = left,
        tempRight = right,
        pivot = array[(left + right) / 2][player_Score],
        tempVar
    ;
    while(tempLeft <= tempRight)
    {
        while(array[tempLeft][player_Score] > pivot) tempLeft++;
        while(array[tempRight][player_Score] < pivot) tempRight--;

        if(tempLeft <= tempRight)
        {
            tempVar = array[tempLeft][player_Score], array[tempLeft][player_Score] = array[tempRight][player_Score], array[tempRight][player_Score] = tempVar;
            tempVar = array[tempLeft][player_ID], array[tempLeft][player_ID] = array[tempRight][player_ID], array[tempRight][player_ID] = tempVar;
            tempLeft++, tempRight--;
        }
    }
    if(left < tempRight) GetPlayerHighestScores(array, left, tempRight);
    if(tempLeft < right) GetPlayerHighestScores(array, tempLeft, right);
}

Imagens:




Depois arrumo para TOP 10, ou se preferir mudar vocк mesmo, basta modificar aquele 5 do Loop.

Caso use outra variбvel de salvamento ou se quiser usar para fazer outro tipo de top... troque o GetPlayerScore.
Inclusive queria postar esse GM. '-'
Reply


Messages In This Thread
Rank Top10 - by Ts3 - 03.12.2014, 01:46
Re: Rank Top10 - by JonathanFeitosa - 03.12.2014, 02:10
Re: Rank Top10 - by Ts3 - 03.12.2014, 02:24

Forum Jump:


Users browsing this thread: 3 Guest(s)