|
|
#1 |
|
Gangsta
![]() ![]() ![]() ![]() Join Date: Mar 2012
Location: Gurgaon,India
Posts: 743
Reputation: 137
|
TOP PLAYERS INCLUDE Hey Guys, This is gonna be my first include. Info : With this include, you can sort out Players Data in Ascending/Descending Order. Stocks : pawn Code:
Usage With t_FeedInfo, you shall feed the information which you want to sort out. pawn Code:
With t_GetRank, it will return the rank of that player according to order(Ascending/Descending) and your data. Suppose, you have feeded data Code:
Playerid Data Rank (Ascending) Rank (Descending)
0 9 4 2
1 1 2 4
2 -5 1 5
3 10 5 1
4 2 3 3
pawn Code:
Now rank will have value 5 pawn Code:
pawn Code:
Since, this is my first script and it took me 30 min to complete , I am sure it may have lot's of bugs. Report Bugs and Suggestions Code:
#define ORDER_ASC 0
#define ORDER_DES 1
new Float:t_Data[MAX_PLAYERS];
new bool:t_IsDataEntered = false;
new t_id[MAX_PLAYERS];
new t_Data_Sorted_Manner = -1;
/*
native t_FeedInfo(playerid,Float:info);
native t_GetRank(playerid,order);
native t_GetPlayer(rank,order);
*/
stock t_FeedInfo(playerid,Float:info)
{
t_Data[playerid] = info;
t_id[playerid] = playerid;
t_IsDataEntered = true;
return 1;
}
stock SortData(order)
{
if(order == ORDER_ASC)
{
for(new i=0;i<MAX_PLAYERS;++i)
{
if(!IsPlayerConnected(i)) continue;
for(new j=i;j<MAX_PLAYERS;++j)
{
if(!IsPlayerConnected(j)) continue;
if(t_Data[j]<t_Data[i])
{
new Float:temp = t_Data[i];
t_Data[i] = t_Data[j];
t_Data[j] = temp;
new temp1 = t_id[i];
t_id[i] = t_id[j];
t_id[j] = temp1;
}
}
}
return 1;
}
else
{
for(new i=0;i<MAX_PLAYERS;++i)
{
if(!IsPlayerConnected(i)) continue;
for(new j=i;j<MAX_PLAYERS;++j)
{
if(!IsPlayerConnected(j)) continue;
if(t_Data[j]>t_Data[i])
{
new Float:temp = t_Data[i];
t_Data[i] = t_Data[j];
t_Data[j] = temp;
new temp1 = t_id[i];
t_id[i] = t_id[j];
t_id[j] = temp1;
}
}
}
return 1;
}
}
stock t_GetRank(playerid,order)
{
if(t_IsDataEntered == false)
{
printf("TOP_PLAYER [ERROR] : Data is not entered\nAborting process.");
return -1;
}
if(playerid==INVALID_PLAYER_ID || (!IsPlayerConnected(playerid)))
{
printf("TOP_PLAYER [ERROR] : Invalid ID || Player not connected\nAborting process.");
return -1;
}
if(order>1 || order < 0)
{
printf("TOP_PLAYER [ERROR] : Wrong Order (only 0,1 allowed)\nAborting process.");
return -1;
}
else if(order == ORDER_ASC)//Ascending order 1,2,3,4,5
{
if(t_Data_Sorted_Manner != ORDER_ASC)
{
SortData(ORDER_ASC);
t_Data_Sorted_Manner = ORDER_ASC;
}
new r;
for(new i=0;i<MAX_PLAYERS;++i)
{
if(!IsPlayerConnected(i)) continue;
if(t_id[i] == playerid)
{
r = i+1;
break;
}
}
return r;
}
else if(order == ORDER_DES)//Descending order 5,4,3,2,1
{
if(t_Data_Sorted_Manner != ORDER_DES)
{
SortData(ORDER_DES);
t_Data_Sorted_Manner = ORDER_DES;
}
new r;
for(new i=0;i<MAX_PLAYERS;++i)
{
if(!IsPlayerConnected(i)) continue;
if(t_id[i] == playerid)
{
r = i+1;
break;
}
}
return r;
}
return 0;
}
stock t_GetPlayer(rank,order)
{
if(t_IsDataEntered == false)
{
printf("TOP_PLAYER [ERROR] : Data is not entered\nAborting process.");
return -1;
}
if(rank<1)
{
printf("TOP_PLAYER [ERROR] : Rank can not be less than 1.\nAborting process.");
return -1;
}
if(order>1 || order < 0)
{
printf("TOP_PLAYER [ERROR] : Wrong Order (only 0,1 allowed)\nAborting process.");
return -1;
}
else if(order == ORDER_ASC)//Ascending order 1,2,3,4,5
{
if(t_Data_Sorted_Manner != ORDER_ASC)
{
SortData(ORDER_ASC);
t_Data_Sorted_Manner = ORDER_ASC;
}
return t_id[rank-1];
}
else if(order == ORDER_DES)//Descending order 5,4,3,2,1
{
if(t_Data_Sorted_Manner != ORDER_DES)
{
SortData(ORDER_DES);
t_Data_Sorted_Manner = ORDER_DES;
}
return t_id[rank-1];
}
return 0;
}
None so far. Code updated (29/09/2012). Flag has been set to check if data is already arranged. Decreasing the no of loops a lot. Also, now there is no more copying of data , therefore saving memory. Last edited by [MM]RoXoR[FS]; 29/09/2012 at 01:26 PM. |
|
|
|
|
|
#2 |
|
Huge Clucker
![]() ![]() ![]() Join Date: Apr 2012
Posts: 315
Reputation: 27
|
Looking good, it can be used maybe in a Top Kill ? So it can be shown in a textdraw..
|
|
|
|
|
|
#3 |
|
Gangsta
![]() ![]() ![]() ![]() Join Date: Mar 2012
Location: Gurgaon,India
Posts: 743
Reputation: 137
|
|
|
|
|
|
|
#4 |
|
High-roller
![]() ![]() ![]() ![]() ![]() Join Date: Jan 2008
Posts: 1,560
Reputation: 258
|
Search for SortArray functions, they do exactly what this is supposed to do.
|
|
|
|
|
|
#5 |
|
High-roller
![]() ![]() ![]() ![]() ![]() Join Date: Jun 2010
Location: Gujarat, India.
Posts: 1,120
Reputation: 68
|
Amazing, Will surely come in handy. Good job.
|
|
|
|
|
|
#6 |
|
Big Clucker
![]() ![]() Join Date: Feb 2012
Location: Mars
Posts: 115
Reputation: 12
|
Can you explain how can I make a top 3 players online with this?
What I'm trying to do is I've made a textdraw which should show 1. [NAME] [MapKills] 2. [NAME] [MapKills] 3. [NAME] [MapKills] You [MapKills] Now, the you part is okay But BUT BUT The 1-2-3 all show ID 0. Now I'm trying to use your include to do it and here's my stock pawn Code:
But I don't really understand how I can sort the top 3 players :/ any help? |
|
|
|
|
|
#7 |
|
Banned
![]() Join Date: May 2012
Location: GangsTa StreeTzZ
Posts: 493
Reputation: 102
|
Sounds Nice!
Gonna try it out |
|
|
|
|
|
#8 |
|
Banned
![]() Join Date: Sep 2012
Posts: 74
Reputation: 0
|
seems good and useful
|
|
|
|
|
|
#9 |
|
High-roller
![]() ![]() ![]() ![]() ![]() Join Date: Mar 2012
Location: Earth
Posts: 1,832
Reputation: 469
|
Useful and well done.
Doesn't matter that this is your first inc, it's very good. |
|
|
|
|
|
#10 | |
|
Gangsta
![]() ![]() ![]() ![]() Join Date: Mar 2012
Location: Gurgaon,India
Posts: 743
Reputation: 137
|
Quote:
pawn Code:
|
|
|
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Revolutionary Roleplay [Heavy RP - By the Players, For the Players] Thoughts? | Jarred Miller | General | 5 | 12/06/2011 07:06 PM |