Code:
#include <amxmod>
#include <amxmisc>
#include <superheromod>
#include <vexd_utilities>
#if defined AMX_NEW
stock get_user_button(id)
{
return entity_get_int(id, EV_INT_button)
}
#endif
#if defined AMXX_VERSION
#include <engine>
#endif
#if !defined AMXX_VERSION && !defined AMX_NEW
#include <xtrafun>
#endif
// The Invisible Man - Well Duh try guessing his power :p
// CVARS
// invisman_level - what level must they be for The Invisible Man's powers?
// VARIABLES
new gHeroName[]="The Invisble Man"
new gHasInvisPower[SH_MAXSLOTS+1]
new gPlayerLevels[SH_MAXSLOTS+1]
//----------------------------------------------------------------------------------------------
public plugin_init()
{
// Plugin Info
register_plugin("SUPERHERO The Invisible Man","1.0","AssKicR")
// FIRE THE EVENT TO CREATE THIS SUPERHERO!
if ( isDebugOn() ) server_print("Attempting to create Invisble Man Hero")
if ( !cvar_exists("invisman_level") ) register_cvar("invisman_level", "0")
shCreateHero(gHeroName, "Invisble", "Makes you less visible/Harder to see... Only works while standing/not shooting and not zooming...", false, "invisman_level" )
// REGISTER EVENTS THIS HERO WILL RESPOND TO! (AND SERVER COMMANDS)
register_event("ResetHUD","newRound","b")
// INIT
register_srvcmd("invisman_init", "invisman_init")
shRegHeroInit(gHeroName, "invisman_init")
// LEVELS
register_srvcmd("invisman_levels", "invisman_levels")
shRegLevels(gHeroName,"invisman_levels")
// CHECK SOME BUTTONS
set_task(0.01,"check_attack",0,"",0,"b")
set_task(0.01,"check_two_buttons",0,"",0,"b")
set_task(0.01,"check_move_buttons",0,"",0,"b")
// DEFAULT THE CVARS
register_cvar("invisman_invisibility", "60")
register_cvar("invisman_clockedmove", "0")
register_cvar("invisman_maxlevel", "7")
}
//----------------------------------------------------------------------------------------------
public invisman_init()
{
new temp[128]
// First Argument is an id
read_argv(1,temp,5)
new id=str_to_num(temp)
// 2nd Argument is 0 or 1 depending on whether the id has flash
read_argv(2,temp,5)
new hasPowers=str_to_num(temp)
gHasInvisPower[id]=(hasPowers!=0)
// Got to remove the powers if he is not The Invisible Man
if ( !hasPowers )
uninvis(id)
//Give Powers to the Invisible Man
if ( hasPowers )
{
if (gPlayerLevels[id] > get_cvar_num("invisman_maxlevel"))
client_print(id,print_center, "The Invisible Man will not work as you are higher than the max level")
else
invis(id)
}
}
//----------------------------------------------------------------------------------------------
public newRound(id)
{
if ( is_user_alive(id) && gHasInvisPower[id]) {
if (gPlayerLevels[id] > get_cvar_num("invisman_maxlevel"))
client_print(id,print_center, "The Invisible Man will not work as you are higher than the max level")
else
invis(id)
}
}
//----------------------------------------------------------------------------------------------
public invis(id) {
if (gPlayerLevels[id] > get_cvar_num("invisman_maxlevel")) return
else set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,get_cvar_num("invisman_invisiblility"))
}
public uninvis(id) {
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
}
//----------------------------------------------------------------------------------------------
public check_attack() {
for(new i = 1; i <= get_maxplayers(); ++i) {
if (is_user_alive(i)) {
if ((get_user_button(i)&IN_ATTACK) && gHasInvisPower[i]) {
uninvis(i)
}
else if (!(get_user_button(i)&IN_ATTACK) && gHasInvisPower[i]) {
invis(i)
}
}
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public check_two_buttons() {
for(new i = 1; i <= get_maxplayers(); ++i) {
if (is_user_alive(i)) {
if ((get_user_button(i)&IN_USE) && gHasInvisPower[i]) {
uninvis(i)
}
if ((get_user_button(i)&IN_ATTACK2) && gHasInvisPower[i]) {
uninvis(i)
}
}
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public check_move_buttons() {
if (get_cvar_num("invisman_clockedmove")==1) return PLUGIN_HANDLED
for(new i = 1; i <= get_maxplayers(); ++i) {
if (is_user_alive(i)) {
if ((get_user_button(i)&IN_BACK) && gHasInvisPower[i]) {
uninvis(i)
}
if ((get_user_button(i)&IN_MOVELEFT) && gHasInvisPower[i]) {
uninvis(i)
}
if ((get_user_button(i)&IN_MOVERIGHT) && gHasInvisPower[i]) {
uninvis(i)
}
if ((get_user_button(i)&IN_FORWARD) && gHasInvisPower[i]) {
uninvis(i)
}
if ((get_user_button(i)&IN_RUN) && gHasInvisPower[i]) {
uninvis(i)
}
}
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public invisman_levels()
{
new id[5]
new lev[5]
read_argv(1,id,4)
read_argv(2,lev,4)
gPlayerLevels[str_to_num(id)] = str_to_num(lev)
}