#if defined _pubnite_mod_included
    #endinput
#endif

#define _pubnite_mod_included

#if !defined MAX_PLAYERS
#define MAX_PLAYERS			32
#endif

#if !defined MAX_MODEL_LENGTH
#define MAX_MODEL_LENGTH		64
#endif

enum _:rRarity
{
	RARITY_NONE,
	RARITY_GREY,
	RARITY_GREEN,
	RARITY_BLUE,
	RARITY_PURPLE,
	RARITY_GOLD
}

enum cCommandsData
{
	cRank,
	cTeam,
	cGetoutTeam,
	cBag,
	cMainMenu,
	cTop15
}

/**
* Pass the winner(s) ID
* @iWinners			all avaliable winners' ID
* @How many winners		how many players won
*/
forward pubnite_winner(iWinners[], iWinnersNum)

/**
* Called when a player is knocked out
* @iAttacker		Knocker ID
* @iVictim		Victim ID
* @iWeaponID		Weapon used to knock the victim
*/
forward client_KnockedOut(iAttacker, iVictim, iWeaponID)

/**
* Executed when a team is either cancelled or all players are dead.
* @iTeamID		The teamID.
*/
forward pubnite_TeamEliminated(iTeamID)

/**
* Executed when the round has started
* @iPlayersNum		Pass how many players are playing.
* @iSoloNum		How many solos.
* @iTeamNum		How many trio/squads.
*/
forward pubnite_roundStarted(iPlayersNum, iSoloNum, iTeamNum)

/**
* Executed when a customized item is created
* @iEntityID			the entity ID
* @iCustomItemID		the custom item ID
*/
forward pubnite_customitem_created(iEntityID, iCustomItemID)

/**
* Executed when a customized item is picked up
* @iPlayer			player's id
* @iEntityID			the entity ID
* @iCustomItemID		the custom item ID
*/
forward pubnite_customitem_pickedup(iPlayer, iEntityID, iCustomItemID)

/**
* Executed when a customized item is dropped
* @iPlayer		the player ID
* @iCustomItemID	the custom item ID
*/
forward pubnite_customitem_dropped(iPlayer, iCustomItemID)

/**
* Executed when the player jump from the bus
* @iPlayer		the player ID
*/
forward pubnite_player_busdrop(iPlayer)

/**
* Executed when the player lands (after jumping from the bus)
* @iPlayer		the player ID
*/
forward pubnite_player_land(iPlayer)

/**
* Checks if the user is outside the safe zone
*@id			the id of the user to check if he's in the redzone
*/
native pubnite_is_in_redzone(id)

/**
* Checks if the user is knocked out
*@id			the id of the user to check if he's knocked out.
*/
native pubnite_is_knockedout(id)

/*
* gets the redzone compression level
*/
native pubnite_get_redzone_level()

/**
* Checks if the attacker and the victim are teammates
* @iAttacker		the id of the attacker
* @iVictim		the id of the victim
*/
native pubnite_is_teammate(iAttacker, iVictim)

/**
* Gets the win ammount of the player
* @id			the id of the player to check
* @iWinType		(0 = Solo wins | 1 = Duo Wins | 2 = Trio/Squad Wins)
*/
native pubnite_get_user_wins(id, iWinType)

/**
* Set/Take victories from a player
*@id			the id of the user to take/give.
*@iWins			the value to take/give
*@iWinType		(0 = Solo wins | 1 = Duo Wins | 2 = Trio/Squad Wins)
*/
native pubnite_set_user_wins(id, iWins, iWinType)

/**
* Checks if the user is in a team and return it's ID
*@id			the id of the user to check if he's in a team
*/
native pubnite_get_user_team(id)

/**
* Set a new team to target(s)
*@id			the id of the user to change the team
*@iNewTeam		new team id
*@bSetTeammatesToo	if you want the teammates of the @id follow the same teamid as well.
*/
native pubnite_set_user_team(id, iNewTeam, bool:bSetTeammatesToo)

/**
* Checks if is in the countdown.
*/
native pubnite_is_in_countdown()

/**
* Get player knocker's ID
*/
native pubnite_get_knockerid(id)

/**
* Return how many players a team has.
* @iTeam		TeamID to check
*/
native pubnite_players_remaining(iTeam, bool:bCheckAlive)

/**
* Checks if an origin is inside safe zone
* @fOriginX		fOrigin[0]
* @fOriginY		fOrigin[1]
*/
native pubnite_origin_inside_redzone(Float:fOriginX, Float:fOriginY)

/**
* Return how many solo/teams is remaining
* @iCheckSoloPlayers	(0 = Check only solo players | 1 = check teams left)
*/
native pubnite_teamsLeft(iCheckSoloPlayers)

/**
* Return how many seconds to the redzone exec
*/
native pubnite_get_zone_time()

/** Gives the mod's command string
* @cCommand		all avaliable commands, check the top to see which are they.
* @szString		string with the command string
*/
native pubnite_get_command(cCommandsData:cCommand, szString[MAX_PLAYERS])

/**
* Checks if the ID passed is a customized item
* @iCustomItemID	the customized ID to check
*/
native pubnite_is_customitem(iCustomItemID)

/**
* Checks if the player has a determined custom item
* @iPlayer		the player id
* @iCustomItemID	the custom item id to check
*/
native pubnite_has_customitem(id, iCustomItemID)

/** Return a random customized item
* @iParamItemID		the random customized item's ID
* @iParamItemRarity		the random customized item's rarity
* @iParamItemID		the random customized item's w_ model
*/
native pubnite_get_randomitem(&iParamItemID, &iParamItemRarity, szParamItemModel[MAX_MODEL_LENGTH])

/** Return how many customized items has been created
*/
native pubnite_get_customitem_num()

/** Return a customized item ID only
* @iCustomItem		which customized item you want to return
* @iCustomItemID	the custom item ID
*/
native pubnite_get_customitem_id(iCustomItem, &iCustomItemID)

/** Return a customized item information
* @iCustomItem		which customized item you want to return
* @iCustomItemID	the ID of the returned item
* @szCustomItemName	the name of the returned item
*/
native pubnite_get_customitem(iCustomItem, &iCustomItemID, szCustomItemName[MAX_PLAYERS])

/** Register a customized item
* @szCustomItemName	the customized item display name
* @szCustomItemModel	the customized item model
* @iCustomItemRarity	the rarity
* @szCustomItemFunc	the customized item function that returns if the user has the item
*/
native pubnite_register_customitem(szCustomItemName[MAX_PLAYERS], szCustomItemModel[MAX_MODEL_LENGTH], iCustomItemRarity, szCustomItemFunc[MAX_PLAYERS])

/** Return a customized item ID by it's name
* @szCustomItemName	the name to check
*/
native pubnite_customitemid_by_name(szCustomItemName[MAX_PLAYERS])

/** Return a customized item rarity by it's ID
* @iCustomItemID	the customized item ID
*/
native pubnite_customitem_rarity_by_id(iCustomItemID)