256 lines
9.0 KiB
PHP
256 lines
9.0 KiB
PHP
|
#if defined _tf2items_included
|
|||
|
#endinput
|
|||
|
#endif
|
|||
|
#define _tf2items_included
|
|||
|
|
|||
|
#include <tf2>
|
|||
|
|
|||
|
// ====[ CONSTANTS ]===========================================================
|
|||
|
#define OVERRIDE_CLASSNAME (1 << 0) // Item will override the entity's classname.
|
|||
|
#define OVERRIDE_ITEM_DEF (1 << 1) // Item will override the item's definition index.
|
|||
|
#define OVERRIDE_ITEM_LEVEL (1 << 2) // Item will override the entity's level.
|
|||
|
#define OVERRIDE_ITEM_QUALITY (1 << 3) // Item will override the entity's quality.
|
|||
|
#define OVERRIDE_ATTRIBUTES (1 << 4) // Item will override the attributes for the item with the given ones.
|
|||
|
#define OVERRIDE_ALL (0b11111) // Magically enables all the other flags.
|
|||
|
|
|||
|
#define PRESERVE_ATTRIBUTES (1 << 5)
|
|||
|
#define FORCE_GENERATION (1 << 6)
|
|||
|
|
|||
|
// ====[ NATIVES ]=============================================================
|
|||
|
|
|||
|
/**
|
|||
|
* WARNING: This is for ADVANCED users only!
|
|||
|
* You probably want to be using the forward instead of this.
|
|||
|
*
|
|||
|
* This native will perform a GiveNamedItem call for the specified client in
|
|||
|
* order to generate an object based on the specifications of the TF2Items
|
|||
|
* object passed to it.
|
|||
|
*
|
|||
|
* Since the item generation requires all the information that can be passed by
|
|||
|
* the extensions natives, the flags will be ignored and all the given
|
|||
|
* information will be used.
|
|||
|
*
|
|||
|
* Remember that if your values aren't correct, this call may end up in a crash,
|
|||
|
* so please make sure you fill out everything: Classname, item definition index,
|
|||
|
* quality, level and attributes.
|
|||
|
*
|
|||
|
* @param iClient Client that the item will be generated for.
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return Entity index of the newly created item.
|
|||
|
*/
|
|||
|
native TF2Items_GiveNamedItem(iClient, Handle:hItem);
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a TF2Items object, wich can be used to override the parameters of an
|
|||
|
* item before it's given to the client, or to create a new completely new one
|
|||
|
* with GiveNamedItem. Remember to free the object with CloseHandle()
|
|||
|
*
|
|||
|
* @param iFlags Flags used to specify what to override.
|
|||
|
* @return Handle to the TFItems object.
|
|||
|
*/
|
|||
|
native Handle:TF2Items_CreateItem(iFlags);
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the flags to determine what the item will override on the GiveNamedItem.
|
|||
|
* Use the OVERRIDE_ defines to set what you will be changing.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @param iFlags Flags used to specify what to override.
|
|||
|
* @noreturn
|
|||
|
*/
|
|||
|
native TF2Items_SetFlags(Handle:hItem, iFlags);
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the new entity classname used for the item's entity.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @param strClassName New classname to use for the entity.
|
|||
|
* @noreturn
|
|||
|
*/
|
|||
|
native TF2Items_SetClassname(Handle:hItemOverride, String:strClassName[]);
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the item's Definition Index, wich tells the game what item it is. Each
|
|||
|
* weapon/hat/item has an unique definition index. Find these out in the
|
|||
|
* game_items.txt
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @param iItemDefIndex New definition index.
|
|||
|
* @noreturn
|
|||
|
*/
|
|||
|
native TF2Items_SetItemIndex(Handle:hItem, iItemDefIndex);
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the item's quality value, wich determines what color will be used for
|
|||
|
* the item name. Valid values are from 0 to 9.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @param iEntityQuality New item quality.
|
|||
|
* @noreturn
|
|||
|
*/
|
|||
|
native TF2Items_SetQuality(Handle:hItem, iEntityQuality);
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the item's level value. This value can range from 0 to 127.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @param iEntityLevel New item level.
|
|||
|
* @noreturn
|
|||
|
*/
|
|||
|
native TF2Items_SetLevel(Handle:hItem, iEntityLevel);
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the number of attributes that will be used on the item. The maximum
|
|||
|
* number of attributes that can be allocated ranges from 0 to 15.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @param iNumAttributes Number of attributes.
|
|||
|
* @noreturn
|
|||
|
*/
|
|||
|
native TF2Items_SetNumAttributes(Handle:hItem, iNumAttributes);
|
|||
|
|
|||
|
/**
|
|||
|
* Setups the given attribute index to use the attribute and values specified
|
|||
|
* with iAttribDefIndex and flValue. Remember the iSlotIndex ranges from 0 to 15.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @param iSlotIndex The attribute slot index, ranges from 0 to 15.
|
|||
|
* @param iAttribDefIndex The attribute definition index, as it appears on game_items.txt.
|
|||
|
* @param flValue The value assigned to the attribute (how much health, damage, etc.).
|
|||
|
* @noreturn
|
|||
|
*/
|
|||
|
native TF2Items_SetAttribute(Handle:hItem, iSlotIndex, iAttribDefIndex, Float:flValue);
|
|||
|
|
|||
|
/**
|
|||
|
* Retrieves the flags used to determine what the item will override on the
|
|||
|
* GiveNamedItem call.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return Returns the flags used by the item.
|
|||
|
*/
|
|||
|
native TF2Items_GetFlags(Handle:hItem);
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the entity classname we'll use for the item.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return New classname to use for the entity.
|
|||
|
*/
|
|||
|
native TF2Items_GetClassname(Handle:hItem, String:strDest[], iDestSize);
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the new item definition index we'll use to override.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return New definition index.
|
|||
|
*/
|
|||
|
native TF2Items_GetItemIndex(Handle:hItem);
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the item's quality value, wich determines what color will be used for
|
|||
|
* the item name. Valid values are from 0 to 9. But if set to 0 and attributes
|
|||
|
* are also changed, this value will be overridden to 9
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return New entity quality.
|
|||
|
*/
|
|||
|
native TF2Items_GetQuality(Handle:hItem);
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the item's level value. This value can range from 0 to 127.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return New entity level.
|
|||
|
*/
|
|||
|
native TF2Items_GetLevel(Handle:hItem);
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the number of attributes that will be used on the item. The maximum
|
|||
|
* number of attributes that can be allocated ranges from 0 to 15.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return Number of attributes.
|
|||
|
*/
|
|||
|
native TF2Items_GetNumAttributes(Handle:hItem);
|
|||
|
|
|||
|
/**
|
|||
|
* Retrieves the attribute definition index used at the specified index on the
|
|||
|
* item object. Remember the iSlotIndex ranges from 0 to 15.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return The attribute definition index to use.
|
|||
|
*/
|
|||
|
native TF2Items_GetAttributeId(Handle:hItem, iSlotIndex);
|
|||
|
|
|||
|
/**
|
|||
|
* Retrieves the value used for the attribute at the specified index on the item
|
|||
|
* object. Remember the iSlotIndex ranges from 0 to 15.
|
|||
|
*
|
|||
|
* @param hItem Handle to the TF2Items object that we'll be operating with.
|
|||
|
* @return The attribute value to use.
|
|||
|
*/
|
|||
|
native Float:TF2Items_GetAttributeValue(Handle:hItem, iSlotIndex);
|
|||
|
|
|||
|
// ====[ FORWARDS ]============================================================
|
|||
|
/**
|
|||
|
* Called when an item is about to be given to a client.
|
|||
|
* Return Plugin_Changed to override the item to use the configuration of the hItem object.
|
|||
|
* Return Plugin_Continue to keep them intact.
|
|||
|
* Return Plugin_Handled to stop the item being given to the player.
|
|||
|
* Make sure the client gets atleast one weapon.
|
|||
|
*
|
|||
|
* @param client Client Index.
|
|||
|
* @param classname The classname of the entity that will be generated.
|
|||
|
* @param iItemDefinitionIndex Item definition index.
|
|||
|
* @param hItem Handle to a TF2Item object wich describes what values will be overriden.
|
|||
|
*/
|
|||
|
forward Action:TF2Items_OnGiveNamedItem(client, String:classname[], iItemDefinitionIndex, &Handle:hItem);
|
|||
|
|
|||
|
forward TF2Items_OnGiveNamedItem_Post(client, String:classname[], itemDefinitionIndex, itemLevel, itemQuality, entityIndex);
|
|||
|
|
|||
|
/**
|
|||
|
* Do not edit below this line!
|
|||
|
*/
|
|||
|
public Extension:__ext_tf2items =
|
|||
|
{
|
|||
|
name = "TF2Items",
|
|||
|
file = "tf2items.ext.2.ep2v",
|
|||
|
autoload = 0,
|
|||
|
#if defined REQUIRE_EXTENSIONS
|
|||
|
required = 1,
|
|||
|
#else
|
|||
|
required = 0,
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* I'll just leave this here...
|
|||
|
*
|
|||
|
* _(<EFBFBD>< _(<EFBFBD>< _(<EFBFBD>< _(<EFBFBD>< _(<EFBFBD>< _(<EFBFBD>< _(<EFBFBD>< _(<EFBFBD>< _(<EFBFBD><
|
|||
|
* \__) \__) \__) \__) \__) \__) \__) \__) \__)
|
|||
|
* . .
|
|||
|
* // // __
|
|||
|
* __ ______||_//_.<2E>.<2E>
|
|||
|
* _/__`<60> <20> `
|
|||
|
* / / _ _ \
|
|||
|
* / /( <EFBFBD> ) ( <EFBFBD> ) |
|
|||
|
* / | <EFBFBD> __ <EFBFBD> _/\/|
|
|||
|
* | \ ___.-<EFBFBD> `-.___ \ /
|
|||
|
* \ \( ` <20> `)| \
|
|||
|
* \ ) // \
|
|||
|
* \/ / | | |
|
|||
|
* / / | | |
|
|||
|
* <EFBFBD> | | \___/
|
|||
|
* | \_ _/ \ ____
|
|||
|
* <EFBFBD> `----------<EFBFBD> |<EFBFBD> \
|
|||
|
* \ / _<EFBFBD><EFBFBD>
|
|||
|
* \ / _-<EFBFBD>
|
|||
|
* `-._ _<EFBFBD><EFBFBD>-<EFBFBD>
|
|||
|
* _.-<EFBFBD>`---________--<EFBFBD> \
|
|||
|
* <EFBFBD>-.-. _--<EFBFBD> / . ._ \
|
|||
|
* <EFBFBD> `<60> `<EFBFBD><EFBFBD> `<EFBFBD>
|
|||
|
* ><EFBFBD>)_ ><EFBFBD>)_ ><EFBFBD>)_ ><EFBFBD>)_ ><EFBFBD>)_ ><EFBFBD>)_ ><EFBFBD>)_ ><EFBFBD>)_ ><EFBFBD>)_
|
|||
|
* (__/ (__/ (__/ (__/ (__/ (__/ (__/ (__/ (__/
|
|||
|
*
|
|||
|
*/
|