PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
new CLASSNAME[] = "item_healthkit"
#define ACCESS_LEVEL ADMIN_CFG
new const g_medkit_pickup[] = "umbrella/medkit_pickup.wav"
new bool: g_zombie[33]
new bool: g_human[33]
new g_medkit[33]
new FILE[96]
public plugin_init()
{
register_touch("my_entity", "player", "medkit_pickup")
register_clcmd("healthkit_spawn", "cmd_healthkit_spawn", ACCESS_LEVEL, "[save]")
register_concmd("healthkit_load", "cmd_healthkit_load", ACCESS_LEVEL, "<x> <y> <z>")
register_concmd("healthkit_clear", "cmd_healthkit_clear", ACCESS_LEVEL)
register_forward(FM_Touch, "fw_medkit_pickup")
new configs_dir[64], map[32]
get_configsdir(configs_dir, 63)
get_mapname(map, 31)
format(FILE, 95, "%s/maps/%s.cfg", configs_dir, map)
}
public plugin_precache()
{
precache_sound(g_medkit_pickup)
}
public fw_medkit_pickup(pToucher, pTouched, client)
{
if ( pev_valid(pToucher))
{
static className[32], className2[32]
pev(pToucher, pev_classname, className, 31)
if ( pev_valid(pTouched)) pev(pTouched, pev_classname, className2, 31)
if ( equal(className, CLASSNAME))
{
if ( pev_valid(pTouched))
{
if ( equal(className2, "player") && is_user_connected(pTouched))
{
static origin[3]
get_user_origin(pTouched, origin)
if(g_zombie[pToucher])
{
return PLUGIN_HANDLED
}
else if(g_human[pToucher])
{
emit_sound(client, CHAN_ITEM, g_medkit_pickup, 1.0, ATTN_NORM, 0, PITCH_NORM);
g_medkit[client] = true;
}
}
}
engfunc(EngFunc_RemoveEntity, pToucher)
}
}
return FMRES_IGNORED
}
public cmd_healthkit_spawn(id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
emit_sound(id, CHAN_ITEM, g_medkit_pickup, 1.0, ATTN_NORM, 0, PITCH_NORM);
new origin[3]
get_user_origin(id, origin)
healthkit_spawn(origin)
new arg1[6]
read_argv(1, arg1, 5)
if (!equali(arg1, "save"))
return PLUGIN_HANDLED
new command[48]
format(command, 47, "healthkit_load %d %d %d", origin[0], origin[1], origin[2])
write_file(FILE, command)
return PLUGIN_HANDLED
}
public cmd_healthkit_load(id, level, cid) {
if (!cmd_access(id, level, cid, 4))
return PLUGIN_HANDLED
new arg1[8], arg2[8], arg3[8], origin[3]
read_argv(1, arg1, 7)
read_argv(2, arg2, 7)
read_argv(3, arg3, 7)
origin[0] = str_to_num(arg1)
origin[1] = str_to_num(arg2)
origin[2] = str_to_num(arg3)
healthkit_spawn(origin)
return PLUGIN_HANDLED
}
public cmd_healthkit_clear(id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
new healthkit = -1
while ((healthkit = find_ent_by_class(healthkit, CLASSNAME)))
remove_entity(healthkit)
return PLUGIN_HANDLED
}
healthkit_spawn(origin[3]) {
new healthkit = create_entity(CLASSNAME)
if (!healthkit)
return
new Float:vec[3]
IVecFVec(origin, vec)
entity_set_origin(healthkit, vec)
DispatchSpawn(healthkit)
}