Initial commit
This commit is contained in:
295
scripting/include/rtd2.inc
Normal file
295
scripting/include/rtd2.inc
Normal file
@@ -0,0 +1,295 @@
|
||||
#if defined _rtd2_included
|
||||
#endinput
|
||||
#endif
|
||||
#define _rtd2_included
|
||||
|
||||
public SharedPlugin:__pl_rtd2 = {
|
||||
name = "RollTheDice2",
|
||||
file = "rtd2.smx",
|
||||
#if defined REQUIRE_PLUGIN
|
||||
required = 1,
|
||||
#else
|
||||
required = 0,
|
||||
#endif
|
||||
};
|
||||
|
||||
#if !defined REQUIRE_PLUGIN
|
||||
public __pl_rtd2_SetNTVOptional(){
|
||||
|
||||
MarkNativeAsOptional("RTD2_GetClientPerkId");
|
||||
MarkNativeAsOptional("RTD2_GetClientPerkTime");
|
||||
|
||||
MarkNativeAsOptional("RTD2_ForcePerk");
|
||||
MarkNativeAsOptional("RTD2_RollPerk");
|
||||
MarkNativeAsOptional("RTD2_RemovePerk");
|
||||
|
||||
MarkNativeAsOptional("RTD2_GetPerkOfString");
|
||||
|
||||
MarkNativeAsOptional("RTD2_RegisterPerk");
|
||||
MarkNativeAsOptional("RTD2_IsRegOpen");
|
||||
MarkNativeAsOptional("RTD2_SetPerkByToken");
|
||||
MarkNativeAsOptional("RTD2_SetPerkById");
|
||||
MarkNativeAsOptional("RTD2_DefaultCorePerk");
|
||||
|
||||
MarkNativeAsOptional("RTD2_CanPlayerBeHurt");
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/****************************\
|
||||
- F O R W A R D S -
|
||||
\****************************/
|
||||
|
||||
|
||||
/**
|
||||
* Called everytime rtd is activated to determine if the player can use the dice mod.
|
||||
* Return Plugin_Continue to allow, anything else denies them access.
|
||||
*
|
||||
* @note sm_forcertd command and RTD2_ForcePerk native does not call this.
|
||||
*
|
||||
* @param client Client index.
|
||||
*/
|
||||
forward Action:RTD2_CanRollDice(client);
|
||||
|
||||
|
||||
/**
|
||||
* Called when a perk (iPerkId) is about to be forced by an admin (client) on a target (iTarget).
|
||||
* Return Plugin_Continue to allow, anything else denies the force.
|
||||
*
|
||||
* @note Called only by sm_forcertd command and RTD2_ForcePerk native.
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param iTarget Target client index.
|
||||
* @param iPerkId ID of the perk about to be forced.
|
||||
*/
|
||||
forward Action:RTD2_CanForcePerk(client, iTarget, iPerkId);
|
||||
|
||||
|
||||
/**
|
||||
* Called when a perk (iPerkId) is about to be removed by an admin (client) from a target (iTarget).
|
||||
* Return Plugin_Continue to allow, anything else denies the force.
|
||||
*
|
||||
* @note Called only by sm_removertd command and RTD2_RemovePerk native.
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param iTarget Target client index.
|
||||
* @param iPerkId ID of the perk about to be removed.
|
||||
*/
|
||||
forward Action:RTD2_CanRemovePerk(client, iTarget, iPerkId);
|
||||
|
||||
|
||||
/**
|
||||
* Called when a perk has just been activated on a player.
|
||||
*
|
||||
* @param client Client Index.
|
||||
* @param iPerk Perk Index.
|
||||
* @param iDuration Perk Duration (-1 if no time).
|
||||
*/
|
||||
forward RTD2_Rolled(client, iPerk, iDuration);
|
||||
|
||||
|
||||
/**
|
||||
* Called when a perk has just been activated on a player.
|
||||
*
|
||||
* @param client Client Index.
|
||||
* @param iPerk Removed Perk's Index.
|
||||
* @param iReason Reason Index (0=plugin unload, 1=death, 2=class change, 3=wear off, 4=disconnect, 5=custom/unknown).
|
||||
*/
|
||||
forward RTD2_Removed(client, iPerk, iReason);
|
||||
|
||||
|
||||
|
||||
|
||||
/**************************\
|
||||
- N A T I V E S -
|
||||
\**************************/
|
||||
|
||||
|
||||
/**
|
||||
* Returns player's current perk index. Meant to check if player is using RTD.
|
||||
*
|
||||
* @param client Client Index.
|
||||
*
|
||||
* @return Perk index if client is using RTD, -1 otherwise.
|
||||
*/
|
||||
native RTD2_GetClientPerkId(client);
|
||||
|
||||
|
||||
/**
|
||||
* Returns time in seconds the player has left to the perk end.
|
||||
*
|
||||
* @param client Client Index.
|
||||
*
|
||||
* @return Time in seconds if client is using RTD, -1 otherwise.
|
||||
*/
|
||||
native RTD2_GetClientPerkTime(client);
|
||||
|
||||
|
||||
/**
|
||||
* Forces a perk on a player
|
||||
*
|
||||
* @param client Client Index.
|
||||
* @param sPerk Perk string, containing id, token or a tag. If invalid a roll will be used.
|
||||
* @param iTime Custom perk's time. -1 = don't use.
|
||||
* @param bOvrClass 0/1 - If perk doesn't match player's class, should it be applied anyway?
|
||||
* @param initiator Entity which initiated forcing the perk.
|
||||
*
|
||||
* @return -5 if RTD2_CanForcePerk forward was blocked,
|
||||
* -4 if client index is not valid (bots are not valid either),
|
||||
* -3 if client is using RTD,
|
||||
* -2 if client is dead,
|
||||
* -1 if there were no perks available,
|
||||
* <0 and more> forced perk's index.
|
||||
*/
|
||||
native RTD2_ForcePerk(client, String:sPerk[]="-1", iTime=-1, bOvrClass=0, initiator=0);
|
||||
|
||||
|
||||
/**
|
||||
* Rolls a perk with given data.
|
||||
*
|
||||
* @note This does NOT apply the perk to the client.
|
||||
*
|
||||
* @param client Client Index.
|
||||
* @param bOverrideDisabled 0/1 - Roll disabled perks?
|
||||
* @param bOverrideClass 0/1 - Roll perks NOT for player's class?
|
||||
* @param bCountRepeat 0/1 - Roll perks which repeated twice in 2 rolls for client? (sm_rtd2_repeat 1 ONLY)
|
||||
* @param bCountGreatRepeat 0/1 - Roll perks which repeated twice in 3 rolls for client? (sm_rtd2_repeatgreat 1 ONLY)
|
||||
*
|
||||
* @return Perk index on success, -1 otherwise
|
||||
*/
|
||||
native RTD2_RollPerk(client=0, bOverrideDisabled=0, bOverrideClass=0, bCountRepeat=1, bCountGreatRepeat=1);
|
||||
|
||||
|
||||
/**
|
||||
* Removes current perk from the client.
|
||||
*
|
||||
* @param client Client Index.
|
||||
* @param iReason Reason Index (0=plugin unload, 1=death, 2=class change, 3=wear off, 4=disconnect, 5=custom/unknown).
|
||||
* @param sReason Provide custom reason IF iReason=5.
|
||||
*
|
||||
* @return Perk index which got removed, -1 if client wasn't using RTD.
|
||||
*/
|
||||
native RTD2_RemovePerk(client, iReason=3, const String:sReason[]="");
|
||||
|
||||
|
||||
/**
|
||||
* Gets the perk's index by either the actual index, perk's token or a single tag
|
||||
*
|
||||
* @param sString String to search by.
|
||||
*
|
||||
* @return Perk's index on success, -1 otherwise.
|
||||
*/
|
||||
native RTD2_GetPerkOfString(const String:sString[]="");
|
||||
|
||||
|
||||
|
||||
|
||||
/****************************\
|
||||
******************************
|
||||
- E X T E R N A L -
|
||||
******************************
|
||||
\****************************/
|
||||
|
||||
/*
|
||||
|
||||
The following are grouped individually,
|
||||
because they are meant to be for plugins
|
||||
which register their own perks to the RTD.
|
||||
|
||||
For a full tutorial on how to use those,
|
||||
see the RTD's thread on AlliedModders:
|
||||
|
||||
https://forums.alliedmods.net/showthread.php?t=278579
|
||||
|
||||
*/
|
||||
|
||||
functag RTD2Manager public(client, iPerkId, bool:bEnable);
|
||||
|
||||
/**
|
||||
* Registers a perk from a different plugin to the core.
|
||||
* The parameters match the fields in the KV file.
|
||||
* Perks cannot be unregistered, disable them instead.
|
||||
* If a token was found in another perk, it will OVERRIDE that perk.
|
||||
* For in-depth information, see the RTD thread on AlliedModders.
|
||||
*
|
||||
* @param sToken Unique token used for addressing the perk.
|
||||
* @param sName Perk name.
|
||||
* @param iGood 0 - bad perk; 1 - good perk
|
||||
* @param sSound Path to the initiation sound file.
|
||||
* @param iTime -1 -> no timer; 0 -> ConVar default time; 0< -> Custom perk time.
|
||||
* @param sClass Class string to limit the perk to.
|
||||
* @param sWeapon Weapon classnames to limit the perk to.
|
||||
* @param sTags Perk's tags used to find or address the perk.
|
||||
* @param funcPerk Callback function; public(client, iPerkId, bool:bEnable)
|
||||
*
|
||||
* @return Perk's index on success, -1 otherwise (not all paremeters filled).
|
||||
*/
|
||||
native RTD2_RegisterPerk(const String:sToken[], const String:sName[], iGood, const String:sSound[], iTime, const String:sClass[], const String:sWeapons[], const String:sTags[], RTD2Manager:funcPerk);
|
||||
|
||||
|
||||
/**
|
||||
* Registering a perk via external plugin is possible only after all the core ones were registered.
|
||||
* You can register new perks in OnPluginStart() when this native returns 1 (if late-loaded).
|
||||
* Otherwise, register them in the RTD2_OnRegOpen() forward.
|
||||
*
|
||||
* @return 1 if registering is open, 0 otherwise.
|
||||
*/
|
||||
native RTD2_IsRegOpen();
|
||||
|
||||
|
||||
/**
|
||||
* This forward will fire when RTD is ready handle perk registration.
|
||||
* RTD2_RegisterPerk() should ALWAYS be executed in this forward.
|
||||
*/
|
||||
forward RTD2_OnRegOpen();
|
||||
|
||||
|
||||
/**
|
||||
* Enables/disables perk by token.
|
||||
*
|
||||
* @params sToken The token to find the perk by.
|
||||
* @params iDir (direction) -1 = disable, 0 = toggle, 1 = enable
|
||||
*
|
||||
* @return ID of the perk, -1 if not found.
|
||||
*/
|
||||
native RTD2_SetPerkByToken(const String:sToken[], iDir=0);
|
||||
|
||||
|
||||
/**
|
||||
* Enables/disables perk by ID.
|
||||
*
|
||||
* @params iId Perk's ID.
|
||||
* @params iDir (direction) -1 = disable, 0 = toggle, 1 = enable
|
||||
*
|
||||
* @return 1 if anything changed, 0 if was already in the requested state, -1 on error.
|
||||
*/
|
||||
native RTD2_SetPerkById(iId, iDir=0);
|
||||
|
||||
|
||||
/**
|
||||
* If RTD2_RegisterPerk() was used to override functionality of a core perk,
|
||||
* this native can be used to set it back to the default one.
|
||||
* It will accept either the perk's ID or its token (id > token).
|
||||
* You should use it only on core perks.
|
||||
*
|
||||
* @params iId Perk's ID.
|
||||
* @params sToken Perk's token.
|
||||
*
|
||||
* @return 1 if anything was changed, 0 nothing was changed, -1 on error.
|
||||
*/
|
||||
native RTD2_DefaultCorePerk(iId=-1, const String:sToken[]="");
|
||||
|
||||
|
||||
/**
|
||||
* A miscellaneous native which returns whether the client can be hurt.
|
||||
* Optionally, hurt by whom.
|
||||
* It is adived to use this as it checks if the client is in Friendly Mode.
|
||||
*
|
||||
* @params client Can this client be hurt...
|
||||
* @params by ...by this client?
|
||||
*
|
||||
* @return 1 if yes, 0 if not or error.
|
||||
*/
|
||||
native RTD2_CanPlayerBeHurt(client, by=0);
|
Reference in New Issue
Block a user