
#if defined _csstats_custom_included
  #endinput
#endif
#define _csstats_custom_included

// ----------------------
// --- Custom Natives ---
// ----------------------

/*
* Fields in Stats[8]:
* 0 - kills
* 1 - deaths
* 2 - headshots
* 3 - teamkilling
* 4 - shots
* 5 - hits
* 6 - damage
* 7 - <null>
*
* Fields in Stats2[4]:
* 0 - total defusions
* 1 - bomb defused
* 2 - bomb plants
* 3 - bomb explosions
*
* Fields in Bodyhits[8]:
* 0 - <null>
* 1 - Head
* 2 - Chest
* 3 - Stomach
* 4 - Left Hand
* 5 - Right Hand
* 6 - Left Leg
* 7 - Right Leg
*
* Important Note : Position = Rank - 1. eg. If index denotes the position of 
* rank 1 player, then index = 0. 
*/

/* 
*  Returns the Rank of Player. --> index = id. 
*  Returns 0 if no Rank exists.
*/
native get_user_rank(index);

/*
*  Gets current session score of player --> index = id
*  Returns 0 if player is not valid/out of range
*  Returns 1
*/
native get_user_score(index,&frags,&deaths);

/*
*  Sets overall stats of Player with given parameters. --> index = id. 
*  Returns 0 if player is not valid/out of range
*  Returns new Rank
*
*  Note - If you don't want to edit/set a stats/bodyhits field,
*  you can set its value as -1
*/
native set_user_stats(index,stats[8],bodyhits[8]);
native set_user_stats2(index,stats2[4]);

/*
*  Sets overall stats with given parameters. --> index = position. 
*  Returns new Rank
*
*  Note - If you don't want to edit/set a stats/bodyhits field,
*  you can set its value as -1
*/
native set_stats(index,stats[8],bodyhits[8]);
native set_stats2(index,stats2[4]);

/*
*  Sets current session score of player --> index = id
*  Returns 0 if player is not valid/out of range
*  Returns 1
*
*  Note - If you don't want to edit/set a stats/bodyhits field,
*  you can set its value as -1
*/
native set_user_score(index,frags,deaths);

/*
*  Resets overall stats to null --> index = id.
*  Returns 0 if player is not valid/out of range
*  Returns new Rank
*
*  Note - This doesn't differentiate stats or stats2.
*  It simply nulls the entire Stats structure of index.
*/
native reset_user_stats(index)

/*
*  Resets overall stats to null --> index = position.
*  Returns new Rank
*
*  Note - This doesn't differentiate stats or stats2.
*  It simply nulls the entire Stats structure of index.
*/
native reset_stats(index)

/*
*  Adds/Pushes overall stats with given parameters.
*  Returns 0 if Stats Entry already exists or can't be created
*  Returns new Rank
*
*  Note - If you don't want to set a stats/bodyhits field,
*  you can set its value as -1
*
* IMPORTANT : "unique" is based on the value of "csstats_rank" cvar 
* which sets the basis for uniquely defining a rankstats entry:
* 0 - name[]
* 1 - authid[]
* 2 - ip[] ( make sure to set parameter isip = 1 )
*
* WARNING : Use this function with Caution.
*/
native push_stats(const unique[],const name[],stats[8],bodyhits[8],isip=0);

/*
* Removes and Deletes the Stats Entry. --> index = position. 
*  Returns -1 if position is not found.
*  Returns 0 if player with the position is connected to server.
*  Returns 1 if successfully removed.
*/
native remove_stats(index);

/* 
*  Reloads all the stats from the file and 
*  refresh rankstats of all the connected 
*  players and also reset current score of player
*  Returns 1
*
*  Note - If the stats are not externally edited
*  then this will restore the stats from previous
*  map change or from start of HLDS as by default,
*  stats file is saved only at these moments.
*
*  If the stats file doesn't exist, the function
*  will not load stats. The stats in-game will remain
*  the same as before.
*
*  default stats file path : amxmodx/data/csstats.dat
*/
native force_load_stats();

/*
*  Manually saves all the stats till previous round
*  before Restart of Map/Server.
*  Returns 1
*
*  default stats file path : amxmodx/data/csstats.dat
*/
native force_save_stats();

/*
*  Resets the Score
*/
stock reset_user_score(id)
{
	return set_user_score( id, 0, 0 );
}
