#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#define PLUGIN "Drop Money"
#define VERSION "1.0"
#define AUTHOR "m4m3ts"
#define Dropped_Money 400
#define Money_Remove_Time 5.0
new const MONEY_MODEL[] = "models/money.mdl"
new const Sounds[][] =
{
"money1.wav",
"money2.wav",
"money3.wav",
"pickup.wav"
}
new sound_voice[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_think("money", "fw_Think")
register_touch("money", "*", "fw_touch")
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1)
register_clcmd("dropmoney", "drop_money")
}
public plugin_precache()
{
precache_model(MONEY_MODEL)
for(new i = 0; i < sizeof(Sounds); i++)
precache_sound(Sounds[i])
}
public Player_Spawn(id)
{
if(is_user_alive(id))
sound_voice[id] = 1
}
public drop_money(id)
{
if(!is_user_alive(id) || cs_get_user_money(id) < Dropped_Money)
return
new Float:origin[3],Float:velocity[3],Float:angles[3]
engfunc(EngFunc_GetAttachment, id, 0, origin,angles)
pev(id,pev_angles,angles)
new entX = create_entity( "info_target" )
set_pev( entX, pev_classname, "money" )
set_pev( entX, pev_solid, SOLID_TRIGGER )
set_pev( entX, pev_owner, id)
set_pev( entX, pev_fuser1, get_gametime() + Money_Remove_Time)
set_pev( entX, pev_nextthink, halflife_time() + 0.1)
set_pev( entX, pev_movetype, MOVETYPE_TOSS )
set_pev( entX, pev_mins, { -2.0,-2.0,-2.0 } )
set_pev( entX, pev_maxs, { 5.0,5.0,5.0 } )
entity_set_model( entX, MONEY_MODEL )
set_pev( entX, pev_origin, origin )
set_pev( entX, pev_angles, angles )
set_pev( entX, pev_owner, id )
velocity_by_aim( id, 300, velocity )
set_pev( entX, pev_velocity, velocity )
cs_set_user_money(id, cs_get_user_money(id) - Dropped_Money)
if(sound_voice[id])
{
emit_sound(id, CHAN_VOICE, Sounds[random(sizeof(Sounds)-1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
sound_voice[id] = 0
set_task(5.0, "back_sound", id)
}
}
public back_sound(id) sound_voice[id] = 1
public fw_touch(Ent, Id)
{
// If ent is valid
static Owner; Owner = pev(Ent, pev_owner)
if(!pev_valid(Ent) || !is_user_alive(Id) || Id == Owner)
return
remove_task(Id)
if(cs_get_user_money(Id) >= 15600) cs_set_user_money(Id, 16000)
else cs_set_user_money(Id, cs_get_user_money(Id) + Dropped_Money)
emit_sound(Id, CHAN_VOICE, Sounds[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
remove_entity(Ent)
}
public fw_Think(ent)
{
if(!pev_valid(ent))
return
static Float:fFrame; pev(ent, pev_frame, fFrame)
fFrame += 1.5
fFrame = floatmin(21.0, fFrame)
set_pev(ent, pev_frame, fFrame)
set_pev(ent, pev_nextthink, get_gametime() + 0.05)
// time remove
static Float:fTimeRemove, Float:Amount
pev(ent, pev_fuser1, fTimeRemove)
pev(ent, pev_renderamt, Amount)
if(get_gametime() >= fTimeRemove)
{
remove_entity(ent)
}
}