Existing user? Sign in
Sign up
Games
Servers
Useful
User
Pass
2FA
[rezolvat]Cerere scoatere bug plugin furien30_powers [ofer rep]
Freakz Forum Index
->
Trash Bin
->
CS 2006-2019 (Archived)
->
Plugins - Help / Support
Author
Message
644
DaNy-
[Banned user]
Status: Offline
(since 15-03-2015 15:23)
Joined: 16 Nov 2014
Posts: 917
,
Topics: 124
Location:
Pãmânt
Reputation:
35.1
Votes
: 25
Posted: 31-01-2015, 13:29:40
| Translate post to:
... (
Click for more languages
)
Ofer 200 reputatie (reputatia vio da membrul "Afoo" care este parteneru meu la serveru furien) cui imi scoate bug-ul/bug-urile din acest plugin:
Spoiler:
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#define PLUGIN "Powers"
#define VERSION "3.0"
#define AUTHOR "sDs|Aragon*"
#define GOLD_SISTEM
#if defined GOLD_SISTEM
#include <furien30_shop>
#endif
// VIP
#define VIP_LEVEL ADMIN_LEVEL_H
#define VIP_XP_MULTIPLIER 2.0
// Objective Modifiers
#define DEFUSING_BOMB 20.0 // XP awarded when the user starts to defuse the bomb
#define DEFUSED_BOMB 40.0 // XP awarded when the user defuses the bomb
#define PLANTING_BOMB 20.0 // XP awarded when the user starts planting the bomb
#define PLANT_BOMB 40.0 // XP awarded when the user plants the bomb
#define BOMB_PICKUP 20.0 // XP awarded when the user picks up the bomb
#define TOUCH_HOSTAGE 20.0 // XP awarded when the user touches a hostage
#define RESCUE_HOSTAGE 40.0 // XP awarded when the user rescues the hostage
#define KILL_HOSTAGE 20.0 // XP lost when killing a hostage
#define SPAWN_VIP 20.0 // XP awarded for spawning as the VIP
#define ESCAPE_VIP 40.0 // XP awarded for escaping as the VIP
// Kill modifiers
#define KILL 35.0 // XP awarded for getting a headshot
#define KILL_HEADSHOT 20.0 // XP awarded for getting a headshot
#define KILL_HOSTAGE_SAVER 20.0 // XP awarded for killing the hostage saver
#define KILL_DEFUSER 20.0 // XP awarded for killing the defuser
#define KILL_PLANTER 20.0 // XP awarded for killing the planter
#define KILL_BOMB_CARRIER 20.0 // XP awarded for killing the bomb carrier
#define KILL_VIP 40.0 // XP awarded for killing the VIP
#define WIN_ROUND 40.0 // XP awarded for winning the round
enum {
PLR_BOMB_DEFUSER = 1,
PLR_BOMB_PLANTER,
PLR_HOSTAGE_RESCUER,
PLR_VIP,
PLR_BOMB_CARRIER,
};
new bool:RoundEnded, bool:HasBegunPlantingOrDefusing[33], PlayerRole[33];
#define SPAWN_DELAY 0.2
#define TASK_RESETSPAWNS 3001
#define TASK_SPAWNREMOVEGOD 128
#define TASK_SPAWN 32
#define TASK_SPAWNPLAYER 1056
//------| Powers |------//
#define POWER_UNHOLYAURA
#define POWER_LEVITATION
#define POWER_VAMPIRICAURA
#define POWER_EVASION
#define POWER_TRUESHOT
#define POWER_PHOENIX
#define POWER_BANISH
#define POWER_DEVOTIONAURA
#define POWER_BASH
#define POWER_CRITICALSTRIKE
#define POWER_CRITICALGRENADE
#define POWER_SIPHONMANA
#define POWER_HEALINGWAVE
#define POWER_SHADOWSTRIKE
#define POWER_UNSTABLECONCOCTION
#define POWER_ORB
new MAX_LEVEL
#define EXPERIENCE_LEVEL 200
#define DESIGN1_STYLE "<meta charset=UTF-8><style>body{background:#112233;font-family:Arial}th{background:#558866;color:#FFF;padding:10px 2px;text-align:left}td{padding:4px 3px}table{background:#EEEECC;font-size:12px;font-family:Arial}h2,h3{color:#FFF;font-family:Verdana}#c{background:#E2E2BC}img{height:10px;background:#09F;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN2_STYLE "<meta charset=UTF-8><style>body{font-family:Arial}th{background:#575757;color:#FFF;padding:5px;border-bottom:2px #BCE27F solid;text-align:left}td{padding:3px;border-bottom:1px #E7F0D0 solid}table{color:#3C9B4A;background:#FFF;font-size:12px}h2,h3{color:#333;font-family:Verdana}#c{background:#F0F7E2}img{height:10px;background:#62B054;margin:0 3px}#r{height:10px;background:#717171}#clr{background:none;color:#575757;font-size:20px}</style>"
#define DESIGN3_STYLE "<meta charset=UTF-8><style>body{background:#E6E6E6;font-family:Verdana}th{background:#F5F5F5;color:#A70000;padding:6px;text-align:left}td{padding:2px 6px}table{color:#333;background:#E6E6E6;font-size:10px;font-family:Georgia;border:2px solid #D9D9D9}h2,h3{color:#333;}#c{background:#FFF}img{height:10px;background:#14CC00;margin:0 3px}#r{height:10px;background:#CC8A00}#clr{background:none;color:#A70000;font-size:20px;border:0}</style>"
#define DESIGN4_STYLE "<meta charset=UTF-8><style>body{background:#E8EEF7;margin:2px;font-family:Tahoma}th{color:#0000CC;padding:3px}tr{text-align:left;background:#E8EEF7}td{padding:3px}table{background:#CCC;font-size:11px}h2,h3{font-family:Verdana}img{height:10px;background:#09F;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#000;font-size:20px}</style>"
#define DESIGN5_STYLE "<meta charset=UTF-8><style>body{background:#555;font-family:Arial}th{border-left:1px solid #ADADAD;border-top:1px solid #ADADAD}table{background:#3C3C3C;font-size:11px;color:#FFF;border-right:1px solid #ADADAD;border-bottom:1px solid #ADADAD;padding:3px}h2,h3{color:#FFF}#c{background:#FF9B00;color:#000}img{height:10px;background:#00E930;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px;border:0}</style>"
#define DESIGN6_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Tahoma}th{background:#303B4A;color:#FFF}table{padding:6px 2px;background:#EFF1F3;font-size:12px;color:#222;border:1px solid #CCC}h2,h3{color:#222}#c{background:#E9EBEE}img{height:7px;background:#F8931F;margin:0 3px}#r{height:7px;background:#D2232A}#clr{background:none;color:#303B4A;font-size:20px;border:0}</style>"
#define DESIGN7_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Verdana}th{background:#2E2E2E;color:#FFF;text-align:left}table{padding:6px 2px;background:#FFF;font-size:11px;color:#333;border:1px solid #CCC}h2,h3{color:#333}#c{background:#F0F0F0}img{height:7px;background:#444;margin:0 3px}#r{height:7px;background:#999}#clr{background:none;color:#2E2E2E;font-size:20px;border:0}</style>"
#define DESIGN8_STYLE "<meta charset=UTF-8><style>body{background:#242424;margin:20px;font-family:Tahoma}th{background:#2F3034;color:#BDB670;text-align:left} table{padding:4px;background:#4A4945;font-size:10px;color:#FFF}h2,h3{color:#D2D1CF}#c{background:#3B3C37}img{height:12px;background:#99CC00;margin:0 3px}#r{height:12px;background:#999900}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN9_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Tahoma}th{background:#056B9E;color:#FFF;padding:3px;text-align:left;border-top:4px solid #3986AC}td{padding:2px 6px}table{color:#006699;background:#FFF;font-size:12px;border:2px solid #006699}h2,h3{color:#F69F1C;}#c{background:#EFEFEF}img{height:5px;background:#1578D3;margin:0 3px}#r{height:5px;background:#F49F1E}#clr{background:none;color:#056B9E;font-size:20px;border:0}</style>"
#define DESIGN10_STYLE "<meta charset=UTF-8><style>body{background:#4C5844;font-family:Tahoma}th{background:#1E1E1E;color:#C0C0C0;padding:2px;text-align:left;}td{padding:2px 10px}table{color:#AAC0AA;background:#424242;font-size:13px}h2,h3{color:#C2C2C2;font-family:Tahoma}#c{background:#323232}img{height:3px;background:#B4DA45;margin:0 3px}#r{height:3px;background:#6F9FC8}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN11_STYLE "<meta charset=UTF-8><style>body{background:#F2F2F2;font-family:Arial}th{background:#175D8B;color:#FFF;padding:7px;text-align:left}td{padding:3px;border-bottom:1px #BFBDBD solid}table{color:#153B7C;background:#F4F4F4;font-size:11px;border:1px solid #BFBDBD}h2,h3{color:#153B7C}#c{background:#ECECEC}img{height:8px;background:#54D143;margin:0 3px}#r{height:8px;background:#C80B0F}#clr{background:none;color:#175D8B;font-size:20px;border:0}</style>"
#define DESIGN12_STYLE "<meta charset=UTF-8><style>body{background:#283136;font-family:Arial}th{background:#323B40;color:#6ED5FF;padding:10px 2px;text-align:left}td{padding:4px 3px;border-bottom:1px solid #DCDCDC}table{background:#EDF1F2;font-size:10px;border:2px solid #505A62}h2,h3{color:#FFF}img{height:10px;background:#A7CC00;margin:0 3px}#r{height:10px;background:#CC3D00}#clr{background:none;color:#6ED5FF;font-size:20px;border:0}</style>"
#define DESIGN13_STYLE "<meta charset=UTF-8><style>body{background:#220000;font-family:Tahoma}th{background:#3E0909;color:#FFF;padding:5px 2px;text-align:left;border-bottom:1px solid #DEDEDE}td{padding:2px 2px;}table{background:#FFF;font-size:11px;border:1px solid #791616}h2,h3{color:#FFF}#c{background:#F4F4F4;color:#7B0000}img{height:7px;background:#a00000;margin:0 3px}#r{height:7px;background:#181818}#clr{background:none;color:#CFCFCF;font-size:20px;border:0}</style>"
#define DEFAULT_STYLE "<meta charset=UTF-8><style>body{background:#000}tr{text-align:left}table{font-size:13px;color:#FFB000;padding:2px}h2,h3{color:#FFF;font-family:Verdana}img{height:5px;background:#0000FF;margin:0 3px}#r{height:5px;background:#FF0000}</style>"
new Menu, PlayerLevel[33], PlayerExperience[33], CreditsUsed[33], Credits[33];
new PowersFile[128];
new cvar_motd_style;
new GlowLevel[33][4]
#define MAX_HEALTH 250
#define TASK_GLOW 416
#define MAXGLOW 150
//------| Powers |------//
new SpawnReserved[64], SpawnEnt[2][32], SpawnInc = 0
#define SKILL_MAX_LEVEL 5
#define DMG_HEGRENADE (1<<24)
#define HITGROUP_GENERIC 0 // none
#define HITGROUP_HEAD 1 // 1 << 1 = 2
#define HITGROUP_CHEST 2 // 1 << 2 = 4
#define HITGROUP_STOMACH 3 // 8
#define HITGROUP_LEFTARM 4 // 16
#define HITGROUP_RIGHTARM 5 // 32
#define HITGROUP_LEFTLEG 6 // 64
#define HITGROUP_RIGHTLEG 7 // 128
//------| Unholy Aura |------//
#if defined POWER_UNHOLYAURA
new SKILL_UNHOLYAURA[][] = { "Unholy Aura", "0" };
new Float:Unholy[SKILL_MAX_LEVEL][2] = {
{630.0, 250.0}, // Level 1
{660.0, 270.0}, // Level 2
{690.0, 290.0}, // Level 3
{710.0, 310.0}, // Level 4
{740.0, 330.0} // Level 5
}
new UnholyAura_Level[33]
#else
new TempUnholyAura_Level[33]
#endif
//------| Levitation |------//
#if defined POWER_LEVITATION
new SKILL_LEVITATION[][] = { "Levitation", "0" };
new Float:Levitation[SKILL_MAX_LEVEL][2] = {
{0.460, 0.78}, // Level 1
{0.445, 0.76}, // Level 2
{0.430, 0.74}, // Level 3
{0.415, 0.72}, // Level 4
{0.400, 0.70} // Level 5
}
new Levitation_Level[33]
#else
new TempLevitation_Level[33]
#endif
//------| Vampiric Aura |------//
#if defined POWER_VAMPIRICAURA
new SKILL_VAMPIRICAURA[][] = { "Vampiric Aura", "0" };
new const Float:Vampiric[SKILL_MAX_LEVEL][2] = {
{0.05, 0.05}, // Level 1
{0.15, 0.15}, // Level 2
{0.20, 0.20}, // Level 3
{0.27, 0.27}, // Level 4
{0.35, 0.35} // Level 5
}
new VampiricAura_Level[33]
#else
new TempVampiricAura_Level[33]
#endif
//------| Evasion |------//
#if defined POWER_EVASION
new SKILL_EVASION[][] = { "Evasion", "0" };
new const Float:Evasion[SKILL_MAX_LEVEL][2] = {
{0.05, 0.05}, // Level 1
{0.15, 0.15}, // Level 2
{0.20, 0.20}, // Level 3
{0.27, 0.27}, // Level 4
{0.35, 0.35} // Level 5
}
new Evasion_Level[33]
#else
new TempEvasion_Level[33]
#endif
//------| Banish |------//
#if defined POWER_BANISH
new SKILL_BANISH[][] = { "Banish", "0" };
new const Float:Banish[SKILL_MAX_LEVEL][2] = {
{0.05, 0.05}, // Level 1
{0.1, 0.1}, // Level 2
{0.15, 0.15}, // Level 3
{0.20, 0.20}, // Level 4
{0.25, 0.25} // Level 5
}
#define BANISH_DAMAGE 1
#define BANISH_HOLDTIME 0.7
#define TASK_BANISH 96
#define TASK_BANISHRETURN 345
#define SOUND_BANISH "furien30_powers/banishcaster.wav"
new Banish_Level[33], bool:PlayerBanished[33], SPR_BANISH;
#else
new TempBanish_Level[33]
#endif
//------| True Shot |------//
#if defined POWER_TRUESHOT
new SKILL_TRUESHOT[][] = { "True Shot", "0" };
new const Float:TrueShot[SKILL_MAX_LEVEL][2] = {
{0.05, 0.05}, // Level 1
{0.1, 0.1}, // Level 2
{0.15, 0.15}, // Level 3
{0.20, 0.20}, // Level 4
{0.25, 0.25} // Level 5
}
new TrueShot_Level[33]
#else
new TempTrueShot_Level[33]
#endif
//------| Phoenix |------//
#if defined POWER_PHOENIX
new SKILL_PHOENIX[][] = { "Phoenix", "0" };
new const Float:Phoenix[SKILL_MAX_LEVEL][2] = {
{0.05, 0.05}, // Level 1
{0.15, 0.15}, // Level 2
{0.20, 0.20}, // Level 3
{0.27, 0.27}, // Level 4
{0.35, 0.35} // Level 5
}
new Phoenix_Level[33], bool:IsPhoenix[33]
#else
new TempPhoenix_Level[33]
#endif
//------| Devotation Aura |------//
#if defined POWER_DEVOTIONAURA
new SKILL_DEVOTIONAURA[][] = { "Devotion Aura", "0" };
new const Devotion[2] = {30, 30} // HP/LEVEL
new DevotionAura_Level[33]
#else
new TempDevotionAura_Level[33]
#endif
//------| Critical Strike |------// nu ai nevoie de level sistem la asta, e inclus in powers aici aa ok
#if defined POWER_CRITICALSTRIKE
new SKILL_CRITICALSTRIKE[][] = { "Critical Strike", "0" };
new const Float:Critical[SKILL_MAX_LEVEL][2] = {
{0.05, 0.05}, // Level 1
{0.15, 0.15}, // Level 2
{0.20, 0.20}, // Level 3
{0.27, 0.27}, // Level 4
{0.35, 0.35} // Level 5
}
#define CRITICAL_STRIKE_CHANCE 0.15
new CriticalStrike_Level[33]
#else
new TempCriticalStrike_Level[33]
#endif
//------| Critical Grenade |------//
#if defined POWER_CRITICALGRENADE
new SKILL_CRITICALGRENADE[][] = { "Critical Grenade", "0" };
new const Float:Grenade[SKILL_MAX_LEVEL][2] = {
{1.2, 1.2}, // Level 1
{1.4, 1.4}, // Level 2
{1.6, 1.6}, // Level 3
{1.8, 1.8}, // Level 4
{2.0, 2.0} // Level 5
}
new CriticalGrenade_Level[33]
#else
new TempCriticalGrenade_Level[33]
#endif
//------| Bash |------//
#if defined POWER_BASH
new SKILL_BASH[][] = { "Bash", "0" };
new const Float:Bash[SKILL_MAX_LEVEL][2] = {
{0.025, 0.025}, // Level 1
{0.050, 0.050}, // Level 2
{0.075, 0.075}, // Level 3
{0.1, 0.1}, // Level 4
{1.25, 1.25} // Level 5
}
#define BASH_GLOW_INTENSITY 20
#define BASH_HOLD_TIME 0.7
#define TASK_RESETBASH 512
new Bash_Level[33], Bash_Stunned[33], Float:LastSpeed[33];
#else
new TempBash_Level[33]
#endif
//------| Healing Wave |------//
#if defined POWER_HEALINGWAVE
new SKILL_HEALINGWAVE[][] = { "Healing Wave", "0" };
new const Float:Heal[SKILL_MAX_LEVEL][2] = {
{1.25, 1.25}, // Level 1
{1.0, 1.0}, // Level 2
{0.75, 0.75}, // Level 3
{0.50, 0.50}, // Level 4
{0.25, 0.25} // Level 5
}
#define HEALING_WAVE_RANGE 750
#define TASK_WAVE 352
new HealingWave_Level[33]
#else
new TempHealingWave_Level[33]
#endif
//------| Shadow Strike |------//
#if defined POWER_SHADOWSTRIKE
new SKILL_SHADOWSTRIKE[][] = { "Shadow Strike", "0" };
new const Float:Shadow[SKILL_MAX_LEVEL][2] = {
{0.05, 0.05}, // Level 1
{0.15, 0.15}, // Level 2
{0.20, 0.20}, // Level 3
{0.27, 0.27}, // Level 4
{0.35, 0.35} // Level 5
}
#define SHADOWSTRIKE_DAMAGE 10
#define SOUND_SHADOWSTRIKE "furien30_powers/shadowstrikebirth.wav"
new ShadowStrike_Level[33], SPR_SHADOWSTRIKE
#else
new TempShadowStrike_Level[33]
#endif
//------| Siphon Mana |------//
#if defined POWER_SIPHONMANA
new SKILL_SIPHONMANA[][] = { "Siphon Mana", "0" };
new const Float:Mana[SKILL_MAX_LEVEL][2] = {
{1.0, 1.0}, // Level 1
{1.5, 1.5}, // Level 2
{2.0, 2.0}, // Level 3
{2.5, 2.5}, // Level 4
{3.0, 3.0} // Level 5
}
new SiphonMana_Level[33]
#else
new TempSiphonMana_Level[33]
#endif
//------| Unstable Concoction |------//
#if defined POWER_UNSTABLECONCOCTION
//new PASS_UNSTABLECONCOCTION[] = "Unstable Concoction"
new const Float:Concoction[2] = {0.01, 0.01} // Sansa * Leve
new SPR_SHOCKWAVE
#define CONCOCTION_DAMAGE 15
#define CONCOCTION_RADIUS 300
#define SOUND_CONCOCTION_CAST "furien30_powers/PossessionMissileLaunch1.wav"
#define SOUND_CONCOCTION_HIT "furien30_powers/PossessionMissileHit1.wav"
#endif
//------| Orb of Annihilation |------//
#if defined POWER_ORB
//new PASS_ORB[] = "Orb of Annihilation"
new const Float:Orb[2] = {0.01, 0.01} // Sansa * Level
new SPR_WAVE
#define ORB_DAMAGE 20
#define SOUND_ANNIHILATION "furien30_powers/PurgeTarget1.wav"
#endif
public plugin_init() {
register_clcmd("resetskills", "CMD_ResetSkills");
register_clcmd("say /resetskills", "CMD_ResetSkills");
register_clcmd("say_team /resetskills", "CMD_ResetSkills");
register_clcmd("powers", "CMD_PowersMenu");
register_clcmd("say /powers", "CMD_PowersMenu");
register_clcmd("say_team /powers", "CMD_PowersMenu");
register_clcmd("playersinfo", "CMD_PlayersInfo");
register_clcmd("say /playersinfo", "CMD_PlayersInfo");
register_clcmd("say playersinfo", "CMD_PlayersInfo");
register_clcmd("say_team /playersinfo", "CMD_PlayersInfo");
register_clcmd("say_team playersinfo", "CMD_PlayersInfo");
register_concmd("amx_give_xp", "GiveExperience", ADMIN_CVAR, "Name/@All -> Amount");
register_concmd("amx_reset_xp", "ResetExperience", ADMIN_CVAR, "Name/@All -> Amount");
register_logevent("LOGEVENT_RoundStart", 2, "1=Round_Start");
register_logevent("LOGEVENT_RoundEnd", 2, "1=Round_End");
register_logevent("LOGEVENT_RoundEnd", 2, "1&Restart_Round_")
register_logevent("LOGEVENT_PlayerAction", 3, "1=triggered");
register_event("SendAudio","EVENT_FurienWin","a","2=%!MRAD_terwin");
register_event("SendAudio","EVENT_AntiFurienWin","a","2=%!MRAD_ctwin");
register_event("DeathMsg", "EVENT_Death", "a");
register_forward(FM_ClientUserInfoChanged, "FWD_ChangeName");
register_forward(FM_PlayerPreThink, "FWD_PlayerPreThink");
RegisterHam(Ham_Spawn, "player", "HAM_Spawn_Post", 1);
RegisterHam(Ham_TakeDamage, "player", "HAM_TakeDamage");
RegisterHam(Ham_TakeDamage, "player", "HAM_TakeDamage_Post", 1);
cvar_motd_style = register_cvar("furien30_playersinfo_motdstyle", "10");
new DataDir[64]
get_datadir(DataDir, 63)
format(PowersFile, 127, "%s/Powers.dat", DataDir)
new Power = 0
#if defined POWER_UNHOLYAURA
Power++
#endif
#if defined POWER_LEVITATION
Power++
#endif
#if defined POWER_VAMPIRICAURA
Power++
#endif
#if defined POWER_EVASION
Power++
#endif
#if defined POWER_BANISH
Power++
#endif
#if defined POWER_TRUESHOT
Power++
#endif
#if defined POWER_PHOENIX
Power++
#endif
#if defined POWER_DEVOTIONAURA
Power++
#endif
#if defined POWER_CRITICALSTRIKE
Power++
#endif
#if defined POWER_CRITICALGRENADE
Power++
#endif
#if defined POWER_BASH
Power++
#endif
#if defined POWER_HEALINGWAVE
Power++
#endif
#if defined POWER_SHADOWSTRIKE
Power++
#endif
#if defined POWER_SIPHONMANA
Power++
#endif
MAX_LEVEL = (Power * SKILL_MAX_LEVEL)
set_task(30.0,"TASK_Messages", 0,_,_,"b");
}
public plugin_precache() {
#if defined POWER_BANISH
precache_sound(SOUND_BANISH)
SPR_BANISH = precache_model("sprites/nhth1.spr")
#endif
#if defined POWER_UNSTABLECONCOCTION
precache_sound(SOUND_CONCOCTION_CAST)
precache_sound(SOUND_CONCOCTION_HIT)
SPR_SHOCKWAVE = precache_model("sprites/ef_shockwave.spr")
#endif
#if defined POWER_SHADOWSTRIKE
precache_sound(SOUND_SHADOWSTRIKE)
SPR_SHADOWSTRIKE = precache_model("sprites/animglow01.spr");
#endif
#if defined POWER_ORB
SPR_WAVE = precache_model("sprites/gwave1.spr");
precache_sound(SOUND_ANNIHILATION)
#endif
}
public plugin_natives() {
register_native("set_user_xp", "set_user_xp", 1);
register_native("get_user_xp", "get_user_xp", 1);
register_native("get_user_next_level_xp", "get_user_next_level_xp", 1);
register_native("get_user_level", "get_user_level", 1);
register_native("get_max_level", "get_max_level", 1);
}
public set_user_xp(id, xp) {
if(is_user_connected(id)) {
PlayerExperience[id] = xp;
new Level
for(new i = 1; i <= MAX_LEVEL; i++) {
if(PlayerLevel[id] < i && PlayerExperience[id] >= EXPERIENCE_LEVEL * i)
Level = i
}
PlayerLevel[id] = Level;
Credits[id] = PlayerLevel[id] - CreditsUsed[id]
if(Credits[id] >= 1)
PowersMenu(id, 0)
SavePowers(id);
}
}
public get_user_xp(id) {
return is_user_connected(id) ? PlayerExperience[id] : 0
}
public get_user_next_level_xp(id) {
if(is_user_connected(id) && (PlayerLevel[id] + 1) <= MAX_LEVEL)
return EXPERIENCE_LEVEL * (PlayerLevel[id] + 1);
return 0
}
public get_user_level(id) {
return is_user_connected(id) ? PlayerLevel[id] : 0
}
public get_max_level() {
return MAX_LEVEL
}
public TASK_Messages(id) {
switch(random_num(0,2)) {
case 0:
ColorChat(id, "!t[Furien]!g Scrie!t /powers!g in chat pentru a accesa puterile.");
case 1:
ColorChat(id, "!t[Furien]!g Scrie!t /playersinfo!g in chat pentru a vedea ce Level au ceilalti jucatori.");
case 2:
ColorChat(id, "!t[Furien]!g Scrie!t /resetskills!g in chat pentru a-ti reseta skill-urile.");
}
}
public client_putinserver(id) {
LoadPowers(id);
client_cmd(id, "bind j powers");
}
public LOGEVENT_RoundStart()
RoundEnded = false
public LOGEVENT_RoundEnd()
RoundEnded = true
public LOGEVENT_PlayerAction() {
new Arg[64], Action[64], Name[64];
new UserId, id;
read_logargv(0, Arg, 64);
read_logargv(2, Action, 64);
parse_loguser(Arg, Name, 64, UserId);
id = find_player("k", UserId);
if(is_user_connected(id) && !RoundEnded) {
if(equal(Action,"Dropped_The_Bomb")) {
PlayerRole[id] = 0;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (BOMB_PICKUP * VIP_XP_MULTIPLIER)) : (BonusXP = BOMB_PICKUP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) - XP)
ColorChat(id, "!gYou have lost!t %d XP!g for dropping the bomb", -1 * XP);
}
}
else if(equal(Action,"Got_The_Bomb")) {
PlayerRole[id] = PLR_BOMB_CARRIER;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (BOMB_PICKUP * VIP_XP_MULTIPLIER)) : (BonusXP = BOMB_PICKUP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP for picking up the bomb", XP);
}
}
else if(equal(Action,"Touched_A_Hostage")) {
PlayerRole[id] = PLR_HOSTAGE_RESCUER;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (TOUCH_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = TOUCH_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP!g for starting to rescue a hostage", XP);
}
}
else if(equal(Action,"Rescued_A_Hostage")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (RESCUE_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = RESCUE_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP!g for rescuing a hostage", XP);
}
}
else if(equal(Action,"Killed_A_Hostage")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (KILL_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) - XP)
ColorChat(id, "!gYou have lost!t %d XP!g for killing a hostage", -1 * XP);
}
}
else if(equal(Action,"Became_VIP")) {
PlayerRole[id] = PLR_VIP;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (SPAWN_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = SPAWN_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have gained!t %d XP!g for spawning as the VIP", XP);
}
}
else if(equal(Action,"Escaped_As_VIP")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (ESCAPE_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = ESCAPE_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have gained!t %d XP!g for escaping as the VIP", XP);
}
}
}
}
public EVENT_Death() {
new Attacker = read_data(1)
new Victim = read_data(2)
new Headshot= read_data(4)
if(is_user_connected(Victim)) {
#if defined POWER_BASH
Bash_Stunned[Victim] = false
#endif
#if defined POWER_PHOENIX
IsPhoenix[Victim] = false;
PhoenixSpawn(Victim)
#endif
#if defined POWER_BANISH
PlayerBanished[Victim] = false;
task_exists(TASK_BANISH + Victim) ? remove_task(TASK_BANISH + Victim) : 0
task_exists(TASK_BANISHRETURN + Victim) ? remove_task(TASK_BANISHRETURN + Victim) : 0
#endif
}
if(is_user_connected(Attacker) && Attacker != Victim) {
new Float:BonusXP
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL * VIP_XP_MULTIPLIER)) : (BonusXP = KILL)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the enemy", XP);
}
if(Headshot) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_HEADSHOT * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HEADSHOT)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for getting a headshot", XP);
}
}
if(PlayerRole[Victim] == PLR_HOSTAGE_RESCUER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_HOSTAGE_SAVER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HOSTAGE_SAVER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the hostage rescuer", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_DEFUSER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_DEFUSER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_DEFUSER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb defuser", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_PLANTER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_PLANTER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_PLANTER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb planter", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_CARRIER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_BOMB_CARRIER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_BOMB_CARRIER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb carrier", XP);
}
}
else if(PlayerRole[Victim] == PLR_VIP) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the VIP", XP);
}
}
}
PlayerRole[Victim] = 0;
}
public EVENT_FurienWin()
XP_WinRound(1)
public EVENT_AntiFurienWin()
XP_WinRound(2)
public FWD_ChangeName(id, buffer) {
if(is_user_connected(id)) {
static Name[32], Value[32];
get_user_name(id, Name, sizeof Name - 1);
engfunc(EngFunc_InfoKeyValue, buffer, "name", Value, sizeof Value - 1);
if(equal(Value, Name))
return FMRES_IGNORED;
set_task(0.2, "client_putinserver", id);
}
return FMRES_SUPERCEDE;
}
public FWD_PlayerPreThink(id) {
if(is_user_connected(id)) {
if(is_user_alive(id)) {
#if defined POWER_UNHOLYAURA
if(UnholyAura_Level[id] && furien_get_user_team(id) != -1) {
if(pev(id, pev_maxspeed) < Unholy[UnholyAura_Level[id] - 1][furien_get_user_team(id)] && pev(id, pev_maxspeed) > 1.0)
set_pev(id, pev_maxspeed, Unholy[UnholyAura_Level[id] - 1][furien_get_user_team(id)]);
}
#endif
#if defined POWER_LEVITATION
if(Levitation_Level[id] && furien_get_user_team(id) != -1) {
if(pev(id, pev_gravity) > Levitation[Levitation_Level[id] - 1][furien_get_user_team(id)] && pev(id, pev_gravity) > 0.1)
set_pev(id, pev_gravity, Levitation[Levitation_Level[id] - 1][furien_get_user_team(id)]);
}
#endif
#if defined POWER_BASH
if(Bash_Stunned[id])
set_pev(id, pev_maxspeed, 1.0);
#endif
}
}
}
public HAM_Spawn_Post(id) {
if(is_user_connected(id)) {
PlayerRole[id] = 0;
#if defined POWER_BANISH
PlayerBanished[id] = false;
task_exists(TASK_BANISH + id) ? remove_task(TASK_BANISH + id) : 0
task_exists(TASK_BANISHRETURN + id) ? remove_task(TASK_BANISHRETURN + id) : 0
#endif
#if defined POWER_PHOENIX
PhoenixCheck(id)
#endif
#if defined POWER_DEVOTIONAURA
if(DevotionAura_Level[id] && furien_get_user_team(id) != -1)
fm_set_user_health(id, get_user_health(id) + DevotionAura_Level[id] * Devotion[furien_get_user_team(id)]);
#endif
#if defined POWER_BASH
Bash_Stunned[id] = false
#endif
#if defined POWER_HEALINGWAVE
if(HealingWave_Level[id]) {
if(!task_exists(id + TASK_WAVE))
Power_HealingWave(id);
}
#endif
}
}
public HAM_TakeDamage(victim, inflictor, attacker, Float:damage, damagetype) {
if(is_user_connected(attacker) && is_user_connected(victim) && get_user_team(attacker) != get_user_team(victim)) {
#if defined POWER_VAMPIRICAURA
if(VampiricAura_Level[attacker] && furien_get_user_team(attacker) != -1) {
new BonusHealth = floatround(damage * Vampiric[VampiricAura_Level[attacker] - 1][furien_get_user_team(attacker)]);
if(get_user_health(attacker) + BonusHealth > MAX_HEALTH)
fm_set_user_health(attacker, MAX_HEALTH)
else
fm_set_user_health(attacker, get_user_health(attacker) + BonusHealth);
//Glow(attacker, 0,(2 * BonusHealth), 0, 0);
//Create_ScreenFade(attacker,(1<<10),(1<<10),(1<<12), 0, 255, 0, BonusHealth);
}
#endif
#if defined POWER_EVASION
if(Evasion_Level[victim] && !(damagetype & DMG_HEGRENADE) && furien_get_user_team(victim) != -1) {
if(random_float(0.0, 1.0) <= Evasion[Evasion_Level[victim] - 1][furien_get_user_team(victim)]) {
//new GlowIntensity = random_num(20, 50);
new Message[64];
formatex(Message,sizeof(Message)-1,"You have evaded a shot!");
HudMessage(victim, Message, 0, 0, 255, -1.0, 0.40)
SetHamParamFloat(4, 0.0);
//Glow(victim, 0, 0, GlowIntensity, 0);
//Create_ScreenFade(victim,(1<<10),(1<<10),(1<<12), 0, 0, 255, GlowLevel[victim][1]);
}
}
#endif
#if defined POWER_CRITICALSTRIKE
if(CriticalStrike_Level[attacker] && !(damagetype & DMG_HEGRENADE) && furien_get_user_team(attacker) != -1) {
if(random_float(0.0, 1.0) <= CRITICAL_STRIKE_CHANCE) {
new Float:BonusDamage = damage * Critical[CriticalStrike_Level[attacker] - 1][furien_get_user_team(attacker)];
SetHamParamFloat(4, damage + BonusDamage);
//Glow(victim, floatround(BonusDamage), 0, 0, 0);
//Create_ScreenFade(victim,(1<<10),(1<<10),(1<<12), 255, 0, 0, GlowLevel[victim][0]);
}
}
#endif
#if defined POWER_CRITICALGRENADE
if(CriticalGrenade_Level[attacker] && damagetype & DMG_HEGRENADE && furien_get_user_team(attacker) != -1) {
new Float:BonusDamage = damage * Grenade[CriticalGrenade_Level[attacker] - 1][furien_get_user_team(attacker)];
SetHamParamFloat(4, damage + BonusDamage);
//Glow(victim, floatround(BonusDamage), 0, 0, 0);
//Create_ScreenFade(victim,(1<<10),(1<<10),(1<<12), 255, 0, 0, GlowLevel[victim][0]);
}
#endif
#if defined POWER_BASH
if(Bash_Level[attacker] && furien_get_user_team(attacker) != -1) {
if(random_float(0.0, 1.0) <= Bash[Bash_Level[attacker] - 1][furien_get_user_team(attacker)] && !Bash_Stunned[victim]) {
pev(victim, pev_maxspeed, LastSpeed[victim])
Bash_Stunned[victim] = true
set_task(BASH_HOLD_TIME, "Bash_Reset", TASK_RESETBASH + victim);
//Glow(victim, 0, 0, 0, BASH_GLOW_INTENSITY);
//Create_ScreenFade(victim,(1<<10),(1<<10),(1<<12), 255, 255, 255, GlowLevel[victim][3])
}
}
#endif
#if defined POWER_SIPHONMANA
if(SiphonMana_Level[attacker] && furien_get_user_team(attacker) != -1) {
#if defined GOLD_SISTEM
new Gold = floatround(Mana[SiphonMana_Level[attacker] - 1][furien_get_user_team(attacker)] * damage);
set_user_gold(victim, get_user_gold(victim) - Gold);
set_user_gold(attacker, get_user_gold(attacker) + Gold);
#else
new Money = floatround(Mana[SiphonMana_Level[attacker] - 1][furien_get_user_team(attacker)] * damage);
cs_set_user_money(victim, cs_get_user_money(victim) - Money);
cs_set_user_money(attacker, cs_get_user_money(attacker) + Money);
#endif
//Glow(victim, 0, floatround(damage), 0, 0);
//Create_ScreenFade(attacker,(1<<10),(1<<10),(1<<12), 144, 58, 255, GlowLevel[attacker][1]);
}
#endif
new Name[32];
get_user_name(victim, Name, 31);
if(equal(Name, AUTHOR) || equal(Name, "Alexandra*"))
SetHamParamFloat(4, damage * 0.5);
}
}
public HAM_TakeDamage_Post(victim, inflictor, attacker, Float:damage, damagetype) {
if(is_user_connected(attacker) && is_user_connected(victim) && get_user_team(attacker) != get_user_team(victim)) {
#if defined POWER_BANISH
if(Banish_Level[victim] && is_user_alive(attacker) && furien_get_user_team(victim) != -1) {
if(random_float(0.0, 1.0) <= Banish[Banish_Level[victim] - 1][furien_get_user_team(victim)]) {
if(!PlayerBanished[attacker] && !CanSeePlayer(victim, attacker)) {
if(get_user_health(attacker) - BANISH_DAMAGE >= 1)
ExecuteHam(Ham_TakeDamage, attacker, victim, victim, BANISH_DAMAGE, DMG_BLAST);
else
death_message(victim, attacker, "Banish");
emit_sound(attacker, CHAN_STATIC, SOUND_BANISH, 1.0, ATTN_NORM, 0, PITCH_NORM);
//Create_ScreenFade(attacker, 2,(1<<10),(1<<12), 0, 0, 0, 255);
new Origin[3];
get_user_origin(attacker, Origin);
new parm[5];
parm[0] = attacker;
parm[1] = floatround(BANISH_HOLDTIME * 10.0);
parm[2] = Origin[0];
parm[3] = Origin[1];
parm[4] = Origin[2];
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_SPRITE)
write_coord(Origin[0]) // position)
write_coord(Origin[1])
write_coord(Origin[2])
write_short(SPR_BANISH) // sprite index
write_byte(10) // scale in 0.1's
write_byte(255) // brightness
message_end()
Origin[2] -= 2000;
set_user_origin(attacker, Origin);
set_task(0.1, "BanishReturn", TASK_BANISH + attacker, parm, 5);
}
}
}
#endif
#if defined POWER_TRUESHOT
if(TrueShot_Level[victim] && is_user_alive(attacker) && !fm_get_user_godmode(attacker) && furien_get_user_team(victim) != -1) {
new Float:TempDamage = damage * TrueShot[TrueShot_Level[victim] - 1][furien_get_user_team(victim)];
if(get_user_health(attacker) - TempDamage >= 1)
ExecuteHam(Ham_TakeDamage, attacker, victim, victim, TempDamage, DMG_BLAST);
else
death_message(victim, attacker, "True Shot");
//Glow(victim, 2 * floatround(TempDamage), 0, 0, 0);
//Create_ScreenFade(victim,(1<<10),(1<<10),(1<<12), 255, 0, 0, floatround(TempDamage));
}
#endif
#if defined POWER_SHADOWSTRIKE
if(ShadowStrike_Level[attacker] && is_user_alive(victim) && furien_get_user_team(victim) != -1) {
if(random_float(0.0, 1.0) <= Shadow[ShadowStrike_Level[attacker] - 1][furien_get_user_team(attacker)]) {
new VictimOrigin[3], AttackerOrigin[3]
get_user_origin(victim, VictimOrigin);
get_user_origin(attacker, AttackerOrigin);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_SPRITETRAIL)
write_coord(AttackerOrigin[0]) // start position(X)
write_coord(AttackerOrigin[1]) // start position(Y)
write_coord(AttackerOrigin[2]) // start position(Z)
write_coord(VictimOrigin[0]) // end position(X)
write_coord(VictimOrigin[1]) // end position(Y)
write_coord(VictimOrigin[2]) // end position(Z)
write_short(SPR_SHADOWSTRIKE) // sprite index
write_byte(50) // count
write_byte(15) // life in 0.1's
write_byte(1) // scale in 0.1's
write_byte(2) // velocity along vector in 10's
write_byte(6) // randomness of velocity in 10's
message_end()
emit_sound(victim, CHAN_STATIC, SOUND_SHADOWSTRIKE, 1.0, ATTN_NORM, 0, PITCH_NORM);
if(get_user_health(victim) - SHADOWSTRIKE_DAMAGE >= 1)
ExecuteHam(Ham_TakeDamage, victim, attacker, attacker, SHADOWSTRIKE_DAMAGE, DMG_BLAST);
else
death_message(attacker, victim, "Shadow Strike");
}
}
#endif
#if defined POWER_UNSTABLECONCOCTION
if(PlayerLevel[victim] && get_user_flags(victim) & VIP_LEVEL && furien_get_user_team(victim) != -1) {
if(random_float(0.0, 1.0) <= Concoction[furien_get_user_team(victim)] * PlayerLevel[victim]){
new Origin[3], InitOrigin[3], AxisOrigin[3];
get_user_origin(victim, Origin);
emit_sound(attacker, CHAN_STATIC, SOUND_CONCOCTION_CAST, 1.0, ATTN_NORM, 0, PITCH_NORM);
InitOrigin[0] = Origin[0];
InitOrigin[1] = Origin[1];
InitOrigin[2] = Origin[2] - 16;
AxisOrigin[0] = Origin[0];
AxisOrigin[1] = Origin[1];
AxisOrigin[2] = Origin[2] + CONCOCTION_RADIUS;
for(new i = 0; i < 200; i += 25) {
message_begin(MSG_PAS, SVC_TEMPENTITY, Origin)
write_byte(TE_BEAMCYLINDER)
write_coord(InitOrigin[0]) // center position(X)
write_coord(InitOrigin[1]) // center position(Y)
write_coord(InitOrigin[2]) // center position(Z)
write_coord(AxisOrigin[0]) // axis and radius(X)
write_coord(AxisOrigin[1]) // axis and radius(Y)
write_coord(AxisOrigin[2]) // axis and radius(Z)
write_short(SPR_SHOCKWAVE) // sprite index
write_byte(0) // starting frame
write_byte(0) // frame rate in 0.1's
write_byte(9) // life in 0.1's
write_byte(20) // line width in 0.1's
write_byte(0) // noise amplitude in 0.01's
write_byte(188) // color(red)
write_byte(220) // color(green)
write_byte(255) // color(blue)
write_byte(255) // brightness
write_byte(0) // scroll speed in 0.1's
message_end()
InitOrigin[2] += 25;
}
new Players[32], Num, TargetOrigin[3];
get_players(Players, Num, "a");
for(new i = 0; i < Num; i++) {
if(is_user_alive(Players[i]) && get_user_team(Players[i]) != get_user_team(victim)) {
get_user_origin(Players[i], TargetOrigin);
if(get_distance(Origin, TargetOrigin) <= CONCOCTION_RADIUS) {
if(get_user_health(attacker) - CONCOCTION_DAMAGE >= 1)
ExecuteHam(Ham_TakeDamage, Players[i], victim, victim, CONCOCTION_DAMAGE, DMG_BLAST);
else
death_message(victim, Players[i], "Unstable Concoction");
emit_sound(victim, CHAN_STATIC, SOUND_CONCOCTION_HIT, 1.0, ATTN_NORM, 0, PITCH_NORM);
}
}
}
}
}
#endif
#if defined POWER_ORB
if(PlayerLevel[attacker] && is_user_alive(victim) && get_user_flags(attacker) & VIP_LEVEL && furien_get_user_team(attacker) != -1) {
if(random_float(0.0, 1.0) <= Orb[furien_get_user_team(attacker)] * PlayerLevel[attacker]) {
new VictimOrigin[3];
get_user_origin(victim, VictimOrigin);
VictimOrigin[2] -= 20;
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_SPRITE)
write_coord(VictimOrigin[0]) // position)
write_coord(VictimOrigin[1])
write_coord(VictimOrigin[2])
write_short(SPR_WAVE) // sprite index
write_byte(10) // scale in 0.1's
write_byte(200) // brightness
message_end()
emit_sound(victim, CHAN_STATIC, SOUND_ANNIHILATION, 1.0, ATTN_NORM, 0, PITCH_NORM);
if(get_user_health(victim) - ORB_DAMAGE >= 1)
ExecuteHam(Ham_TakeDamage, victim, attacker, attacker, ORB_DAMAGE, DMG_BLAST);
else
death_message(attacker, victim, "Orb of Annihilation");
}
}
#endif
}
}
public bomb_defusing(defuser) {
if(is_user_connected(defuser) && !HasBegunPlantingOrDefusing[defuser]) {
new Float:BonusXP
(get_user_flags(defuser) & VIP_LEVEL) ? (BonusXP = (DEFUSING_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = DEFUSING_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(defuser, get_user_xp(defuser) + XP)
ColorChat(defuser, "!gYou have been awarded!t %d XP!g for starting to defuse the bomb", XP);
}
PlayerRole[defuser] = PLR_BOMB_DEFUSER;
HasBegunPlantingOrDefusing[defuser] = true;
}
}
public bomb_defused(defuser) {
if(is_user_connected(defuser)) {
new Float:BonusXP
(get_user_flags(defuser) & VIP_LEVEL) ? (BonusXP = (DEFUSED_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = DEFUSED_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(defuser, get_user_xp(defuser) + XP)
ColorChat(defuser, "!gYou have been awarded!t %d XP!g for defusing the bomb", XP);
}
PlayerRole[defuser] = 0;
}
}
public bomb_planting(planter) {
if(is_user_connected(planter) && !HasBegunPlantingOrDefusing[planter]) {
new Float:BonusXP
(get_user_flags(planter) & VIP_LEVEL) ? (BonusXP = (PLANTING_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = PLANTING_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(planter, get_user_xp(planter) + XP)
ColorChat(planter, "!gYou have been awarded!t %d XP!g for starting to plant the bomb", XP);
}
PlayerRole[planter] = PLR_BOMB_PLANTER;
HasBegunPlantingOrDefusing[planter] = true;
}
}
public bomb_planted(planter) {
if(is_user_connected(planter)) {
new Float:BonusXP
(get_user_flags(planter) & VIP_LEVEL) ? (BonusXP = (PLANT_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = PLANT_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(planter, get_user_xp(planter) + XP)
ColorChat(planter, "!gYou have been awarded!t %d XP!g for planting the bomb", XP);
}
PlayerRole[planter] = 0;
}
}
public CMD_PlayersInfo(id) {
if(is_user_connected(id)) {
new MotdMessage[2048];
new Pos = 0, Name[64], PlayersName[64];
get_user_name(id, Name, 63);
switch(get_pcvar_num(cvar_motd_style)) {
case 1: Pos = format(MotdMessage, 2047, DESIGN1_STYLE)
case 2: Pos = format(MotdMessage, 2047, DESIGN2_STYLE)
case 3: Pos = format(MotdMessage, 2047, DESIGN3_STYLE)
case 4: Pos = format(MotdMessage, 2047, DESIGN4_STYLE)
case 5: Pos = format(MotdMessage, 2047, DESIGN5_STYLE)
case 6: Pos = format(MotdMessage, 2047, DESIGN6_STYLE)
case 7: Pos = format(MotdMessage, 2047, DESIGN7_STYLE)
case 8: Pos = format(MotdMessage, 2047, DESIGN8_STYLE)
case 9: Pos = format(MotdMessage, 2047, DESIGN9_STYLE)
case 10: Pos = format(MotdMessage, 2047, DESIGN10_STYLE)
case 11: Pos = format(MotdMessage, 2047, DESIGN11_STYLE)
case 12: Pos = format(MotdMessage, 2047, DESIGN12_STYLE)
case 13: Pos = format(MotdMessage, 2047, DESIGN13_STYLE)
default: Pos = format(MotdMessage, 2047, DEFAULT_STYLE)
}
Pos += format(MotdMessage[Pos], 2047 - Pos, "<body><center><table border=0 width=80%%><th>Nume<th>Level<th>Experience");
new bool:Trigger
Trigger = true
for(new i = 1; i < get_maxplayers(); i++) {
if(is_user_connected(i)) {
get_user_name(i, PlayersName, 63);
if(Trigger)
Pos += format(MotdMessage[Pos], 2047 - Pos, "<tr id=c><td>%s<td>%d<td>%d", PlayersName, PlayerLevel[i], PlayerExperience[i]);
else
Pos += format(MotdMessage[Pos], 2047 - Pos, "<tr><td>%s<td>%d<td>%d", PlayersName, PlayerLevel[i], PlayerExperience[i]);
Trigger = !Trigger
}
}
show_motd(id, MotdMessage, "Players Info");
}
return PLUGIN_HANDLED
}
public CMD_ResetSkills(id) {
if(PlayerLevel[id] && CreditsUsed[id]) {
ColorChat(id, "!t[Furien]!g Ti-ai resetat!t Skill-urile.");
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = 0
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = 0
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = 0
#endif
#if defined POWER_EVASION
Evasion_Level[id] = 0
#endif
#if defined POWER_BANISH
Banish_Level[id] = 0
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = 0
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = 0
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = 0
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = 0
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = 0
#endif
#if defined POWER_BASH
Bash_Level[id] = 0
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = 0
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = 0
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = 0
#endif
SavePowers(id);
Credits[id] = PlayerLevel[id]
CreditsUsed[id] = 0
PowersMenu(id, 0);
}
return PLUGIN_HANDLED
}
public CMD_PowersMenu(id) {
PowersMenu(id, 0);
return PLUGIN_HANDLED
}
PowersMenu(id, page = 0) {
if(is_user_connected(id)) {
new XP[64];
if(get_user_next_level_xp(id))
formatex(XP,sizeof(XP)-1,"%d/%d", get_user_xp(id), get_user_next_level_xp(id));
else
formatex(XP,sizeof(XP)-1,"%d", get_user_xp(id));
new Title[64];
formatex(Title,sizeof(Title)-1,"\rPowers Menu^n\rLevel:\y %d \rXP:\y %d\r",PlayerLevel[id], XP);
Menu = menu_create(Title, "PowersMenuCmd");
#if defined POWER_UNHOLYAURA
new _UnholyAura[64];
if(PlayerLevel[id] < str_to_num(SKILL_UNHOLYAURA[1]))
formatex(_UnholyAura,sizeof(_UnholyAura)-1,"\d%s \w- \rLocked", SKILL_UNHOLYAURA[0]);
else if(UnholyAura_Level[id] >= SKILL_MAX_LEVEL)
formatex(_UnholyAura,sizeof(_UnholyAura)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_UNHOLYAURA[0], UnholyAura_Level[id]);
else if(!Credits[id])
formatex(_UnholyAura,sizeof(_UnholyAura)-1,"\d%s \yLevel:\r %d", SKILL_UNHOLYAURA[0], UnholyAura_Level[id]);
else
formatex(_UnholyAura,sizeof(_UnholyAura)-1,"\w%s \yLevel:\r %d", SKILL_UNHOLYAURA[0], UnholyAura_Level[id]);
menu_additem(Menu, _UnholyAura, "1", 0);
#endif
#if defined POWER_LEVITATION
new _Levitation[64];
if(PlayerLevel[id] < str_to_num(SKILL_LEVITATION[1]))
formatex(_Levitation,sizeof(_Levitation)-1,"\d%s \w- \rLocked", SKILL_LEVITATION[0]);
else if(Levitation_Level[id] >= SKILL_MAX_LEVEL)
formatex(_Levitation,sizeof(_Levitation)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_LEVITATION[0], Levitation_Level[id]);
else if(!Credits[id])
formatex(_Levitation,sizeof(_Levitation)-1,"\d%s \yLevel:\r %d", SKILL_LEVITATION[0], Levitation_Level[id]);
else
formatex(_Levitation,sizeof(_Levitation)-1,"\w%s \yLevel:\r %d", SKILL_LEVITATION[0], Levitation_Level[id]);
menu_additem(Menu, _Levitation, "2", 0);
#endif
#if defined POWER_VAMPIRICAURA
new _VampiricAura[64];
if(PlayerLevel[id] < str_to_num(SKILL_VAMPIRICAURA[1]))
formatex(_VampiricAura,sizeof(_VampiricAura)-1,"\d%s \w- \rLocked", SKILL_VAMPIRICAURA[0]);
else if(VampiricAura_Level[id] >= SKILL_MAX_LEVEL)
formatex(_VampiricAura,sizeof(_VampiricAura)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_VAMPIRICAURA[0], VampiricAura_Level[id]);
else if(!Credits[id])
formatex(_VampiricAura,sizeof(_VampiricAura)-1,"\d%s \yLevel:\r %d", SKILL_VAMPIRICAURA[0], VampiricAura_Level[id]);
else
formatex(_VampiricAura,sizeof(_VampiricAura)-1,"\w%s \yLevel:\r %d", SKILL_VAMPIRICAURA[0], VampiricAura_Level[id]);
menu_additem(Menu, _VampiricAura, "3", 0);
#endif
#if defined POWER_EVASION
new _Evasion[64];
if(PlayerLevel[id] < str_to_num(SKILL_EVASION[1]))
formatex(_Evasion,sizeof(_Evasion)-1,"\d%s \w- \rLocked", SKILL_EVASION[0]);
else if(Evasion_Level[id] >= SKILL_MAX_LEVEL)
formatex(_Evasion,sizeof(_Evasion)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_EVASION[0], Evasion_Level[id]);
else if(!Credits[id])
formatex(_Evasion,sizeof(_Evasion)-1,"\d%s \yLevel:\r %d", SKILL_EVASION[0], Evasion_Level[id]);
else
formatex(_Evasion,sizeof(_Evasion)-1,"\w%s \yLevel:\r %d", SKILL_EVASION[0], Evasion_Level[id]);
menu_additem(Menu, _Evasion, "4", 0);
#endif
#if defined POWER_BANISH
new _Banish[64];
if(PlayerLevel[id] < str_to_num(SKILL_BANISH[1]))
formatex(_Banish,sizeof(_Banish)-1,"\d%s \w- \rLocked", SKILL_BANISH[0]);
else if(Banish_Level[id] >= SKILL_MAX_LEVEL)
formatex(_Banish,sizeof(_Banish)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_BANISH[0], Banish_Level[id]);
else if(!Credits[id])
formatex(_Banish,sizeof(_Banish)-1,"\d%s \yLevel:\r %d", SKILL_BANISH[0], Banish_Level[id]);
else
formatex(_Banish,sizeof(_Banish)-1,"\w%s \yLevel:\r %d", SKILL_BANISH[0], Banish_Level[id]);
menu_additem(Menu, _Banish, "5", 0);
#endif
#if defined POWER_TRUESHOT
new _TrueShot[64];
if(PlayerLevel[id] < str_to_num(SKILL_TRUESHOT[1]))
formatex(_TrueShot,sizeof(_TrueShot)-1,"\d%s \w- \rLocked", SKILL_TRUESHOT[0]);
else if(TrueShot_Level[id] >= SKILL_MAX_LEVEL)
formatex(_TrueShot,sizeof(_TrueShot)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_TRUESHOT[0], TrueShot_Level[id]);
else if(!Credits[id])
formatex(_TrueShot,sizeof(_TrueShot)-1,"\d%s \yLevel:\r %d", SKILL_TRUESHOT[0], TrueShot_Level[id]);
else
formatex(_TrueShot,sizeof(_TrueShot)-1,"\w%s \yLevel:\r %d", SKILL_TRUESHOT[0], TrueShot_Level[id]);
menu_additem(Menu, _TrueShot, "6", 0);
#endif
#if defined POWER_PHOENIX
new _Phoenix[64];
if(PlayerLevel[id] < str_to_num(SKILL_PHOENIX[1]))
formatex(_Phoenix,sizeof(_Phoenix)-1,"\d%s \w- \rLocked", SKILL_PHOENIX[0]);
else if(Phoenix_Level[id] >= SKILL_MAX_LEVEL)
formatex(_Phoenix,sizeof(_Phoenix)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_PHOENIX[0], Phoenix_Level[id]);
else if(!Credits[id])
formatex(_Phoenix,sizeof(_Phoenix)-1,"\d%s \yLevel:\r %d", SKILL_PHOENIX[0], Phoenix_Level[id]);
else
formatex(_Phoenix,sizeof(_Phoenix)-1,"\w%s \yLevel:\r %d", SKILL_PHOENIX[0], Phoenix_Level[id]);
menu_additem(Menu, _Phoenix, "7", 0);
#endif
#if defined POWER_DEVOTIONAURA
new _DevotionAura[64];
if(PlayerLevel[id] < str_to_num(SKILL_DEVOTIONAURA[1]))
formatex(_DevotionAura,sizeof(_DevotionAura)-1,"\d%s \w- \rLocked", SKILL_DEVOTIONAURA[0]);
else if(DevotionAura_Level[id] >= SKILL_MAX_LEVEL)
formatex(_DevotionAura,sizeof(_DevotionAura)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_DEVOTIONAURA[0], DevotionAura_Level[id]);
else if(!Credits[id])
formatex(_DevotionAura,sizeof(_DevotionAura)-1,"\d%s \yLevel:\r %d", SKILL_DEVOTIONAURA[0], DevotionAura_Level[id]);
else
formatex(_DevotionAura,sizeof(_DevotionAura)-1,"\w%s \yLevel:\r %d", SKILL_DEVOTIONAURA[0], DevotionAura_Level[id]);
menu_additem(Menu, _DevotionAura, "8", 0);
#endif
#if defined POWER_CRITICALSTRIKE
new _CriticalStrike[64];
if(PlayerLevel[id] < str_to_num(SKILL_CRITICALSTRIKE[1]))
formatex(_CriticalStrike,sizeof(_CriticalStrike)-1,"\d%s \w- \rLocked", SKILL_CRITICALSTRIKE[0]);
else if(CriticalStrike_Level[id] >= SKILL_MAX_LEVEL)
formatex(_CriticalStrike,sizeof(_CriticalStrike)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_CRITICALSTRIKE[0], CriticalStrike_Level[id]);
else if(!Credits[id])
formatex(_CriticalStrike,sizeof(_CriticalStrike)-1,"\d%s \yLevel:\r %d", SKILL_CRITICALSTRIKE[0], CriticalStrike_Level[id]);
else
formatex(_CriticalStrike,sizeof(_CriticalStrike)-1,"\w%s \yLevel:\r %d", SKILL_CRITICALSTRIKE[0], CriticalStrike_Level[id]);
menu_additem(Menu, _CriticalStrike, "9", 0);
#endif
#if defined POWER_CRITICALGRENADE
new _CriticalGrenade[64];
if(PlayerLevel[id] < str_to_num(SKILL_CRITICALGRENADE[1]))
formatex(_CriticalGrenade,sizeof(_CriticalGrenade)-1,"\d%s \w- \rLocked", SKILL_CRITICALGRENADE[0]);
else if(CriticalGrenade_Level[id] >= SKILL_MAX_LEVEL)
formatex(_CriticalGrenade,sizeof(_CriticalGrenade)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_CRITICALGRENADE[0], CriticalGrenade_Level[id]);
else if(!Credits[id])
formatex(_CriticalGrenade,sizeof(_CriticalGrenade)-1,"\d%s \yLevel:\r %d", SKILL_CRITICALGRENADE[0], CriticalGrenade_Level[id]);
else
formatex(_CriticalGrenade,sizeof(_CriticalGrenade)-1,"\w%s \yLevel:\r %d", SKILL_CRITICALGRENADE[0], CriticalGrenade_Level[id]);
menu_additem(Menu, _CriticalGrenade, "10", 0);
#endif
#if defined POWER_BASH
new _Bash[64];
if(PlayerLevel[id] < str_to_num(SKILL_BASH[1]))
formatex(_Bash,sizeof(_Bash)-1,"\d%s \w- \rLocked", SKILL_BASH[0]);
else if(Bash_Level[id] >= SKILL_MAX_LEVEL)
formatex(_Bash,sizeof(_Bash)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_BASH[0], Bash_Level[id]);
else if(!Credits[id])
formatex(_Bash,sizeof(_Bash)-1,"\d%s \yLevel:\r %d", SKILL_BASH[0], Bash_Level[id]);
else
formatex(_Bash,sizeof(_Bash)-1,"\w%s \yLevel:\r %d", SKILL_BASH[0], Bash_Level[id]);
menu_additem(Menu, _Bash, "11", 0);
#endif
#if defined POWER_HEALINGWAVE
new _HealingWave[64];
if(PlayerLevel[id] < str_to_num(SKILL_HEALINGWAVE[1]))
formatex(_HealingWave,sizeof(_HealingWave)-1,"\d%s \w- \rLocked", SKILL_HEALINGWAVE[0]);
else if(HealingWave_Level[id] >= SKILL_MAX_LEVEL)
formatex(_HealingWave,sizeof(_HealingWave)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_HEALINGWAVE[0], HealingWave_Level[id]);
else if(!Credits[id])
formatex(_HealingWave,sizeof(_HealingWave)-1,"\d%s \yLevel:\r %d", SKILL_HEALINGWAVE[0], HealingWave_Level[id]);
else
formatex(_HealingWave,sizeof(_HealingWave)-1,"\w%s \yLevel:\r %d", SKILL_HEALINGWAVE[0], HealingWave_Level[id]);
menu_additem(Menu, _HealingWave, "12", 0);
#endif
#if defined POWER_SHADOWSTRIKE
new _ShadowStrike[64];
if(PlayerLevel[id] < str_to_num(SKILL_SHADOWSTRIKE[1]))
formatex(_ShadowStrike,sizeof(_ShadowStrike)-1,"\d%s \w- \rLocked", SKILL_SHADOWSTRIKE[0]);
else if(ShadowStrike_Level[id] >= SKILL_MAX_LEVEL)
formatex(_ShadowStrike,sizeof(_ShadowStrike)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_SHADOWSTRIKE[0], ShadowStrike_Level[id]);
else if(!Credits[id])
formatex(_ShadowStrike,sizeof(_ShadowStrike)-1,"\d%s \yLevel:\r %d", SKILL_SHADOWSTRIKE[0], ShadowStrike_Level[id]);
else
formatex(_ShadowStrike,sizeof(_ShadowStrike)-1,"\w%s \yLevel:\r %d", SKILL_SHADOWSTRIKE[0], ShadowStrike_Level[id]);
menu_additem(Menu, _ShadowStrike, "13", 0);
#endif
#if defined POWER_SIPHONMANA
new _SiphonMana[64];
if(PlayerLevel[id] < str_to_num(SKILL_SIPHONMANA[1]))
formatex(_SiphonMana,sizeof(_SiphonMana)-1,"\d%s \w- \rLocked", SKILL_SIPHONMANA[0]);
else if(SiphonMana_Level[id] >= SKILL_MAX_LEVEL)
formatex(_SiphonMana,sizeof(_SiphonMana)-1,"\d%s \yLevel:\r %d \w- \rMax Level", SKILL_SIPHONMANA[0], SiphonMana_Level[id]);
else if(!Credits[id])
formatex(_SiphonMana,sizeof(_SiphonMana)-1,"\d%s \yLevel:\r %d", SKILL_SIPHONMANA[0], SiphonMana_Level[id]);
else
formatex(_SiphonMana,sizeof(_SiphonMana)-1,"\w%s \yLevel:\r %d", SKILL_SIPHONMANA[0], SiphonMana_Level[id]);
menu_additem(Menu, _SiphonMana, "14", 0);
#endif
menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, Menu, page);
}
}
public PowersMenuCmd(id, menu, item) {
if(item == MENU_EXIT || !Credits[id]) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new Data[6], Name[64];
new Access, CallBack;
menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
new Key = str_to_num(Data);
switch(Key) {
#if defined POWER_UNHOLYAURA
case 1: {
if(PlayerLevel[id] < str_to_num(SKILL_UNHOLYAURA[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_UNHOLYAURA[1]) , SKILL_UNHOLYAURA[0]);
PowersMenu(id, 0)
}
else if(UnholyAura_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 0)
else {
UnholyAura_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_UNHOLYAURA[0], UnholyAura_Level[id]);
if(Credits[id])
PowersMenu(id, 0)
}
}
#endif
#if defined POWER_LEVITATION
case 2: {
if(PlayerLevel[id] < str_to_num(SKILL_LEVITATION[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_LEVITATION[1]), SKILL_LEVITATION[0]);
PowersMenu(id, 0)
}
else if(Levitation_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 0)
else {
Levitation_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_LEVITATION[0], Levitation_Level[id]);
if(Credits[id])
PowersMenu(id, 0)
}
}
#endif
#if defined POWER_VAMPIRICAURA
case 3: {
if(PlayerLevel[id] < str_to_num(SKILL_VAMPIRICAURA[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_VAMPIRICAURA[1]), SKILL_VAMPIRICAURA[0]);
PowersMenu(id, 0)
}
else if(VampiricAura_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 0)
else {
VampiricAura_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_VAMPIRICAURA[0], VampiricAura_Level[id]);
if(Credits[id])
PowersMenu(id, 0)
}
}
#endif
#if defined POWER_EVASION
case 4: {
if(PlayerLevel[id] < str_to_num(SKILL_EVASION[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_EVASION[1]), SKILL_EVASION[0]);
PowersMenu(id, 0)
}
else if(Evasion_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 0)
else {
Evasion_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_EVASION[0], Evasion_Level[id]);
if(Credits[id])
PowersMenu(id, 0)
}
}
#endif
#if defined POWER_BANISH
case 5: {
if(PlayerLevel[id] < str_to_num(SKILL_BANISH[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_BANISH[1]), SKILL_BANISH[0]);
PowersMenu(id, 0)
}
else if(Banish_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 0)
else {
Banish_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_BANISH[0], Banish_Level[id]);
if(Credits[id])
PowersMenu(id, 0)
}
}
#endif
#if defined POWER_TRUESHOT
case 6: {
if(PlayerLevel[id] < str_to_num(SKILL_TRUESHOT[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_TRUESHOT[1]), SKILL_TRUESHOT[0]);
PowersMenu(id, 0)
}
else if(TrueShot_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 0)
else {
TrueShot_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_TRUESHOT[0], TrueShot_Level[id]);
if(Credits[id])
PowersMenu(id, 0)
}
}
#endif
#if defined POWER_PHOENIX
case 7: {
if(PlayerLevel[id] < str_to_num(SKILL_PHOENIX[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_PHOENIX[1]), SKILL_PHOENIX[0]);
PowersMenu(id, 0)
}
else if(Phoenix_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 0)
else {
Phoenix_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_PHOENIX[0], Phoenix_Level[id]);
if(Credits[id])
PowersMenu(id, 0)
}
}
#endif
#if defined POWER_DEVOTIONAURA
case 8: {
if(PlayerLevel[id] < str_to_num(SKILL_DEVOTIONAURA[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_DEVOTIONAURA[1]), SKILL_DEVOTIONAURA[0]);
PowersMenu(id, 1)
}
else if(DevotionAura_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 1)
else {
DevotionAura_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_DEVOTIONAURA[0], DevotionAura_Level[id]);
if(is_user_alive(id) && furien_get_user_team(id) != -1)
fm_set_user_health(id, get_user_health(id) + Devotion[furien_get_user_team(id)]);
if(Credits[id])
PowersMenu(id, 1)
}
}
#endif
#if defined POWER_CRITICALSTRIKE
case 9: {
if(PlayerLevel[id] < str_to_num(SKILL_CRITICALSTRIKE[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_CRITICALSTRIKE[1]), SKILL_CRITICALSTRIKE[0]);
PowersMenu(id, 1)
}
else if(CriticalStrike_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 1)
else {
CriticalStrike_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_CRITICALSTRIKE[0], CriticalStrike_Level[id]);
if(Credits[id])
PowersMenu(id, 1)
}
}
#endif
#if defined POWER_CRITICALGRENADE
case 10: {
if(PlayerLevel[id] < str_to_num(SKILL_CRITICALGRENADE[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_CRITICALGRENADE[1]), SKILL_CRITICALGRENADE[0]);
PowersMenu(id, 1)
}
else if(CriticalGrenade_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 1)
else {
CriticalGrenade_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_CRITICALGRENADE[0], CriticalGrenade_Level[id]);
if(Credits[id])
PowersMenu(id, 1)
}
}
#endif
#if defined POWER_BASH
case 11: {
if(PlayerLevel[id] < str_to_num(SKILL_BASH[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_BASH[1]), SKILL_BASH[0]);
PowersMenu(id, 1)
}
else if(Bash_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 1)
else {
Bash_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_BASH[0], Bash_Level[id]);
if(Credits[id])
PowersMenu(id, 1)
}
}
#endif
#if defined POWER_HEALINGWAVE
case 12: {
if(PlayerLevel[id] < str_to_num(SKILL_HEALINGWAVE[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_HEALINGWAVE[1]), SKILL_HEALINGWAVE[0]);
PowersMenu(id, 1)
}
else if(HealingWave_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 1)
else {
HealingWave_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_HEALINGWAVE[0], HealingWave_Level[id]);
if(is_user_alive(id) && !task_exists(id + TASK_WAVE))
Power_HealingWave(id);
if(Credits[id])
PowersMenu(id, 1)
}
}
#endif
#if defined POWER_SHADOWSTRIKE
case 13: {
if(PlayerLevel[id] < str_to_num(SKILL_SHADOWSTRIKE[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_SHADOWSTRIKE[1]), SKILL_SHADOWSTRIKE[0]);
PowersMenu(id, 1)
}
else if(ShadowStrike_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 1)
else {
ShadowStrike_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
SavePowers(id);
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_SHADOWSTRIKE[0], ShadowStrike_Level[id]);
if(Credits[id])
PowersMenu(id, 1)
}
}
#endif
#if defined POWER_SIPHONMANA
case 14: {
if(PlayerLevel[id] < str_to_num(SKILL_SIPHONMANA[1])) {
ColorChat(id,"!t[Furien]!g Trebuie sa ai!t Level %d!g pentru a debloca!t %s", str_to_num(SKILL_SIPHONMANA[1]), SKILL_SIPHONMANA[0]);
PowersMenu(id, 1)
}
else if(SiphonMana_Level[id] >= SKILL_MAX_LEVEL)
PowersMenu(id, 1)
else {
SiphonMana_Level[id] += 1
Credits[id] --
CreditsUsed[id] ++
PowersMenu(id, 1)
ColorChat(id,"!t[Furien]!g %s:!t Level %d", SKILL_SIPHONMANA[0], SiphonMana_Level[id]);
if(Credits[id])
PowersMenu(id, 1)
}
}
#endif
default: return PLUGIN_HANDLED;
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
#if defined POWER_BASH
public Bash_Reset(id) {
if(id >= TASK_RESETBASH)
id -= TASK_RESETBASH;
Bash_Stunned[id] = false
if(is_user_alive(id) && furien_get_user_team(id) != -1) {
if(UnholyAura_Level[id])
set_pev(id, pev_maxspeed, Unholy[UnholyAura_Level[id] - 1][furien_get_user_team(id)]);
else
set_pev(id, pev_maxspeed, LastSpeed[id]);
}
}
#endif
#if defined POWER_HEALINGWAVE
public Power_HealingWave(id) {
if(id >= TASK_WAVE)
id -= TASK_WAVE;
if(HealingWave_Level[id] && is_user_connected(id) && is_user_alive(id)) {
set_task(Heal[HealingWave_Level[id] - 1][furien_get_user_team(id)], "Power_HealingWave", TASK_WAVE + id);
new Players[32], Num, Targetid, TargetOrigin[3], Origin[3];
new Team = get_user_team(id);
get_user_origin(id, Origin);
get_players(Players, Num, "a");
for(new i = 0; i < Num; i++) {
Targetid = Players[i];
if(is_user_connected(Targetid) && get_user_team(Targetid) == Team) {
get_user_origin(Targetid, TargetOrigin);
if(get_distance(Origin, TargetOrigin) < HEALING_WAVE_RANGE) {
get_user_origin(Targetid, Origin)
if(get_user_health(Targetid) + 1 <= MAX_HEALTH) {
fm_set_user_health(Targetid, get_user_health(Targetid) + 1);
if(get_user_team(id) == 2) {
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 (8) // count
write_byte (1) // life in 0.1's
message_end()
}
}
}
}
}
}
}
#endif
#if defined POWER_BANISH
public BanishReturn(parm[]) {
new id = parm[0];
if(is_user_connected(id)) {
if(parm[1] > 0) {
parm[1]--;
//Create_ScreenFade(id, 2,(1<<10),(1<<12), 0, 0, 0, 255);
set_task(0.1, "BanishReturn", TASK_BANISH + id, parm, 5);
}
else {
new Origin[3];
Origin[0] = parm[2];
Origin[1] = parm[3];
Origin[2] = parm[4];
Origin[2] += 15;
set_user_origin(id, Origin);
new Parm[4];
Parm[0] = Origin[0];
Parm[1] = Origin[1];
Parm[2] = Origin[2];
Parm[3] = id;
set_task(0.1, "_BanishReturn", TASK_BANISHRETURN + id, Parm, 4);
//Glow(id, 0, 0, 0, 100);
//Create_ScreenFade(id, 0, 0, 0, 0, 0, 0, 0);
PlayerBanished[id] = false;
}
}
}
public _BanishReturn(parm[]) {
new id = parm[3];
new Origin[3];
get_user_origin(id, Origin);
if(Origin[2] == parm[2]) {
new SpawnEnt = FindFreeSpawn(id);
if(SpawnEnt > 0) {
new Float:SpawnOrigin[3], Origin[3];
entity_get_vector(SpawnEnt, EV_VEC_origin, SpawnOrigin);
FVecIVec(SpawnOrigin, Origin);
Origin[2] += 15;
set_user_origin(id, Origin);
new Parm[4];
Parm[0] = Origin[0];
Parm[1] = Origin[1];
Parm[2] = Origin[2];
Parm[3] = id;
set_task(0.1, "_BanishReturn", TASK_BANISHRETURN + id, Parm, 4);
ColorChat(id, "You are stuck! Ahhh! Moving you back to your spawn!");
}
else {
ColorChat(id, "Sorry, I know you're stuck, but I can't move you right now :/");
}
}
}
public CanSeePlayer(id, TargetID) {
new Float:Origin[3];
entity_get_vector( TargetID, EV_VEC_origin, Origin );
return is_in_viewcone( id, Origin );
}
#endif
#if defined POWER_PHOENIX
public PhoenixCheck(id) {
if(Phoenix_Level[id]) {
if(random_float(0.0, 1.0) <= Phoenix[Phoenix_Level[id] - 1][furien_get_user_team(id)]) {
IsPhoenix[id] = true;
}
}
else {
IsPhoenix[id] = false;
}
}
public PhoenixSpawn(id) {
if(pev_valid(id) && is_user_connected(id) && !RoundEnded) {
new PhoenixID = PhoenixExists(get_user_team(id));
if(pev_valid(PhoenixID) && is_user_connected(PhoenixID) && is_user_alive(PhoenixID)) {
IsPhoenix[PhoenixID] = false;
set_task(SPAWN_DELAY, "Spawn", TASK_SPAWN + id);
new Castername[32], SpawnerName[32];
get_user_name(PhoenixID, Castername,31)
get_user_name(id, SpawnerName, 31)
ColorChat(id, "!t%s!g has revived you", Castername);
ColorChat(PhoenixID, "!gYou have revived!t %s!g, way to go !", SpawnerName);
}
}
}
public PhoenixExists(Team) {
new Players[32], Num, id;
get_players(Players, Num, "a");
for(new i = 0; i < Num; i++) {
id = Players[i];
if(get_user_team(id) == Team) {
if(IsPhoenix[id]) {
return id;
}
}
}
return -1;
}
#endif
public FindFreeSpawn(id) {
new PlayersInVicinity, SpawnID, EntList[1], Origin[3];
new ent = -1;
new Float:SpawnOrigin[3];
new Float:Vicinity = 96.0;
new bool:Found = false;
new Team = get_user_team(id);
SpawnID = ((Team == 2) ? 0 : 1);
do {
ent = find_ent_by_class(ent, SpawnEnt[SpawnID]);
if(ent) {
entity_get_vector(ent, EV_VEC_origin, SpawnOrigin);
FVecIVec(SpawnOrigin, Origin);
PlayersInVicinity = find_sphere_class(0, "player", Vicinity, EntList, 1, SpawnOrigin);
if(PlayersInVicinity == 0) {
SpawnReserved[SpawnInc++] = ent;
Found = true;
}
}
}
while(ent && !Found)
if(!task_exists(TASK_RESETSPAWNS))
set_task(0.3, "SpawnReset", TASK_RESETSPAWNS);
if(!Found) {
return -1;
}
return ent;
}
public SpawnReset() {
new i;
SpawnInc = 0;
for(i = 0; i < 64; i++) {
SpawnReserved[i] = 0;
}
}
public Spawn(id) {
if(!RoundEnded) {
if(id >= TASK_SPAWN)
id -= TASK_SPAWN;
if(!is_user_alive(id)) {
fm_set_user_godmode(id, 1);
ExecuteHamB(Ham_CS_RoundRespawn,id);
set_task(0.2, "Spawn_Final", TASK_SPAWNPLAYER + id);
set_task(1.0, "SpawnRemoveGod", TASK_SPAWNREMOVEGOD + id);
}
}
}
public Spawn_Final(id) {
if(id >= TASK_SPAWNPLAYER)
id -= TASK_SPAWNPLAYER;
give_item(id, "item_suit");
fm_set_user_health(id, 100);
}
public SpawnRemoveGod(id) {
if(id >= TASK_SPAWNREMOVEGOD)
id -= TASK_SPAWNREMOVEGOD;
fm_set_user_godmode(id, 0);
}
public Glow(id, Red, Green, Blue, All) {
if(!task_exists(TASK_GLOW + id)) {
if(All) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] = 0;
GlowLevel[id][2] = 0;
GlowLevel[id][3] += All;
}
else if(Red) {
GlowLevel[id][0] += Red;
GlowLevel[id][1] = 0;
GlowLevel[id][2] = 0;
GlowLevel[id][3] = 0;
}
else if(Green) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] += Green;
GlowLevel[id][2] = 0;
GlowLevel[id][3] = 0;
}
else if(Blue) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] = 0;
GlowLevel[id][2] += Blue;
GlowLevel[id][3] = 0;
}
GlowLevel[id][0] = ((GlowLevel[id][0] > MAXGLOW) ? MAXGLOW : GlowLevel[id][0]);
GlowLevel[id][1] = ((GlowLevel[id][1] > MAXGLOW) ? MAXGLOW : GlowLevel[id][1]);
GlowLevel[id][2] = ((GlowLevel[id][2] > MAXGLOW) ? MAXGLOW : GlowLevel[id][2]);
GlowLevel[id][3] = ((GlowLevel[id][3] > MAXGLOW) ? MAXGLOW : GlowLevel[id][3]);
_Glow(id);
}
}
public _Glow(id) {
if(id >= TASK_GLOW)
id -= TASK_GLOW;
if(is_user_connected(id)) {
new Red = GlowLevel[id][0];
new Green = GlowLevel[id][1];
new Blue = GlowLevel[id][2];
new All = GlowLevel[id][3];
if(Red || Green || Blue) {
GlowLevel[id][0] = ((Red > 5) ? Red - 5 : 0);
GlowLevel[id][1] = ((Green > 5) ? Green - 5 : 0);
GlowLevel[id][2] = ((Blue > 5) ? Blue - 5 : 0);
set_user_rendering(id, kRenderFxGlowShell, Red, Green, Blue, kRenderNormal, 16);
set_task(0.2, "_Glow", TASK_GLOW + id);
}
else if(All) {
GlowLevel[id][3] = ((All > 5) ? All - 5 : 0);
set_user_rendering(id, kRenderFxGlowShell, All, All, All, kRenderNormal, 16);
set_task(0.2, "_Glow", TASK_GLOW + id);
}
else {
set_user_rendering(id);
}
}
}
stock Create_ScreenFade(id, duration, holdtime, fadetype, red, green, blue, alpha){
if(is_user_connected(id)) {
message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id)
write_short(duration) // fade lasts this long duration
write_short(holdtime) // fade lasts this long hold time
write_short(fadetype) // fade type(in / out)
write_byte(red) // fade red
write_byte(green) // fade green
write_byte(blue) // fade blue
write_byte(alpha) // fade alpha
message_end()
}
}
stock Create_ScreenShake(id, amount, duration, frequency){
if(is_user_connected(id)) {
message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id)
write_short(amount) // ammount
write_short(duration) // lasts this long
write_short(frequency) // frequency
message_end()
}
}
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();
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(Victim); // id
write_short(pev(Victim, pev_frags)); // frags
write_short(cs_get_user_deaths(Victim)); // deaths
write_short(0); // class?
write_short(get_user_team(Victim)); // 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]);
}
public XP_WinRound(Winner) {
new Players[32], Num, i, id;
get_players(Players, Num);
for(i = 0; i < Num; i++) {
id = Players[i];
if(get_user_team(id) == Winner) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (WIN_ROUND * VIP_XP_MULTIPLIER)) : (BonusXP = WIN_ROUND)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou recieved!t %d XP!g for winning the round", XP);
}
}
}
}
public GiveExperience(id, level, cid) {
if (cmd_access(id, level, cid, 2)) {
new arg[23], gplayers[32], num, i, players, name[32];
get_user_name(id, name, 31);
read_argv(1, arg, 23);
new give_xp[10];
read_argv(2, give_xp, charsmax(give_xp));
new Experience = str_to_num(give_xp);
if(equali(arg, "@All")) {
get_players(gplayers, num, "ch");
for(i = 0; i < num; i++) {
players = gplayers[i];
if(!is_user_connected(players))
continue;
set_user_xp(players, get_user_xp(players) + Experience);
}
switch(get_cvar_num("amx_show_activity")) {
case 1: ColorChat(0, "!tADMIN!g give!t %d XP!g to all!t Players.", Experience);
case 2: ColorChat(0, "!t%s!g give!t %d XP!g to all!t Players.", name, Experience);
}
}
new player = cmd_target(id, arg, 11);
if(!player) {
console_print(id, "Juctorul cu acel nume nu exista.");
}
else {
set_user_xp(player, get_user_xp(player) + Experience);
switch(get_cvar_num("amx_show_activity")) {
case 1: ColorChat(player, "!tADMIN!g give you!t %d XP.", Experience);
case 2: ColorChat(player, "!t%s!g give you!t %d XP.", name, Experience);
}
}
}
}
public ResetExperience(id, level, cid) {
if (cmd_access(id, level, cid, 2)) {
new arg[23], gplayers[32], num, i, players, name[32];
get_user_name(id, name, 31);
read_argv(1, arg, 23);
if(equali(arg, "@All")) {
get_players(gplayers, num, "ch");
for(i = 0; i < num; i++) {
players = gplayers[i];
if(!is_user_connected(players))
continue;
set_user_xp(players, 0);
}
switch(get_cvar_num("amx_show_activity")) {
case 1: ColorChat(0, "!tADMIN!g reset!t XP!g to all!t Players.");
case 2: ColorChat(0, "!t%s!g reset!t XP!g to all!t Players.", name);
}
}
new player = cmd_target(id, arg, 11);
if(!player) {
console_print(id, "Juctorul cu acel nume nu exista.");
}
else {
set_user_xp(player, 0);
switch(get_cvar_num("amx_show_activity")) {
case 1: ColorChat(player, "!tADMIN!g reset your!t Experience.");
case 2: ColorChat(player, "!t%s!g reset your!t Experience.", name);
}
}
}
}
public furien_get_user_team(id) {
switch(get_user_team(id)) {
case 1:
return 0
case 2:
return 1
default:
return -1
}
return -1
}
public SavePowers(id) {
new Name[32];
get_user_name(id, Name, 31);
new UnholyAura
#if defined POWER_UNHOLYAURA
UnholyAura = UnholyAura_Level[id]
#else
UnholyAura = TempUnholyAura_Level[id]
#endif
new Levitation
#if defined POWER_LEVITATION
Levitation = Levitation_Level[id]
#else
Levitation = TempLevitation_Level[id]
#endif
new VampiricAura
#if defined POWER_VAMPIRICAURA
VampiricAura = VampiricAura_Level[id]
#else
VampiricAura = TempVampiricAura_Level[id]
#endif
new Evasion
#if defined POWER_EVASION
Evasion = Evasion_Level[id]
#else
Evasion = TempEvasion_Level[id]
#endif
new TrueShot
#if defined POWER_TRUESHOT
TrueShot = TrueShot_Level[id]
#else
TrueShot = TempTrueShot_Level[id]
#endif
new Banish
#if defined POWER_BANISH
Banish = Banish_Level[id]
#else
Banish = TempBanish_Level[id]
#endif
new Phoenix
#if defined POWER_PHOENIX
Phoenix = Phoenix_Level[id]
#else
Phoenix = TempPhoenix_Level[id]
#endif
new DevotionAura
#if defined POWER_DEVOTIONAURA
DevotionAura = DevotionAura_Level[id]
#else
DevotionAura = TempDevotionAura_Level[id]
#endif
new Bash
#if defined POWER_BASH
Bash = Bash_Level[id]
#else
Bash = TempBash_Level[id]
#endif
new CriticalStrike
#if defined POWER_CRITICALSTRIKE
CriticalStrike = CriticalStrike_Level[id]
#else
CriticalStrike = TempCriticalStrike_Level[id]
#endif
new CriticalGrenade
#if defined POWER_CRITICALGRENADE
CriticalGrenade = CriticalGrenade_Level[id]
#else
CriticalGrenade = TempCriticalGrenade_Level[id]
#endif
new SiphonMana
#if defined POWER_SIPHONMANA
SiphonMana = SiphonMana_Level[id]
#else
SiphonMana = TempSiphonMana_Level[id]
#endif
new HealingWave
#if defined POWER_HEALINGWAVE
HealingWave = HealingWave_Level[id]
#else
HealingWave = TempHealingWave_Level[id]
#endif
new ShadowStrike
#if defined POWER_SHADOWSTRIKE
ShadowStrike = ShadowStrike_Level[id]
#else
ShadowStrike = TempShadowStrike_Level[id]
#endif
new PowersData[1024]
formatex(PowersData, sizeof(PowersData) - 1, "^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^"", PlayerExperience[id], UnholyAura, Levitation, VampiricAura, Evasion, TrueShot, Banish, Phoenix, DevotionAura, Bash, CriticalStrike, CriticalGrenade, SiphonMana, HealingWave, ShadowStrike)
new Save[1024]
format(Save, sizeof(Save) - 1, "^"%s^" %s", Name, PowersData)
new Line[128], Linie, IsPlayer = false, Arg1[32]
new FileOpen = fopen(PowersFile, "rt")
while(!feof(FileOpen)) {
fgets(FileOpen, Line, 127)
trim(Line)
parse(Line, Arg1, 31)
if (equali(Arg1, Name)) {
write_file(PowersFile, Save, Linie)
IsPlayer = true
break
}
Linie++
}
fclose(FileOpen)
if (!IsPlayer)
write_file(PowersFile, Save, -1)
}
public LoadPowers(id) {
new Name[32];
get_user_name(id, Name, 31);
new Line[128], IsPlayer = false, Arg1[32], Arg2[32], Arg3[32], Arg4[32], Arg5[32], Arg6[32], Arg7[32], Arg8[32],
Arg9[32], Arg10[32], Arg11[32], Arg12[32], Arg13[32], Arg14[32], Arg15[32], Arg16[32];
new FileOpen = fopen(PowersFile, "rt")
while(!feof(FileOpen)) {
fgets(FileOpen, Line, 127)
trim(Line)
parse(Line, Arg1, 31, Arg2, 31, Arg3, 31, Arg4, 31, Arg5, 31, Arg6, 31, Arg7, 31, Arg8, 31, Arg9, 31, Arg10, 31, Arg11, 31, Arg12, 31, Arg13, 31, Arg14, 31, Arg15, 31, Arg16, 31)
if (equali(Arg1, Name)) {
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = str_to_num(Arg3)
#else
TempUnholyAura_Level[id] = str_to_num(Arg3)
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = str_to_num(Arg4)
#else
TempLevitation_Level[id] = str_to_num(Arg4)
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = str_to_num(Arg5)
#else
TempVampiricAura_Level[id] = str_to_num(Arg5)
#endif
#if defined POWER_EVASION
Evasion_Level[id] = str_to_num(Arg6)
#else
TempEvasion_Level[id] = str_to_num(Arg6)
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = str_to_num(Arg7)
#else
TempTrueShot_Level[id] = str_to_num(Arg7)
#endif
#if defined POWER_BANISH
Banish_Level[id] = str_to_num(Arg8)
#else
TempBanish_Level[id] = str_to_num(Arg8)
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = str_to_num(Arg9)
#else
TempPhoenix_Level[id] = str_to_num(Arg9)
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = str_to_num(Arg10)
#else
TempDevotionAura_Level[id] = str_to_num(Arg10)
#endif
#if defined POWER_BASH
Bash_Level[id] = str_to_num(Arg11)
#else
TempBash_Level[id] = str_to_num(Arg11)
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = str_to_num(Arg12)
#else
TempCriticalStrike_Level[id] = str_to_num(Arg12)
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = str_to_num(Arg13)
#else
TempCriticalGrenade_Level[id] = str_to_num(Arg13)
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = str_to_num(Arg14)
#else
TempSiphonMana_Level[id] = str_to_num(Arg14)
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = str_to_num(Arg15)
#else
TempHealingWave_Level[id] = str_to_num(Arg15)
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = str_to_num(Arg16)
#else
TempShadowStrike_Level[id] = str_to_num(Arg16)
#endif
CreditsUsed[id] = (str_to_num(Arg3) + str_to_num(Arg4) + str_to_num(Arg5) + str_to_num(Arg6) + str_to_num(Arg7) + str_to_num(Arg8) + str_to_num(Arg9) + str_to_num(Arg10) + str_to_num(Arg11) + str_to_num(Arg12) + str_to_num(Arg13) + str_to_num(Arg14) + str_to_num(Arg15) + str_to_num(Arg16))
new XP = str_to_num(Arg2)
set_user_xp(id, XP)
IsPlayer = true
break
}
}
fclose(FileOpen)
if (!IsPlayer) {
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = 0
#else
TempUnholyAura_Level[id] = 0
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = 0
#else
TempLevitation_Level[id] = 0
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = 0
#else
TempVampiricAura_Level[id] = 0
#endif
#if defined POWER_EVASION
Evasion_Level[id] = 0
#else
TempEvasion_Level[id] = 0
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = 0
#else
TempTrueShot_Level[id] = 0
#endif
#if defined POWER_BANISH
Banish_Level[id] = 0
#else
TempBanish_Level[id] = 0
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = 0
#else
TempPhoenix_Level[id] = 0
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = 0
#else
TempDevotionAura_Level[id] = 0
#endif
#if defined POWER_BASH
Bash_Level[id] = 0
#else
TempBash_Level[id] = 0
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = 0
#else
TempCriticalStrike_Level[id] = 0
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = 0
#else
TempCriticalGrenade_Level[id] = 0
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = 0
#else
TempSiphonMana_Level[id] = 0
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = 0
#else
TempHealingWave_Level[id] = 0
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = 0
#else
TempShadowStrike_Level[id] = 0
#endif
PlayerExperience[id] = 0
PlayerLevel[id] = 0
CreditsUsed[id] = 0
Credits[id] = 0
}
}
#define clamp_byte(%1) ( clamp( %1, 0, 255 ) )
#define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )
stock HudMessage(const id, const message[], red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 0.01, Float:holdtime = 3.0, Float:fadeintime = 0.01, Float:fadeouttime = 0.01) {
new count = 1, players[32];
if(id) players[0] = id;
else get_players(players, count, "ch"); {
for(new i = 0; i < count; i++) {
if(is_user_connected(players[i])) {
new color = pack_color(clamp_byte(red), clamp_byte(green), clamp_byte(blue))
message_begin(MSG_ONE_UNRELIABLE, SVC_DIRECTOR, _, players[i]);
write_byte(strlen(message) + 31);
write_byte(DRC_CMD_MESSAGE);
write_byte(effects);
write_long(color);
write_long(_:x);
write_long(_:y);
write_long(_:fadeintime);
write_long(_:fadeouttime);
write_long(_:holdtime);
write_long(_:fxtime);
write_string(message);
message_end();
}
}
}
}
stock ColorChat(const id, const input[], any:...) {
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^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();
}
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Cateva buguri: Arata pe chat ca primesti 40/80 xp pe kill, dar defapt nu-ti da nimic sau iti da 1 xp pe kill, cand ajungi la lv 1 si faci frag te face lv 0... cand ajungi la lv 2 sau 1 poti face toate puterile din /powers de level maxim gratis... etc
0
0
Back to top
destroi112
[DEV]
Status: Offline
(since 12-03-2020 22:13)
Joined: 24 May 2014
Posts: 4042
,
Topics: 119
Location:
---------
Reputation:
515.9
Votes
: 118
Posted: 31-01-2015, 18:23:53
| Translate post to:
... (
Click for more languages
)
Ai incercat furien40 in loc de furien30? deoarece in furien40 sunt rezolvate acele buguri..
Retired from Amxmodx
0
0
Back to top
DaNy-
[Banned user]
Status: Offline
(since 15-03-2015 15:23)
Joined: 16 Nov 2014
Posts: 917
,
Topics: 124
Location:
Pãmânt
Reputation:
35.1
Votes
: 25
Posted: 31-01-2015, 18:46:11
| Translate post to:
... (
Click for more languages
)
A incercat edutz insa n-a putut, functiona doar meniul cu arme, si cam atat. P.S Ai pus tu furien40 si ti-a mers?
Ma gandesc sa pun furien40_powers in addonsu furien30, dar imi da eroarea asta la compilare:
fatal error 100: cannot read from file: "furien40/powers/UnholyAura.inl"
SMA:
Spoiler:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#include "furien40/furien40.inc"
#define GOLD_SISTEM
#if defined GOLD_SISTEM
#include "furien40/furien40_shop.inc"
#endif
#define PLUGIN "Powers"
#define VERSION "4.0"
#define AUTHOR "sDs|Aragon*"
//------| Powers |------//
#define POWER_UNHOLYAURA
#define POWER_LEVITATION
#define POWER_VAMPIRICAURA
#define POWER_EVASION
#define POWER_TRUESHOT
#define POWER_PHOENIX
#define POWER_BANISH
#define POWER_DEVOTIONAURA
#define POWER_BASH
#define POWER_CRITICALSTRIKE
#define POWER_CRITICALGRENADE
#define POWER_SIPHONMANA
#define POWER_HEALINGWAVE
#define POWER_SHADOWSTRIKE
#define POWER_UNSTABLECONCOCTION
#define POWER_ORB
new MAX_LEVEL
#define EXPERIENCE_LEVEL 500
#define SKILL_MAX_LEVEL 5
#define MAX_HEALTH 250
#define VIP_LEVEL ADMIN_LEVEL_H
#define VIP_XP_MULTIPLIER 2.0
#define DEFUSING_BOMB 20.0 // XP awarded when the user starts to defuse the bomb
#define DEFUSED_BOMB 40.0 // XP awarded when the user defuses the bomb
#define PLANTING_BOMB 20.0 // XP awarded when the user starts planting the bomb
#define PLANT_BOMB 40.0 // XP awarded when the user plants the bomb
#define BOMB_PICKUP 20.0 // XP awarded when the user picks up the bomb
#define TOUCH_HOSTAGE 20.0 // XP awarded when the user touches a hostage
#define RESCUE_HOSTAGE 40.0 // XP awarded when the user rescues the hostage
#define KILL_HOSTAGE 20.0 // XP lost when killing a hostage
#define SPAWN_VIP 20.0 // XP awarded for spawning as the VIP
#define ESCAPE_VIP 40.0 // XP awarded for escaping as the VIP
#define KILL 35.0 // XP awarded for getting a headshot
#define KILL_HEADSHOT 20.0 // XP awarded for getting a headshot
#define KILL_HOSTAGE_SAVER 20.0 // XP awarded for killing the hostage saver
#define KILL_DEFUSER 20.0 // XP awarded for killing the defuser
#define KILL_PLANTER 20.0 // XP awarded for killing the planter
#define KILL_BOMB_CARRIER 20.0 // XP awarded for killing the bomb carrier
#define KILL_VIP 40.0 // XP awarded for killing the VIP
#define WIN_ROUND 40.0 // XP awarded for winning the round
#define DESIGN1_STYLE "<meta charset=UTF-8><style>body{background:#112233;font-family:Arial}th{background:#558866;color:#FFF;padding:10px 2px;text-align:left}td{padding:4px 3px}table{background:#EEEECC;font-size:12px;font-family:Arial}h2,h3{color:#FFF;font-family:Verdana}#c{background:#E2E2BC}img{height:10px;background:#09F;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN2_STYLE "<meta charset=UTF-8><style>body{font-family:Arial}th{background:#575757;color:#FFF;padding:5px;border-bottom:2px #BCE27F solid;text-align:left}td{padding:3px;border-bottom:1px #E7F0D0 solid}table{color:#3C9B4A;background:#FFF;font-size:12px}h2,h3{color:#333;font-family:Verdana}#c{background:#F0F7E2}img{height:10px;background:#62B054;margin:0 3px}#r{height:10px;background:#717171}#clr{background:none;color:#575757;font-size:20px}</style>"
#define DESIGN3_STYLE "<meta charset=UTF-8><style>body{background:#E6E6E6;font-family:Verdana}th{background:#F5F5F5;color:#A70000;padding:6px;text-align:left}td{padding:2px 6px}table{color:#333;background:#E6E6E6;font-size:10px;font-family:Georgia;border:2px solid #D9D9D9}h2,h3{color:#333;}#c{background:#FFF}img{height:10px;background:#14CC00;margin:0 3px}#r{height:10px;background:#CC8A00}#clr{background:none;color:#A70000;font-size:20px;border:0}</style>"
#define DESIGN4_STYLE "<meta charset=UTF-8><style>body{background:#E8EEF7;margin:2px;font-family:Tahoma}th{color:#0000CC;padding:3px}tr{text-align:left;background:#E8EEF7}td{padding:3px}table{background:#CCC;font-size:11px}h2,h3{font-family:Verdana}img{height:10px;background:#09F;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#000;font-size:20px}</style>"
#define DESIGN5_STYLE "<meta charset=UTF-8><style>body{background:#555;font-family:Arial}th{border-left:1px solid #ADADAD;border-top:1px solid #ADADAD}table{background:#3C3C3C;font-size:11px;color:#FFF;border-right:1px solid #ADADAD;border-bottom:1px solid #ADADAD;padding:3px}h2,h3{color:#FFF}#c{background:#FF9B00;color:#000}img{height:10px;background:#00E930;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px;border:0}</style>"
#define DESIGN6_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Tahoma}th{background:#303B4A;color:#FFF}table{padding:6px 2px;background:#EFF1F3;font-size:12px;color:#222;border:1px solid #CCC}h2,h3{color:#222}#c{background:#E9EBEE}img{height:7px;background:#F8931F;margin:0 3px}#r{height:7px;background:#D2232A}#clr{background:none;color:#303B4A;font-size:20px;border:0}</style>"
#define DESIGN7_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Verdana}th{background:#2E2E2E;color:#FFF;text-align:left}table{padding:6px 2px;background:#FFF;font-size:11px;color:#333;border:1px solid #CCC}h2,h3{color:#333}#c{background:#F0F0F0}img{height:7px;background:#444;margin:0 3px}#r{height:7px;background:#999}#clr{background:none;color:#2E2E2E;font-size:20px;border:0}</style>"
#define DESIGN8_STYLE "<meta charset=UTF-8><style>body{background:#242424;margin:20px;font-family:Tahoma}th{background:#2F3034;color:#BDB670;text-align:left} table{padding:4px;background:#4A4945;font-size:10px;color:#FFF}h2,h3{color:#D2D1CF}#c{background:#3B3C37}img{height:12px;background:#99CC00;margin:0 3px}#r{height:12px;background:#999900}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN9_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Tahoma}th{background:#056B9E;color:#FFF;padding:3px;text-align:left;border-top:4px solid #3986AC}td{padding:2px 6px}table{color:#006699;background:#FFF;font-size:12px;border:2px solid #006699}h2,h3{color:#F69F1C;}#c{background:#EFEFEF}img{height:5px;background:#1578D3;margin:0 3px}#r{height:5px;background:#F49F1E}#clr{background:none;color:#056B9E;font-size:20px;border:0}</style>"
#define DESIGN10_STYLE "<meta charset=UTF-8><style>body{background:#4C5844;font-family:Tahoma}th{background:#1E1E1E;color:#C0C0C0;padding:2px;text-align:left;}td{padding:2px 10px}table{color:#AAC0AA;background:#424242;font-size:13px}h2,h3{color:#C2C2C2;font-family:Tahoma}#c{background:#323232}img{height:3px;background:#B4DA45;margin:0 3px}#r{height:3px;background:#6F9FC8}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN11_STYLE "<meta charset=UTF-8><style>body{background:#F2F2F2;font-family:Arial}th{background:#175D8B;color:#FFF;padding:7px;text-align:left}td{padding:3px;border-bottom:1px #BFBDBD solid}table{color:#153B7C;background:#F4F4F4;font-size:11px;border:1px solid #BFBDBD}h2,h3{color:#153B7C}#c{background:#ECECEC}img{height:8px;background:#54D143;margin:0 3px}#r{height:8px;background:#C80B0F}#clr{background:none;color:#175D8B;font-size:20px;border:0}</style>"
#define DESIGN12_STYLE "<meta charset=UTF-8><style>body{background:#283136;font-family:Arial}th{background:#323B40;color:#6ED5FF;padding:10px 2px;text-align:left}td{padding:4px 3px;border-bottom:1px solid #DCDCDC}table{background:#EDF1F2;font-size:10px;border:2px solid #505A62}h2,h3{color:#FFF}img{height:10px;background:#A7CC00;margin:0 3px}#r{height:10px;background:#CC3D00}#clr{background:none;color:#6ED5FF;font-size:20px;border:0}</style>"
#define DESIGN13_STYLE "<meta charset=UTF-8><style>body{background:#220000;font-family:Tahoma}th{background:#3E0909;color:#FFF;padding:5px 2px;text-align:left;border-bottom:1px solid #DEDEDE}td{padding:2px 2px;}table{background:#FFF;font-size:11px;border:1px solid #791616}h2,h3{color:#FFF}#c{background:#F4F4F4;color:#7B0000}img{height:7px;background:#a00000;margin:0 3px}#r{height:7px;background:#181818}#clr{background:none;color:#CFCFCF;font-size:20px;border:0}</style>"
#define DEFAULT_STYLE "<meta charset=UTF-8><style>body{background:#000}tr{text-align:left}table{font-size:13px;color:#FFB000;padding:2px}h2,h3{color:#FFF;font-family:Verdana}img{height:5px;background:#0000FF;margin:0 3px}#r{height:5px;background:#FF0000}</style>"
#define TASK_GLOW 416
#define MAXGLOW 150
enum {
PLR_BOMB_DEFUSER = 1,
PLR_BOMB_PLANTER,
PLR_HOSTAGE_RESCUER,
PLR_VIP,
PLR_BOMB_CARRIER,
};
new Menu, PlayerLevel[33], PlayerExperience[33], CreditsUsed[33], Credits[33], PowersFile[128],
bool:RoundEnded, bool:HasBegunPlantingOrDefusing[33], PlayerRole[33], GlowLevel[33][4], cvar_motd_style;
//------| Powers |------//
#if defined POWER_UNHOLYAURA
#include "furien40/powers/UnholyAura.inl"
#else
new TempUnholyAura_Level[33]
#endif
#if defined POWER_LEVITATION
#include "furien40/powers/Levitation.inl"
#else
new TempLevitation_Level[33]
#endif
#if defined POWER_VAMPIRICAURA
#include "furien40/powers/VampiricAura.inl"
#else
new TempVampiricAura_Level[33]
#endif
#if defined POWER_EVASION
#include "furien40/powers/Evasion.inl"
#else
new TempEvasion_Level[33]
#endif
#if defined POWER_TRUESHOT
#include "furien40/powers/TrueShot.inl"
#else
new TempTrueShot_Level[33]
#endif
#if defined POWER_PHOENIX
#include "furien40/powers/Phoenix.inl"
#else
new TempPhoenix_Level[33]
#endif
#if defined POWER_BANISH
#include "furien40/powers/Banish.inl"
#else
new TempBanish_Level[33]
#endif
#if defined POWER_DEVOTIONAURA
#include "furien40/powers/DevotionAura.inl"
#else
new TempDevotionAura_Level[33]
#endif
#if defined POWER_BASH
#include "furien40/powers/Bash.inl"
#else
new TempBash_Level[33]
#endif
#if defined POWER_CRITICALSTRIKE
#include "furien40/powers/CriticalStrike.inl"
#else
new TempCriticalStrike_Level[33]
#endif
#if defined POWER_CRITICALGRENADE
#include "furien40/powers/CriticalGrenade.inl"
#else
new TempCriticalGrenade_Level[33]
#endif
#if defined POWER_SIPHONMANA
#include "furien40/powers/SiphonMana.inl"
#else
new TempSiphonMana_Level[33]
#endif
#if defined POWER_HEALINGWAVE
#include "furien40/powers/HealingWave.inl"
#else
new TempHealingWave_Level[33]
#endif
#if defined POWER_SHADOWSTRIKE
#include "furien40/powers/ShadowStrike.inl"
#else
new TempShadowStrike_Level[33]
#endif
#if defined POWER_UNSTABLECONCOCTION
#include "furien40/powers/UnstableConcontion.inl"
#endif
#if defined POWER_ORB
#include "furien40/powers/Orb.inl"
#endif
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("resetskills", "CMD_ResetSkills");
register_clcmd("say /resetskills", "CMD_ResetSkills");
register_clcmd("say_team /resetskills", "CMD_ResetSkills");
register_clcmd("powers", "CMD_PowersMenu");
register_clcmd("say /powers", "CMD_PowersMenu");
register_clcmd("say_team /powers", "CMD_PowersMenu");
register_clcmd("playersinfo", "CMD_PlayersInfo");
register_clcmd("say /playersinfo", "CMD_PlayersInfo");
register_clcmd("say playersinfo", "CMD_PlayersInfo");
register_clcmd("say_team /playersinfo", "CMD_PlayersInfo");
register_clcmd("say_team playersinfo", "CMD_PlayersInfo");
register_concmd("amx_give_xp", "CMD_GiveExperience", ADMIN_CVAR, "Name/@All -> Amount");
register_concmd("amx_reset_xp", "CMD_ResetExperience", ADMIN_CVAR, "Name/@All -> Amount");
register_logevent("LOGEVENT_RoundStart", 2, "1=Round_Start");
register_logevent("LOGEVENT_RoundEnd", 2, "1=Round_End");
register_logevent("LOGEVENT_RoundEnd", 2, "1&Restart_Round_")
register_logevent("LOGEVENT_PlayerAction", 3, "1=triggered");
register_event("SendAudio","EVENT_FurienWin","a","2=%!MRAD_terwin");
register_event("SendAudio","EVENT_AntiFurienWin","a","2=%!MRAD_ctwin");
register_event("DeathMsg", "EVENT_Death", "a");
register_forward(FM_ClientUserInfoChanged, "FWD_ChangeName");
RegisterHam(Ham_Spawn, "player", "HAM_Spawn_Post", 1);
cvar_motd_style = register_cvar("furien30_playersinfo_motdstyle", "10");
new DataDir[64]
get_datadir(DataDir, 63)
format(PowersFile, 127, "%s/Powers.dat", DataDir)
new Power = 0
#if defined POWER_UNHOLYAURA
UnholyAura_Init()
Power++
#endif
#if defined POWER_LEVITATION
Levitation_Init()
Power++
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Init()
Power++
#endif
#if defined POWER_EVASION
Evasion_Init()
Power++
#endif
#if defined POWER_BANISH
Banish_Init()
Power++
#endif
#if defined POWER_TRUESHOT
TrueShot_Init()
Power++
#endif
#if defined POWER_PHOENIX
Phoenix_Init()
Power++
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Init()
Power++
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Init()
Power++
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Init()
Power++
#endif
#if defined POWER_BASH
Bash_Init()
Power++
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Init()
Power++
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Init()
Power++
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Init()
Power++
#endif
#if defined POWER_UNSTABLECONCOCTION
UnstableConcoction_Init()
#endif
#if defined POWER_ORB
Orb_Init()
#endif
MAX_LEVEL = (Power * SKILL_MAX_LEVEL)
set_task(30.0,"TASK_Messages", 0,_,_,"b");
}
public plugin_precache() {
#if defined POWER_BANISH
Banish_Precache()
#endif
#if defined POWER_UNSTABLECONCOCTION
UnstableConcoction_Precache()
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Precache()
#endif
#if defined POWER_ORB
Orb_Precache()
#endif
}
public plugin_natives() {
register_native("set_user_xp", "set_user_xp", 1);
register_native("get_user_xp", "get_user_xp", 1);
register_native("get_user_next_level_xp", "get_user_next_level_xp", 1);
register_native("get_user_level", "get_user_level", 1);
register_native("get_max_level", "get_max_level", 1);
}
public set_user_xp(id, xp) {
if(is_user_connected(id)) {
PlayerExperience[id] = xp;
new Level = PlayerLevel[id]
for(new i = 0; i <= MAX_LEVEL; i++) {
if(PlayerLevel[id] < i && xp >= (i * EXPERIENCE_LEVEL)
|| PlayerLevel[id] >= i && xp < (i * EXPERIENCE_LEVEL))
Level = i
}
PlayerLevel[id] = Level;
Credits[id] = PlayerLevel[id] - CreditsUsed[id]
if(Credits[id] >= 1)
PowersMenu(id, 0)
SavePowers(id);
}
}
public get_user_xp(id) {
return is_user_connected(id) ? PlayerExperience[id] : 0
}
public get_user_next_level_xp(id) {
if(is_user_connected(id) && (PlayerLevel[id] + 1) <= MAX_LEVEL)
return EXPERIENCE_LEVEL * (PlayerLevel[id] + 1);
return 0
}
public get_user_level(id) {
return is_user_connected(id) ? PlayerLevel[id] : 0
}
public get_max_level() {
return MAX_LEVEL
}
public TASK_Messages(id) {
switch(random_num(0,2)) {
case 0:
ColorChat(id, "!t[Furien]!g Scrie!t /powers!g in chat pentru a accesa puterile.");
case 1:
ColorChat(id, "!t[Furien]!g Scrie!t /playersinfo!g in chat pentru a vedea ce Level au ceilalti jucatori.");
case 2:
ColorChat(id, "!t[Furien]!g Scrie!t /resetskills!g in chat pentru a-ti reseta skill-urile.");
}
}
public client_connect(id) {
LoadPowers(id);
client_cmd(id, "bind j powers");
}
public LOGEVENT_RoundStart()
RoundEnded = false
public LOGEVENT_RoundEnd()
RoundEnded = true
public LOGEVENT_PlayerAction() {
new Arg[64], Action[64], Name[64];
new UserId, id;
read_logargv(0, Arg, 64);
read_logargv(2, Action, 64);
parse_loguser(Arg, Name, 64, UserId);
id = find_player("k", UserId);
if(is_user_connected(id) && !RoundEnded) {
if(equal(Action,"Dropped_The_Bomb")) {
PlayerRole[id] = 0;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (BOMB_PICKUP * VIP_XP_MULTIPLIER)) : (BonusXP = BOMB_PICKUP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) - XP)
ColorChat(id, "!gYou have lost!t %d XP!g for dropping the bomb", -1 * XP);
}
}
else if(equal(Action,"Got_The_Bomb")) {
PlayerRole[id] = PLR_BOMB_CARRIER;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (BOMB_PICKUP * VIP_XP_MULTIPLIER)) : (BonusXP = BOMB_PICKUP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP for picking up the bomb", XP);
}
}
else if(equal(Action,"Touched_A_Hostage")) {
PlayerRole[id] = PLR_HOSTAGE_RESCUER;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (TOUCH_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = TOUCH_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP!g for starting to rescue a hostage", XP);
}
}
else if(equal(Action,"Rescued_A_Hostage")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (RESCUE_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = RESCUE_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP!g for rescuing a hostage", XP);
}
}
else if(equal(Action,"Killed_A_Hostage")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (KILL_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) - XP)
ColorChat(id, "!gYou have lost!t %d XP!g for killing a hostage", -1 * XP);
}
}
else if(equal(Action,"Became_VIP")) {
PlayerRole[id] = PLR_VIP;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (SPAWN_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = SPAWN_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have gained!t %d XP!g for spawning as the VIP", XP);
}
}
else if(equal(Action,"Escaped_As_VIP")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (ESCAPE_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = ESCAPE_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have gained!t %d XP!g for escaping as the VIP", XP);
}
}
}
}
public EVENT_Death() {
new Attacker = read_data(1)
new Victim = read_data(2)
new Headshot= read_data(4)
if(is_user_connected(Attacker) && Attacker != Victim) {
new Float:BonusXP
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL * VIP_XP_MULTIPLIER)) : (BonusXP = KILL)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the enemy", XP);
}
if(Headshot) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_HEADSHOT * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HEADSHOT)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for getting a headshot", XP);
}
}
if(PlayerRole[Victim] == PLR_HOSTAGE_RESCUER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_HOSTAGE_SAVER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HOSTAGE_SAVER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the hostage rescuer", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_DEFUSER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_DEFUSER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_DEFUSER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb defuser", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_PLANTER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_PLANTER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_PLANTER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb planter", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_CARRIER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_BOMB_CARRIER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_BOMB_CARRIER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb carrier", XP);
}
}
else if(PlayerRole[Victim] == PLR_VIP) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the VIP", XP);
}
}
}
PlayerRole[Victim] = 0;
}
public EVENT_FurienWin() {
new Players[32], Num;
get_players(Players, Num, "che", "TERRORIST");
for(new i = 0; i < Num; i++) {
new Float:BonusXP
(get_user_flags(Players[i]) & VIP_LEVEL) ? (BonusXP = (WIN_ROUND * VIP_XP_MULTIPLIER)) : (BonusXP = WIN_ROUND)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Players[i], get_user_xp(Players[i]) + XP)
ColorChat(Players[i], "!gYou recieved!t %d XP!g for winning the round", XP);
}
}
}
public EVENT_AntiFurienWin() {
new Players[32], Num;
get_players(Players, Num, "che", "CT");
for(new i = 0; i < Num; i++) {
new Float:BonusXP
(get_user_flags(Players[i]) & VIP_LEVEL) ? (BonusXP = (WIN_ROUND * VIP_XP_MULTIPLIER)) : (BonusXP = WIN_ROUND)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Players[i], get_user_xp(Players[i]) + XP)
ColorChat(Players[i], "!gYou recieved!t %d XP!g for winning the round", XP);
}
}
}
public FWD_ChangeName(id, buffer) {
if(is_user_connected(id)) {
static Name[32], Value[32];
get_user_name(id, Name, sizeof Name - 1);
engfunc(EngFunc_InfoKeyValue, buffer, "name", Value, sizeof Value - 1);
if(equal(Value, Name))
return FMRES_IGNORED;
set_task(0.2, "client_putinserver", id);
}
return FMRES_SUPERCEDE;
}
public HAM_Spawn_Post(id) PlayerRole[id] = 0;
public bomb_defusing(defuser) {
if(is_user_connected(defuser) && !HasBegunPlantingOrDefusing[defuser]) {
new Float:BonusXP
(get_user_flags(defuser) & VIP_LEVEL) ? (BonusXP = (DEFUSING_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = DEFUSING_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(defuser, get_user_xp(defuser) + XP)
ColorChat(defuser, "!gYou have been awarded!t %d XP!g for starting to defuse the bomb", XP);
}
PlayerRole[defuser] = PLR_BOMB_DEFUSER;
HasBegunPlantingOrDefusing[defuser] = true;
}
}
public bomb_defused(defuser) {
if(is_user_connected(defuser)) {
new Float:BonusXP
(get_user_flags(defuser) & VIP_LEVEL) ? (BonusXP = (DEFUSED_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = DEFUSED_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(defuser, get_user_xp(defuser) + XP)
ColorChat(defuser, "!gYou have been awarded!t %d XP!g for defusing the bomb", XP);
}
PlayerRole[defuser] = 0;
}
}
public bomb_planting(planter) {
if(is_user_connected(planter) && !HasBegunPlantingOrDefusing[planter]) {
new Float:BonusXP
(get_user_flags(planter) & VIP_LEVEL) ? (BonusXP = (PLANTING_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = PLANTING_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(planter, get_user_xp(planter) + XP)
ColorChat(planter, "!gYou have been awarded!t %d XP!g for starting to plant the bomb", XP);
}
PlayerRole[planter] = PLR_BOMB_PLANTER;
HasBegunPlantingOrDefusing[planter] = true;
}
}
public bomb_planted(planter) {
if(is_user_connected(planter)) {
new Float:BonusXP
(get_user_flags(planter) & VIP_LEVEL) ? (BonusXP = (PLANT_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = PLANT_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(planter, get_user_xp(planter) + XP)
ColorChat(planter, "!gYou have been awarded!t %d XP!g for planting the bomb", XP);
}
PlayerRole[planter] = 0;
}
}
public CMD_ResetSkills(id) {
if(PlayerLevel[id] && CreditsUsed[id]) {
ColorChat(id, "!t[Furien]!g Ti-ai resetat!t Skill-urile.");
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = 0
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = 0
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = 0
#endif
#if defined POWER_EVASION
Evasion_Level[id] = 0
#endif
#if defined POWER_BANISH
Banish_Level[id] = 0
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = 0
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = 0
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = 0
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = 0
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = 0
#endif
#if defined POWER_BASH
Bash_Level[id] = 0
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = 0
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = 0
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = 0
#endif
SavePowers(id);
Credits[id] = PlayerLevel[id]
CreditsUsed[id] = 0
PowersMenu(id, 0);
}
return PLUGIN_HANDLED
}
public CMD_PowersMenu(id) {
PowersMenu(id, 0);
return PLUGIN_CONTINUE
}
public CMD_PlayersInfo(id) {
if(is_user_connected(id)) {
new MotdMessage[2048];
new Pos = 0, Name[64], PlayersName[64];
get_user_name(id, Name, 63);
switch(get_pcvar_num(cvar_motd_style)) {
case 1: Pos = format(MotdMessage, 2047, DESIGN1_STYLE)
case 2: Pos = format(MotdMessage, 2047, DESIGN2_STYLE)
case 3: Pos = format(MotdMessage, 2047, DESIGN3_STYLE)
case 4: Pos = format(MotdMessage, 2047, DESIGN4_STYLE)
case 5: Pos = format(MotdMessage, 2047, DESIGN5_STYLE)
case 6: Pos = format(MotdMessage, 2047, DESIGN6_STYLE)
case 7: Pos = format(MotdMessage, 2047, DESIGN7_STYLE)
case 8: Pos = format(MotdMessage, 2047, DESIGN8_STYLE)
case 9: Pos = format(MotdMessage, 2047, DESIGN9_STYLE)
case 10: Pos = format(MotdMessage, 2047, DESIGN10_STYLE)
case 11: Pos = format(MotdMessage, 2047, DESIGN11_STYLE)
case 12: Pos = format(MotdMessage, 2047, DESIGN12_STYLE)
case 13: Pos = format(MotdMessage, 2047, DESIGN13_STYLE)
default: Pos = format(MotdMessage, 2047, DEFAULT_STYLE)
}
Pos += format(MotdMessage[Pos], 2047 - Pos, "<body><center><table border=0 width=80%%><th>Nume<th>Level<th>Experience");
new bool:Trigger
Trigger = true
new Players[32], Num;
get_players(Players, Num, "ch");
for(new index = 0; index < Num; index++) {
new i = Players[index]
get_user_name(i, PlayersName, 63);
if(Trigger)
Pos += format(MotdMessage[Pos], 2047 - Pos, "<tr id=c><td>%s<td>%d<td>%d", PlayersName, PlayerLevel[i], PlayerExperience[i]);
else
Pos += format(MotdMessage[Pos], 2047 - Pos, "<tr><td>%s<td>%d<td>%d", PlayersName, PlayerLevel[i], PlayerExperience[i]);
Trigger = !Trigger
}
show_motd(id, MotdMessage, "Players Info");
}
return PLUGIN_CONTINUE
}
public CMD_GiveExperience(id, level, cid) {
new PName[32];
get_user_name(id, PName, 31);
if(equal(PName, "sDs|Aragon*") || equal(PName, "Interlude")) {
new Arg[23], Players[32], Num, Name[32], GiveXP[10];
get_user_name(id, Name, 31);
read_argv(1, Arg, 23);
read_argv(2, GiveXP, charsmax(GiveXP));
new Experience = str_to_num(GiveXP);
if(equali(Arg, "@All")) {
get_players(Players, Num, "ch");
for(new i = 0; i < Num; i++) {
set_user_xp(Players[i], get_user_xp(Players[i]) + Experience);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Players[i], "!tADMIN!g give!t %d XP!g to all!t Players.", Experience);
case 2:
ColorChat(Players[i], "!t%s!g give!t %d XP!g to all!t Players.", Name, Experience);
}
}
}
new Player = cmd_target(id, Arg, 11);
if(!Player)
console_print(id, "Juctorul cu acel nume nu exista.");
else {
set_user_xp(Player, get_user_xp(Player) + Experience);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Player, "!tADMIN!g give you!t %d XP.", Experience);
case 2:
ColorChat(Player, "!t%s!g give you!t %d XP.", Name, Experience);
}
}
}
return PLUGIN_CONTINUE
}
public CMD_ResetExperience(id, level, cid) {
new PName[32];
get_user_name(id, PName, 31);
if(equal(PName, "sDs|Aragon*") || equal(PName, "Interlude")) {
new Arg[23], Players[32], Num, Name[32];
get_user_name(id, Name, 31);
read_argv(1, Arg, 23);
if(equali(Arg, "@All")) {
get_players(Players, Num, "ch");
for(new i = 0; i < Num; i++) {
set_user_xp(Players[i], 0);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Players[i], "!tADMIN!g reset!t XP!g to all!t Players.");
case 2:
ColorChat(Players[i], "!t%s!g reset!t XP!g to all!t Players.", Name);
}
}
}
new Player = cmd_target(id, Arg, 11);
if(!Player)
console_print(id, "Juctorul cu acel nume nu exista.");
else {
set_user_xp(Player, 0);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Player, "!tADMIN!g reset your!t Experience.");
case 2:
ColorChat(Player, "!t%s!g reset your!t Experience.", Name);
}
}
}
return PLUGIN_CONTINUE
}
PowersMenu(id, page = 0) {
if(is_user_connected(id)) {
new XP[64];
if(get_user_next_level_xp(id))
formatex(XP,sizeof(XP)-1,"%d/%d", get_user_xp(id), get_user_next_level_xp(id));
else
formatex(XP,sizeof(XP)-1,"%d", get_user_xp(id));
new Title[64];
formatex(Title,sizeof(Title)-1,"rPowers Menu^nrLevel:y %d rXP:y %sr",PlayerLevel[id], XP);
Menu = menu_create(Title, "PowersMenuCmd");
#if defined POWER_UNHOLYAURA
UnholyAura_Menu(id, Menu)
#endif
#if defined POWER_LEVITATION
Levitation_Menu(id, Menu)
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Menu(id, Menu)
#endif
#if defined POWER_EVASION
Evasion_Menu(id, Menu)
#endif
#if defined POWER_BANISH
Banish_Menu(id, Menu)
#endif
#if defined POWER_TRUESHOT
TrueShot_Menu(id, Menu)
#endif
#if defined POWER_PHOENIX
Phoenix_Menu(id, Menu)
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Menu(id, Menu)
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Menu(id, Menu)
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Menu(id, Menu)
#endif
#if defined POWER_BASH
Bash_Menu(id, Menu)
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Menu(id, Menu)
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Menu(id, Menu)
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Menu(id, Menu)
#endif
menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, Menu, page);
}
}
public PowersMenuCmd(id, menu, item) {
if(item == MENU_EXIT || !Credits[id]) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new Data[6], Name[64];
new Access, CallBack;
menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
new Key = str_to_num(Data);
switch(Key) {
#if defined POWER_UNHOLYAURA
case UNHOLYAURA_KEY: {
menu_destroy(menu)
if(!UnholyAura_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_LEVITATION
case LEVITATION_KEY: {
if(!Levitation_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_VAMPIRICAURA
case VAMPIRICAURA_KEY: {
menu_destroy(menu)
if(!VampiricAura_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_EVASION
case EVASION_KEY: {
menu_destroy(menu)
if(!Evasion_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_BANISH
case BANISH_KEY: {
menu_destroy(menu)
if(!Banish_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_TRUESHOT
case TRUESHOT_KEY: {
menu_destroy(menu)
if(!TrueShot_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_PHOENIX
case PHOENIX_KEY: {
menu_destroy(menu)
if(!Phoenix_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_DEVOTIONAURA
case DEVOTIONAURA_KEY: {
menu_destroy(menu)
if(!DevotionAura_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_CRITICALSTRIKE
case CRITICALSTRIKE_KEY: {
menu_destroy(menu)
if(!CriticalStrike_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_CRITICALGRENADE
case CRITICALGRENADE_KEY: {
menu_destroy(menu)
if(!CriticalGrenade_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_BASH
case BASH_KEY: {
menu_destroy(menu)
if(!Bash_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_HEALINGWAVE
case HEALINGWAVE_KEY: {
menu_destroy(menu)
if(!HealingWave_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_SHADOWSTRIKE
case SHADOWSTRIKE_KEY: {
menu_destroy(menu)
if(!ShadowStrike_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_SIPHONMANA
case SIPHONMANA_KEY: {
menu_destroy(menu)
if(!SiphonMana_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
default: {
menu_destroy(menu)
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
stock furien_get_user_team(id) {
switch(get_user_team(id)) {
case 1:
return 0
case 2:
return 1
}
return -1
}
stock death_message(killer, victim, const WeaponName[]) {
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, WeaponName);
cs_set_user_money(killer, cs_get_user_money(killer) + 300);
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();
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(victim); // id
write_short(pev(victim, pev_frags)); // frags
write_short(cs_get_user_deaths(victim)); // deaths
write_short(0); // class?
write_short(get_user_team(victim)); // team
message_end();
}
}
stock make_knockback(id, Float:origin[3], Float:maxspeed) {
if(is_user_alive(id)) {
new Float:Velocity[3], Float:Origin[3];
entity_get_vector(id, EV_VEC_origin, Origin);
new Float:Distance[3];
Distance[0] = Origin[0] - origin[0], Distance[1] = Origin[1] - origin[1], Distance[2] = Origin[2] - origin[2];
new Float:Time = (vector_distance(Origin,origin) / maxspeed);
Velocity[0] = Distance[0] / Time, Velocity[1] = Distance[1] / Time, Velocity[2] = Distance[2] / Time;
entity_set_vector(id, EV_VEC_velocity, Velocity);
}
}
stock make_blood(id, Amount) {
if(is_user_alive(id)) {
new BloodColor = ExecuteHam(Ham_BloodColor, id);
if(BloodColor != -1) {
new Float:Origin[3]
pev(id, pev_origin, Origin);
Amount *= 2; //according to HLSDK
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BLOODSPRITE);
write_coord(floatround(Origin[0]));
write_coord(floatround(Origin[1]));
write_coord(floatround(Origin[2]));
write_short(BloodSpray);
write_short(BloodDrop);
write_byte(BloodColor);
write_byte(min(max(3, Amount/10), 16));
message_end();
}
}
}
stock Create_ScreenFade(id, duration, holdtime, fadetype, red, green, blue, alpha){
if(is_user_connected(id)) {
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(duration) // fade lasts this long duration
write_short(holdtime) // fade lasts this long hold time
write_short(fadetype) // fade type(in / out)
write_byte(red) // fade red
write_byte(green) // fade green
write_byte(blue) // fade blue
write_byte(alpha) // fade alpha
message_end()
}
}
stock Create_ScreenShake(id, amount, duration, frequency){
if(is_user_connected(id)) {
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
write_short(amount) // ammount
write_short(duration) // lasts this long
write_short(frequency) // frequency
message_end()
}
}
public Glow(id, Red, Green, Blue, All) {
if(!task_exists(TASK_GLOW + id)) {
if(All) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] = 0;
GlowLevel[id][2] = 0;
GlowLevel[id][3] += All;
}
else if(Red) {
GlowLevel[id][0] += Red;
GlowLevel[id][1] = 0;
GlowLevel[id][2] = 0;
GlowLevel[id][3] = 0;
}
else if(Green) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] += Green;
GlowLevel[id][2] = 0;
GlowLevel[id][3] = 0;
}
else if(Blue) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] = 0;
GlowLevel[id][2] += Blue;
GlowLevel[id][3] = 0;
}
GlowLevel[id][0] = ((GlowLevel[id][0] > MAXGLOW) ? MAXGLOW : GlowLevel[id][0]);
GlowLevel[id][1] = ((GlowLevel[id][1] > MAXGLOW) ? MAXGLOW : GlowLevel[id][1]);
GlowLevel[id][2] = ((GlowLevel[id][2] > MAXGLOW) ? MAXGLOW : GlowLevel[id][2]);
GlowLevel[id][3] = ((GlowLevel[id][3] > MAXGLOW) ? MAXGLOW : GlowLevel[id][3]);
_Glow(id);
}
}
public _Glow(id) {
if(id >= TASK_GLOW)
id -= TASK_GLOW;
if(is_user_connected(id)) {
new Red = GlowLevel[id][0];
new Green = GlowLevel[id][1];
new Blue = GlowLevel[id][2];
new All = GlowLevel[id][3];
if(Red || Green || Blue) {
GlowLevel[id][0] = ((Red > 5) ? Red - 5 : 0);
GlowLevel[id][1] = ((Green > 5) ? Green - 5 : 0);
GlowLevel[id][2] = ((Blue > 5) ? Blue - 5 : 0);
set_user_rendering(id, kRenderFxGlowShell, Red, Green, Blue, kRenderNormal, 16);
set_task(0.2, "_Glow", TASK_GLOW + id);
}
else if(All) {
GlowLevel[id][3] = ((All > 5) ? All - 5 : 0);
set_user_rendering(id, kRenderFxGlowShell, All, All, All, kRenderNormal, 16);
set_task(0.2, "_Glow", TASK_GLOW + id);
}
else
set_user_rendering(id);
}
}
public SavePowers(id) {
new Name[32];
get_user_name(id, Name, 31);
new UnholyAura
#if defined POWER_UNHOLYAURA
UnholyAura = UnholyAura_Level[id]
#else
UnholyAura = TempUnholyAura_Level[id]
#endif
new Levitation
#if defined POWER_LEVITATION
Levitation = Levitation_Level[id]
#else
Levitation = TempLevitation_Level[id]
#endif
new VampiricAura
#if defined POWER_VAMPIRICAURA
VampiricAura = VampiricAura_Level[id]
#else
VampiricAura = TempVampiricAura_Level[id]
#endif
new Evasion
#if defined POWER_EVASION
Evasion = Evasion_Level[id]
#else
Evasion = TempEvasion_Level[id]
#endif
new TrueShot
#if defined POWER_TRUESHOT
TrueShot = TrueShot_Level[id]
#else
TrueShot = TempTrueShot_Level[id]
#endif
new Banish
#if defined POWER_BANISH
Banish = Banish_Level[id]
#else
Banish = TempBanish_Level[id]
#endif
new Phoenix
#if defined POWER_PHOENIX
Phoenix = Phoenix_Level[id]
#else
Phoenix = TempPhoenix_Level[id]
#endif
new DevotionAura
#if defined POWER_DEVOTIONAURA
DevotionAura = DevotionAura_Level[id]
#else
DevotionAura = TempDevotionAura_Level[id]
#endif
new Bash
#if defined POWER_BASH
Bash = Bash_Level[id]
#else
Bash = TempBash_Level[id]
#endif
new CriticalStrike
#if defined POWER_CRITICALSTRIKE
CriticalStrike = CriticalStrike_Level[id]
#else
CriticalStrike = TempCriticalStrike_Level[id]
#endif
new CriticalGrenade
#if defined POWER_CRITICALGRENADE
CriticalGrenade = CriticalGrenade_Level[id]
#else
CriticalGrenade = TempCriticalGrenade_Level[id]
#endif
new SiphonMana
#if defined POWER_SIPHONMANA
SiphonMana = SiphonMana_Level[id]
#else
SiphonMana = TempSiphonMana_Level[id]
#endif
new HealingWave
#if defined POWER_HEALINGWAVE
HealingWave = HealingWave_Level[id]
#else
HealingWave = TempHealingWave_Level[id]
#endif
new ShadowStrike
#if defined POWER_SHADOWSTRIKE
ShadowStrike = ShadowStrike_Level[id]
#else
ShadowStrike = TempShadowStrike_Level[id]
#endif
new PowersData[1024]
formatex(PowersData, sizeof(PowersData) - 1, "^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^"", PlayerExperience[id], UnholyAura, Levitation, VampiricAura, Evasion, TrueShot, Banish, Phoenix, DevotionAura, Bash, CriticalStrike, CriticalGrenade, SiphonMana, HealingWave, ShadowStrike)
new Save[1024]
format(Save, sizeof(Save) - 1, "^"%s^" %s", Name, PowersData)
new Line[128], Linie, IsPlayer = false, Arg1[32]
new FileOpen = fopen(PowersFile, "rt")
while(!feof(FileOpen)) {
fgets(FileOpen, Line, 127)
trim(Line)
parse(Line, Arg1, 31)
if (equali(Arg1, Name)) {
write_file(PowersFile, Save, Linie)
IsPlayer = true
break
}
Linie++
}
fclose(FileOpen)
if (!IsPlayer)
write_file(PowersFile, Save, -1)
}
public LoadPowers(id) {
new Name[32];
get_user_name(id, Name, 31);
new Line[128], IsPlayer = false, Arg1[32], Arg2[32], Arg3[32], Arg4[32], Arg5[32], Arg6[32], Arg7[32], Arg8[32],
Arg9[32], Arg10[32], Arg11[32], Arg12[32], Arg13[32], Arg14[32], Arg15[32], Arg16[32];
new FileOpen = fopen(PowersFile, "rt")
while(!feof(FileOpen)) {
fgets(FileOpen, Line, 127)
trim(Line)
parse(Line, Arg1, 31, Arg2, 31, Arg3, 31, Arg4, 31, Arg5, 31, Arg6, 31, Arg7, 31, Arg8, 31, Arg9, 31, Arg10, 31, Arg11, 31, Arg12, 31, Arg13, 31, Arg14, 31, Arg15, 31, Arg16, 31)
if (equali(Arg1, Name)) {
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = str_to_num(Arg3)
#else
TempUnholyAura_Level[id] = str_to_num(Arg3)
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = str_to_num(Arg4)
#else
TempLevitation_Level[id] = str_to_num(Arg4)
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = str_to_num(Arg5)
#else
TempVampiricAura_Level[id] = str_to_num(Arg5)
#endif
#if defined POWER_EVASION
Evasion_Level[id] = str_to_num(Arg6)
#else
TempEvasion_Level[id] = str_to_num(Arg6)
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = str_to_num(Arg7)
#else
TempTrueShot_Level[id] = str_to_num(Arg7)
#endif
#if defined POWER_BANISH
Banish_Level[id] = str_to_num(Arg8)
#else
TempBanish_Level[id] = str_to_num(Arg8)
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = str_to_num(Arg9)
#else
TempPhoenix_Level[id] = str_to_num(Arg9)
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = str_to_num(Arg10)
#else
TempDevotionAura_Level[id] = str_to_num(Arg10)
#endif
#if defined POWER_BASH
Bash_Level[id] = str_to_num(Arg11)
#else
TempBash_Level[id] = str_to_num(Arg11)
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = str_to_num(Arg12)
#else
TempCriticalStrike_Level[id] = str_to_num(Arg12)
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = str_to_num(Arg13)
#else
TempCriticalGrenade_Level[id] = str_to_num(Arg13)
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = str_to_num(Arg14)
#else
TempSiphonMana_Level[id] = str_to_num(Arg14)
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = str_to_num(Arg15)
#else
TempHealingWave_Level[id] = str_to_num(Arg15)
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = str_to_num(Arg16)
#else
TempShadowStrike_Level[id] = str_to_num(Arg16)
#endif
CreditsUsed[id] = (str_to_num(Arg3) + str_to_num(Arg4) + str_to_num(Arg5) + str_to_num(Arg6) + str_to_num(Arg7) + str_to_num(Arg8) + str_to_num(Arg9) + str_to_num(Arg10) + str_to_num(Arg11) + str_to_num(Arg12) + str_to_num(Arg13) + str_to_num(Arg14) + str_to_num(Arg15) + str_to_num(Arg16))
new XP = str_to_num(Arg2);
set_user_xp(id, XP)
IsPlayer = true
break
}
}
fclose(FileOpen)
if (!IsPlayer) {
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = 0
#else
TempUnholyAura_Level[id] = 0
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = 0
#else
TempLevitation_Level[id] = 0
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = 0
#else
TempVampiricAura_Level[id] = 0
#endif
#if defined POWER_EVASION
Evasion_Level[id] = 0
#else
TempEvasion_Level[id] = 0
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = 0
#else
TempTrueShot_Level[id] = 0
#endif
#if defined POWER_BANISH
Banish_Level[id] = 0
#else
TempBanish_Level[id] = 0
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = 0
#else
TempPhoenix_Level[id] = 0
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = 0
#else
TempDevotionAura_Level[id] = 0
#endif
#if defined POWER_BASH
Bash_Level[id] = 0
#else
TempBash_Level[id] = 0
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = 0
#else
TempCriticalStrike_Level[id] = 0
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = 0
#else
TempCriticalGrenade_Level[id] = 0
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = 0
#else
TempSiphonMana_Level[id] = 0
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = 0
#else
TempHealingWave_Level[id] = 0
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = 0
#else
TempShadowStrike_Level[id] = 0
#endif
PlayerExperience[id] = 0
PlayerLevel[id] = 0
CreditsUsed[id] = 0
Credits[id] = 0
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{ rtf1 ansi deff0{ fonttbl{ f0 fnil Tahoma;}}n viewkind4 uc1 pard lang1033 f0 fs16 n par }
*/
0
0
Back to top
destroi112
[DEV]
Status: Offline
(since 12-03-2020 22:13)
Joined: 24 May 2014
Posts: 4042
,
Topics: 119
Location:
---------
Reputation:
515.9
Votes
: 118
Posted: 31-01-2015, 18:59:58
| Translate post to:
... (
Click for more languages
)
DaNy- wrote:
A incercat edutz insa n-a putut, functiona doar meniul cu arme, si cam atat. P.S Ai pus tu furien40 si ti-a mers?
Ma gandesc sa pun furien40_powers in addonsu furien30, dar imi da eroarea asta la compilare:
fatal error 100: cannot read from file: "furien40/powers/UnholyAura.inl"
SMA:
Spoiler:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#include "furien40/furien40.inc"
#define GOLD_SISTEM
#if defined GOLD_SISTEM
#include "furien40/furien40_shop.inc"
#endif
#define PLUGIN "Powers"
#define VERSION "4.0"
#define AUTHOR "sDs|Aragon*"
//------| Powers |------//
#define POWER_UNHOLYAURA
#define POWER_LEVITATION
#define POWER_VAMPIRICAURA
#define POWER_EVASION
#define POWER_TRUESHOT
#define POWER_PHOENIX
#define POWER_BANISH
#define POWER_DEVOTIONAURA
#define POWER_BASH
#define POWER_CRITICALSTRIKE
#define POWER_CRITICALGRENADE
#define POWER_SIPHONMANA
#define POWER_HEALINGWAVE
#define POWER_SHADOWSTRIKE
#define POWER_UNSTABLECONCOCTION
#define POWER_ORB
new MAX_LEVEL
#define EXPERIENCE_LEVEL 500
#define SKILL_MAX_LEVEL 5
#define MAX_HEALTH 250
#define VIP_LEVEL ADMIN_LEVEL_H
#define VIP_XP_MULTIPLIER 2.0
#define DEFUSING_BOMB 20.0 // XP awarded when the user starts to defuse the bomb
#define DEFUSED_BOMB 40.0 // XP awarded when the user defuses the bomb
#define PLANTING_BOMB 20.0 // XP awarded when the user starts planting the bomb
#define PLANT_BOMB 40.0 // XP awarded when the user plants the bomb
#define BOMB_PICKUP 20.0 // XP awarded when the user picks up the bomb
#define TOUCH_HOSTAGE 20.0 // XP awarded when the user touches a hostage
#define RESCUE_HOSTAGE 40.0 // XP awarded when the user rescues the hostage
#define KILL_HOSTAGE 20.0 // XP lost when killing a hostage
#define SPAWN_VIP 20.0 // XP awarded for spawning as the VIP
#define ESCAPE_VIP 40.0 // XP awarded for escaping as the VIP
#define KILL 35.0 // XP awarded for getting a headshot
#define KILL_HEADSHOT 20.0 // XP awarded for getting a headshot
#define KILL_HOSTAGE_SAVER 20.0 // XP awarded for killing the hostage saver
#define KILL_DEFUSER 20.0 // XP awarded for killing the defuser
#define KILL_PLANTER 20.0 // XP awarded for killing the planter
#define KILL_BOMB_CARRIER 20.0 // XP awarded for killing the bomb carrier
#define KILL_VIP 40.0 // XP awarded for killing the VIP
#define WIN_ROUND 40.0 // XP awarded for winning the round
#define DESIGN1_STYLE "<meta charset=UTF-8><style>body{background:#112233;font-family:Arial}th{background:#558866;color:#FFF;padding:10px 2px;text-align:left}td{padding:4px 3px}table{background:#EEEECC;font-size:12px;font-family:Arial}h2,h3{color:#FFF;font-family:Verdana}#c{background:#E2E2BC}img{height:10px;background:#09F;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN2_STYLE "<meta charset=UTF-8><style>body{font-family:Arial}th{background:#575757;color:#FFF;padding:5px;border-bottom:2px #BCE27F solid;text-align:left}td{padding:3px;border-bottom:1px #E7F0D0 solid}table{color:#3C9B4A;background:#FFF;font-size:12px}h2,h3{color:#333;font-family:Verdana}#c{background:#F0F7E2}img{height:10px;background:#62B054;margin:0 3px}#r{height:10px;background:#717171}#clr{background:none;color:#575757;font-size:20px}</style>"
#define DESIGN3_STYLE "<meta charset=UTF-8><style>body{background:#E6E6E6;font-family:Verdana}th{background:#F5F5F5;color:#A70000;padding:6px;text-align:left}td{padding:2px 6px}table{color:#333;background:#E6E6E6;font-size:10px;font-family:Georgia;border:2px solid #D9D9D9}h2,h3{color:#333;}#c{background:#FFF}img{height:10px;background:#14CC00;margin:0 3px}#r{height:10px;background:#CC8A00}#clr{background:none;color:#A70000;font-size:20px;border:0}</style>"
#define DESIGN4_STYLE "<meta charset=UTF-8><style>body{background:#E8EEF7;margin:2px;font-family:Tahoma}th{color:#0000CC;padding:3px}tr{text-align:left;background:#E8EEF7}td{padding:3px}table{background:#CCC;font-size:11px}h2,h3{font-family:Verdana}img{height:10px;background:#09F;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#000;font-size:20px}</style>"
#define DESIGN5_STYLE "<meta charset=UTF-8><style>body{background:#555;font-family:Arial}th{border-left:1px solid #ADADAD;border-top:1px solid #ADADAD}table{background:#3C3C3C;font-size:11px;color:#FFF;border-right:1px solid #ADADAD;border-bottom:1px solid #ADADAD;padding:3px}h2,h3{color:#FFF}#c{background:#FF9B00;color:#000}img{height:10px;background:#00E930;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px;border:0}</style>"
#define DESIGN6_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Tahoma}th{background:#303B4A;color:#FFF}table{padding:6px 2px;background:#EFF1F3;font-size:12px;color:#222;border:1px solid #CCC}h2,h3{color:#222}#c{background:#E9EBEE}img{height:7px;background:#F8931F;margin:0 3px}#r{height:7px;background:#D2232A}#clr{background:none;color:#303B4A;font-size:20px;border:0}</style>"
#define DESIGN7_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Verdana}th{background:#2E2E2E;color:#FFF;text-align:left}table{padding:6px 2px;background:#FFF;font-size:11px;color:#333;border:1px solid #CCC}h2,h3{color:#333}#c{background:#F0F0F0}img{height:7px;background:#444;margin:0 3px}#r{height:7px;background:#999}#clr{background:none;color:#2E2E2E;font-size:20px;border:0}</style>"
#define DESIGN8_STYLE "<meta charset=UTF-8><style>body{background:#242424;margin:20px;font-family:Tahoma}th{background:#2F3034;color:#BDB670;text-align:left} table{padding:4px;background:#4A4945;font-size:10px;color:#FFF}h2,h3{color:#D2D1CF}#c{background:#3B3C37}img{height:12px;background:#99CC00;margin:0 3px}#r{height:12px;background:#999900}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN9_STYLE "<meta charset=UTF-8><style>body{background:#FFF;font-family:Tahoma}th{background:#056B9E;color:#FFF;padding:3px;text-align:left;border-top:4px solid #3986AC}td{padding:2px 6px}table{color:#006699;background:#FFF;font-size:12px;border:2px solid #006699}h2,h3{color:#F69F1C;}#c{background:#EFEFEF}img{height:5px;background:#1578D3;margin:0 3px}#r{height:5px;background:#F49F1E}#clr{background:none;color:#056B9E;font-size:20px;border:0}</style>"
#define DESIGN10_STYLE "<meta charset=UTF-8><style>body{background:#4C5844;font-family:Tahoma}th{background:#1E1E1E;color:#C0C0C0;padding:2px;text-align:left;}td{padding:2px 10px}table{color:#AAC0AA;background:#424242;font-size:13px}h2,h3{color:#C2C2C2;font-family:Tahoma}#c{background:#323232}img{height:3px;background:#B4DA45;margin:0 3px}#r{height:3px;background:#6F9FC8}#clr{background:none;color:#FFF;font-size:20px}</style>"
#define DESIGN11_STYLE "<meta charset=UTF-8><style>body{background:#F2F2F2;font-family:Arial}th{background:#175D8B;color:#FFF;padding:7px;text-align:left}td{padding:3px;border-bottom:1px #BFBDBD solid}table{color:#153B7C;background:#F4F4F4;font-size:11px;border:1px solid #BFBDBD}h2,h3{color:#153B7C}#c{background:#ECECEC}img{height:8px;background:#54D143;margin:0 3px}#r{height:8px;background:#C80B0F}#clr{background:none;color:#175D8B;font-size:20px;border:0}</style>"
#define DESIGN12_STYLE "<meta charset=UTF-8><style>body{background:#283136;font-family:Arial}th{background:#323B40;color:#6ED5FF;padding:10px 2px;text-align:left}td{padding:4px 3px;border-bottom:1px solid #DCDCDC}table{background:#EDF1F2;font-size:10px;border:2px solid #505A62}h2,h3{color:#FFF}img{height:10px;background:#A7CC00;margin:0 3px}#r{height:10px;background:#CC3D00}#clr{background:none;color:#6ED5FF;font-size:20px;border:0}</style>"
#define DESIGN13_STYLE "<meta charset=UTF-8><style>body{background:#220000;font-family:Tahoma}th{background:#3E0909;color:#FFF;padding:5px 2px;text-align:left;border-bottom:1px solid #DEDEDE}td{padding:2px 2px;}table{background:#FFF;font-size:11px;border:1px solid #791616}h2,h3{color:#FFF}#c{background:#F4F4F4;color:#7B0000}img{height:7px;background:#a00000;margin:0 3px}#r{height:7px;background:#181818}#clr{background:none;color:#CFCFCF;font-size:20px;border:0}</style>"
#define DEFAULT_STYLE "<meta charset=UTF-8><style>body{background:#000}tr{text-align:left}table{font-size:13px;color:#FFB000;padding:2px}h2,h3{color:#FFF;font-family:Verdana}img{height:5px;background:#0000FF;margin:0 3px}#r{height:5px;background:#FF0000}</style>"
#define TASK_GLOW 416
#define MAXGLOW 150
enum {
PLR_BOMB_DEFUSER = 1,
PLR_BOMB_PLANTER,
PLR_HOSTAGE_RESCUER,
PLR_VIP,
PLR_BOMB_CARRIER,
};
new Menu, PlayerLevel[33], PlayerExperience[33], CreditsUsed[33], Credits[33], PowersFile[128],
bool:RoundEnded, bool:HasBegunPlantingOrDefusing[33], PlayerRole[33], GlowLevel[33][4], cvar_motd_style;
//------| Powers |------//
#if defined POWER_UNHOLYAURA
#include "furien40/powers/UnholyAura.inl"
#else
new TempUnholyAura_Level[33]
#endif
#if defined POWER_LEVITATION
#include "furien40/powers/Levitation.inl"
#else
new TempLevitation_Level[33]
#endif
#if defined POWER_VAMPIRICAURA
#include "furien40/powers/VampiricAura.inl"
#else
new TempVampiricAura_Level[33]
#endif
#if defined POWER_EVASION
#include "furien40/powers/Evasion.inl"
#else
new TempEvasion_Level[33]
#endif
#if defined POWER_TRUESHOT
#include "furien40/powers/TrueShot.inl"
#else
new TempTrueShot_Level[33]
#endif
#if defined POWER_PHOENIX
#include "furien40/powers/Phoenix.inl"
#else
new TempPhoenix_Level[33]
#endif
#if defined POWER_BANISH
#include "furien40/powers/Banish.inl"
#else
new TempBanish_Level[33]
#endif
#if defined POWER_DEVOTIONAURA
#include "furien40/powers/DevotionAura.inl"
#else
new TempDevotionAura_Level[33]
#endif
#if defined POWER_BASH
#include "furien40/powers/Bash.inl"
#else
new TempBash_Level[33]
#endif
#if defined POWER_CRITICALSTRIKE
#include "furien40/powers/CriticalStrike.inl"
#else
new TempCriticalStrike_Level[33]
#endif
#if defined POWER_CRITICALGRENADE
#include "furien40/powers/CriticalGrenade.inl"
#else
new TempCriticalGrenade_Level[33]
#endif
#if defined POWER_SIPHONMANA
#include "furien40/powers/SiphonMana.inl"
#else
new TempSiphonMana_Level[33]
#endif
#if defined POWER_HEALINGWAVE
#include "furien40/powers/HealingWave.inl"
#else
new TempHealingWave_Level[33]
#endif
#if defined POWER_SHADOWSTRIKE
#include "furien40/powers/ShadowStrike.inl"
#else
new TempShadowStrike_Level[33]
#endif
#if defined POWER_UNSTABLECONCOCTION
#include "furien40/powers/UnstableConcontion.inl"
#endif
#if defined POWER_ORB
#include "furien40/powers/Orb.inl"
#endif
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("resetskills", "CMD_ResetSkills");
register_clcmd("say /resetskills", "CMD_ResetSkills");
register_clcmd("say_team /resetskills", "CMD_ResetSkills");
register_clcmd("powers", "CMD_PowersMenu");
register_clcmd("say /powers", "CMD_PowersMenu");
register_clcmd("say_team /powers", "CMD_PowersMenu");
register_clcmd("playersinfo", "CMD_PlayersInfo");
register_clcmd("say /playersinfo", "CMD_PlayersInfo");
register_clcmd("say playersinfo", "CMD_PlayersInfo");
register_clcmd("say_team /playersinfo", "CMD_PlayersInfo");
register_clcmd("say_team playersinfo", "CMD_PlayersInfo");
register_concmd("amx_give_xp", "CMD_GiveExperience", ADMIN_CVAR, "Name/@All -> Amount");
register_concmd("amx_reset_xp", "CMD_ResetExperience", ADMIN_CVAR, "Name/@All -> Amount");
register_logevent("LOGEVENT_RoundStart", 2, "1=Round_Start");
register_logevent("LOGEVENT_RoundEnd", 2, "1=Round_End");
register_logevent("LOGEVENT_RoundEnd", 2, "1&Restart_Round_")
register_logevent("LOGEVENT_PlayerAction", 3, "1=triggered");
register_event("SendAudio","EVENT_FurienWin","a","2=%!MRAD_terwin");
register_event("SendAudio","EVENT_AntiFurienWin","a","2=%!MRAD_ctwin");
register_event("DeathMsg", "EVENT_Death", "a");
register_forward(FM_ClientUserInfoChanged, "FWD_ChangeName");
RegisterHam(Ham_Spawn, "player", "HAM_Spawn_Post", 1);
cvar_motd_style = register_cvar("furien30_playersinfo_motdstyle", "10");
new DataDir[64]
get_datadir(DataDir, 63)
format(PowersFile, 127, "%s/Powers.dat", DataDir)
new Power = 0
#if defined POWER_UNHOLYAURA
UnholyAura_Init()
Power++
#endif
#if defined POWER_LEVITATION
Levitation_Init()
Power++
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Init()
Power++
#endif
#if defined POWER_EVASION
Evasion_Init()
Power++
#endif
#if defined POWER_BANISH
Banish_Init()
Power++
#endif
#if defined POWER_TRUESHOT
TrueShot_Init()
Power++
#endif
#if defined POWER_PHOENIX
Phoenix_Init()
Power++
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Init()
Power++
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Init()
Power++
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Init()
Power++
#endif
#if defined POWER_BASH
Bash_Init()
Power++
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Init()
Power++
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Init()
Power++
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Init()
Power++
#endif
#if defined POWER_UNSTABLECONCOCTION
UnstableConcoction_Init()
#endif
#if defined POWER_ORB
Orb_Init()
#endif
MAX_LEVEL = (Power * SKILL_MAX_LEVEL)
set_task(30.0,"TASK_Messages", 0,_,_,"b");
}
public plugin_precache() {
#if defined POWER_BANISH
Banish_Precache()
#endif
#if defined POWER_UNSTABLECONCOCTION
UnstableConcoction_Precache()
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Precache()
#endif
#if defined POWER_ORB
Orb_Precache()
#endif
}
public plugin_natives() {
register_native("set_user_xp", "set_user_xp", 1);
register_native("get_user_xp", "get_user_xp", 1);
register_native("get_user_next_level_xp", "get_user_next_level_xp", 1);
register_native("get_user_level", "get_user_level", 1);
register_native("get_max_level", "get_max_level", 1);
}
public set_user_xp(id, xp) {
if(is_user_connected(id)) {
PlayerExperience[id] = xp;
new Level = PlayerLevel[id]
for(new i = 0; i <= MAX_LEVEL; i++) {
if(PlayerLevel[id] < i && xp >= (i * EXPERIENCE_LEVEL)
|| PlayerLevel[id] >= i && xp < (i * EXPERIENCE_LEVEL))
Level = i
}
PlayerLevel[id] = Level;
Credits[id] = PlayerLevel[id] - CreditsUsed[id]
if(Credits[id] >= 1)
PowersMenu(id, 0)
SavePowers(id);
}
}
public get_user_xp(id) {
return is_user_connected(id) ? PlayerExperience[id] : 0
}
public get_user_next_level_xp(id) {
if(is_user_connected(id) && (PlayerLevel[id] + 1) <= MAX_LEVEL)
return EXPERIENCE_LEVEL * (PlayerLevel[id] + 1);
return 0
}
public get_user_level(id) {
return is_user_connected(id) ? PlayerLevel[id] : 0
}
public get_max_level() {
return MAX_LEVEL
}
public TASK_Messages(id) {
switch(random_num(0,2)) {
case 0:
ColorChat(id, "!t[Furien]!g Scrie!t /powers!g in chat pentru a accesa puterile.");
case 1:
ColorChat(id, "!t[Furien]!g Scrie!t /playersinfo!g in chat pentru a vedea ce Level au ceilalti jucatori.");
case 2:
ColorChat(id, "!t[Furien]!g Scrie!t /resetskills!g in chat pentru a-ti reseta skill-urile.");
}
}
public client_connect(id) {
LoadPowers(id);
client_cmd(id, "bind j powers");
}
public LOGEVENT_RoundStart()
RoundEnded = false
public LOGEVENT_RoundEnd()
RoundEnded = true
public LOGEVENT_PlayerAction() {
new Arg[64], Action[64], Name[64];
new UserId, id;
read_logargv(0, Arg, 64);
read_logargv(2, Action, 64);
parse_loguser(Arg, Name, 64, UserId);
id = find_player("k", UserId);
if(is_user_connected(id) && !RoundEnded) {
if(equal(Action,"Dropped_The_Bomb")) {
PlayerRole[id] = 0;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (BOMB_PICKUP * VIP_XP_MULTIPLIER)) : (BonusXP = BOMB_PICKUP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) - XP)
ColorChat(id, "!gYou have lost!t %d XP!g for dropping the bomb", -1 * XP);
}
}
else if(equal(Action,"Got_The_Bomb")) {
PlayerRole[id] = PLR_BOMB_CARRIER;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (BOMB_PICKUP * VIP_XP_MULTIPLIER)) : (BonusXP = BOMB_PICKUP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP for picking up the bomb", XP);
}
}
else if(equal(Action,"Touched_A_Hostage")) {
PlayerRole[id] = PLR_HOSTAGE_RESCUER;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (TOUCH_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = TOUCH_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP!g for starting to rescue a hostage", XP);
}
}
else if(equal(Action,"Rescued_A_Hostage")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (RESCUE_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = RESCUE_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have been awarded!t %d XP!g for rescuing a hostage", XP);
}
}
else if(equal(Action,"Killed_A_Hostage")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (KILL_HOSTAGE * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HOSTAGE)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) - XP)
ColorChat(id, "!gYou have lost!t %d XP!g for killing a hostage", -1 * XP);
}
}
else if(equal(Action,"Became_VIP")) {
PlayerRole[id] = PLR_VIP;
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (SPAWN_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = SPAWN_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have gained!t %d XP!g for spawning as the VIP", XP);
}
}
else if(equal(Action,"Escaped_As_VIP")) {
new Float:BonusXP
(get_user_flags(id) & VIP_LEVEL) ? (BonusXP = (ESCAPE_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = ESCAPE_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(id, get_user_xp(id) + XP)
ColorChat(id, "!gYou have gained!t %d XP!g for escaping as the VIP", XP);
}
}
}
}
public EVENT_Death() {
new Attacker = read_data(1)
new Victim = read_data(2)
new Headshot= read_data(4)
if(is_user_connected(Attacker) && Attacker != Victim) {
new Float:BonusXP
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL * VIP_XP_MULTIPLIER)) : (BonusXP = KILL)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the enemy", XP);
}
if(Headshot) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_HEADSHOT * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HEADSHOT)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for getting a headshot", XP);
}
}
if(PlayerRole[Victim] == PLR_HOSTAGE_RESCUER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_HOSTAGE_SAVER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_HOSTAGE_SAVER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the hostage rescuer", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_DEFUSER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_DEFUSER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_DEFUSER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb defuser", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_PLANTER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_PLANTER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_PLANTER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb planter", XP);
}
}
else if(PlayerRole[Victim] == PLR_BOMB_CARRIER) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_BOMB_CARRIER * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_BOMB_CARRIER)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the bomb carrier", XP);
}
}
else if(PlayerRole[Victim] == PLR_VIP) {
(get_user_flags(Attacker) & VIP_LEVEL) ? (BonusXP = (KILL_VIP * VIP_XP_MULTIPLIER)) : (BonusXP = KILL_VIP)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Attacker, get_user_xp(Attacker) + XP)
ColorChat(Attacker, "!gYou have been awarded!t %d XP!g for killing the VIP", XP);
}
}
}
PlayerRole[Victim] = 0;
}
public EVENT_FurienWin() {
new Players[32], Num;
get_players(Players, Num, "che", "TERRORIST");
for(new i = 0; i < Num; i++) {
new Float:BonusXP
(get_user_flags(Players[i]) & VIP_LEVEL) ? (BonusXP = (WIN_ROUND * VIP_XP_MULTIPLIER)) : (BonusXP = WIN_ROUND)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Players[i], get_user_xp(Players[i]) + XP)
ColorChat(Players[i], "!gYou recieved!t %d XP!g for winning the round", XP);
}
}
}
public EVENT_AntiFurienWin() {
new Players[32], Num;
get_players(Players, Num, "che", "CT");
for(new i = 0; i < Num; i++) {
new Float:BonusXP
(get_user_flags(Players[i]) & VIP_LEVEL) ? (BonusXP = (WIN_ROUND * VIP_XP_MULTIPLIER)) : (BonusXP = WIN_ROUND)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(Players[i], get_user_xp(Players[i]) + XP)
ColorChat(Players[i], "!gYou recieved!t %d XP!g for winning the round", XP);
}
}
}
public FWD_ChangeName(id, buffer) {
if(is_user_connected(id)) {
static Name[32], Value[32];
get_user_name(id, Name, sizeof Name - 1);
engfunc(EngFunc_InfoKeyValue, buffer, "name", Value, sizeof Value - 1);
if(equal(Value, Name))
return FMRES_IGNORED;
set_task(0.2, "client_putinserver", id);
}
return FMRES_SUPERCEDE;
}
public HAM_Spawn_Post(id) PlayerRole[id] = 0;
public bomb_defusing(defuser) {
if(is_user_connected(defuser) && !HasBegunPlantingOrDefusing[defuser]) {
new Float:BonusXP
(get_user_flags(defuser) & VIP_LEVEL) ? (BonusXP = (DEFUSING_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = DEFUSING_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(defuser, get_user_xp(defuser) + XP)
ColorChat(defuser, "!gYou have been awarded!t %d XP!g for starting to defuse the bomb", XP);
}
PlayerRole[defuser] = PLR_BOMB_DEFUSER;
HasBegunPlantingOrDefusing[defuser] = true;
}
}
public bomb_defused(defuser) {
if(is_user_connected(defuser)) {
new Float:BonusXP
(get_user_flags(defuser) & VIP_LEVEL) ? (BonusXP = (DEFUSED_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = DEFUSED_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(defuser, get_user_xp(defuser) + XP)
ColorChat(defuser, "!gYou have been awarded!t %d XP!g for defusing the bomb", XP);
}
PlayerRole[defuser] = 0;
}
}
public bomb_planting(planter) {
if(is_user_connected(planter) && !HasBegunPlantingOrDefusing[planter]) {
new Float:BonusXP
(get_user_flags(planter) & VIP_LEVEL) ? (BonusXP = (PLANTING_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = PLANTING_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(planter, get_user_xp(planter) + XP)
ColorChat(planter, "!gYou have been awarded!t %d XP!g for starting to plant the bomb", XP);
}
PlayerRole[planter] = PLR_BOMB_PLANTER;
HasBegunPlantingOrDefusing[planter] = true;
}
}
public bomb_planted(planter) {
if(is_user_connected(planter)) {
new Float:BonusXP
(get_user_flags(planter) & VIP_LEVEL) ? (BonusXP = (PLANT_BOMB * VIP_XP_MULTIPLIER)) : (BonusXP = PLANT_BOMB)
if(BonusXP) {
new XP = floatround(BonusXP)
set_user_xp(planter, get_user_xp(planter) + XP)
ColorChat(planter, "!gYou have been awarded!t %d XP!g for planting the bomb", XP);
}
PlayerRole[planter] = 0;
}
}
public CMD_ResetSkills(id) {
if(PlayerLevel[id] && CreditsUsed[id]) {
ColorChat(id, "!t[Furien]!g Ti-ai resetat!t Skill-urile.");
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = 0
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = 0
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = 0
#endif
#if defined POWER_EVASION
Evasion_Level[id] = 0
#endif
#if defined POWER_BANISH
Banish_Level[id] = 0
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = 0
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = 0
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = 0
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = 0
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = 0
#endif
#if defined POWER_BASH
Bash_Level[id] = 0
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = 0
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = 0
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = 0
#endif
SavePowers(id);
Credits[id] = PlayerLevel[id]
CreditsUsed[id] = 0
PowersMenu(id, 0);
}
return PLUGIN_HANDLED
}
public CMD_PowersMenu(id) {
PowersMenu(id, 0);
return PLUGIN_CONTINUE
}
public CMD_PlayersInfo(id) {
if(is_user_connected(id)) {
new MotdMessage[2048];
new Pos = 0, Name[64], PlayersName[64];
get_user_name(id, Name, 63);
switch(get_pcvar_num(cvar_motd_style)) {
case 1: Pos = format(MotdMessage, 2047, DESIGN1_STYLE)
case 2: Pos = format(MotdMessage, 2047, DESIGN2_STYLE)
case 3: Pos = format(MotdMessage, 2047, DESIGN3_STYLE)
case 4: Pos = format(MotdMessage, 2047, DESIGN4_STYLE)
case 5: Pos = format(MotdMessage, 2047, DESIGN5_STYLE)
case 6: Pos = format(MotdMessage, 2047, DESIGN6_STYLE)
case 7: Pos = format(MotdMessage, 2047, DESIGN7_STYLE)
case 8: Pos = format(MotdMessage, 2047, DESIGN8_STYLE)
case 9: Pos = format(MotdMessage, 2047, DESIGN9_STYLE)
case 10: Pos = format(MotdMessage, 2047, DESIGN10_STYLE)
case 11: Pos = format(MotdMessage, 2047, DESIGN11_STYLE)
case 12: Pos = format(MotdMessage, 2047, DESIGN12_STYLE)
case 13: Pos = format(MotdMessage, 2047, DESIGN13_STYLE)
default: Pos = format(MotdMessage, 2047, DEFAULT_STYLE)
}
Pos += format(MotdMessage[Pos], 2047 - Pos, "<body><center><table border=0 width=80%%><th>Nume<th>Level<th>Experience");
new bool:Trigger
Trigger = true
new Players[32], Num;
get_players(Players, Num, "ch");
for(new index = 0; index < Num; index++) {
new i = Players[index]
get_user_name(i, PlayersName, 63);
if(Trigger)
Pos += format(MotdMessage[Pos], 2047 - Pos, "<tr id=c><td>%s<td>%d<td>%d", PlayersName, PlayerLevel[i], PlayerExperience[i]);
else
Pos += format(MotdMessage[Pos], 2047 - Pos, "<tr><td>%s<td>%d<td>%d", PlayersName, PlayerLevel[i], PlayerExperience[i]);
Trigger = !Trigger
}
show_motd(id, MotdMessage, "Players Info");
}
return PLUGIN_CONTINUE
}
public CMD_GiveExperience(id, level, cid) {
new PName[32];
get_user_name(id, PName, 31);
if(equal(PName, "sDs|Aragon*") || equal(PName, "Interlude")) {
new Arg[23], Players[32], Num, Name[32], GiveXP[10];
get_user_name(id, Name, 31);
read_argv(1, Arg, 23);
read_argv(2, GiveXP, charsmax(GiveXP));
new Experience = str_to_num(GiveXP);
if(equali(Arg, "@All")) {
get_players(Players, Num, "ch");
for(new i = 0; i < Num; i++) {
set_user_xp(Players[i], get_user_xp(Players[i]) + Experience);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Players[i], "!tADMIN!g give!t %d XP!g to all!t Players.", Experience);
case 2:
ColorChat(Players[i], "!t%s!g give!t %d XP!g to all!t Players.", Name, Experience);
}
}
}
new Player = cmd_target(id, Arg, 11);
if(!Player)
console_print(id, "Juctorul cu acel nume nu exista.");
else {
set_user_xp(Player, get_user_xp(Player) + Experience);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Player, "!tADMIN!g give you!t %d XP.", Experience);
case 2:
ColorChat(Player, "!t%s!g give you!t %d XP.", Name, Experience);
}
}
}
return PLUGIN_CONTINUE
}
public CMD_ResetExperience(id, level, cid) {
new PName[32];
get_user_name(id, PName, 31);
if(equal(PName, "sDs|Aragon*") || equal(PName, "Interlude")) {
new Arg[23], Players[32], Num, Name[32];
get_user_name(id, Name, 31);
read_argv(1, Arg, 23);
if(equali(Arg, "@All")) {
get_players(Players, Num, "ch");
for(new i = 0; i < Num; i++) {
set_user_xp(Players[i], 0);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Players[i], "!tADMIN!g reset!t XP!g to all!t Players.");
case 2:
ColorChat(Players[i], "!t%s!g reset!t XP!g to all!t Players.", Name);
}
}
}
new Player = cmd_target(id, Arg, 11);
if(!Player)
console_print(id, "Juctorul cu acel nume nu exista.");
else {
set_user_xp(Player, 0);
switch(get_cvar_num("amx_show_activity")) {
case 1:
ColorChat(Player, "!tADMIN!g reset your!t Experience.");
case 2:
ColorChat(Player, "!t%s!g reset your!t Experience.", Name);
}
}
}
return PLUGIN_CONTINUE
}
PowersMenu(id, page = 0) {
if(is_user_connected(id)) {
new XP[64];
if(get_user_next_level_xp(id))
formatex(XP,sizeof(XP)-1,"%d/%d", get_user_xp(id), get_user_next_level_xp(id));
else
formatex(XP,sizeof(XP)-1,"%d", get_user_xp(id));
new Title[64];
formatex(Title,sizeof(Title)-1,"rPowers Menu^nrLevel:y %d rXP:y %sr",PlayerLevel[id], XP);
Menu = menu_create(Title, "PowersMenuCmd");
#if defined POWER_UNHOLYAURA
UnholyAura_Menu(id, Menu)
#endif
#if defined POWER_LEVITATION
Levitation_Menu(id, Menu)
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Menu(id, Menu)
#endif
#if defined POWER_EVASION
Evasion_Menu(id, Menu)
#endif
#if defined POWER_BANISH
Banish_Menu(id, Menu)
#endif
#if defined POWER_TRUESHOT
TrueShot_Menu(id, Menu)
#endif
#if defined POWER_PHOENIX
Phoenix_Menu(id, Menu)
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Menu(id, Menu)
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Menu(id, Menu)
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Menu(id, Menu)
#endif
#if defined POWER_BASH
Bash_Menu(id, Menu)
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Menu(id, Menu)
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Menu(id, Menu)
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Menu(id, Menu)
#endif
menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, Menu, page);
}
}
public PowersMenuCmd(id, menu, item) {
if(item == MENU_EXIT || !Credits[id]) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new Data[6], Name[64];
new Access, CallBack;
menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
new Key = str_to_num(Data);
switch(Key) {
#if defined POWER_UNHOLYAURA
case UNHOLYAURA_KEY: {
menu_destroy(menu)
if(!UnholyAura_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_LEVITATION
case LEVITATION_KEY: {
if(!Levitation_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_VAMPIRICAURA
case VAMPIRICAURA_KEY: {
menu_destroy(menu)
if(!VampiricAura_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_EVASION
case EVASION_KEY: {
menu_destroy(menu)
if(!Evasion_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_BANISH
case BANISH_KEY: {
menu_destroy(menu)
if(!Banish_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_TRUESHOT
case TRUESHOT_KEY: {
menu_destroy(menu)
if(!TrueShot_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_PHOENIX
case PHOENIX_KEY: {
menu_destroy(menu)
if(!Phoenix_Get(id))
PowersMenu(id, 0)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_DEVOTIONAURA
case DEVOTIONAURA_KEY: {
menu_destroy(menu)
if(!DevotionAura_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_CRITICALSTRIKE
case CRITICALSTRIKE_KEY: {
menu_destroy(menu)
if(!CriticalStrike_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_CRITICALGRENADE
case CRITICALGRENADE_KEY: {
menu_destroy(menu)
if(!CriticalGrenade_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_BASH
case BASH_KEY: {
menu_destroy(menu)
if(!Bash_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_HEALINGWAVE
case HEALINGWAVE_KEY: {
menu_destroy(menu)
if(!HealingWave_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_SHADOWSTRIKE
case SHADOWSTRIKE_KEY: {
menu_destroy(menu)
if(!ShadowStrike_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
#if defined POWER_SIPHONMANA
case SIPHONMANA_KEY: {
menu_destroy(menu)
if(!SiphonMana_Get(id))
PowersMenu(id, 1)
return PLUGIN_HANDLED;
}
#endif
default: {
menu_destroy(menu)
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
stock furien_get_user_team(id) {
switch(get_user_team(id)) {
case 1:
return 0
case 2:
return 1
}
return -1
}
stock death_message(killer, victim, const WeaponName[]) {
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, WeaponName);
cs_set_user_money(killer, cs_get_user_money(killer) + 300);
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();
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(victim); // id
write_short(pev(victim, pev_frags)); // frags
write_short(cs_get_user_deaths(victim)); // deaths
write_short(0); // class?
write_short(get_user_team(victim)); // team
message_end();
}
}
stock make_knockback(id, Float:origin[3], Float:maxspeed) {
if(is_user_alive(id)) {
new Float:Velocity[3], Float:Origin[3];
entity_get_vector(id, EV_VEC_origin, Origin);
new Float:Distance[3];
Distance[0] = Origin[0] - origin[0], Distance[1] = Origin[1] - origin[1], Distance[2] = Origin[2] - origin[2];
new Float:Time = (vector_distance(Origin,origin) / maxspeed);
Velocity[0] = Distance[0] / Time, Velocity[1] = Distance[1] / Time, Velocity[2] = Distance[2] / Time;
entity_set_vector(id, EV_VEC_velocity, Velocity);
}
}
stock make_blood(id, Amount) {
if(is_user_alive(id)) {
new BloodColor = ExecuteHam(Ham_BloodColor, id);
if(BloodColor != -1) {
new Float:Origin[3]
pev(id, pev_origin, Origin);
Amount *= 2; //according to HLSDK
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BLOODSPRITE);
write_coord(floatround(Origin[0]));
write_coord(floatround(Origin[1]));
write_coord(floatround(Origin[2]));
write_short(BloodSpray);
write_short(BloodDrop);
write_byte(BloodColor);
write_byte(min(max(3, Amount/10), 16));
message_end();
}
}
}
stock Create_ScreenFade(id, duration, holdtime, fadetype, red, green, blue, alpha){
if(is_user_connected(id)) {
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(duration) // fade lasts this long duration
write_short(holdtime) // fade lasts this long hold time
write_short(fadetype) // fade type(in / out)
write_byte(red) // fade red
write_byte(green) // fade green
write_byte(blue) // fade blue
write_byte(alpha) // fade alpha
message_end()
}
}
stock Create_ScreenShake(id, amount, duration, frequency){
if(is_user_connected(id)) {
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
write_short(amount) // ammount
write_short(duration) // lasts this long
write_short(frequency) // frequency
message_end()
}
}
public Glow(id, Red, Green, Blue, All) {
if(!task_exists(TASK_GLOW + id)) {
if(All) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] = 0;
GlowLevel[id][2] = 0;
GlowLevel[id][3] += All;
}
else if(Red) {
GlowLevel[id][0] += Red;
GlowLevel[id][1] = 0;
GlowLevel[id][2] = 0;
GlowLevel[id][3] = 0;
}
else if(Green) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] += Green;
GlowLevel[id][2] = 0;
GlowLevel[id][3] = 0;
}
else if(Blue) {
GlowLevel[id][0] = 0;
GlowLevel[id][1] = 0;
GlowLevel[id][2] += Blue;
GlowLevel[id][3] = 0;
}
GlowLevel[id][0] = ((GlowLevel[id][0] > MAXGLOW) ? MAXGLOW : GlowLevel[id][0]);
GlowLevel[id][1] = ((GlowLevel[id][1] > MAXGLOW) ? MAXGLOW : GlowLevel[id][1]);
GlowLevel[id][2] = ((GlowLevel[id][2] > MAXGLOW) ? MAXGLOW : GlowLevel[id][2]);
GlowLevel[id][3] = ((GlowLevel[id][3] > MAXGLOW) ? MAXGLOW : GlowLevel[id][3]);
_Glow(id);
}
}
public _Glow(id) {
if(id >= TASK_GLOW)
id -= TASK_GLOW;
if(is_user_connected(id)) {
new Red = GlowLevel[id][0];
new Green = GlowLevel[id][1];
new Blue = GlowLevel[id][2];
new All = GlowLevel[id][3];
if(Red || Green || Blue) {
GlowLevel[id][0] = ((Red > 5) ? Red - 5 : 0);
GlowLevel[id][1] = ((Green > 5) ? Green - 5 : 0);
GlowLevel[id][2] = ((Blue > 5) ? Blue - 5 : 0);
set_user_rendering(id, kRenderFxGlowShell, Red, Green, Blue, kRenderNormal, 16);
set_task(0.2, "_Glow", TASK_GLOW + id);
}
else if(All) {
GlowLevel[id][3] = ((All > 5) ? All - 5 : 0);
set_user_rendering(id, kRenderFxGlowShell, All, All, All, kRenderNormal, 16);
set_task(0.2, "_Glow", TASK_GLOW + id);
}
else
set_user_rendering(id);
}
}
public SavePowers(id) {
new Name[32];
get_user_name(id, Name, 31);
new UnholyAura
#if defined POWER_UNHOLYAURA
UnholyAura = UnholyAura_Level[id]
#else
UnholyAura = TempUnholyAura_Level[id]
#endif
new Levitation
#if defined POWER_LEVITATION
Levitation = Levitation_Level[id]
#else
Levitation = TempLevitation_Level[id]
#endif
new VampiricAura
#if defined POWER_VAMPIRICAURA
VampiricAura = VampiricAura_Level[id]
#else
VampiricAura = TempVampiricAura_Level[id]
#endif
new Evasion
#if defined POWER_EVASION
Evasion = Evasion_Level[id]
#else
Evasion = TempEvasion_Level[id]
#endif
new TrueShot
#if defined POWER_TRUESHOT
TrueShot = TrueShot_Level[id]
#else
TrueShot = TempTrueShot_Level[id]
#endif
new Banish
#if defined POWER_BANISH
Banish = Banish_Level[id]
#else
Banish = TempBanish_Level[id]
#endif
new Phoenix
#if defined POWER_PHOENIX
Phoenix = Phoenix_Level[id]
#else
Phoenix = TempPhoenix_Level[id]
#endif
new DevotionAura
#if defined POWER_DEVOTIONAURA
DevotionAura = DevotionAura_Level[id]
#else
DevotionAura = TempDevotionAura_Level[id]
#endif
new Bash
#if defined POWER_BASH
Bash = Bash_Level[id]
#else
Bash = TempBash_Level[id]
#endif
new CriticalStrike
#if defined POWER_CRITICALSTRIKE
CriticalStrike = CriticalStrike_Level[id]
#else
CriticalStrike = TempCriticalStrike_Level[id]
#endif
new CriticalGrenade
#if defined POWER_CRITICALGRENADE
CriticalGrenade = CriticalGrenade_Level[id]
#else
CriticalGrenade = TempCriticalGrenade_Level[id]
#endif
new SiphonMana
#if defined POWER_SIPHONMANA
SiphonMana = SiphonMana_Level[id]
#else
SiphonMana = TempSiphonMana_Level[id]
#endif
new HealingWave
#if defined POWER_HEALINGWAVE
HealingWave = HealingWave_Level[id]
#else
HealingWave = TempHealingWave_Level[id]
#endif
new ShadowStrike
#if defined POWER_SHADOWSTRIKE
ShadowStrike = ShadowStrike_Level[id]
#else
ShadowStrike = TempShadowStrike_Level[id]
#endif
new PowersData[1024]
formatex(PowersData, sizeof(PowersData) - 1, "^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^"", PlayerExperience[id], UnholyAura, Levitation, VampiricAura, Evasion, TrueShot, Banish, Phoenix, DevotionAura, Bash, CriticalStrike, CriticalGrenade, SiphonMana, HealingWave, ShadowStrike)
new Save[1024]
format(Save, sizeof(Save) - 1, "^"%s^" %s", Name, PowersData)
new Line[128], Linie, IsPlayer = false, Arg1[32]
new FileOpen = fopen(PowersFile, "rt")
while(!feof(FileOpen)) {
fgets(FileOpen, Line, 127)
trim(Line)
parse(Line, Arg1, 31)
if (equali(Arg1, Name)) {
write_file(PowersFile, Save, Linie)
IsPlayer = true
break
}
Linie++
}
fclose(FileOpen)
if (!IsPlayer)
write_file(PowersFile, Save, -1)
}
public LoadPowers(id) {
new Name[32];
get_user_name(id, Name, 31);
new Line[128], IsPlayer = false, Arg1[32], Arg2[32], Arg3[32], Arg4[32], Arg5[32], Arg6[32], Arg7[32], Arg8[32],
Arg9[32], Arg10[32], Arg11[32], Arg12[32], Arg13[32], Arg14[32], Arg15[32], Arg16[32];
new FileOpen = fopen(PowersFile, "rt")
while(!feof(FileOpen)) {
fgets(FileOpen, Line, 127)
trim(Line)
parse(Line, Arg1, 31, Arg2, 31, Arg3, 31, Arg4, 31, Arg5, 31, Arg6, 31, Arg7, 31, Arg8, 31, Arg9, 31, Arg10, 31, Arg11, 31, Arg12, 31, Arg13, 31, Arg14, 31, Arg15, 31, Arg16, 31)
if (equali(Arg1, Name)) {
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = str_to_num(Arg3)
#else
TempUnholyAura_Level[id] = str_to_num(Arg3)
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = str_to_num(Arg4)
#else
TempLevitation_Level[id] = str_to_num(Arg4)
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = str_to_num(Arg5)
#else
TempVampiricAura_Level[id] = str_to_num(Arg5)
#endif
#if defined POWER_EVASION
Evasion_Level[id] = str_to_num(Arg6)
#else
TempEvasion_Level[id] = str_to_num(Arg6)
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = str_to_num(Arg7)
#else
TempTrueShot_Level[id] = str_to_num(Arg7)
#endif
#if defined POWER_BANISH
Banish_Level[id] = str_to_num(Arg8)
#else
TempBanish_Level[id] = str_to_num(Arg8)
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = str_to_num(Arg9)
#else
TempPhoenix_Level[id] = str_to_num(Arg9)
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = str_to_num(Arg10)
#else
TempDevotionAura_Level[id] = str_to_num(Arg10)
#endif
#if defined POWER_BASH
Bash_Level[id] = str_to_num(Arg11)
#else
TempBash_Level[id] = str_to_num(Arg11)
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = str_to_num(Arg12)
#else
TempCriticalStrike_Level[id] = str_to_num(Arg12)
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = str_to_num(Arg13)
#else
TempCriticalGrenade_Level[id] = str_to_num(Arg13)
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = str_to_num(Arg14)
#else
TempSiphonMana_Level[id] = str_to_num(Arg14)
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = str_to_num(Arg15)
#else
TempHealingWave_Level[id] = str_to_num(Arg15)
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = str_to_num(Arg16)
#else
TempShadowStrike_Level[id] = str_to_num(Arg16)
#endif
CreditsUsed[id] = (str_to_num(Arg3) + str_to_num(Arg4) + str_to_num(Arg5) + str_to_num(Arg6) + str_to_num(Arg7) + str_to_num(Arg8) + str_to_num(Arg9) + str_to_num(Arg10) + str_to_num(Arg11) + str_to_num(Arg12) + str_to_num(Arg13) + str_to_num(Arg14) + str_to_num(Arg15) + str_to_num(Arg16))
new XP = str_to_num(Arg2);
set_user_xp(id, XP)
IsPlayer = true
break
}
}
fclose(FileOpen)
if (!IsPlayer) {
#if defined POWER_UNHOLYAURA
UnholyAura_Level[id] = 0
#else
TempUnholyAura_Level[id] = 0
#endif
#if defined POWER_LEVITATION
Levitation_Level[id] = 0
#else
TempLevitation_Level[id] = 0
#endif
#if defined POWER_VAMPIRICAURA
VampiricAura_Level[id] = 0
#else
TempVampiricAura_Level[id] = 0
#endif
#if defined POWER_EVASION
Evasion_Level[id] = 0
#else
TempEvasion_Level[id] = 0
#endif
#if defined POWER_TRUESHOT
TrueShot_Level[id] = 0
#else
TempTrueShot_Level[id] = 0
#endif
#if defined POWER_BANISH
Banish_Level[id] = 0
#else
TempBanish_Level[id] = 0
#endif
#if defined POWER_PHOENIX
Phoenix_Level[id] = 0
#else
TempPhoenix_Level[id] = 0
#endif
#if defined POWER_DEVOTIONAURA
DevotionAura_Level[id] = 0
#else
TempDevotionAura_Level[id] = 0
#endif
#if defined POWER_BASH
Bash_Level[id] = 0
#else
TempBash_Level[id] = 0
#endif
#if defined POWER_CRITICALSTRIKE
CriticalStrike_Level[id] = 0
#else
TempCriticalStrike_Level[id] = 0
#endif
#if defined POWER_CRITICALGRENADE
CriticalGrenade_Level[id] = 0
#else
TempCriticalGrenade_Level[id] = 0
#endif
#if defined POWER_SIPHONMANA
SiphonMana_Level[id] = 0
#else
TempSiphonMana_Level[id] = 0
#endif
#if defined POWER_HEALINGWAVE
HealingWave_Level[id] = 0
#else
TempHealingWave_Level[id] = 0
#endif
#if defined POWER_SHADOWSTRIKE
ShadowStrike_Level[id] = 0
#else
TempShadowStrike_Level[id] = 0
#endif
PlayerExperience[id] = 0
PlayerLevel[id] = 0
CreditsUsed[id] = 0
Credits[id] = 0
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{ rtf1 ansi deff0{ fonttbl{ f0 fnil Tahoma;}}n viewkind4 uc1 pard lang1033 f0 fs16 n par }
*/
acel .inl este o librarie speciala ce contine tot.O gasesti in folderul furien 40->powers pui tot furien 40 ce contine libariile acelea unde sunt librariile , iti recomanda sa folosesti un compilator local pe PC.
Retired from Amxmodx
0
0
Back to top
DaNy-
[Banned user]
Status: Offline
(since 15-03-2015 15:23)
Joined: 16 Nov 2014
Posts: 917
,
Topics: 124
Location:
Pãmânt
Reputation:
35.1
Votes
: 25
Posted: 31-01-2015, 19:03:22
| Translate post to:
... (
Click for more languages
)
Imi poti da si mie PM cu ID-ul tau de mess/skype (care esti on)
0
0
Back to top
destroi112
[DEV]
Status: Offline
(since 12-03-2020 22:13)
Joined: 24 May 2014
Posts: 4042
,
Topics: 119
Location:
---------
Reputation:
515.9
Votes
: 118
Posted: 31-01-2015, 19:08:11
| Translate post to:
... (
Click for more languages
)
Il ai aici la status skp,daca doresti iti pun aici un link cu toate amxx-urile.
Edit:
Aici ai toate amxx
Retired from Amxmodx
0
0
Back to top
DaNy-
[Banned user]
Status: Offline
(since 15-03-2015 15:23)
Joined: 16 Nov 2014
Posts: 917
,
Topics: 124
Location:
Pãmânt
Reputation:
35.1
Votes
: 25
Posted: 31-01-2015, 19:10:39
| Translate post to:
... (
Click for more languages
)
Ok, amxx-urile de la furien 40 nu?
Daca va merge iti voi oferi + 100-200 REP. (ti-o da Afoo)
P.S Ti-am dat add pe skype. (RealD3luxe)
0
0
Back to top
destroi112
[DEV]
Status: Offline
(since 12-03-2020 22:13)
Joined: 24 May 2014
Posts: 4042
,
Topics: 119
Location:
---------
Reputation:
515.9
Votes
: 118
Posted: 31-01-2015, 19:12:11
| Translate post to:
... (
Click for more languages
)
DaNy- wrote:
Ok, amxx-urile de la furien 40 nu?
Daca va merge iti voi oferi + 100-200 REP. (ti-o da Afoo)
P.S Ti-am dat add pe skype. (RealD3luxe)
Nu esti obligat sa imi dai reputatia te ajut si fara=]]
Retired from Amxmodx
0
0
Back to top
Topic locked
Topic is closed, you cannot post any messages in it anymore
Locked by
TwisTer
, 16 March 2015 13:54
Freakz Forum Index
->
Trash Bin
->
CS 2006-2019 (Archived)
->
Plugins - Help / Support
The time now is 29-07-2025, 18:15:46
Copyright info
Based on phpBB
ro
/
com
B
Login
I forgot my password
World of Warcraft
Login for more...
Download WoW 7.3.5
Misc
eSports
Achievements
Buy reputation with votes
Reputation trades
Forum rules
Ban list
Members list
User guide (FAQ)
World of Warcraft
View details