[Sketch] CSO Like Money System Prototype

For scripting examples for learning how to use AMXX.
User avatar
Archive-Poster
Posts: 1189
Gender:
United States of America

[Sketch] CSO Like Money System Prototype

Post by Archive-Poster »

A reapi approach for a money system like in cso which was pretty popular back then.

Code: Select all

#include <amxmodx>
#include <reapi>

#define MONEY_MULHEAD 1.0
#define MONEY_MULLEG 0.75
#define MONEY_MULARM 0.75
#define MONEY_MULSTOMACH 0.6
#define MONEY_MULCHEST 0.65

#define MONEY_KILL 500
#define MONEY_HIT 2

#define MONEY_START 2000

#define MONEY_MULVIC 0.65

public plugin_init()
{
	register_plugin("Money", "-", "-")

	for(new RewardRules:i = RR_CTS_WIN; i < RR_END+RewardRules:1; i++)
		rg_set_account_rules(i, 0)

	RegisterHookChain(RG_CBasePlayer_Killed, "ReHook_Killed", 1)
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "ReHook_TakeDamage_Post", 1)
        RegisterHookChain(RG_CBasePlayer_AddAccount, "ReHook_AddAccount_Pre")
}

public ReHook_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:flDamage, dmgBits)
{
	if(iVictim == iAttacker)
		return HC_CONTINUE;

	if(get_user_team(iVictim) == get_user_team(iAttacker))
		return HC_CONTINUE;

	if(!is_user_alive(iVictim))
		return HC_CONTINUE;

	if(!(0 < iAttacker < 33) || !(0 < iVictim < 33))
		return HC_CONTINUE;

	new addMoney = floatround(flDamage*MONEY_HIT)

	switch(get_member(iVictim, m_LastHitGroup))
	{
		case HIT_STOMACH: addMoney = floatround(addMoney*MONEY_MULSTOMACH)
		case HIT_CHEST: addMoney = floatround(addMoney*MONEY_MULCHEST)
		case HIT_LEFTLEG, HIT_RIGHTLEG: addMoney = floatround(addMoney*MONEY_MULLEG)
		case HIT_LEFTARM, HIT_RIGHTARM: addMoney = floatround(addMoney*MONEY_MULARM)
		case HIT_HEAD: addMoney = floatround(addMoney*MONEY_MULHEAD)
	}

	rg_add_account(iAttacker, addMoney, AS_ADD)
	rg_add_account(iVictim, floatround(addMoney*MONEY_MULVIC), AS_ADD)

	return HC_CONTINUE;
}

public ReHook_Killed(iId, iAttacker)
{
	rg_add_account(iAttacker, MONEY_KILL, AS_ADD)
}

public ReHook_AddAccount_Pre(id, amount, RewardType:type, bool:bTrackChange)
{
	if(type == RT_NONE)
		return HC_CONTINUE;

	return HC_SUPERCEDE;
}

GetMoney(iId) return get_member(iId, m_iLastAccount)
SetMoney(iId, amount) rg_add_account(iId, amount, AS_SET)
AddMoney(iId, amount) rg_add_account(iId, amount)

Who is online

Users browsing this forum: No registered users and 1 guest