Initial commit

This commit is contained in:
2025-04-15 22:27:20 -04:00
parent 5b7b68f81f
commit 771d8fe8e8
597 changed files with 149544 additions and 0 deletions

View File

@@ -0,0 +1,255 @@
#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...
*
* _(<28>< _(<28>< _(<28>< _(<28>< _(<28>< _(<28>< _(<28>< _(<28>< _(<28><
* \__) \__) \__) \__) \__) \__) \__) \__) \__)
* . .
* // // __
* __ ______||_//_.<2E>.<2E>
* _/__`<60> <20> `
* / / _ _ \
* / /( <20> ) ( <20> ) |
* / | <20> __ <20> _/\/|
* | \ ___.-<2D> `-.___ \ /
* \ \( ` <20> `)| \
* \ ) // \
* \/ / | | |
* / / | | |
* <20> | | \___/
* | \_ _/ \ ____
* <20> `----------<2D> |<7C> \
* \ / _<><5F>
* \ / _-<2D>
* `-._ _<><5F>-<2D>
* _.-<2D>`---________--<2D> \
* <20>-.-. _--<2D> / . ._ \
* <20> `<60> `<60><> `<60>
* ><3E>)_ ><3E>)_ ><3E>)_ ><3E>)_ ><3E>)_ ><3E>)_ ><3E>)_ ><3E>)_ ><3E>)_
* (__/ (__/ (__/ (__/ (__/ (__/ (__/ (__/ (__/
*
*/