#include < amxmodx >
#include < amxmisc >
#include < engine >
#include < fun >
#include < xs >
#include <
cstrike >
#include < fakemeta >
#include < hamsandwich >
#pragma tabsize 0
native g_superknifeoff(id);
#define PLUGIN "VIP Menu"
#define VERSION "1.0"
//modificari D3luxe
#define VIP ADMIN_LEVEL_H
//katana
#define m_flNextAttack 83
new bool:g_dkatana[33];
new const dkatama_models[][]={"models/lolpgl/v_katanad.mdl","models/lolpgl/p_katanad.mdl"}
new const oldknife_sounds[][] =
{
"weapons/knife_deploy1.wav",
"weapons/knife_hit1.wav",
"weapons/knife_hit2.wav",
"weapons/knife_hit3.wav",
"weapons/knife_hit4.wav",
"weapons/knife_hitwall1.wav",
"weapons/knife_slash1.wav",
"weapons/knife_slash2.wav",
"weapons/knife_stab.wav"
}
new const knife_sounds[][] =
{
"weapons/katanad_draw.wav",
"weapons/katanad_hit1.wav",
"weapons/katanad_hit2.wav",
"weapons/katanad_hit2.wav",
"weapons/katanad_hit1.wav",
"weapons/knife_hitwall1.wav",
"weapons/katanad_slash1.wav",
"weapons/katanad_slash2.wav",
"weapons/katanad_stab.wav"
}
// -- || Score TAB || -- //
enum {
SCOREATTRIB_ARG_PLAYERID = 1,
SCOREATTRIB_ARG_FLAGS
};
enum ( <<= 1 ) {
SCOREATTRIB_FLAG_NONE = 0,
SCOREATTRIB_FLAG_DEAD = 1,
SCOREATTRIB_FLAG_BOMB,
SCOREATTRIB_FLAG_VIP
};
// -- || Variabil's
new Round[33], HasPower[33];
// -- || Power
// -- || NoRecoil
#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
"events/awp.sc",
"events/g3sg1.sc",
"events/ak47.sc",
"events/scout.sc",
"events/m249.sc",
"events/m4a1.sc",
"events/sg552.sc",
"events/aug.sc",
"events/sg550.sc",
"events/m3.sc",
"events/xm1014.sc",
"events/usp.sc",
"events/mac10.sc",
"events/ump45.sc",
"events/fiveseven.sc",
"events/p90.sc",
"events/deagle.sc",
"events/p228.sc",
"events/glock18.sc",
"events/mp5n.sc",
"events/tmp.sc",
"events/elite_left.sc",
"events/elite_right.sc",
"events/galil.sc",
"events/famas.sc"
}
new g_guns_eventids_bitsum
new bool:g_norecoil[33]
//--| GodMode |--//
new GodMode_Cooldown[33] = 0;
new GodMode_DurationCooldown[33] = 0;
//--| Teleport |--//
new TeleportSprite, TeleportSprite2;
new Teleport_Cooldown[33];
new const SOUND_BLINK[] = { "weapons/flashbang-1.wav" };
const UNIT_SEC = 0x1000;
const FFADE = 0x0000;
//------| Suicide Bomb |------//
new SPR_SUICIDE_EXPLODE, SPR_SUICIDE_SMOKE, SPR_SUICIDE_BLAST
#define EXPLOSION_MAX_DAMAGE 100.0
#define EXPLOSION_KNOCKBACK 5.0
#define EXPLOSION_BLAST_RADIUS 250.0
#define TASK_EXPLOSION 160
#define TASK_BEAMCYLINDER 192
#define SOUND_SUICIDE "ambience/particle_suck1.wav"
new BloodSpray, BloodDrop;
// -- | Cvars | -- //
new cvar_he;
new CvarGodModeCooldown, CvarGodModeDuration, CvarTeleportCooldown, CvarTeleportRange;
public plugin_init() {
register_plugin(PLUGIN, VERSION, "Truth");
unregister_forward(FM_PrecacheEvent, g_fwid, 1)
register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
register_forward(FM_TraceLine, "fwTraceLine")
register_event("CurWeapon","CurrentWeapon","be","1=1")
RegisterHam(Ham_Weapon_PrimaryAttack,"weapon_knife","fw_primaryattack",1)
RegisterHam(Ham_Weapon_SecondaryAttack,"weapon_knife","fw_secondaryattack",1)
RegisterHam(Ham_TakeDamage,"player","fw_takedmg")
register_forward(FM_EmitSound, "fw_emitsound")
// Cvar's
cvar_he = register_cvar("vip_menu_he", "3");
CvarGodModeCooldown = register_cvar("vip_godmode_cooldown", "25"); // GodMode Cooldown
CvarGodModeDuration = register_cvar("vip_godmode_duration", "2"); // GodMode Duration
CvarTeleportCooldown = register_cvar("vip_teleport_cooldown", "10.0"); // Teleport Cooldown
CvarTeleportRange = register_cvar("vip_teleport_range", "12345"); // Teleport Range
register_clcmd("say", "handle_say");
register_clcmd("say_team", "handle_say");
register_clcmd("say /wantvip", "VIPHTML");
register_clcmd("say_team /wantvip", "VIPHTML");
register_clcmd("say /furienvip", "VipCmd");
register_clcmd("say_team /furienvip", "VipCmd");
register_clcmd("power", "Power");
register_event("DeathMsg", "EVENT_Death", "a");
RegisterHam(Ham_Spawn, "player", "Spawn", true);
g_max_clients = global_get(glb_maxClients)
register_message( get_user_msgid( "ScoreAttrib" ), "MessageScoreAttrib" );
}
public plugin_precache() {
for(new i;i<sizeof dkatama_models;i++)
precache_model(dkatama_models[i]);
for(new i;i<sizeof knife_sounds;i++)
precache_sound(knife_sounds[i]);
precache_sound(SOUND_SUICIDE);
TeleportSprite = precache_model( "sprites/shockwave.spr");
TeleportSprite2 = precache_model( "sprites/blueflare2.spr");
BloodSpray = precache_model("sprites/bloodspray.spr");
BloodDrop = precache_model("sprites/blood.spr");
SPR_SUICIDE_EXPLODE = precache_model("sprites/zerogxplode.spr")
SPR_SUICIDE_SMOKE = precache_model("sprites/steam1.spr")
SPR_SUICIDE_BLAST = precache_model("sprites/ef_shockwave.spr")
g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1);
}
public VIPHTML ( id ) show_motd(id, "addons/amxmodx/configs/vip.html", "VIP");
public EVENT_Death ( ) {
new Victim = read_data ( 2 );
if(is_user_connected(Victim)) {
if(HasPower[Victim] == 3) {
Ultimate_SuicideExplode(Victim)
}
}
}
public MessageScoreAttrib( iMsgId, iDest, iReceiver ) {
new iPlayer = get_msg_arg_int( SCOREATTRIB_ARG_PLAYERID );
if( access( iPlayer, VIP ) ) {
set_msg_arg_int( SCOREATTRIB_ARG_FLAGS, ARG_BYTE, SCOREATTRIB_FLAG_VIP );
}
}
public fwPrecacheEvent(type, const name[]) {
for (new i = 0; i < sizeof g_guns_events; ++i) {
if (equal(g_guns_events[i], name)) {
g_guns_eventids_bitsum |= (1<<get_orig_retval())
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
public Spawn ( id ) {
g_dkatana[id] = false;
Round[ id ] = false;
GodMode_Cooldown[id] = 0;
GodMode_DurationCooldown[id] = 0;
Teleport_Cooldown[id] = 0;
HasPower[id] = 0;
g_norecoil[id] = false;
}
public fwPlaybackEvent(flags, invoker, eventid) {
if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients))
return FMRES_IGNORED
if(g_norecoil[invoker])
g_fix_punchangle[invoker] = true
return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
if (g_fix_punchangle[id]) {
g_fix_punchangle[id] = false
set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
return FMRES_HANDLED
}
return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, ptr) {
if (!(1 <= id <= g_max_clients))
return FMRES_IGNORED
if (!g_normal_trace[id]) {
g_normal_trace[id] = ptr
return FMRES_HANDLED
}
if (ptr == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id))
return FMRES_IGNORED
if(g_norecoil[id])
fix_recoil_trace(id, start, ptr)
return FMRES_SUPERCEDE
}
public client_connect(id) {
g_normal_trace[id] = 0;
g_norecoil[id] = false;
}
fix_recoil_trace(id, const Float:start[], ptr) {
static Float:dest[3]
pev(id, pev_v_angle, dest)
engfunc(EngFunc_MakeVectors, dest)
global_get(glb_v_forward, dest)
xs_vec_mul_scalar(dest, 9999.0, dest)
xs_vec_add(start, dest, dest)
engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, ptr)
}
public VipCmd( id ) {
if(Round[id]) {
ColorChat(id, "^x04[VIP]^x01 Poti utiliza meniul doar odata pe runda.");
return 1;
}
if(!(is_user_alive(id))) {
ColorChat(id, "^x04[VIP]^x01 Nu poti accesa meniul cand esti mort.");
return 1;
}
if ( !(get_user_flags(id) & VIP)){
ColorChat(id, "^x04[VIP]^x01 Meniul este numai pentru membri^x04 VIP");
return 1;
}
new VipMenu = menu_create("Vip Menu", "give_menu");
if(get_user_team(id) == 1) {
menu_additem(VipMenu, "\yDual Katana \rx3 \yDMG", "1", 0);
}
else if(get_user_team(id) == 2) {
menu_additem(VipMenu, "\yNo Recoil", "1", 0);
}
menu_additem(VipMenu, "\yGod Mode", "2", 0);
menu_additem(VipMenu, "\yTeleport", "3", 0);
menu_additem(VipMenu, "\yPack \r500 \yHP \r+ \yAP", "4", 0);
menu_additem(VipMenu, "\yHE Grenades", "5", 0);
menu_additem(VipMenu, "\yExplode", "6", 0);
menu_setprop(VipMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, VipMenu, 0);
return 1;
}
public give_menu( id, VipMenu, item) {
if(item == MENU_EXIT) {
return 1;
}
switch ( item )
{
case 0:
{
if(get_user_team(id) == 1) {
g_superknifeoff(id);
g_dkatana[id] = true;
CurrentWeapon(id);
Round[id] = true;
ColorChat(id, "^x04[VIP]^x01 Ai ales Dual Katana.");
}
else if (get_user_team(id) == 2) {
g_norecoil[id] = true;
Round[id] = true;
ColorChat(id, "^x04[VIP]^x01 Ai ales NoRecoil.");
}
}
case 1:
{
HasPower[id] = 1;
ColorChat(id, "^x04[VIP]^x01 Ai ales godmode.Apasa^x04 V^x01 pentru a-l activa.");
Round[ id ] = true;
}
case 2:
{
HasPower[id] = 2;
ColorChat(id, "^x04[VIP]^x01 Ai ales teleport.Apasa^x04 V^x01 pentru a te teleporta.");
Round[ id ] = true;
}
case 3:
{
set_user_health(id, 500);
set_user_armor(id, 500);
ColorChat(id, "^x04[VIP]^x01 Ai ales Pack 500HP si 500AP.");
Round[id] = true;
}
case 4:
{
give_item(id, "weapon_hegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_he));
ColorChat(id, "^x04[VIP]^x01 Ai ales HE Grenade. Ai %s grenazi.", cvar_he );
Round[id] = true;
}
case 5:
{
HasPower[id] = 3;
ColorChat(id, "^x04[VIP]^x01 Ai ales Explode.Cand vei muri vei exploda.");
Round[id] = true;
}
}
menu_destroy(VipMenu);
return 1;
}
public plugin_natives()
{
register_native("g_knifevip","g_knifeoff",1)
}
public g_knifeoff(id)
{
g_dkatana[id] = false;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// GodMode |
//==========================================================================================================
public GodModeShowHUD(id) {
if (!is_user_alive(id) || HasPower[id] != 1) {
remove_task(id);
GodMode_DurationCooldown[id] = 0;
set_user_godmode(id, 0);
return PLUGIN_HANDLED;
}
set_hudmessage(0, 255, 255, 0.05, 0.60, 0, 1.0, 1.0, _, _, 5);
if(is_user_alive(id) && GodMode_DurationCooldown[id] == 1) {
GodMode_DurationCooldown[id] --;
show_hudmessage(id, "Ai GodMode pentru: %d secunda",GodMode_DurationCooldown[id]);
}
if(is_user_alive(id) && GodMode_DurationCooldown[id] > 1) {
GodMode_DurationCooldown[id] --;
}
if(GodMode_DurationCooldown[id] <= 0) {
ColorChat(id,"^x03[Furien]^x04 Nu mai ai GodMode.");
remove_task(id);
set_user_godmode(id, 0);
GodMode_DurationCooldown[id] = 0;
GodMode_Cooldown[id] = get_pcvar_num(CvarGodModeCooldown);
set_task(1.0, "GodModeShowHUD2", id, _, _, "b");
set_hudmessage(0, 255, 255, 0.05, 0.60, 0, 1.0, 6.0, 6.0, 6.0, 5);
if(get_pcvar_num(CvarGodModeCooldown) != 1) {
show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarGodModeCooldown));
}
if(get_pcvar_num(CvarGodModeCooldown) == 1) {
show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarGodModeCooldown));
}
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public GodModeShowHUD2(id) {
if (!is_user_alive(id) || HasPower[id] != 1) {
remove_task(id);
GodMode_Cooldown[id] = 0;
return PLUGIN_HANDLED;
}
set_hudmessage(0, 255, 255, 0.05, 0.60, 0, 1.0, 6.0, 6.0, 6.0, 5);
if(is_user_alive(id) && GodMode_Cooldown[id] == 1) {
GodMode_Cooldown[id] --;
show_hudmessage(id, "Puterea iti va reveni in: %d secunda",GodMode_Cooldown[id]);
}
if(is_user_alive(id) && GodMode_Cooldown[id] > 1) {
GodMode_Cooldown[id] --;
show_hudmessage(id, "Puterea iti va reveni in: %d secunde",GodMode_Cooldown[id]);
}
if(GodMode_Cooldown[id] <= 0) {
show_hudmessage(id, "Ti-a revenit puterea");
ColorChat(id,"^x03[Furien]^x04 Iti poti folosi din nou puterea.");
remove_task(id);
GodMode_Cooldown[id] = 0;
}
return PLUGIN_HANDLED;
}
//NoRecoil
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Teleport |
//==========================================================================================================
public TeleportShowHUD(id) {
if (!is_user_alive(id) || HasPower[id] != 2) {
remove_task(id);
Teleport_Cooldown[id] = 0;
return PLUGIN_HANDLED;
}
set_hudmessage(0, 255, 255, 0.05, 0.60, 0, 1.0, 6.0, 6.0, 6.0, 5);
if(is_user_alive(id) && Teleport_Cooldown[id] == 1) {
Teleport_Cooldown[id] --;
show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Teleport_Cooldown[id]);
}
if(is_user_alive(id) && Teleport_Cooldown[id] > 1) {
Teleport_Cooldown[id] --;
show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Teleport_Cooldown[id]);
}
if(Teleport_Cooldown[id] <= 0) {
show_hudmessage(id, "Ti-a revenit puterea");
ColorChat(id,"^x03[Furien]^x04 Iti poti folosi din nou puterea.");
remove_task(id);
Teleport_Cooldown[id] = 0;
}
return PLUGIN_HANDLED;
}
bool:teleport(id) {
new Float:vOrigin[3], Float:vNewOrigin[3],
Float:vNormal[3], Float:vTraceDirection[3],
Float:vTraceEnd[3];
pev(id, pev_origin, vOrigin);
velocity_by_aim(id, get_pcvar_num(CvarTeleportRange), vTraceDirection);
xs_vec_add(vTraceDirection, vOrigin, vTraceEnd);
engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0);
new Float:flFraction;
get_tr2(0, TR_flFraction, flFraction);
if (flFraction < 1.0) {
get_tr2(0, TR_vecEndPos, vTraceEnd);
get_tr2(0, TR_vecPlaneNormal, vNormal);
}
xs_vec_mul_scalar(vNormal, 40.0, vNormal); // do not decrease the 40.0
xs_vec_add(vTraceEnd, vNormal, vNewOrigin);
if (is_player_stuck(id, vNewOrigin))
return false;
emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM);
tele_effect(vOrigin);
engfunc(EngFunc_SetOrigin, id, vNewOrigin);
tele_effect2(vNewOrigin);
return true;
}
stock is_player_stuck(id, Float:originF[3]) {
engfunc(EngFunc_TraceHull, originF, originF, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0);
if (get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen))
return true;
return false;
}
stock tele_effect(const Float:torigin[3]) {
new origin[3];
origin[0] = floatround(torigin[0]);
origin[1] = floatround(torigin[1]);
origin[2] = floatround(torigin[2]);
message_begin(MSG_PAS, SVC_TEMPENTITY, origin);
write_byte(TE_BEAMCYLINDER);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]+10);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]+60);
write_short(TeleportSprite);
write_byte(0);
write_byte(0);
write_byte(3);
write_byte(60);
write_byte(0);
write_byte(255);
write_byte(255);
write_byte(255);
write_byte(255);
write_byte(0);
message_end();
}
stock tele_effect2(const Float:torigin[3]) {
new origin[3];
origin[0] = floatround(torigin[0]);
origin[1] = floatround(torigin[1]);
origin[2] = floatround(torigin[2]);
message_begin(MSG_PAS, SVC_TEMPENTITY, origin);
write_byte(TE_BEAMCYLINDER);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]+10);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]+60);
write_short(TeleportSprite);
write_byte(0);
write_byte(0);
write_byte(3);
write_byte(60);
write_byte(0);
write_byte(255);
write_byte(255);
write_byte(255);
write_byte(255);
write_byte(0);
message_end();
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_SPRITETRAIL);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]+40);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short(TeleportSprite2);
write_byte(30);
write_byte(10);
write_byte(1);
write_byte(50);
write_byte(10);
message_end();
}
// Suicide Explosion
public Ultimate_SuicideExplode(id) {
emit_sound(id, CHAN_STATIC, SOUND_SUICIDE, 1.0, ATTN_NORM, 0, PITCH_NORM);
new parm[5], Origin[3];
get_user_origin(id, Origin);
parm[0] = id;
parm[1] = 6;
parm[2] = Origin[0];
parm[3] = Origin[1];
parm[4] = Origin[2];
set_task(0.50, "SuicideExplode", TASK_EXPLOSION + id, parm, 5);
set_task(0.50, "SuicideBlastCircles", TASK_BEAMCYLINDER + id, parm, 5);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_IMPLOSION)
write_coord(Origin[0]) // position(X)
write_coord(Origin[1]) // position(Y)
write_coord(Origin[2]) // position(Z)
write_byte(100) // radius
write_byte(20) // count
write_byte(5) // life in 0.1's
message_end()
}
public SuicideExplode(parm[5]) {
new id = parm[0];
new Origin[3];
Origin[0] = parm[2];
Origin[1] = parm[3];
Origin[2] = parm[4];
new Float:Origin2[3];
IVecFVec(Origin, Origin2);
message_begin(MSG_PVS, SVC_TEMPENTITY, Origin)
write_byte(TE_EXPLOSION)
write_coord(Origin[0]) // position(X)
write_coord(Origin[1]) // position(Y)
write_coord(Origin[2]) // position(Z)
write_short(SPR_SUICIDE_EXPLODE) // sprite index
write_byte((random_num(0,20) + 20)) // scale in 0.1's
write_byte(12) // framerate
write_byte(TE_EXPLFLAG_NONE) // flags
message_end()
message_begin(MSG_PVS, SVC_TEMPENTITY, Origin)
write_byte(TE_SMOKE)
write_coord(Origin[0]) // position(X)
write_coord(Origin[1]) // position(Y)
write_coord(Origin[2]) // position(Z)
write_short(SPR_SUICIDE_SMOKE) // Sprite index
write_byte(60) // scale * 10
write_byte(10) // framerate
message_end()
for(new Victim = 1; Victim < get_maxplayers(); Victim++) {
if(is_user_connected(Victim) && is_user_alive(Victim) && !get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id) && Victim != id) {
new Float:VictimOrigin[3], Float:Distance_F, Distance;
pev(Victim, pev_origin, VictimOrigin);
Distance_F = get_distance_f(Origin2, VictimOrigin);
Distance = floatround(Distance_F);
if(Distance <= EXPLOSION_BLAST_RADIUS) {
new Float:DistanceRatio, Float:Damage;
DistanceRatio = floatdiv(float(Distance), EXPLOSION_BLAST_RADIUS);
Damage = EXPLOSION_MAX_DAMAGE - floatround(floatmul(EXPLOSION_MAX_DAMAGE, DistanceRatio));
new BloodColor = ExecuteHam(Ham_BloodColor, Victim);
if(BloodColor != -1) {
new Amount = floatround(Damage);
Amount *= 2; //according to HLSDK
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BLOODSPRITE);
write_coord(floatround(VictimOrigin[0]));
write_coord(floatround(VictimOrigin[1]));
write_coord(floatround(VictimOrigin[2]));
write_short(BloodSpray);
write_short(BloodDrop);
write_byte(BloodColor);
write_byte(min(max(3, Amount/10), 16));
message_end();
}
if(parm[1] == 6)
make_knockback(Victim, Origin2, EXPLOSION_KNOCKBACK*Damage);
if(get_user_health(Victim) - Damage >= 1) {
ExecuteHam(Ham_TakeDamage, Victim, id, id, Damage, DMG_BLAST);
}
else
death_message(id, Victim, "Suicide Explode");
}
}
}
--parm[1];
if(parm[1] > 0)
set_task(0.1, "SuicideExplode", TASK_EXPLOSION + id, parm, 5);
}
public SuicideBlastCircles(parm[5]) {
new Origin[3];
Origin[0] = parm[2];
Origin[1] = parm[3];
Origin[2] = parm[4]-16;
new Float:Origin2[3];
IVecFVec(Origin, Origin2);
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin2, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, Origin2[0]) // x
engfunc(EngFunc_WriteCoord, Origin2[1]) // y
engfunc(EngFunc_WriteCoord, Origin2[2]) // z
engfunc(EngFunc_WriteCoord, Origin2[0]) // x axis
engfunc(EngFunc_WriteCoord, Origin2[1]) // y axis
engfunc(EngFunc_WriteCoord, Origin2[2]+385.0) // z axis
write_short(SPR_SUICIDE_BLAST) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(255) // red
write_byte(255) // green
write_byte(255) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_DLIGHT);
write_coord(Origin[0]); // x
write_coord(Origin[1]); // y
write_coord(Origin[2]); // z
write_byte(floatround(EXPLOSION_BLAST_RADIUS/10.0)); // radius
write_byte(255) // red
write_byte(255) // green
write_byte(255) // blue
write_byte(-1); // life
write_byte(60); // decay rate
message_end();
}
//------| Client Power |------//
public Power(id) {
if (get_user_flags(id) & VIP && is_user_alive(id) && HasPower[id] == 1 && !GodMode_DurationCooldown[id]) {
if (GodMode_Cooldown[id]) {
ColorChat(id,"^x03[Furien]^x04 Puterea iti va reveni in^x03 %d secunde.",GodMode_Cooldown[id]);
return PLUGIN_CONTINUE;
}
set_user_godmode(id, 1);
GodMode_DurationCooldown[id] = get_pcvar_num(CvarGodModeDuration)
set_task(1.0, "GodModeShowHUD", id, _, _, "b");
set_hudmessage(0, 255, 255, 0.05, 0.60, 0, 1.0, 6.0, 6.0, 6.0, 5);
if(get_pcvar_num(CvarGodModeDuration) != 1) {
show_hudmessage(id, "Ai GodMode pentru: %d secunde",get_pcvar_num(CvarGodModeDuration));
}
if(get_pcvar_num(CvarGodModeDuration) == 1) {
show_hudmessage(id, "Ai GodMode pentru: %d secunda",get_pcvar_num(CvarGodModeDuration));
}
return PLUGIN_HANDLED;
}
if (get_user_flags(id) & VIP && is_user_alive(id) && HasPower[id] == 2) {
if (Teleport_Cooldown[id]) {
ColorChat(id,"^x03[Furien]^x04 Puterea iti va reveni in^x03 %d secunde.",Teleport_Cooldown[id]);
return PLUGIN_CONTINUE;
}
if (teleport(id)) {
emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM);
remove_task(id);
Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown);
set_task(1.0, "TeleportShowHUD", id, _, _, "b");
set_hudmessage(0, 255, 255, 0.05, 0.60, 0, 1.0, 6.0, 6.0, 6.0, 5);
if(get_pcvar_num(CvarTeleportCooldown) != 1) {
show_hudmessage(id, "Puterea iti va reveni in: %d secunde",get_pcvar_num(CvarTeleportCooldown));
}
if(get_pcvar_num(CvarTeleportCooldown) == 1) {
show_hudmessage(id, "Puterea iti va reveni in: %d secunda",get_pcvar_num(CvarTeleportCooldown));
}
return PLUGIN_HANDLED;
}
else {
Teleport_Cooldown[id] = 0;
ColorChat(id, "^x03[Furien]^x04 Pozitia de teleportare este invalida.");
return PLUGIN_HANDLED;
}
return 1;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// VIP's Online |
//==========================================================================================================
public print_adminlist(user) {
new adminnames[33][32];
new message[256];
new id, count, x, len;
for(id = 1 ; id <= get_maxplayers() ; id++)
if(is_user_connected(id))
if(get_user_flags(id) & VIP)
get_user_name(id, adminnames[count++], 31);
len = format(message, 255, "^x04 VIPS ONLINE: ");
if(count > 0) {
for(x = 0 ; x < count ; x++) {
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"");
if(len > 96) {
print_message(user, message);
len = format(message, 255, "^x04 ");
}
}
print_message(user, message);
}
else {
len += format(message[len], 255-len, "No VIP online.");
print_message(user, message);
}
}
print_message(id, msg[]) {
message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, id);
write_byte(id);
write_string(msg);
message_end();
}
public handle_say(id) {
new said[192];
read_args(said,192);
if(contain(said, "/vips") != -1)
set_task(0.1,"print_adminlist",id);
return PLUGIN_CONTINUE;
}
stock death_message(Killer, Victim, const Weapon[]) {
if(is_user_connected(Killer) && is_user_connected(Victim)) {
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
ExecuteHamB(Ham_Killed, Victim, Killer, 2);
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
make_deathmsg(Killer, Victim, 0, Weapon);
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(Killer); // id
write_short(pev(Killer, pev_frags)); // frags
write_short(cs_get_user_deaths(Killer)); // deaths
write_short(0); // class?
write_short(get_user_team(Killer)); // team
message_end();
}
}
public make_knockback(Victim, Float:origin[3], Float:maxspeed) {
new Float:fVelocity[3];
kickback(Victim, origin, maxspeed, fVelocity);
entity_set_vector(Victim, EV_VEC_velocity, fVelocity);
return(1);
}
stock kickback(ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3]) {
new Float:fEntOrigin[3];
entity_get_vector(ent, EV_VEC_origin, fEntOrigin);
new Float:fDistance[3];
fDistance[0] = fEntOrigin[0] - fOrigin[0];
fDistance[1] = fEntOrigin[1] - fOrigin[1];
fDistance[2] = fEntOrigin[2] - fOrigin[2];
new Float:fTime = (vector_distance(fEntOrigin,fOrigin) / fSpeed);
fVelocity[0] = fDistance[0] / fTime;
fVelocity[1] = fDistance[1] / fTime;
fVelocity[2] = fDistance[2] / fTime;
return(fVelocity[0] && fVelocity[1] && fVelocity[2]);
}
stock ColorChat(const id, const input[], any:...) {
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!x04", "^4");
replace_all(msg, 190, "!x01", "^1");
replace_all(msg, 190, "!x03", "^3");
if(id) players[0] = id;
else get_players(players, count, "ch"); {
for(new i = 0; i < count; i++) {
if(is_user_connected(players[i])) {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
public CurrentWeapon(id){
if(g_dkatana[id]){
if(get_user_weapon(id)!=CSW_KNIFE && task_exists(id+1221))
remove_task(id+1221)
if(get_user_weapon(id)==CSW_KNIFE){
set_pev(id,pev_viewmodel2,dkatama_models[0])
set_pev(id, pev_weaponmodel2, dkatama_models[1])
}
}
}
public fw_emitsound(id, channel, const sound[])
{
if(!is_user_alive(id)|| get_user_weapon(id) != CSW_KNIFE || !g_dkatana[id])
return FMRES_IGNORED
for(new i = 0; i < sizeof oldknife_sounds; i++)
{
if(equal(sound, oldknife_sounds[i]))
{
emit_sound(id, channel, knife_sounds[i], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public fw_primaryattack(wpn){
new id=pev(wpn,pev_owner)
if(g_dkatana[id]){
UTIL_PlayWeaponAnimation(id,7)
set_task(0.2,"nextprattack",id+1221)
set_pdata_float(id,m_flNextAttack,1.0)
return HAM_SUPERCEDE
}
return PLUGIN_CONTINUE
}
public fw_secondaryattack(wpn){
new id=pev(wpn,pev_owner)
if(g_dkatana[id]){
UTIL_PlayWeaponAnimation(id,5)
set_task(0.4,"nextscattack",id+1221)
set_pdata_float(id,m_flNextAttack,1.5)
return HAM_SUPERCEDE
}
return PLUGIN_CONTINUE
}
public fw_takedmg(vic, inflictor, id, Float:damage){
if(!is_user_alive(id) || !is_user_connected(id) || !is_user_connected(vic) || !is_user_alive(vic))
return PLUGIN_HANDLED
if(get_user_weapon(id) == CSW_KNIFE && g_dkatana[id])
SetHamParamFloat(4, damage * 3.0);
return PLUGIN_HANDLED
}
public nextprattack(id){
id-=1221
new weapon = find_ent_by_owner ( -1, "weapon_knife", id )
ExecuteHam(Ham_Weapon_PrimaryAttack, weapon)
}
public nextscattack(id){
id-=1221
new weapon = find_ent_by_owner ( -1, "weapon_knife", id )
ExecuteHam(Ham_Weapon_SecondaryAttack, weapon)
set_pev(id, pev_weaponanim, 5)
}
stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
write_byte(Sequence)
write_byte(0)
message_end()
}