/* Credits
GhosT *** - Crearea pluginului
twistedeuphoria - Cod pentru Multi Jumps
Dunno - Primul creator al "sistemului de add HP" daca ii pot spune asa.
*/
//include
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta_util>
#include <fun>
#include <colorchat>
#include <hamsandwich>
#include <engine>
// define
#define PLUGIN "VIP"
#define VERSION "1.0"
#define AUTHOR "GhosT"
#define VIP_LEVEL ADMIN_LEVEL_H
#define player_is_vip(%1) (get_user_flags(%1) & VIP_LEVEL)
#define PlayerMaxModels 26
#define ViewMaxModels 26
// news
new PlayerModels [PlayerMaxModels] [] =
{
"p_ak47",
"p_aug",
"p_awp",
"p_deagle",
"p_elite",
"p_famas",
"p_fiveseven",
"p_g3sg1",
"p_gali",
"p_glock18",
"p_hegrenade",
"p_knife",
"p_m3",
"p_m4a1",
"p_m249",
"p_mac10",
"p_mp5",
"p_p90",
"p_p228",
"p_scout",
"p_sg550",
"p_sg552",
"p_tmp",
"p_ump",
"p_usp45",
"p_xm1014"
}
new ViewModels [ViewMaxModels] []=
{
"v_ak47",
"v_aug",
"v_awp",
"v_deagle",
"v_elite",
"v_famas",
"v_fiveseven",
"v_g3sg1",
"v_gali",
"v_glock18",
"v_hegrenade",
"v_knife",
"v_m3",
"v_m4a1",
"v_m249",
"v_mac10",
"v_mp5",
"v_p90",
"v_p228",
"v_scout",
"v_sg550",
"v_sg552",
"v_tmp",
"v_ump45",
"v_usp",
"v_xm1014"
}
enum _: arme
{
ak47,
aug,
awp,
deagle,
elite,
famas,
fiveseven,
g3sg1,
gali,
glock18,
hegrenade,
knife,
m3,
m4a1,
m249,
mac10,
mp5,
p90,
p228,
scout,
sg550,
sg552,
tmp,
ump45,
usp,
xm1014
}
new arma_jucator [33] [arme];
new jumpnum[33] = 0
new bool:dojump[33] = false
new nKiller
new nKiller_hp
new nHp_add
new nHp_max
new kill, kill_hs, max_hp;
//public plugin_init(id)
public plugin_init()
{
//register_plugin
register_plugin(PLUGIN, VERSION, AUTHOR)
//Other
RegisterHam(Ham_Spawn, "player", "vip_spawn", 1);
RegisterHam(Ham_TakeDamage, "player", "damage");
register_message(get_user_msgid("ScoreAttrib"),"vip_scoreboard");
register_event("DeathMsg", "hp_add", "a", "1>0")
//Cvars
register_cvar("amx_maxjumps","1")
register_cvar("amx_mjadminonly","0")
kill = register_cvar("kill_hp", "10")
kill_hs = register_cvar("kill_hs_hp", "15")
max_hp = register_cvar("max_hp_add", "150")
}
// Other publics
public plugin_precache ()
{
new ViewModel
for(ViewModel = 0; ViewModel < sizeof (ViewModels); ViewModel++)
engfunc(EngFunc_PrecacheModel, ViewModels[ViewModel])
new PlayerModel;
for(PlayerModel = 0; PlayerModel < sizeof (PlayerModels); PlayerModel++)
engfunc(EngFunc_PrecacheModel, PlayerModels[PlayerModel]);
}
public client_putinserver(id)
{
arma_jucator[id][ak47] = false
arma_jucator[id][aug] = false
arma_jucator[id][awp] = false
arma_jucator[id][deagle] = false
arma_jucator[id][elite] = false
arma_jucator[id][famas] = false
arma_jucator[id][fiveseven] = false
arma_jucator[id][g3sg1] = false
arma_jucator[id][gali] = false
arma_jucator[id][glock18] = false
arma_jucator[id][hegrenade] = false
arma_jucator[id][knife] = false
arma_jucator[id][m3] = false
arma_jucator[id][m4a1] = false
arma_jucator[id][m249] = false
arma_jucator[id][mac10] = false
arma_jucator[id][mp5] = false
arma_jucator[id][p90] = false
arma_jucator[id][p228] = false
arma_jucator[id][scout] = false
arma_jucator[id][sg550] = false
arma_jucator[id][sg552] = false
arma_jucator[id][tmp] = false
arma_jucator[id][ump45] = false
arma_jucator[id][usp] = false
arma_jucator[id][xm1014] = false
jumpnum[id] = 0
dojump[id] = false
}
public client_connect(id)
{
client_putinserver(id)
if(player_is_vip(id))
{
new name[33];
get_user_name(id, name, 33)
ColorChat(id, GREEN, "[VIP]^x03 VIP %s se connecteaza pe server !", name)
}
}
public client_disconnect(id)
{
client_putinserver(id)
new name[33];
get_user_name(id, name, 33)
ColorChat(id, GREEN, "[VIP]^x03 VIP %s a iesit de pe server !", name)
}
public vip_spawn(id)
{
if(get_user_team(id) == 1 && player_is_vip(id))
{
set_task(2.0, "spawn_te", id)
}
if(get_user_team(id) == 2 && player_is_vip(id))
{
set_task(2.0, "spawn_ct", id)
}
}
public spawn_te(id)
{
fm_set_user_armor(id, get_user_armor(id) + 100)
fm_set_user_health(id, 120)
fm_set_user_gravity(id, 700.0)
fm_set_user_maxspeed(id, 300.0)
set_user_footsteps(id, 0)
}
public spawn_ct(id)
{
fm_set_user_armor(id, get_user_armor(id) + 100)
fm_set_user_health(id, 120)
fm_set_user_gravity(id, 700.0)
fm_set_user_maxspeed(id, 300.0)
set_user_footsteps(id, 0)
}
public damage(id, iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
if(player_is_vip(id))
{
if(arma_jucator [iAttacker] [ak47] && get_user_weapon(iAttacker) == CSW_AK47)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [aug] && get_user_weapon(iAttacker) == CSW_AUG)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [awp] && get_user_weapon(iAttacker) == CSW_AWP)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [deagle] && get_user_weapon(iAttacker) == CSW_DEAGLE)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [elite] && get_user_weapon(iAttacker) == CSW_ELITE)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [famas] && get_user_weapon(iAttacker) == CSW_FAMAS)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [fiveseven] && get_user_weapon(iAttacker) == CSW_FIVESEVEN)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [g3sg1] && get_user_weapon(iAttacker) == CSW_G3SG1)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [gali] && get_user_weapon(iAttacker) == CSW_GALI)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [glock18] && get_user_weapon(iAttacker) == CSW_GLOCK18)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [hegrenade] && get_user_weapon(iAttacker) == CSW_HEGRENADE)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [knife] && get_user_weapon(iAttacker) == CSW_KNIFE)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [m3] && get_user_weapon(iAttacker) == CSW_M3)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [m4a1] && get_user_weapon(iAttacker) == CSW_M4A1)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [m249] && get_user_weapon(iAttacker) == CSW_M249)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [mac10] && get_user_weapon(iAttacker) == CSW_MAC10)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [mp5] && get_user_weapon(iAttacker) == CSW_MP5NAVY)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [p90] && get_user_weapon(iAttacker) == CSW_P90)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [p228] && get_user_weapon(iAttacker) == CSW_P228)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [scout] && get_user_weapon(iAttacker) == CSW_SCOUT)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [sg550] && get_user_weapon(iAttacker) == CSW_SG550)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [sg552] && get_user_weapon(iAttacker) == CSW_SG552)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [tmp] && get_user_weapon(iAttacker) == CSW_TMP)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [ump45] && get_user_weapon(iAttacker) == CSW_UMP45)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
if(arma_jucator [iAttacker] [usp] && get_user_weapon(iAttacker) == CSW_USP)
{
SetHamParamFloat(4, fDamage * 1.5);
return HAM_HANDLED;
}
}
return HAM_IGNORED;
}
public vip_scoreboard(const MsgId, const MsgType, const MsgDest)
{
static id;
id = get_msg_arg_int(1);
if(player_is_vip(id))
set_msg_arg_int(2, ARG_BYTE, (1 << 2 ));
}
public client_PreThink(id)
{
if(!is_user_alive(id)) return PLUGIN_CONTINUE
if(get_cvar_num("amx_mjadminonly") && (!access(id,player_is_vip(id)))) return PLUGIN_CONTINUE
new nbut = get_user_button(id)
new obut = get_user_oldbutton(id)
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < get_cvar_num("amx_maxjumps"))
{
dojump[id] = true
jumpnum[id]++
return PLUGIN_CONTINUE
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
jumpnum[id] = 0
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public client_PostThink(id)
{
if(!is_user_alive(id)) return PLUGIN_CONTINUE
if(get_cvar_num("amx_mjadminonly") && (!access(id,player_is_vip(id)))) return PLUGIN_CONTINUE
if(dojump[id] == true)
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public hp_add(id)
{
nKiller = read_data(1)
if ( (read_data(3) == 1) && (read_data(5) == 0) )
{
nHp_add = get_pcvar_num (kill)
}
else
nHp_add = get_pcvar_num (kill_hs)
nHp_max = get_pcvar_num (max_hp)
if(!(get_user_flags(nKiller) & VIP_LEVEL))
return;
nKiller_hp = get_user_health(nKiller)
nKiller_hp += nHp_add
if (nKiller_hp > nHp_max) nKiller_hp = nHp_max
set_user_health(nKiller, nKiller_hp)
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(200)
write_byte(75)
message_end()
}