View Single Post
Author Message
teh ORiON
Member
Join Date: Sep 2011
Location: Denmark
Old 08-30-2013 , 18:52   Objectcaps & Entity PlayerUse
Reply With Quote #1

Greetings.

Idk if anyone needs this, but I did anyway.

Basically not all ents are useable, sure you can hook use on them, but it wont register when a player hits his use key on it. You can change this however by messing a bit with the function objectcaps.

What is objectcaps?
PHP Code:
virtual int        ObjectCapsvoid ) { return FCAP_ACROSS_TRANSITION; } 
Basically objectcaps defines some basic capabilities for any given entity. The function returns a bitmask where you can use the following bits:
From the sdk:
PHP Code:
// These are caps bits to indicate what an object's capabilities (currently used for save/restore and level transitions)
#define        FCAP_CUSTOMSAVE                0x00000001
#define        FCAP_ACROSS_TRANSITION         0x00000002        // should transfer between transitions
#define        FCAP_MUST_SPAWN                0x00000004        // Spawn after restore
#define        FCAP_DONT_SAVE                 0x80000000        // Don't save this
#define        FCAP_IMPULSE_USE               0x00000008        // can be used by the player
#define        FCAP_CONTINUOUS_USE            0x00000010        // can be used by the player
#define        FCAP_ONOFF_USE                 0x00000020        // can be used by the player
#define        FCAP_DIRECTIONAL_USE           0x00000040        // Player sends +/- 1 when using (currently only tracktrains)
#define        FCAP_MASTER                    0x00000080        // Can be used to "master" other entities (like multisource) 
And thus if you flip e.g. the FCAP_IMPULSE_USE bit on your return, you will be able to register a player's use on the entity. Below is an example with info_target.

PHP Code:
#include <amxmodx>
#include <hamsandwich>

#define        FCAP_CUSTOMSAVE                0x00000001
#define        FCAP_ACROSS_TRANSITION        0x00000002        // should transfer between transitions
#define        FCAP_MUST_SPAWN                0x00000004        // Spawn after restore
#define        FCAP_DONT_SAVE                0x80000000        // Don't save this
#define        FCAP_IMPULSE_USE            0x00000008        // can be used by the player
#define        FCAP_CONTINUOUS_USE            0x00000010        // can be used by the player
#define        FCAP_ONOFF_USE                0x00000020        // can be used by the player
#define        FCAP_DIRECTIONAL_USE        0x00000040        // Player sends +/- 1 when using (currently only tracktrains)
#define        FCAP_MASTER                    0x00000080

public plugin_init()
{
    
RegisterHam(Ham_ObjectCaps,"info_target","OnObjectCaps")
    
RegisterHam(Ham_Use,"info_target","OnUse")
}

public 
OnObjectCaps()
{
    
SetHamReturnInteger(FCAP_IMPULSE_USE)    
    return 
HAM_OVERRIDE
}

public 
OnUse(thisidcaller)
{
    
client_print(idcaller,print_chat,"Use!")

Attached Files
File Type: sma Get Plugin or Get Source (ObjectcapsTest.sma - 968 views - 1.1 KB)

Last edited by teh ORiON; 08-30-2013 at 20:19.
teh ORiON is offline