help cmd top 5
#1

hello bros I have a problem with this script when the names appear the first place the list goes off when another user connects the name of the second place is bounced and puts the first place

example

top lis
1 noser 100000
2 noser 0 New player bug name top list
3 rober 0
4 killer 0
5

#include <a_samp>

new
Text: text_Top5[2]
;

enum rankingEnum
{
player_Score,
player_ID
}

public OnFilterScriptInit()
{
text_Top5[0] = TextDrawCreate(79.000000, 135.000000, "Top 5");
TextDrawAlignment(text_Top5[0], 2);
TextDrawBackgroundColor(text_Top5[0], 255);
TextDrawFont(text_Top5[0], 1);
TextDrawLetterSize(text_Top5[0], 0.280000, 1.499999);
TextDrawColor(text_Top5[0], -1);
TextDrawSetOutline(text_Top5[0], 0);
TextDrawSetProportional(text_Top5[0], 1);
TextDrawSetShadow(text_Top5[0], 0);

text_Top5[1] = TextDrawCreate(16.000000, 135.000000, " ");
TextDrawBackgroundColor(text_Top5[1], 255);
TextDrawFont(text_Top5[1], 1);
TextDrawLetterSize(text_Top5[1], 0.200000, 0.999999);
TextDrawColor(text_Top5[1], -1);
TextDrawSetOutline(text_Top5[1], 0);
TextDrawSetProportional(text_Top5[1], 1);
TextDrawSetShadow(text_Top5[1], 0);
TextDrawUseBox(text_Top5[1], 1);
TextDrawBoxColor(text_Top5[1], 150);
TextDrawTextSize(text_Top5[1], 143.000000, 20.000000);
return 1;
}

public OnFilterScriptExit()
{
TextDrawDestroy(text_Top5[0]);
TextDrawDestroy(text_Top5[1]);
return 1;
}

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);
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/top5", true))
{
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[20]
;
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~~b~%d. ~w~%s - ~r~%d", score_Text, i + 1, player_Name, playerScores[i][player_Score]);
}
else
format(score_Text, sizeof(score_Text), "%s~n~~b~%d. ~r~N/A", score_Text, i + 1);
}
TextDrawSetString(text_Top5[1], score_Text);
TextDrawShowForPlayer(playerid, text_Top5[0]);
TextDrawShowForPlayer(playerid, text_Top5[1]);
return 1;
}
return 0;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)