[Ajuda] Alguem Poderia me ajudar?
#1

o meu problema й o seguinte eu peguei esse codigo aki no forum do Hancoc e teve um reparo por AleeFerreira. Й um sistema de rank por score, o unico problema й que sу mostra o primeiro colocado. eu gostaria q mostrasse pelo menos atй o terceiro colocado. Sу que eu nao consigui entender muito bem o codigo pra fazer isso.. alguem poderia me ajuda.
Код:
#include <a_samp>
#define SLOTS 500
new
bool:TopFoi[SLOTS],
Valor_Maximo[10] = -1,
PlayerMelhor[10][24],
Percorrido
;
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/rankScore", true))
        {
        TopPlayersOnline(playerid);
               return 1;}

         return 1;
}
stock TopPlayersOnline()
{
    new string[256];
    while(Percorrido < 10) {
        for(new i; i < 500; i++)  if(IsPlayerConnected(i)) {
            if(GetPlayerScore(i) > Valor_Maximo[Percorrido] && TopFoi[i] == false) {
                GetPlayerName(i,PlayerMelhor[Percorrido],24);
                Valor_Maximo[Percorrido] = GetPlayerScore(i);
                TopFoi[i] = true;
            }
        }
        Percorrido++;
    }
    for(new a; a < 500; a++)  if(IsPlayerConnected(a)) TopFoi[a] = false;
    Percorrido = 0;
    for(new i; i < 10;i++)
    {
        if(PlayerMelhor[i][0] != EOS)
        {
            format(string ,64,"[%d] - Player: %s | Score: %d",i+1,PlayerMelhor[i],Valor_Maximo[i]);
            TextDrawSetString(trank,string);
            TextDrawShowForAll(trank);  
            Valor_Maximo[i] = -1;
        }
    }
}
o link de onde eu tirei ta ai : https://sampforum.blast.hk/showthread.php?tid=311389

pf me ajuda... Muito obrigado desde jб..
Reply
#2

Fiz um filterscript melhorsinho, tenta:
pawn Код:
#include <a_samp>

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/rankScore", true))
    {
        static
            Scores[MAX_PLAYERS],
            String[128],
            Nome[24],
            IntVar,
        ;
           
        for(IntVar = 0; IntVar != MAX_PLAYERS; ++IntVar) Scores[IntVar] = GetPlayerScore(IntVar);
       
        BubbleSort(Scores, sizeof(Scores));
       
        for(IntVar = 0; IntVar < 10; ++i)
        {  
            GetPlayerName(IntVar, Nome, 24);
            format(String, sizeof(String),"%i є  Nome: %s Pontos: %s", IntVar+1, Nome, Scores[IntVar]);
            SendClientMessage(playerid, -1, String);
        }
        return 1;
    }
    return 0;
}


static stock BubbleSort(v[], size)
{
    #if !defined swap
        #define swap(%0,%1)  (%0 ^= %1, %1 ^= %0, %0 ^= %1)
    #endif
    for(new i = 1; i != size; ++i)
    {
        for(new q = 0; (q != size - i); ++q)if(v[i] > v[q]) s_swap(v[q],v[i]);
    }
}
Reply
#3

tipo da pra mim mudar o SendClientMessage para TextDraw ?
Reply
#4

sim. й sу mudar.
Reply
#5

Deu um problema aki... ta falando q "s_swap" nao foi definido... la no final do codigo..
Reply
#6

pawn Код:
static stock BubbleSort(v[], size)
{
    #if !defined swap
        #define swap(%0,%1)  (%0 ^= %1, %1 ^= %0, %0 ^= %1)
    #endif
    for(new i = 1; i != size; ++i)
    {
        for(new q = 0; (q != size - i); ++q)if(v[i] > v[q]) swap(v[q],v[i]);
    }
}
pronto, apenas subistitua.
Reply
#7

cara esse sisteminha ta meio bugado cara.. Mais agradeзo muito mesmo por ter tentado me ajudar... coisa q ninguem tinha feito ainda.... nao resolveu meu problema mais vou te dar +rep por ter tentado =) eu queria q colocasse o segundo e o terceiro colocado no meu codigo q eu puiz la em cima.. pq ele sу aparece o primeiro.. mais valeu cara.. vou durmi um pouko kkkk flw
Reply
#8

nгo estб bugado,
o cуdigo sу aparece a primeira colocaзгo
porque sem dъvida somente vocк estб testando o servidor sozinho..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)