PDA

View Full Version : top5 players in voice commands



malyczolg
29th June 2013, 20:05
hello, how can i make 5 top5 players?

1. Nick
Rank :
Exp :

2....
3....
4....
5....

i have menu . how make first position?

randall
29th June 2013, 21:17
Im not sure its possible to place dvars in quickresponse menus. If i'm wrong, then you get all players and sort them according to score, and set the first 5 player's name in cvars. (self setclientcvar("first", player[0].name); )

RobsoN
29th June 2013, 21:40
Of course it's possible.

kung foo man
30th June 2013, 03:53
isPlayerAlongerHunterAsB(a, b)
{
if (a.lastTimeOfDeathAsHunter > b.lastTimeOfDeathAsHunter)
return 1;
else
return 0;
}

// sample-function for sort()
a_bigger_b(a, b)
{
if (a > b)
return 1;
else
return 0;
}

// slow, but works... cba for quicksort now
sort(elements, isAbiggerB)
{
for (i=0; i<elements.size; i++)
{
for (j=i+1; j<elements.size; j++)
{
//if (elements[i] < elements[j])
if (
! // big to small...
[[isAbiggerB]](elements[i], elements[j])
)
{
// swap
tmp = elements[j];
elements[j] = elements[i];
elements[i] = tmp;
}
}
}

return elements;
}



Example:


elements = [];
elements[elements.size] = 6;
elements[elements.size] = 3;
elements[elements.size] = 7;
elements[elements.size] = 34;
elements[elements.size] = 2;
elements[elements.size] = 6;
elements[elements.size] = 3;
elements[elements.size] = 5;
elements[elements.size] = 0;
elements[elements.size] = 2;

sorted = sort(elements, ::a_bigger_b);

iprintln("sorted.size="+sorted.size);
for (i=0; i<elements.size; i++)
iprintln("sorted["+i+"]=" + sorted[i]);

RobsoN
30th June 2013, 09:05
And menu dvar file looks something like this:


itemDef
{
name "window"
group ingamebox
visible 1
rect 16 16 0 0
origin ORIGIN_QUICKMESSAGEWINDOW
forecolor 1 1 1 1
textfont UI_FONT_NORMAL
textscale .24
textaligny 8
dvar "your_dvar_name"
decoration
}

IzNoGoD
30th June 2013, 10:13
something a bit faster than kung's method:


sort(elements, max_sort)
{
if(elements.size < max_sort)
max_sort = elements.size;
result = [];
for(i = 0; i < max_sort; i++)
{
smallest = undefined;
num = elements.size - i - 1;
for(j = 0; j < elements.size - i; j++)
{
if(!isdefined(smallest) || elements[j] < smallest)
{
smallest = elements[j];
num = j;
}
}
elements[num] = elements[elements.size - i - 1];
elements[elements.size - i - 1] = smallest;
result[result.size] = smallest;
}
return result;
}

kung foo man
30th June 2013, 10:26
The function signature is incompatible though