View Single Post
Hedgehog Fog
Senior Member
Join Date: Jun 2010
Location: Ukraine
Old 11-03-2016 , 08:20   Re: [API] Custom Entities
Reply With Quote #2


Examples

Super Healthkit

PHP Code:
#pragma semicolon 1

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#include <api_custom_entities>

#define ENTITY_NAME "item_super_healthkit"

#define MAX_HEALTH 100.0
#define HEAL_AMOUNT MAX_HEALTH

new g_szSndItemSpawn[] = "fvox/beep.wav";
new 
g_szSndItemPickup[] = "items/smallmedkit1.wav";
new 
g_szSndItemDisappeared[] = "fvox/buzz.wav";

new 
g_ceHandler;

public 
plugin_precache()
{
    
precache_sound(g_szSndItemSpawn);
    
precache_sound(g_szSndItemPickup);
    
precache_sound(g_szSndItemDisappeared);

    
//Register new entity
    
g_ceHandler CE_Register(
        .
szName ENTITY_NAME//classname
        
.modelIndex precache_model("models/w_medkit.mdl"), //modelindex
        
.vMins Float:{-12.0, -12.00.0}, //min size
        
.vMaxs Float:{12.012.024.0}, //max size
    
.fLifeTime 10.0//lifetime of entity(0.0 to permanent)
    
.fRespawnTime 25.0// respawn delay
        
.preset CEPreset_Item //preset for entity
    
);
    
    
//Register spawn hook.
    
CE_RegisterHook(CEFunction_SpawnENTITY_NAME"OnSpawn");

    
//Register pickup hook.
    
CE_RegisterHook(CEFunction_PickupENTITY_NAME"OnPickup");

    
//Register picked hook
    
CE_RegisterHook(CEFunction_PickedENTITY_NAME"OnPicked");

    
//Register kill hook.
    
CE_RegisterHook(CEFunction_KilledENTITY_NAME"OnKilled");
    
}

public 
plugin_init()
{
    
register_plugin("[Custom Entity] Item Super Health Kit""1.0.0""Hedgehog Fog");

    
//Register Think Hook for custom entity
    
RegisterHam(Ham_ThinkCE_BASE_CLASSNAME"OnThink");
}

public 
OnSpawn(ent)
{
    
//Some effect for item
    
set_pev(entpev_rendermodekRenderNormal);
    
set_pev(entpev_renderfxkRenderFxGlowShell);
    
set_pev(entpev_renderamt4.0);
    
set_pev(entpev_rendercolor, {255.0255.0255.0});
    
    
//Emit spawn sound
    
emit_sound(entCHAN_BODYg_szSndItemSpawnVOL_NORMATTN_NORM0PITCH_NORM);
}

public 
OnPickup(entid)
{
    
//Get player health
    
static Float:fHealth;
    
pev(idpev_healthfHealth);
    
    if (
fHealth MAX_HEALTH) {
        
//Can be picked
        
return PLUGIN_HANDLED;
    }

    
//Can not be picked
    
return PLUGIN_CONTINUE;
}

public 
OnPicked(entid)
{
    
//Get player health
    
static Float:fHealth;
    
pev(idpev_healthfHealth);

    
//Add health to player
    
fHealth += HEAL_AMOUNT;
    if (
fHealth MAX_HEALTH) {
        
fHealth MAX_HEALTH;
    } 
set_pev(idpev_healthfHealth);

    
//Emit pickup sound
    
emit_sound(entCHAN_VOICEg_szSndItemPickupVOL_NORMATTN_NORM0PITCH_NORM);
}

public 
OnKilled(entbool:picked)
{
    if (!
picked) {
        
//Emit disappear sound
        
emit_sound(entCHAN_VOICEg_szSndItemDisappearedVOL_NORMATTN_NORM0PITCH_NORM);
    }
}

public 
OnThink(ent)
{
    
//Check if custom entity is associated with current plugin
  
if (g_ceHandler != CE_GetHandlerByEntity(ent)) {
        return;
    }

    
//Make something here

__________________

❄️ CS Snow Wars - Mod based on snowballs fights
🧟 CS Zombie Panic - A port of HL Zombie Panic!
🎃 CS Halloween Mod - Completely new gamemode for Halloween Holidays
📦 AMXXPack - CLI and build system for amxx projects
🔧 Custom Entities API - API to register custom entities

Last edited by Hedgehog Fog; 08-21-2017 at 06:55.
Hedgehog Fog is offline