| Exolent[jNr] |
10-19-2009 03:45 |
Re: GHW_Chronics Adrenaline Mod fix
Code:
/*
* _______ _ _ __ __
* | _____/ | | | | \ \ __ / /
* | | | | | | | | / \ | |
* | | | |____| | | |/ __ \| |
* | | ___ | ______ | | / \ |
* | | |_ | | | | | | / \ |
* | | | | | | | | | | | |
* | |____| | | | | | | | | |
* |_______/ |_| |_| \_/ \_/
*
*
*
* Last Edited: 12-30-07
*
* ============
* Changelog:
* ============
*
* v2.0
* -Added ML
* -Optimized Code
*
* v1.0
* -Initial Release
*
*/
#define VERSION "2.0"
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
new adrenaline_multiplier
new adrenaline_max
new adrenaline_toggle
new adrenaline_speed
new adrenaline_sound1
new adrenaline_sound2
new maxspeed_pcvar
new bool:playsound1
new bool:playsound2
new sound1[64] = "adrenaline_booster.wav"
new sound2[64] = "adrenaline_full.wav"
new sound1b[64] = "sound/adrenaline_booster.wav"
new sound2b[64] = "sound/adrenaline_full.wav"
new adrenaline[33]
new ability[33]
new alpha[33]
new bool:restarting
new bool:freezetime
public plugin_init()
{
register_plugin("Adrenaline Mod",VERSION,"GHW_Chronic")
adrenaline_multiplier = register_cvar("adrenaline_amount","20")
adrenaline_max = register_cvar("adrenaline_max","100")
adrenaline_toggle = register_cvar("adrenaline_toggle","1")
adrenaline_speed = register_cvar("adrenaline_speed","650.0")
maxspeed_pcvar = get_cvar_pointer("sv_maxspeed")
register_clcmd("say /booster","menu_cmd")
register_event("CurWeapon","CurWeapon","be")
register_event("DeathMsg","DeathMsg","a")
new name[32]
get_modname(name,31)
if(equali(name,"cstrike") || equali(name,"czero"))
{
register_logevent("game_restart2",2,"1=Round_Start")
register_logevent("game_end",2,"1=Round_End")
}
register_event("TextMsg","game_restart1","a","2=#Game_will_restart_in")
register_event("TextMsg","game_restart1","a","2=#Game_Commencing")
register_menu("adrenaline_menu",(1<<0)|(1<<1)|(1<<2)|(1<<9),"menu_press")
register_dictionary("GHW_Adrenaline_Mod.txt")
}
public game_end()
{
new players[32], num
get_players(players,num,"h")
for(new i=0;i<num;i++) ResetAdrenaline(players[i])
freezetime=true
}
public game_restart1()
{
restarting = true
new players[32], num
get_players(players,num,"h")
for(new i=0;i<num;i++) ResetAdrenaline(players[i])
}
public game_restart2()
{
if(restarting && get_pcvar_num(adrenaline_toggle))
{
restarting=false
new players[32], num
get_players(players,num,"h")
for(new i=0;i<num;i++) ResetAdrenaline(players[i])
}
freezetime=false
}
public plugin_precache()
{
adrenaline_sound1 = register_cvar("adrenaline_sound1","1")
adrenaline_sound2 = register_cvar("adrenaline_sound2","1")
if(get_pcvar_num(adrenaline_sound1) && file_exists(sound1b))
{
playsound1=true
precache_sound(sound1)
}
if(get_pcvar_num(adrenaline_sound2) && file_exists(sound2b))
{
playsound2=true
precache_sound(sound2)
}
}
public DeathMsg()
{
if(get_pcvar_num(adrenaline_toggle) && !restarting)
{
new id = read_data(1)
new target = read_data(2)
ability[target]=0
set_user_rendering(target)
if(get_user_team(id)==get_user_team(target))
{
adrenaline[id] -= get_pcvar_num(adrenaline_multiplier)
if(adrenaline[id]<0) ResetAdrenaline(id)
}
else
{
new maxad = get_pcvar_num(adrenaline_max)
if(adrenaline[id]!=maxad)
{
adrenaline[id] += get_pcvar_num(adrenaline_multiplier)
if(adrenaline[id]>=maxad)
{
adrenaline[id]=maxad
if(playsound2) emit_sound(id,CHAN_VOICE,sound2,VOL_NORM,ATTN_NORM,0,PITCH_NORM)
client_print(id,print_chat,"[AMXX] %L",id,"MSG_HOWTO")
}
}
}
}
}
ResetAdrenaline(id)
{
adrenaline[id]=0
if(ability[id])
{
ability[id]=0
set_user_rendering(id)
set_user_maxspeed(id, GetClientWeaponMaxspeed(id))
}
}
public client_connect(id)
{
adrenaline[id]=0
ability[id]=0
alpha[id]=0
set_task(0.5,"adrenaline_hud",id,"",0,"b")
}
public client_disconnect(id) remove_task(id)
public adrenaline_hud(id)
{
if(get_pcvar_num(adrenaline_toggle) && is_user_alive(id))
{
if(ability[id])
{
if(adrenaline[id]<=0) ResetAdrenaline(id)
else adrenaline[id] -= 2
}
if(ability[id]==2 && get_user_health(id)<254) set_user_health(id,get_user_health(id) + 1)
else if(ability[id]==3 && alpha[id]>70)
{
alpha[id] -= 5
set_user_rendering(id,kRenderFxGlowShell,255,255,255,kRenderTransAlpha,alpha[id])
}
if(adrenaline[id]!=get_pcvar_num(adrenaline_max))
{
set_hudmessage(255, 255, 0, 0.90, 0.02, 0, 6.0, 1.0)
show_hudmessage(id,"--^n| %d^n--",adrenaline[id])
}
else
{
set_hudmessage(random_num(70,255), random_num(70,255), 0, 0.90, 0.02, 0, 6.0, 1.0)
show_hudmessage(id,"--^n| %d^n--",adrenaline[id])
}
}
}
public menu_cmd(id)
{
if(get_pcvar_num(adrenaline_toggle) && adrenaline[id]>=get_pcvar_num(adrenaline_max) && !restarting && !freezetime)
{
new message[1024]
new len = format(message,1023,"%L^n^n",id,"MSG_MENUTITLE")
len += format(message[len],1023-len,"1. %L^n",id,"MSG_SPEED")
len += format(message[len],1023-len,"2. %L^n",id,"MSG_HEALTH")
len += format(message[len],1023-len,"3. %L^n^n",id,"MSG_INVIS")
len += format(message[len],1023-len,"0. %L",id,"MSG_EXIT")
show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<9),message,-1,"adrenaline_menu")
}
}
public menu_press(id,key)
{
if(get_pcvar_num(adrenaline_toggle) && !restarting && !freezetime)
{
switch(key)
{
case 0:
{
ability[id]=1
set_user_maxspeed(id,get_pcvar_float(adrenaline_speed))
}
case 1: ability[id]=2
case 2:
{
ability[id]=3
set_user_rendering(id,kRenderFxGlowShell,255,255,255,kRenderTransAlpha,30)
alpha[id] = 30
}
}
if(playsound1 && key!=9) emit_sound(id,CHAN_VOICE,sound1,VOL_NORM,ATTN_NORM,0,PITCH_NORM)
}
return PLUGIN_HANDLED
}
public CurWeapon(id)
{
if(get_pcvar_num(adrenaline_toggle) && !freezetime)
{
if(ability[id]==1)
{
client_cmd(id,"cl_forwardspeed 400;cl_backspeed 400;cl_sidespeed 400")
new Float:speed = get_pcvar_float(adrenaline_speed)
set_user_maxspeed(id,speed)
set_pcvar_float(maxspeed_pcvar,speed)
}
if(ability[id]==3 && alpha[id]<200)
{
alpha[id] += 20
set_user_rendering(id,kRenderFxGlowShell,255,255,255,kRenderTransAlpha,alpha[id])
}
}
}
stock Float:GetClientWeaponMaxspeed(client)
{
static const OFFSET_SHIELD = 510;
static const HAS_SHIELD = 1 << 24;
static const USING_SHIELD = 1 << 16;
static Float:maxspeed;
new shield = get_pdata_int(client, OFFSET_SHIELD);
if( shield & USING_SHIELD )
{
maxspeed = 180.0;
}
else if( shield & HAS_SHIELD )
{
maxspeed = 250.0;
}
else
{
static const m_pActiveItem = 373;
new iWeaponEntity = get_pdata_cbase( client, m_pActiveItem );
if( pev_valid( iWeaponEntity ) )
{
ExecuteHamB(Ham_CS_Item_GetMaxSpeed, iWeaponEntity, maxspeed);
}
else
{
switch( get_user_weapon( client ) )
{
case CSW_SG550, CSW_AWP, CSW_G3SG1:
{
maxspeed = 210.0;
}
case CSW_M249:
{
maxspeed = 220.0;
}
case CSW_AK47:
{
maxspeed = 221.0;
}
case CSW_M3, CSW_M4A1:
{
maxspeed = 230.0;
}
case CSW_SG552:
{
maxspeed = 235.0;
}
case CSW_XM1014, CSW_AUG, CSW_GALIL, CSW_FAMAS:
{
maxspeed = 240.0;
}
case CSW_P90:
{
maxspeed = 245.0;
}
case CSW_SCOUT:
{
maxspeed = 260.0;
}
// in case there is no weapon, or something bugged
// I like to have precautions =)
//case CSW_P228, CSW_HEGRENADE, CSW_C4, CSW_MAC10, CSW_SMOKEGRENADE, CSW_ELITE, CSW_FIVESEVEN,
// CSW_UMP45, CSW_USP, CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_FLASHBANG, CSW_DEAGLE, CSW_KNIFE:
default:
{
maxspeed = 250.0;
}
}
}
}
if( cs_get_user_vip(client) )
{
static const Float:VIP_MAXSPEED = 227.0;
return VIP_MAXSPEED;
}
return maxspeed;
}
|