/* CVARS - copy and paste to shconfig.cfg
//MeeL
meel_level 0
meel_health 100 //Default 100 (no extra health)
meel_armor 150 //Default 150
meel_gravity 1.0 //Default 1.0 = no extra gravity (0.50 is 50% normal gravity, ect.)
meel_speed -1 //Default -1 = no extra speed, this cvar is for all weapons set to 250 or higher to be faster
meel_m4a1mult 1.3 //Damage multiplyer for his m4a1
*/
#include <amxmodx>
#include <fakemeta>
#include <superheromod>
// GLOBAL VARIABLES
new HeroName[] = "MeeL"
new bool:HasMeeL[SH_MAXSLOTS+1]
new CvarM4A1DmgMult
//----------------------------------------------------------------------------------------------
public plugin_init()
{
// Plugin Info
register_plugin("SUPERHERO MeeL", "2.0", "GROM")
// DO NOT EDIT THIS FILE TO CHANGE CVARS, USE THE SHCONFIG.CFG
register_cvar("MeeL_level", "0")
register_cvar("MeeL_health", "100")
register_cvar("MeeL_armor", "150")
register_cvar("MeeL_gravity", "1.0")
register_cvar("MeeL_speed", "-1")
CvarM4A1DmgMult = register_cvar("meel_m4a1mult", "1.3")
// FIRE THE EVENT TO CREATE THIS SUPERHERO!
shCreateHero(HeroName, "New m4a1", "Get MeeL Powerfull m4!", false, "meel_level")
// REGISTER EVENTS THIS HERO WILL RESPOND TO! (AND SERVER COMMANDS)
// INIT
register_srvcmd("meel_init", "meel_init")
shRegHeroInit(HeroName, "meel_init")
// EVENTS
register_event("ResetHUD", "new_spawn", "b")
register_event("CurWeapon", "weapon_change", "be", "1=1")
register_event("Damage", "meel_damage", "b", "2!0")
register_event("DeathMsg", "meel_death", "a")
// Let Server know about the hero's variables
shSetShieldRestrict(HeroName)
shSetMaxHealth(HeroName, "meel_health")
shSetMaxArmor(HeroName, "meel_armor")
shSetMinGravity(HeroName, "meel_gravity")
shSetMaxSpeed(HeroName, "meel_speed", "[0]")
}
//----------------------------------------------------------------------------------------------
public plugin_precache()
{
precache_model("models/shmod/v_meelm4a1.mdl")
}
//----------------------------------------------------------------------------------------------
public meel_init()
{
// First Argument is an id
new temp[6]
read_argv(1, temp, 5)
new id = str_to_num(temp)
// 2nd Argument is 0 or 1 depending on whether the id has the hero
read_argv(2, temp, 5)
new hasPowers = str_to_num(temp)
// Reset thier shield restrict status
// Shield restrict MUST be before weapons are given out
shResetShield(id)
switch(hasPowers)
{
case true:
{
HasMeeL[id] = true
if ( is_user_alive(id) )
{
meel_weapons(id)
}
}
case false:
{
// Check is needed since this gets run on clearpowers even if user didn't have this hero
if ( is_user_alive(id) && HasMeeL[id] )
{
// This gets run if they had the power but don't anymore
engclient_cmd(id, "drop", "weapon_m4a1")
shRemHealthPower(id)
shRemArmorPower(id)
shRemGravityPower(id)
shRemSpeedPower(id)
}
HasMeeL[id] = false
}
}
}
//----------------------------------------------------------------------------------------------
public new_spawn(id)
{
if ( shModActive() && is_user_alive(id) && HasMeeL[id] )
{
set_task(0.1, "meel_weapons", id)
}
}
//----------------------------------------------------------------------------------------------
public meel_weapons(id)
{
if ( !shModActive() || !is_user_alive(id) || !HasMeeL[id] )
return
shGiveWeapon(id, "weapon_m4a1")
}
//----------------------------------------------------------------------------------------------
switch_model(id)
{
if ( !shModActive() || !is_user_alive(id) || !HasMeeL[id] )
return
new clip, ammo, wpnid = get_user_weapon(id, clip, ammo)
if ( wpnid == CSW_M4A1 )
{
set_pev(id, pev_viewmodel2, "models/shmod/v_meelm4a1.mdl")
}
}
//----------------------------------------------------------------------------------------------
public weapon_change(id)
{
if ( !shModActive() || !HasMeeL[id] )
return
new wpnid = read_data(2)
if ( wpnid != CSW_M4A1 )
return
switch_model(id)
new clip = read_data(3)
// Never Run Out of Ammo!
if ( clip == 0 )
shReloadAmmo(id)
}
//----------------------------------------------------------------------------------------------
public meel_damage(id)
{
if ( !shModActive() || !is_user_alive(id) )
return
new weapon, bodypart, attacker = get_user_attacker(id, weapon, bodypart)
if ( attacker <= 0 || attacker > SH_MAXSLOTS )
return
if ( HasMeeL[attacker] && weapon == CSW_M4A1 && is_user_alive(id) )
{
new damage = read_data(2)
new headshot = bodypart == 1 ? 1 : 0
// do extra damage
new extraDamage = floatround(damage * get_pcvar_float(CvarM4A1DmgMult) - damage)
if ( extraDamage > 0 )
shExtraDamage(id, attacker, extraDamage, "m4a1", headshot)
}
}
//----------------------------------------------------------------------------------------------
public meel_death()
{
new id = read_data(2)
if ( !HasMeeL[id] )
return
}
//----------------------------------------------------------------------------------------------
public client_connect(id)
{
HasMeeL[id] = false
}
//----------------------------------------------------------------------------------------------