- | Afiseaza codul
/* Plugin generated by AMXX-Studio ##### # # _ _ _ _ # # #### ##### ## ## _ | | | | _| || |_ # # # # # # # #(_) | |__ __ _ __| | ___ ___ |_ __ _| _____ ___ __ __ _ __ _ ___ # #### # # # # # | '_ \ / _` |/ _` |/ _ \/ __| _| || |_ / _ \ \ /\ / / '_ \ / _` |/ _` |/ _ \ # # # # # # _ | | | | (_| | (_| | __/\__ \ |_ __ _| | (_) \ V V /| | | | (_| | (_| | __/ # # # # # # # #(_) |_| |_|\__,_|\__,_|\___||___/ |_||_| \___/ \_/\_/ |_| |_|\__,_|\__, |\___| ##### #### ##### # # __/ | |___/ */ #include /* __ ______ */< amxmodx > #include /* / / / / / /____________ */< amxmisc > #include /* / / / / / __/ ___/ __ / */< cstrike > #include /* / /_/ / / /_/ / / /_/ / */< colorchat > #include /* \____/_/\__/_/ \__,_/ */< xs > #include /* -- !! LEVEL M00D !! -- */< engine > #include < hamsandwich > #include < fakemeta_util > #define PLUGIN "CSDM: Ultra Level Mod" #define VERSION "0.Ox" #define AUTHOR "Hades Ownage" #define VIP_LEVEL ADMIN_LEVEL_H #define MAX_LEVELS 56 #define szPrefix "!g[CSDM Ultra]!t -" #define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers ) #define SELECT_ULTIMATE #define UPGRADE_SPAWNHEALTH #define UPGRADE_SPAWNARMOR #define UPGRADE_SPAWNSPEED #define UPGRADE_SPAWNGRAVITY #define UPGRADE_KILLBONUS #define UPGRADE_DAMAGEMULTIPLIER #define UPGRADE_CRITICALHIT #define UPGRADE_SHIELD #define UPGRADE_DEADLYSHOT #define UPGRADE_STUNNING #define UPGRADE_REGENERATION #define UPGRADELVL_SOUND #define ULTIMATE_KILLSTREAK #define AIM_MESSAGE #define DONATE_GOLD #define VIP_MULTIJUMP //#define NADE_DROPS #define TEAM_SEMICLIP #define LEVEL_ON_CHAT #define LEVELUP_SOUND "csdm_ultra/levelup.wav" #define GOLDCOIN_SOUND "csdm_ultra/gold_coin.wav" #define NECKLACE_SOUND "csdm_ultra/necklace.wav" #if defined UPGRADELVL_SOUND #define UPGRADELVL_SOUND1 "csdm_ultra/level_upgrade1.wav" #define UPGRADELVL_SOUND2 "csdm_ultra/level_upgrade2.wav" #define UPGRADELVL_SOUND3 "csdm_ultra/level_upgrade3.wav" #endif native csdm_shop_get_user_necklace ( id ); enum _: UserStats { Xp, Level, Gold, UpgradePoints } enum _: UpgradeItems { #if defined UPGRADE_SPAWNHEALTH SpawnHealth, #else TempSpawnHealth, #endif #if defined UPGRADE_SPAWNARMOR SpawnArmor, #else TempSpawnArmor, #endif #if defined UPGRADE_SPAWNSPEED SpawnSpeed, #else TempSpawnSpeed, #endif #if defined UPGRADE_SPAWNGRAVITY SpawnGravity, #else TempSpawnGravity, #endif #if defined UPGRADE_KILLBONUS KillBonus, #else TempKillBonus, #endif #if defined UPGRADE_DAMAGEMULTIPLIER DamageMultiplier, #else TempDamageMultiplier, #endif #if defined UPGRADE_CRITICALHIT CriticalHit, #else TempCriticalHit, #endif #if defined UPGRADE_SHIELD Shield, #else TempShield, #endif #if defined UPGRADE_DEADLYSHOT DeadlyShot, #else TempDeadlyShot, #endif #if defined UPGRADE_STUNNING Stunning, #else TempStunning, #endif #if defined UPGRADE_REGENERATION Regeneration #else TempRegeneration, #endif } #if defined UPGRADE_SPAWNHEALTH new const SpawnHealth_ [ ] = { /*++*/ 0, /* health */ /*++*/ 15, /* health */ /*++*/ 25, /* health */ /*++*/ 35, /* health */ /*++*/ 45, /* health */ /*++*/ 65 /* health */ } #endif #if defined UPGRADE_SPAWNARMOR new const SpawnArmor_ [ ] = { /*++*/ 0, /* armor */ /*++*/ 25, /* armor */ /*++*/ 35, /* armor */ /*++*/ 45, /* armor */ /*++*/ 75, /* armor */ /*++*/ 95 /* armor */ } #endif #if defined UPGRADE_SPAWNSPEED new const SpawnSpeed_ [ ] = { /*++*/ 0, /* speed */ /*++*/ 15, /* speed */ /*++*/ 25, /* speed */ /*++*/ 40, /* speed */ /*++*/ 60, /* speed */ /*++*/ 80 /* speed */ } #endif #if defined UPGRADE_SPAWNGRAVITY new const SpawnGravity_ [ ] = { /*FIX*/ 800, /* gravity */ /*FIX*/ 770, /* gravity */ /*FIX*/ 745, /* gravity */ /*FIX*/ 720, /* gravity */ /*FIX*/ 700, /* gravity */ /*FIX*/ 680 /* gravity */ } #endif #if defined UPGRADE_KILLBONUS new const KillBonus_ [ ] = { /*++*/ 0, /* hp */ /*++*/ 3, /* hp */ /*++*/ 6, /* hp */ /*++*/ 10, /* hp */ /*++*/ 15, /* hp */ /*++*/ 20 /* hp */ } new KillBonusSync; #endif #if defined UPGRADE_DAMAGEMULTIPLIER new const DamageMultiplier_ [ ] = { /*++*/ 0, /* damage */ /*++*/ 15, /* damage */ /*++*/ 30, /* damage */ /*++*/ 40, /* damage */ /*++*/ 45, /* damage */ /*++*/ 50 /* damage */ } #endif #if defined UPGRADE_CRITICALHIT new const CriticalHit_ [ ] = { /*FIX*/ 0, /* critical chance */ /*FIX*/ 4, /* critical chance */ /*FIX*/ 6, /* critical chance */ /*FIX*/ 10, /* critical chance */ /*FIX*/ 13, /* critical chance */ /*FIX*/ 17 /* critical chance */ } #define CRITICALHIT_TIME 0.8 new const CriticalHit_Sound [ ] = "csdm_ultra/criticalhit.wav"; new CriticalHitOn [ 33 ], CriticalHit_Message [ 33 ], CRITICALHIT_SPR_WAVE; #endif #if defined UPGRADE_SHIELD new const Shield_ [ ] = { /*FIX*/ 0, /* shield chance */ /*FIX*/ 4, /* shield chance */ /*FIX*/ 6, /* shield chance */ /*FIX*/ 10, /* shield chance */ /*FIX*/ 13, /* shield chance */ /*FIX*/ 17 /* shield chance */ } new const Shield_Sound [ ] = "csdm_ultra/shield.wav"; new Shield_Message [ 33 ]; #endif #if defined UPGRADE_DEADLYSHOT new const DeadlyShot_ [ ] = { /*FIX*/ 0, /* deadly chance */ /*FIX*/ 4, /* deadly chance */ /*FIX*/ 6, /* deadly chance */ /*FIX*/ 10, /* deadly chance */ /*FIX*/ 13, /* deadly chance */ /*FIX*/ 17 /* deadly chance */ } #define DEADLY_FADE_TIME 1.0 new const DeadlyShot_Sound [ ] = "csdm_ultra/deadlyshot.wav"; new DEADLYSHOT_SPR, DeadlyShot_Message [ 33 ]; #endif #if defined UPGRADE_STUNNING new const Stunning_ [ ] = { /*FIX*/ 0, /* stunning chance */ /*FIX*/ 4, /* stunning chance */ /*FIX*/ 6, /* stunning chance */ /*FIX*/ 10, /* stunning chance */ /*FIX*/ 13, /* stunning chance */ /*FIX*/ 17 /* stunning chance */ } #define STUNNING_TIME 2.0 new IsStunned [ 33 ]; new const Stunning_Sound [ ] = "csdm_ultra/stunning.wav"; new STUNNING_SPR_BEAM, Stunning_Message [ 33 ]; #endif #if defined UPGRADE_REGENERATION new const Regeneration_ [ ] = { /*++*/ 0, /* hp regen */ /*++*/ 1, /* hp regen */ /*++*/ 2, /* hp regen */ /*++*/ 3, /* hp regen */ /*++*/ 4, /* hp regen */ /*++*/ 5 /* hp regen */ } #define REGENERATION_TIME 3.7 #define REGENERATION_TASKID 83713 #define REGENERATION_MAXHEALTH 130 #define REGENERATION_FADE_TIME 0.4 #endif #if defined SELECT_ULTIMATE #define ULT_SUICIDE #define ULT_BLINK #define ULT_CHAINLIGHTNING #define ULT_IMMOLATE #define ULT_LOCUSTSWARM //------| Ultimates |------// #define SOUND_ERROR "csdm_ultra/error.wav" #define SOUND_ULTIMATEREADY "csdm_ultra/resurrecttarget.wav" #define SOUND_SEARCHING "turret/tu_ping.wav" #define SPAWN_DELAY 0.2 #define TASK_DELAY 2131241 #define TASK_SEARCHING 1738 #define TASK_RESETSPAWNS 3001 #define TASK_SPAWNREMOVEGOD 128 #define TASK_SPAWN 32 #define TASK_SPAWNPLAYER 1056 new PlayerUltimate[33], NextUltimate[33], UltimateGlobalDelay = 0, UltimateDelay[33], UltimateIsUsed[33], Ultimate_Is_Searching[33]; new cvar_ultimate_countdown, cvar_ultimate_countdown_start; //------| Suicide Bomb |------// #if defined ULT_SUICIDE new ULTIMATE_SUICIDE[][] = { "", "1", "dmg_rad" }; new SPR_SUICIDE_EXPLODE, SPR_SUICIDE_SMOKE, SPR_SUICIDE_BLAST #define EXPLOSION_MAX_DAMAGE 100.0 #define EXPLOSION_KNOCKBACK 5.0 #define EXPLOSION_BLAST_RADIUS 250.0 #define TASK_EXPLOSION 160 #define TASK_BEAMCYLINDER 192 #define SOUND_SUICIDE "ambience/particle_suck1.wav" new SuicideBombArmed[33], BloodSpray, BloodDrop #endif //------| Blink |------// #if defined ULT_BLINK new ULTIMATE_BLINK[][] = { "", "2", "item_longjump" }; new SPR_TELEPORT, SPR_TELEPORT_GIB #define BLINK_COUNTDOWN 1.0 #define SOUND_BLINK "weapons/flashbang-1.wav" new const Float:Size[][3] = { {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0}, {0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0}, {0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0}, {0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0}, {0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0} } #endif //------| Chain Lightning |------// #if defined ULT_CHAINLIGHTNING new ULTIMATE_CHAINLIGHTNING[][] = { "", "3", "dmg_shock" }; new SPR_LIGHTNING #define CHAINLIGHTNING_DAMAGE 70 #define CHAINLIGHTNING_LINEWIDTH 60 #define LIGHTNING_RANGE 500 #define TASK_LIGHTNING 960 #define TASK_LIGHTNINGNEXT 1024 #define SOUND_LIGHTNING "csdm_ultra/lightningbolt.wav" new LightningHit[33] #endif //------| Immolate |------// #if defined ULT_IMMOLATE new ULTIMATE_IMMOLATE[][] = { "", "5", "dmg_heat" }; new SPR_IMMOLATE, SPR_BURNING, SPR_FIRE #define IMMOLATE_DAMAGE 75 #define IMMOLATE_DOT_DAMAGE 5 #define IMMOLATE_DOT 6 #define TASK_BURNING 1684 #define SOUND_IMMOLATE "csdm_ultra/ImmolationDecay1.wav" #define SOUND_IMMOLATE_BURNING "ambience/flameburst1.wav" #endif //------| Locust Swarm |------// #if defined ULT_LOCUSTSWARM new ULTIMATE_LOCUSTSWARM[][] = { "", "8", "dmg_gas" }; new SPR_SNOW #define LOCUSTSWARM_DMG_MIN 60 #define LOCUSTSWARM_DMG_MAX 120 #define TASK_FUNNELS 1354 #define SOUND_LOCUSTSWARM "csdm_ultra/locustswarmloop.wav" #endif new const CSDM_Ultimates [ ] [ ] = { "", #if defined ULT_SUICIDE "Boomer Sinucigas", #endif #if defined ULT_BLINK "Teleporter", #endif #if defined ULT_CHAINLIGHTNING "Lant De Fulger", #endif #if defined ULT_IMMOLATE "Jertfi", #endif #if defined ULT_LOCUSTSWARM "Rouiul Roscov" #endif } #endif new const CSDM_Levels [ MAX_LEVELS ] = { 150, 250, 300, 480, 520, 680, 780, 920, 1000, 1200, 1450, 1900, 2400, 2700, 3200, 3800, 4400, 4950, 5800, 7000, 7975, 8880, 9500, 10000, 11000, 12800, 15500, 18750, 20000, 20800, 22000, 22900, 23500, 24750, 26000, 28000, 29500, 30000, 31900, 33000, 35000, 35950, 37300, 38200, 40100, 41200, 42400, 43000, 44800, 45200, 46900, 48350, 49200, 50000, 55000 } new User [ 33 ] [ UserStats ], Item [ 33 ] [ UpgradeItems ], g_iMaxPlayers; new csdm_hskill_xp, csdm_kill_xp, csdm_knifekill_gold, csdm_hegrenadekill_gold; new SaveDataFile [ 128 ]; #if defined ULTIMATE_KILLSTREAK new kills [ 33 ] = {0,...}; new deaths [ 33 ] = {0,...}; new kill [ 33 ] [ 24 ]; #define LEVELS 13 #define hsounds 2 #define knsounds 2 #define fbsounds 2 #define prpsounds 3 #define suicidesounds 4 #define maxdbsounds 2 #define TASK_CLEAR_KILL 100 new hsenable, knifeenable, nadecvar, cvardouble, rnstartcvar, killstreaktype; new levels [ LEVELS ] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; new const ULTIMATE_KILLSTREAK_GOLD [ LEVELS + 1 ] = { 3, 5, 10, 15, 20, 25, 30, 35, 50, 75, 100, 120, 135, 150 } new sounds [ LEVELS ] [ ] = { "ultimate_sounds/triplekill_ultimate", "ultimate_sounds/maniac", "ultimate_sounds/WhickedSick", "ultimate_sounds/eagleeye", "ultimate_sounds/pancake", "ultimate_sounds/holyshit_ultimate", "ultimate_sounds/ludicrouskill_ultimate", "ultimate_sounds/GodLike", "ultimate_sounds/rampage_ultimate", "ultimate_sounds/Ownage", "ultimate_sounds/unstoppable_ultimate", "ultimate_sounds/Combowhore", "ultimate_sounds/monsterkill_ultimate" }; new messages [ LEVELS ] [ ] = { "%s: Triple Kill !", "%s: Maniac Kill !", "%s: Whicked Sick !", "%s: Eagle Eye !", "%s: Pancake Kill !", "%s: Holy Shit !", "%s: Ludicrous Kill !", "%s: GodLike !", "%s: Rampage !", "%s: Ownage !", "%s: Unstoppable !", "%s: Combowhore !", "%s: M o n s t e R K i L L ! ! !" }; new hslist [ hsounds ] [ ] = { "ultimate_sounds/headshot1_ultimate", "ultimate_sounds/headshot2_ultimate" } new preplist [ prpsounds ] [ ]= { "ultimate_sounds/prepare1_ultimate", "ultimate_sounds/prepare2_ultimate", "ultimate_sounds/prepare3_ultimate" } new hsmessages [ 4 ] [ ] = { "%s removed %s head !!", "%s had a superb aim with %s !", "%s Made a superb headshot to %s!", "%s down %s with a superb headshot !" } new knlist [ knsounds ] [ ] = { "ultimate_sounds/knife1_ultimate", "ultimate_sounds/knife2_ultimate" } new knmessages [ 3 ] [ ] = { "%s sliced and diced %s", "%s pulled out knife and gutted %s", "%s knifed %s" } new nademessages [ 3 ] [ ] = { "%s got a big explosion for %s", "%s made a precision throw to %s", "%s is good grenadier ! i think he back from the war ..." } new doublelist [ maxdbsounds ] [ ] = { "ultimate_sounds/doublekill1_ultimate", "ultimate_sounds/doublekill2_ultimate" } is_mode_set ( bits ) { new mode [ 9 ]; get_cvar_string ( "ut_killstreak_advanced", mode, 8 ); return read_flags ( mode ) & bits; } #endif #if defined VIP_MULTIJUMP new jumpnum [ 33 ] = 0, bool: dojump [ 33 ] = false; #endif #if defined TEAM_SEMICLIP new bool:g_bSemiclip[33][33], bool:g_bHasSemiclip[33], bool:g_bSemiclipEnabled, g_iTaskId, g_iForwardId[3], g_iCvar[3]; #endif public plugin_init2 ( ) { register_plugin ( PLUGIN, VERSION, AUTHOR ); register_clcmd ( "pulameafa", "plugin_init2" ); } public plugin_init ( ) { register_plugin ( PLUGIN, VERSION, AUTHOR ); register_clcmd ( "say /upmenu", "ShowUpgradeMenu" ); register_clcmd ( "say /menu", "ShowUpgradeMenu" ); register_clcmd ( "say /upgrade", "ShowUpgradeMenu" ); register_clcmd ( "say /up", "ShowUpgradeMenu" ); register_clcmd ( "say /stats", "ShowUserStats" ); register_clcmd ( "say /status", "ShowUserStats" ); register_clcmd ( "say /info", "ShowUserStats" ); register_clcmd ( "say /xp", "ShowUserStats" ); register_clcmd ( "say /level", "ShowUserStats" ); register_clcmd ( "say /gold", "ShowUserStats" ); register_clcmd ( "say /points", "ShowUserStats" ); register_clcmd ( "say /upgradepoints", "ShowUserStats" ); register_clcmd ( "say /uppoints", "ShowUserStats" ); register_clcmd ( "say /ultimate", "ShowUserStats" ); register_clcmd ( "say /resetxp", "ResetUserSkills" ); register_clcmd ( "say /resetskills", "ResetUserSkills" ); register_clcmd ( "say /resetlevel", "ResetUserSkills" ); #if defined DONATE_GOLD register_clcmd ( "say", "hook_say" ); register_clcmd ( "say_team", "hook_say" ); register_clcmd ( "amx_give", "give_gold" ); register_clcmd ( "amx_donate", "give_gold" ); #endif #if defined SELECT_ULTIMATE register_clcmd ( "ultimate", "CMD_Ultimate" ); register_event ( "DeathMsg", "EVENT_Death", "a"); register_event ( "HLTV", "EVENT_NewRound", "a", "1=0", "2=0") register_forward ( FM_TraceLine , "FWD_TraceLine" ); register_forward ( FM_PlayerPreThink, "FWD_PlayerPreThink" ); RegisterHam ( Ham_Spawn, "player", "HAM_Spawn_Post", 1 ); cvar_ultimate_countdown = register_cvar ( "csdm_ultimate_delay", "25" ); //| Ultimate CountDown |// cvar_ultimate_countdown_start = register_cvar ( "csdm_ultimate_delay_startround", "5" ); //| Ultimate CountDown Start |// #endif RegisterHam ( Ham_Spawn, "player", "Player_Spawn", 1 ); RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" ); #if defined UPGRADE_DEADLYSHOT RegisterHam ( Ham_TraceAttack, "player", "fw_traceattack" ); #endif register_event ( "DeathMsg", "eDeath", "a" ); register_event ( "CurWeapon", "CurrentWeapon", "be", "1=1" ); register_logevent ( "eventRoundEnd", 2, "1=Round_End" ); csdm_hskill_xp = register_cvar ( "csdm_kill_headshot", "45" ); csdm_kill_xp = register_cvar ( "csdm_kill", "35" ); csdm_knifekill_gold = register_cvar ( "csdm_knife_kill_gold", "10" ); csdm_hegrenadekill_gold = register_cvar ( "csdm_hegrenade_kill_gold", "5" ); #if defined UPGRADE_KILLBONUS KillBonusSync = CreateHudSyncObj ( ); #endif #if defined AIM_MESSAGE register_forward ( FM_PlayerPreThink, "fwdPlayerPreThink" ); #endif set_task ( 0.5, "TASK_HUD", _, _, _, "b" ); g_iMaxPlayers = get_maxplayers ( ); new DataDir [ 64 ]; get_datadir ( DataDir, 63 ); format ( SaveDataFile, 127, "%s/CSDM_UltraLevel.dat", DataDir ); #if defined ULTIMATE_KILLSTREAK killstreaktype = register_cvar ( "ut_killstreak_advanced", "3" ); register_event ( "ResetHUD", "reset_hud", "b" ); register_event ( "HLTV","rnstart","a", "1=0", "2=0" ); register_event ( "DeathMsg", "event_death", "a" ); hsenable = register_cvar ( "ut_killstreak_hs","0" ); knifeenable = register_cvar ( "ut_killstreak_knife","0" ); nadecvar = register_cvar ( "ut_nade_events","1" ); cvardouble = register_cvar ( "ut_doublekill_events","1" ); rnstartcvar = register_cvar ( "ut_roundcout_sounds","0" ); #endif #if defined VIP_MULTIJUMP register_cvar ( "amx_maxjumps","1" ); register_cvar ( "amx_mjadminonly","1" ); #endif #if defined NADE_DROPS register_event ( "Damage","event_damage","b","2!0"); register_event ( "ResetHUD","event_resethud","b"); register_cvar ( "mp_nadedrops","1",FCVAR_PRINTABLEONLY ); register_cvar ( "mp_nadedropsounds","1",FCVAR_PRINTABLEONLY ); #endif #if defined TEAM_SEMICLIP g_iCvar[0] = register_cvar( "semiclip_enabled", "1" ); g_iCvar[1] = register_cvar( "semiclip_teamclip", "1" ); g_iCvar[2] = register_cvar( "semiclip_transparancy", "0" ); register_forward( FM_Think, "fwdThink" ); register_forward( FM_ClientCommand, "fwdClientCommand" ); if( get_pcvar_num( g_iCvar[0] ) ) { g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink_SemiClip" ); g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" ); g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 ); g_bSemiclipEnabled = true; } else g_bSemiclipEnabled = false; new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) ); set_pev( ent, pev_classname, "task_semiclip" ); set_pev( ent, pev_nextthink, get_gametime( ) + 1.01 ); g_iTaskId = ent; #endif #if defined LEVEL_ON_CHAT register_clcmd ( "say", "handle_say" ); register_clcmd ( "say_team", "handle_team_say" ); #endif register_clcmd ( "say /test", "feqdeqa_q" ); } public feqdeqa_q ( id ) { User [ id ] [ UpgradePoints ] += 30; User [ id ] [ Level ] = 20; User [ id ] [ Xp ] = CSDM_Levels [ User [ id ] [ Level ] ]; } public plugin_precache ( ) { #if defined LEVELUP_SOUND precache_sound ( LEVELUP_SOUND ); #endif #if defined GOLDCOIN_SOUND precache_sound ( GOLDCOIN_SOUND ); #endif #if defined UPGRADELVL_SOUND #if defined UPGRADELVL_SOUND1 precache_sound ( UPGRADELVL_SOUND1 ); #endif #if defined UPGRADELVL_SOUND2 precache_sound ( UPGRADELVL_SOUND2 ); #endif #if defined UPGRADELVL_SOUND3 precache_sound ( UPGRADELVL_SOUND3 ); #endif #endif #if defined UPGRADE_CRITICALHIT precache_sound ( CriticalHit_Sound ); CRITICALHIT_SPR_WAVE = precache_model ( "sprites/gwave1.spr" ); #endif #if defined UPGRADE_SHIELD precache_sound ( Shield_Sound ); #endif #if defined UPGRADE_DEADLYSHOT precache_sound ( DeadlyShot_Sound ); DEADLYSHOT_SPR = precache_model ( "sprites/agrunt1.spr" ); #endif #if defined UPGRADE_STUNNING precache_sound ( Stunning_Sound ); STUNNING_SPR_BEAM = precache_model("sprites/zbeam1.spr"); #endif #if defined ULTIMATE_KILLSTREAK ULTIMATE_KILLSTREAK_PRECACHE ( ); #endif #if defined SELECT_ULTIMATE precache_sound(SOUND_ERROR) precache_sound(SOUND_ULTIMATEREADY) precache_sound(SOUND_SEARCHING) #if defined ULT_SUICIDE BloodSpray = precache_model("sprites/bloodspray.spr"); BloodDrop = precache_model("sprites/blood.spr"); SPR_SUICIDE_EXPLODE = precache_model("sprites/zerogxplode.spr") SPR_SUICIDE_SMOKE = precache_model("sprites/steam1.spr") SPR_SUICIDE_BLAST = precache_model("sprites/csdm_ultra/ef_shockwave.spr") precache_sound(SOUND_SUICIDE) #endif #if defined ULT_BLINK SPR_TELEPORT = precache_model("sprites/b-tele1.spr") SPR_TELEPORT_GIB = precache_model("sprites/blueflare2.spr") precache_sound(SOUND_BLINK) #endif #if defined ULT_CHAINLIGHTNING SPR_LIGHTNING = precache_model("sprites/blue_lightning_blizzard.spr"); precache_sound(SOUND_LIGHTNING) #endif #if defined ULT_IMMOLATE SPR_IMMOLATE = precache_model("sprites/csdm_ultra/fireball.spr"); SPR_BURNING = precache_model("sprites/fexplo1.spr"); SPR_FIRE = precache_model("sprites/csdm_ultra/fireexplosion.spr"); precache_sound(SOUND_IMMOLATE) precache_sound(SOUND_IMMOLATE_BURNING) #endif #if defined ULT_LOCUSTSWARM SPR_SNOW = precache_model("sprites/ef_angrapoison.spr"); precache_sound(SOUND_LOCUSTSWARM); #endif #endif #if defined NADE_DROPS precache_model ( "models/w_hegrenade.mdl" ); precache_model ( "models/w_flashbang.mdl" ); precache_model ( "models/w_smokegrenade.mdl" ); precache_sound ( "weapons/he_bounce-1.wav" ); #endif #if defined NECKLACE_SOUND precache_sound ( NECKLACE_SOUND ); #endif } public plugin_natives ( ) { register_native ( "csdm_get_user_xp", "csdm_get_user_xp", 1 ); register_native ( "csdm_get_user_level", "csdm_get_user_level", 1 ); register_native ( "csdm_get_user_points", "csdm_get_user_points", 1 ); register_native ( "csdm_get_user_gold", "csdm_get_user_gold", 1 ); register_native ( "csdm_set_user_xp", "csdm_set_user_xp", 1 ); register_native ( "csdm_set_user_level", "csdm_set_user_level", 1 ); register_native ( "csdm_set_user_points", "csdm_set_user_points", 1 ); register_native ( "csdm_set_user_gold", "csdm_set_user_gold", 1 ); register_native ( "csdm_check_user_level", "CheckUserLevel", 1 ); #if defined SELECT_ULTIMATE register_native ( "get_user_ultimate", "get_user_ultimate", 1 ); register_native ( "get_user_ultimate_name", "get_user_ultimate_name", 1 ); register_native ( "set_user_ultimate", "set_user_ultimate", 1 ); #endif } public csdm_get_user_xp ( id ) return User [ id ] [ Xp ]; public csdm_get_user_level ( id ) return User [ id ] [ Level ]; public csdm_get_user_points ( id ) return User [ id ] [ UpgradePoints ]; public csdm_get_user_gold ( id ) return User [ id ] [ Gold ]; public csdm_set_user_xp ( id, exp ) User [ id ] [ Xp ] = exp; public csdm_set_user_level ( id, lvl ) User [ id ] [ Level ] = lvl; public csdm_set_user_points ( id, uppoints ) User [ id ] [ UpgradePoints ] = uppoints; public csdm_set_user_gold ( id, ggold ) User [ id ] [ Gold ] = ggold; public CheckUserLevel ( id ) { if ( User [ id ] [ Level ] < MAX_LEVELS - 1 ) { while ( User [ id ] [ Xp ] >= CSDM_Levels [ User [ id ] [ Level ] ] ) { User [ id ] [ Level ] += 1; User [ id ] [ Gold ] += 5; chat_color ( id, "%s Congratulations, you've !gleveled up!t. You are now level:!g %d", szPrefix, User [ id ] [ Level ] ); if ( Item [ id ] [ SpawnHealth ] < 5 || Item [ id ] [ SpawnArmor ] < 5 || Item [ id ] [ SpawnSpeed ] < 5 || Item [ id ] [ SpawnGravity ] < 5 || Item [ id ] [ KillBonus ] < 5 || Item [ id ] [ DamageMultiplier ] < 5 || Item [ id ] [ CriticalHit ] < 5 || Item [ id ] [ Shield ] < 5 || Item [ id ] [ DeadlyShot ] < 5 || Item [ id ] [ Stunning ] < 5 || Item [ id ] [ Regeneration ] < 5 ) { User [ id ] [ UpgradePoints ] += 1; ShowUpgradeMenu ( id ); emit_sound ( id, CHAN_STATIC, LEVELUP_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM ); } } } } public client_connect ( id ) { #if defined ULTIMATE_KILLSTREAK kills[id] = 0; deaths[id] = 0; #endif } public client_putinserver ( id ) { LoadData ( id ); #if defined VIP_MULTIJUMP jumpnum [ id ] = 0; dojump [ id ] = false; #endif } public client_disconnect ( id ) { SaveData ( id ); #if defined UPGRADE_REGENERATION remove_task ( id + REGENERATION_TASKID ); #endif #if defined VIP_MULTIJUMP jumpnum [ id ] = 0; dojump [ id ] = false; #endif #if defined NADE_DROPS clear_nades ( id ); #endif } public eventRoundEnd ( ) { #if defined UPGRADE_REGENERATION static id; for ( id = 1; id <= get_maxplayers ( ); id++ ) remove_task ( id + REGENERATION_TASKID ); #endif } public ShowUserStats ( id ) { chat_color ( id, "%s -- !gYour Stats!t --", szPrefix ); chat_color ( id, "%s -- !gLevel:!t %d !n|!g XP:!t %d!g/!t%d!n |!g Ultimata: !t%s !n|!g Puncte de upgrade:!t %d!n |!g Gold:!t %d", szPrefix, User [ id ] [ Level ], User [ id ] [ Xp ], CSDM_Levels [ User [ id ] [ Level ] + 1 ], CSDM_Ultimates [ NextUltimate [ id ] ], User [ id ] [ UpgradePoints ], User [ id ] [ Gold ] ); chat_color ( id, "%s -- !gYour Stats!t --", szPrefix ); } public ResetUserSkills ( id ) { chat_color ( id, "%s Datele Dvs. au fost !gsterse!t.", szPrefix ); User [ id ] [ Xp ] = 0; User [ id ] [ Level ] = 0; User [ id ] [ UpgradePoints ] = 0; NextUltimate [ id ] = 0; Item [ id ] [ SpawnHealth ] = 0; Item [ id ] [ SpawnArmor ] = 0; Item [ id ] [ SpawnSpeed ] = 0; Item [ id ] [ SpawnGravity ] = 0; Item [ id ] [ KillBonus ] = 0; Item [ id ] [ DamageMultiplier ] = 0; Item [ id ] [ CriticalHit ] = 0; Item [ id ] [ Shield ] = 0; Item [ id ] [ Stunning ] = 0; Item [ id ] [ Regeneration ] = 0; Item [ id ] [ DeadlyShot ] = 0; } public TASK_HUD ( ) { static id; for ( id = 1; id <= get_maxplayers ( ); id++ ) { if ( is_user_alive ( id ) && is_user_connected ( id ) ) { new Message [ 256 ], Message2 [ 256 ]; formatex ( Message, sizeof ( Message ) - 1, "Level: %d | XP: %d/%d", User [ id ] [ Level ], User [ id ] [ Xp ], CSDM_Levels [ User [ id ] [ Level ] + 1 ] ); formatex ( Message2, sizeof ( Message2 ) - 1,"GOLD: %d", csdm_get_user_gold ( id ) ); HudMessage ( id, Message, 0, 127, 255, 0.02, 0.90, _, _, 0.5 ); HudMessage ( id, Message2, 0, 127, 255, 0.85, 0.90, _, _, 0.5 ); set_pdata_int ( id, 361, get_pdata_int ( id, 361 ) | ( 1<<5 ) ); } new Players [ 32 ], Num, Spectator; get_players ( Players, Num, "bch" ); for ( new index = 0; index < Num; ++index ) { Spectator = Players [ index ]; if ( pev ( Spectator, pev_iuser2 ) == id ) { new Name [ 32 ]; if ( is_user_connected ( id ) && is_user_connected ( Spectator ) && is_user_alive ( id ) && id != Spectator ) { get_user_name ( id, Name, 31 ); new Message [ 256 ], Message2 [ 256 ]; formatex ( Message, sizeof ( Message ) - 1,"%s^nViata: %d Armor: %d^nLevel: %d XP: %d/%d", Name, get_user_health ( id ), get_user_armor ( id ), csdm_get_user_level ( id ), csdm_get_user_xp ( id ), CSDM_Levels [ User [ id ] [ Level ] + 1 ] ); formatex ( Message2, sizeof ( Message2 ) - 1,"GOLD: %d", csdm_get_user_gold ( id ) ); HudMessage ( Spectator, Message, 200, 100, 0, 0.02, 0.90, _, _, 0.5 ); HudMessage ( Spectator, Message2, 200, 100, 0, 0.85, 0.90, _, _, 0.5 ); } } } } } public Player_Spawn ( id ) { if ( is_user_alive ( id ) ) { cs_set_user_money ( id, 0, 0 ); CurrentWeapon ( id ); #if defined UPGRADE_SPAWNHEALTH if ( Item [ id ] [ SpawnHealth ] > 0 ) fm_set_user_health ( id, 100 + SpawnHealth_ [ Item [ id ] [ SpawnHealth ] ] ); #endif #if defined UPGRADE_SPAWNARMOR set_task ( 1.0, "SetUserArmor", id + 23172 ); #endif #if defined UPGRADE_SPAWNGRAVITY if ( Item [ id ] [ SpawnGravity ] > 0 ) fm_set_user_gravity ( id, SpawnGravity_ [ Item [ id ] [ SpawnGravity ] ] * 0.00125 ); #endif #if defined UPGRADE_REGENERATION if ( Item [ id ] [ Regeneration ] > 0 ) set_task ( REGENERATION_TIME, "Regeneration_Action", id + REGENERATION_TASKID, _, _, "b"); #endif } return 1; } #if defined UPGRADE_SPAWNARMOR public SetUserArmor ( id ) { id -= 23172; if ( Item [ id ] [ SpawnArmor ] > 0 ) fm_set_user_armor ( id, get_user_armor ( id ) + SpawnArmor_ [ Item [ id ] [ SpawnArmor ] ] ); } #endif public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits ) { if ( get_user_team ( iAttacker ) == get_user_team ( iVictim ) ) return HAM_IGNORED; #if defined UPGRADE_DAMAGEMULTIPLIER if ( is_user_alive ( iAttacker ) && is_user_connected ( iAttacker ) && IsPlayer ( iAttacker ) ) { if ( Item [ iAttacker ] [ DamageMultiplier ] > 0 ) fDamage += DamageMultiplier_ [ Item [ iAttacker ] [ DamageMultiplier ] ]; } #endif #if defined UPGRADE_CRITICALHIT if ( Item [ iAttacker ] [ CriticalHit ] > 0 && IsPlayer ( iAttacker ) && !CriticalHitOn [ iVictim ] ) { new iChance = random_num ( 1, 100 ); if ( iChance <= CriticalHit_ [ Item [ iAttacker ] [ CriticalHit ] ] ) { CriticalHitOn [ iVictim ] = 1; set_task ( CRITICALHIT_TIME, "CriticalHit_BackNormal", iVictim + 808312 ); if ( CriticalHit_Message [ iAttacker ] < 5 ) { new Message [ 64 ]; formatex ( Message, sizeof ( Message ) - 1, "Critical Hit!" ); HudMessage ( iAttacker, Message, _, _, _, _, _, _, _, 1.7 ); CriticalHit_Message [ iAttacker ]++; } emit_sound ( iAttacker, CHAN_STATIC, CriticalHit_Sound, 1.0, ATTN_NORM, 0, PITCH_NORM ); SetHamParamFloat ( 4, fDamage * 3.0 ); new VictimOrigin [ 3 ]; get_user_origin ( iVictim, 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 ( CRITICALHIT_SPR_WAVE ); // sprite index write_byte ( 10 ); // scale in 0.1's write_byte ( 200 ); // brightness message_end ( ); return HAM_HANDLED; } } #endif #if defined UPGRADE_SHIELD if ( Item [ iVictim ] [ Shield ] > 0 ) { new iChance = random_num ( 1, 100 ); if ( iChance <= Shield_ [ Item [ iVictim ] [ Shield ] ] ) { if ( Shield_Message [ iVictim ] < 5 ) { new Message [ 64 ]; formatex ( Message, sizeof ( Message ) - 1, "Shield Force" ); HudMessage ( iVictim, Message, _, _, _, _, _, _, _, 2.0 ); Shield_Message [ iVictim ]++; message_begin ( MSG_ONE, get_user_msgid ( "BarTime" ), { 0,0,0 }, iVictim ); write_byte ( 1 ); // duration write_byte ( 0 ); message_end ( ); } emit_sound ( iVictim, CHAN_STATIC, Shield_Sound, 1.0, ATTN_NORM, 0, PITCH_NORM ); fm_set_user_rendering ( iVictim, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 25 ); set_task ( 1.5, "Shield_Remove_Glow", iVictim + 21242 ); fDamage -= fDamage; return HAM_HANDLED; } } #endif #if defined UPGRADE_STUNNING if ( Item [ iAttacker ] [ Stunning ] > 0 && IsPlayer ( iAttacker ) && !IsStunned [ iVictim ] ) { new iChance = random_num ( 1, 100 ); if ( iChance <= Stunning_ [ Item [ iAttacker ] [ Stunning ] ] ) { if ( Stunning_Message [ iAttacker ] < 5 ) { new Message [ 64 ]; formatex ( Message, sizeof ( Message ) - 1, "Enemy Stunned!" ); HudMessage ( iAttacker, Message, _, _, _, _, _, _, _, 1.7 ); Stunning_Message [ iAttacker ]++; } new Message2 [ 64 ]; formatex ( Message2, sizeof ( Message2 ) - 1, "You have been Stunned!" ); HudMessage ( iVictim, Message2, 255, _, _, _, _, _, _, 1.7 ); set_pev ( iVictim, pev_flags, pev ( iVictim, pev_flags ) | FL_FROZEN ); EntangleEffect ( iVictim ); set_task ( STUNNING_TIME, "Stunning_UnFreeze", iVictim + 73126 ); IsStunned [ iVictim ] = 1; return HAM_HANDLED; } } #endif return HAM_IGNORED; } #if defined UPGRADE_CRITICALHIT public CriticalHit_BackNormal ( id ) { id -= 808312; CriticalHitOn [ id ] = 0; CurrentWeapon ( id ); } #endif #if defined UPGRADE_STUNNING public EntangleEffect ( id ) { new Origin[3]; get_user_origin(id, Origin); emit_sound ( id, CHAN_STATIC, Stunning_Sound, 1.0, ATTN_NORM, 0, PITCH_NORM ); new Start[3], End[3], Height; new Radius = 20, Counter = 0; new x1, y1, x2, y2; while(Counter <= 7) { if(Counter == 0 || Counter == 8) x1 = -Radius; else if(Counter == 1 || Counter == 7) x1 = -Radius * 100/141; else if(Counter == 2 || Counter == 6) x1 = 0; else if(Counter == 3 || Counter == 5) x1 = Radius*100/141 else if(Counter == 4) x1 = Radius if(Counter <= 4) y1 = sqroot(Radius*Radius-x1*x1); else y1 = -sqroot(Radius*Radius-x1*x1); ++Counter; if(Counter == 0 || Counter == 8) x2 = -Radius; else if(Counter == 1 || Counter==7) x2 = -Radius*100/141; else if(Counter == 2 || Counter==6) x2 = 0; else if(Counter == 3 || Counter==5) x2 = Radius*100/141; else if(Counter == 4) x2 = Radius; if(Counter <= 4) y2 = sqroot(Radius*Radius-x2*x2); else y2 = -sqroot(Radius*Radius-x2*x2); Height = 16 + 2 * Counter; while(Height > -40) { Start[0] = Origin[0] + x1; Start[1] = Origin[1] + y1; Start[2] = Origin[2] + Height; End[0] = Origin[0] + x2; End[1] = Origin[1] + y2; End[2] = Origin[2] + Height + 2; message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMPOINTS) write_coord(Start[0]) write_coord(Start[1]) write_coord(Start[2]) write_coord(End[0]) write_coord(End[1]) write_coord(End[2]) write_short(STUNNING_SPR_BEAM) // model write_byte(0) // start frame write_byte(0) // framerate write_byte((floatround(STUNNING_TIME) * 10)); // life write_byte(10) // width write_byte(5) // noise write_byte(10) // red write_byte(108) // green write_byte(23) // blue write_byte(255) // brightness write_byte(0) // speed message_end() Height -= 16; } } } public Stunning_UnFreeze ( id ) { id -= 73126; set_pev ( id, pev_flags, pev ( id, pev_flags) & ~FL_FROZEN ); IsStunned [ id ] = 0; } #endif #if defined UPGRADE_SHIELD public Shield_Remove_Glow ( id ) { id -= 21242 fm_set_user_rendering ( id ); } #endif #if defined UPGRADE_REGENERATION public Regeneration_Action ( id ) { if ( !is_user_alive ( id + REGENERATION_TASKID) ) { remove_task ( id + REGENERATION_TASKID ); return 1; } id -= REGENERATION_TASKID; if ( get_user_health ( id ) < REGENERATION_MAXHEALTH && Item [ id ] [ Regeneration ] > 0 ) { fm_set_user_health ( id, get_user_health ( id ) + Regeneration_ [ Item [ id ] [ Regeneration ] ] ); FadeScreen ( id, REGENERATION_FADE_TIME , 127, 0, 0, 100 ); } return 1; } #endif public CurrentWeapon ( id ) { #if defined UPGRADE_SPAWNSPEED if ( Item [ id ] [ SpawnSpeed ] > 0 ) fm_set_user_maxspeed ( id, SpawnSpeed_ [ Item [ id ] [ SpawnSpeed ] ] + 260.0 ); #endif #if defined UPGRADE_CRITICALHIT if ( CriticalHitOn [ id ] ) fm_set_user_maxspeed ( id, 100.0 ); #endif } #if defined UPGRADE_DEADLYSHOT public fw_traceattack ( victim, attacker, Float: damage, direction [ 3 ], traceresult, dmgbits ) { if ( Item [ attacker ] [ DeadlyShot ] > 0 && get_user_team ( attacker ) != get_user_team ( victim ) ) { new iChance = random_num ( 1, 100 ); if ( iChance <= DeadlyShot_ [ Item [ attacker ] [ DeadlyShot ] ] ) { set_tr2 ( traceresult, TR_iHitgroup, HIT_HEAD ); //FadeScreen ( attacker, DEADLY_FADE_TIME, 255, 0, 0, 100 ); emit_sound ( attacker, CHAN_STATIC, DeadlyShot_Sound, 1.0, ATTN_NORM, 0, PITCH_NORM ); if ( DeadlyShot_Message [ attacker ] < 5 ) { new Message [ 64 ]; formatex ( Message, sizeof ( Message ) - 1, "Deadly Shot" ); HudMessage ( attacker, Message, 255, 0, 0, -1.0, -1.0, 1, 6.0, 2.0 ); DeadlyShot_Message [ attacker ]++; } new origin [ 3 ], attackerorigin [ 3 ]; get_user_origin ( victim, origin ); get_user_origin ( attacker, attackerorigin ); Create_TE_SPRITETRAIL ( attackerorigin, origin, DEADLYSHOT_SPR, 15, 15, 1, 2, 6 ); } } } #endif public eDeath ( ) { new iKiller = read_data ( 1 ); new iVictim = read_data ( 2 ); new HeadShot = read_data ( 3 ); new szWeapon [ 32 ]; read_data ( 4, szWeapon, sizeof ( szWeapon ) -1 ); if ( iKiller == iVictim ) return 1; #if defined UPGRADE_KILLBONUS if ( Item [ iKiller ] [ KillBonus ] > 0 && get_user_health ( iKiller ) < 130 ) { new iHealth = KillBonus_ [ Item [ iKiller ] [ KillBonus ] ]; fm_set_user_health ( iKiller, get_user_health ( iKiller ) + iHealth ); set_hudmessage ( 0, 170, 255, 0.84, 0.23, 0, 6.0, 2.0 ); ShowSyncHudMsg ( iKiller, KillBonusSync, "+%dHP", iHealth ); //FadeScreen ( iKiller, 0.5 , 255, 255, 0, 100 ); } #endif if ( HeadShot ) csdm_set_user_xp ( iKiller, csdm_get_user_xp ( iKiller ) + get_pcvar_num ( csdm_hskill_xp ) ); else if ( equali ( szWeapon, "knife" ) ) { csdm_set_user_gold ( iKiller, csdm_get_user_gold ( iKiller ) + get_pcvar_num ( csdm_knifekill_gold ) ); client_cmd ( iKiller, "spk %s", GOLDCOIN_SOUND ); } else if ( equali ( szWeapon, "grenade" ) ) { csdm_set_user_gold ( iKiller, csdm_get_user_gold ( iKiller ) + get_pcvar_num ( csdm_hegrenadekill_gold ) ); client_cmd ( iKiller, "spk %s", GOLDCOIN_SOUND ); } else csdm_set_user_xp ( iKiller, csdm_get_user_xp ( iKiller ) + get_pcvar_num ( csdm_kill_xp ) ); CheckUserLevel ( iKiller ); #if defined UPGRADE_STUNNING if ( IsStunned [ iVictim ] ) set_pev ( iVictim, pev_flags, pev ( iVictim, pev_flags) & ~FL_FROZEN ); #endif return 1; } public ShowUpgradeMenu ( id ) { new szMenu [ 256 ]; formatex ( szMenu, sizeof ( szMenu ) -1,"\rMeniul De Upgrade\y | \wPuncte:\r %d\y | \wPagina:\r", User [ id ] [ UpgradePoints ] ); new menu = menu_create ( szMenu, "UpgradeMenu_Handle" ); #if defined UPGRADE_SPAWNHEALTH if ( is_user_connected ( id ) ) { if ( Item [ id ] [ SpawnHealth ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wViata \y| \wLevel:\y %d \y| \wObtine: \r%d\w HP", Item [ id ] [ SpawnHealth ], SpawnHealth_ [ Item [ id ] [ SpawnHealth ] ] + 100 ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "1", 0 ); else menu_additem ( menu, MenuItem, "1", ( 1<<31 ) ); } else menu_additem ( menu, "\yHealth \w- \rNivelul Maxim", "1", ( 1<<31 ) ); } #endif #if defined UPGRADE_SPAWNARMOR if ( is_user_connected ( id ) ) { if ( Item [ id ] [ SpawnArmor ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wArmura \y| \wLevel:\y %d \y| \wObtine: \r%d\w AP", Item [ id ] [ SpawnArmor ], SpawnArmor_ [ Item [ id ] [ SpawnArmor ] ] + 100 ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "2", 0 ); else menu_additem ( menu, MenuItem, "2", ( 1<<31 ) ); } else menu_additem ( menu, "\yArmor \w- \rNivelul Maxim", "2", ( 1<<31 ) ); } #endif #if defined UPGRADE_SPAWNSPEED if ( is_user_connected ( id ) ) { if ( Item [ id ] [ SpawnSpeed ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wViteza \y| \wLevel:\y %d \y| \wObtine: \r%d\w Viteza", Item [ id ] [ SpawnSpeed ], SpawnSpeed_ [ Item [ id ] [ SpawnSpeed ] ] + 260 ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "3", 0 ); else menu_additem ( menu, MenuItem, "3", ( 1<<31 ) ); } else menu_additem ( menu, "\ySpeed \w- \rNivelul Maxim", "3", ( 1<<31 ) ); } #endif #if defined UPGRADE_SPAWNGRAVITY if ( is_user_connected ( id ) ) { if ( Item [ id ] [ SpawnGravity ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wGravitatie \y| \wLevel:\y %d \y| \wObtine: \r%d\w Gravitatie", Item [ id ] [ SpawnGravity ], SpawnGravity_ [ Item [ id ] [ SpawnGravity ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "4", 0 ); else menu_additem ( menu, MenuItem, "4", ( 1<<31 ) ); } else menu_additem ( menu, "\yGravity \w- \rNivelul Maxim", "4", ( 1<<31 ) ); } #endif #if defined UPGRADE_KILLBONUS if ( is_user_connected ( id ) ) { if ( Item [ id ] [ KillBonus ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wOmori HP \y| \wLevel:\y %d \y| \wObtine: \r%d\y HP\w/\rKill", Item [ id ] [ KillBonus ], KillBonus_ [ Item [ id ] [ KillBonus ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "5", 0 ); else menu_additem ( menu, MenuItem, "5", ( 1<<31 ) ); } else menu_additem ( menu, "\yOmori HP \w- \rNivelul Maxim", "5", ( 1<<31 ) ); } #endif #if defined UPGRADE_DAMAGEMULTIPLIER if ( is_user_connected ( id ) ) { if ( Item [ id ] [ DamageMultiplier ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wMultiplicator De Daune \y| \wLevel:\y %d \y| \wAdauga: \r++%d\w Damage", Item [ id ] [ DamageMultiplier ], DamageMultiplier_ [ Item [ id ] [ DamageMultiplier ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "6", 0 ); else menu_additem ( menu, MenuItem, "6", ( 1<<31 ) ); } else menu_additem ( menu, "\yDmg Multiplier \w- \rNivelul Maxim", "6", ( 1<<31 ) ); } #endif #if defined UPGRADE_CRITICALHIT if ( is_user_connected ( id ) ) { if( !( get_user_flags ( id ) & VIP_LEVEL ) ) { if ( User [ id ] [ Level ] >= 10 ) { if ( Item [ id ] [ CriticalHit ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wLovitura Critica \y| \wLevel:\y %d \y| \wAre: \r%d%%\w Sansa", Item [ id ] [ CriticalHit ], CriticalHit_ [ Item [ id ] [ CriticalHit ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "7", 0 ); else menu_additem ( menu, MenuItem, "7", ( 1<<31 ) ); } else menu_additem ( menu, "\yCritical Hit \w- \rNivelul Maxim", "7", ( 1<<31 ) ); } else menu_additem ( menu, "Hit critice - Ai nevoie de +10 Lvl sau VIP", "7", ( 1<<31 ) ); } else if ( get_user_flags ( id ) & VIP_LEVEL ) { if ( Item [ id ] [ CriticalHit ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wLovitura Critica \y| \wLevel:\y %d \y| \wAre: \r%d%%\w Sansa", Item [ id ] [ CriticalHit ], CriticalHit_ [ Item [ id ] [ CriticalHit ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "7", 0 ); else menu_additem ( menu, MenuItem, "7", ( 1<<31 ) ); } else menu_additem ( menu, "\yLovitura Critica \w- \rNivelul Maxim", "7", ( 1<<31 ) ); } } #endif #if defined UPGRADE_SHIELD if ( is_user_connected ( id ) ) { if( !( get_user_flags ( id ) & VIP_LEVEL ) ) { if ( User [ id ] [ Level ] >= 10 ) { if ( Item [ id ] [ Shield ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wScut \y| \wLevel:\y %d \y| \wAre: \r%d%%\w Sansa", Item [ id ] [ Shield ], Shield_ [ Item [ id ] [ Shield ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "8", 0 ); else menu_additem ( menu, MenuItem, "8", ( 1<<31 ) ); } else menu_additem ( menu, "\yLovitura Critica \w- \rMaximum Level", "8", ( 1<<31 ) ); } else menu_additem ( menu, "Scut - Ai nevoie de +10 Lvl sau VIP", "8", ( 1<<31 ) ); } else if ( get_user_flags ( id ) & VIP_LEVEL ) { if ( Item [ id ] [ Shield ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wScut \y| \wLevel:\y %d \y| \wAre: \r%d%%\w Sansa", Item [ id ] [ Shield ], Shield_ [ Item [ id ] [ Shield ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "8", 0 ); else menu_additem ( menu, MenuItem, "8", ( 1<<31 ) ); } else menu_additem ( menu, "\yShield \w- \rNivelul Maxim", "8", ( 1<<31 ) ); } } #endif #if defined UPGRADE_DEADLYSHOT if ( is_user_connected ( id ) ) { if( !( get_user_flags ( id ) & VIP_LEVEL ) ) { if ( User [ id ] [ Level ] >= 10 ) { if ( Item [ id ] [ DeadlyShot ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wLovitura Mortala \y| \wLevel:\y %d \y| \wHave: \r%d%%\w Sansa", Item [ id ] [ DeadlyShot ], DeadlyShot_ [ Item [ id ] [ DeadlyShot ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "9", 0 ); else menu_additem ( menu, MenuItem, "9", ( 1<<31 ) ); } else menu_additem ( menu, "\yLovitura Mortala \w- \rNivelul Maxim", "9", ( 1<<31 ) ); } else menu_additem ( menu, "Lovitura Mortala - Nevoie de +10 Lvl sau VIP", "9", ( 1<<31 ) ); } else if ( get_user_flags ( id ) & VIP_LEVEL ) { if ( Item [ id ] [ DeadlyShot ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wLovitura Mortala \y| \wLevel:\y %d \y| \wAre: \r%d%%\w Sansa", Item [ id ] [ DeadlyShot ], DeadlyShot_ [ Item [ id ] [ DeadlyShot ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "9", 0 ); else menu_additem ( menu, MenuItem, "9", ( 1<<31 ) ); } else menu_additem ( menu, "\yDeadly Shot \w- \rNivelul Maxim", "9", ( 1<<31 ) ); } } #endif #if defined UPGRADE_STUNNING if ( is_user_connected ( id ) ) { if( !( get_user_flags ( id ) & VIP_LEVEL ) ) { if ( User [ id ] [ Level ] >= 10 ) { if ( Item [ id ] [ Stunning ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wMarcatori Uimitoare \y| \wLevel:\y %d \y| \wAre: \r%d%%\w Sansa", Item [ id ] [ Stunning ], Stunning_ [ Item [ id ] [ Stunning ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "10", 0 ); else menu_additem ( menu, MenuItem, "10", ( 1<<31 ) ); } else menu_additem ( menu, "\yMarcatori Uimitoare \w- \rNivelul Maxim", "10", ( 1<<31 ) ); } else menu_additem ( menu, "Marcatori Uimitoare - Nevoie de +10 Lvl sau VIP", "10", ( 1<<31 ) ); } else if ( get_user_flags ( id ) & VIP_LEVEL ) { if ( Item [ id ] [ Stunning ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wMarcatori Uimitoare \y| \wLevel:\y %d \y| \wAre: \r%d%%\w Sansa", Item [ id ] [ Stunning ], Stunning_ [ Item [ id ] [ Stunning ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "10", 0 ); else menu_additem ( menu, MenuItem, "10", ( 1<<31 ) ); } else menu_additem ( menu, "\yMarcatori Uimitoare \w- \rMaximum Level", "10", ( 1<<31 ) ); } } #endif #if defined UPGRADE_REGENERATION if ( is_user_connected ( id ) ) { if( !( get_user_flags ( id ) & VIP_LEVEL ) ) { if ( User [ id ] [ Level ] >= 15 ) { if ( Item [ id ] [ Regeneration ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wRegenerarea Sanatati \y| \wLevel:\y %d \y| \wObtine: \r%d\y HP\w/\rsecond", Item [ id ] [ Regeneration ], Regeneration_ [ Item [ id ] [ Regeneration ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "11", 0 ); else menu_additem ( menu, MenuItem, "11", ( 1<<31 ) ); } else menu_additem ( menu, "\yRegenerarea Sanatati \w- \rNivelul Maxim", "11", ( 1<<31 ) ); } else menu_additem ( menu, "Health Regeneration - Nevoie de +10 Sau VIP", "11", ( 1<<31 ) ); } else if ( get_user_flags ( id ) & VIP_LEVEL ) { if ( Item [ id ] [ Regeneration ] < 5 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\wRegenerarea Sannati \y| \wLevel:\y %d \y| \wObtine: \r%d\y HP\w/\rsecond", Item [ id ] [ Regeneration ], Regeneration_ [ Item [ id ] [ Regeneration ] ] ); if ( User [ id ] [ UpgradePoints ] > 0 ) menu_additem ( menu, MenuItem, "11", 0 ); else menu_additem ( menu, MenuItem, "11", ( 1<<31 ) ); } else menu_additem ( menu, "\yRegenerarea Sanati \w- \rNivelul Maxim", "11", ( 1<<31 ) ); } } #endif #if defined SELECT_ULTIMATE if ( is_user_connected ( id ) ) { if( !( get_user_flags ( id ) & VIP_LEVEL ) ) { if ( User [ id ] [ Level ] >= 20 ) { if ( NextUltimate [ id ] > 0 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\yUltimata \w-\r %s", CSDM_Ultimates [ NextUltimate [ id ] ] ); menu_additem ( menu, MenuItem, "12", 0 ); } else menu_additem ( menu, "\wUltimata \y-\r Nu a fost aleasa", "12", 0 ); } else menu_additem ( menu, "\rUltimata \w- \yNevoie +20 LvL sau \rVIP", "12", ( 1<<31 ) ); } else if ( get_user_flags ( id ) & VIP_LEVEL ) { if ( NextUltimate [ id ] > 0 ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\yUltimata \w-\r %s", CSDM_Ultimates [ NextUltimate [ id ] ] ); menu_additem ( menu, MenuItem, "12", 0 ); } else menu_additem ( menu, "\wUltimata \y-\r Nu a fost aleasa", "12", 0 ); } } #endif //menu_setprop ( menu, MPROP_PERPAGE, "5" ); menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL ); menu_display ( id, menu, 0 ); return 1; } public UpgradeMenu_Handle ( id, menu, item ) { if( item == MENU_EXIT ) return 1; new data [ 6 ], szName [ 64 ]; new access, callback; menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback ); new key = str_to_num ( data ); switch ( key ) { #if defined UPGRADE_SPAWNHEALTH case 1: { Item [ id ] [ SpawnHealth ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Sagetile de Sanatate!t Nivelul este!g %d!t.", szPrefix, Item [ id ] [ SpawnHealth ] ); chat_color ( id, "%s Vei avea!g %d!t HP la fiecare Spawn.", szPrefix, SpawnHealth_ [ Item [ id ] [ SpawnHealth ] ] + 100 ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_SPAWNARMOR case 2: { Item [ id ] [ SpawnArmor ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Armura la Spawn!t Nivelul este!g %d!t.", szPrefix, Item [ id ] [ SpawnArmor ] ); chat_color ( id, "%s Vei avea!g %d!t AP la fiecare SPAWN.", szPrefix, SpawnArmor_ [ Item [ id ] [ SpawnArmor ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_SPAWNSPEED case 3: { Item [ id ] [ SpawnSpeed ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Viteza la Spawn!t Nivelul este!g %d!t.", szPrefix, Item [ id ] [ SpawnSpeed ] ); chat_color ( id, "%s Vei avea!g %d!t Viteza la fiecare SPAWN.", szPrefix, SpawnSpeed_ [ Item [ id ] [ SpawnSpeed ] ] + 260 ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_SPAWNGRAVITY case 4: { Item [ id ] [ SpawnGravity ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Gravitatie la Spawn!t level is!g %d!t.", szPrefix, Item [ id ] [ SpawnGravity ] ); chat_color ( id, "%s Vei avea!g %d!t Gravitatie la fiecare Spawn.", szPrefix, SpawnGravity_ [ Item [ id ] [ SpawnGravity ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_KILLBONUS case 5: { Item [ id ] [ KillBonus ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Kill HP!t level is!g %d!t.", szPrefix, Item [ id ] [ KillBonus ] ); chat_color ( id, "%s Vei avea!g %d!t HP!g/!tkill", szPrefix, KillBonus_ [ Item [ id ] [ KillBonus ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_DAMAGEMULTIPLIER case 6: { Item [ id ] [ DamageMultiplier ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Damage-ul!g Tau a fost Multiplicat!t level is!g %d!t.", szPrefix, Item [ id ] [ DamageMultiplier ] ); chat_color ( id, "%s Vei face mai multe daune!g %d!t mai mari.", szPrefix, DamageMultiplier_ [ Item [ id ] [ DamageMultiplier ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_CRITICALHIT case 7: { Item [ id ] [ CriticalHit ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Lovitura Critica!t level is!g %d!t.", szPrefix, Item [ id ] [ CriticalHit ] ); chat_color ( id, "%s Vei avea!g %d%%!t Sansa de a face o !gLovitura Crtica!t.", szPrefix, CriticalHit_ [ Item [ id ] [ CriticalHit ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_SHIELD case 8: { Item [ id ] [ Shield ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Scut!t Nivelul este!g %d!t.", szPrefix, Item [ id ] [ Shield ] ); chat_color ( id, "%s Vei avea!g %d%%!t sanss de a bloca daune inamice.", szPrefix, Shield_ [ Item [ id ] [ Shield ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_DEADLYSHOT case 9: { Item [ id ] [ DeadlyShot ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Lovitura Mortala!t Nivelul este!g %d!t.", szPrefix, Item [ id ] [ DeadlyShot ] ); chat_color ( id, "%s Vei avea!g %d%%!t Sansa de a face !gLovitura Mortala.", szPrefix, DeadlyShot_ [ Item [ id ] [ DeadlyShot ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_STUNNING case 10: { Item [ id ] [ Stunning ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Marcatori uimitoare!t Nivelul este!g %d!t.", szPrefix, Item [ id ] [ Stunning ] ); chat_color ( id, "%s Vei avea!g %d%%!t Sansa de!g Inghetare!t a unui inamic.", szPrefix, Stunning_ [ Item [ id ] [ Stunning ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined UPGRADE_REGENERATION case 11: { Item [ id ] [ Regeneration ] += 1; csdm_set_user_points ( id, csdm_get_user_points ( id ) - 1 ); chat_color ( id, "%s Felicitari! Ai!g Regenerarea Sanatii!t Nivelul este!g %d!t.", szPrefix, Item [ id ] [ Regeneration ] ); chat_color ( id, "%s Vei avea!g %d !tHP!g/!tsecond", szPrefix, Regeneration_ [ Item [ id ] [ Regeneration ] ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif if ( User [ id ] [ UpgradePoints ] > 0 ) ShowUpgradeMenu ( id ); else menu_destroy ( menu ); } #endif #if defined SELECT_ULTIMATE case 12: ShowUltimatesMenu ( id ); #endif } return 1; } #if defined UPGRADELVL_SOUND public PlayUpgradeLevelSound ( id ) { switch ( random_num ( 1, 3 ) ) { case 1: client_cmd ( id, "spk %s", UPGRADELVL_SOUND1 ); case 2: client_cmd ( id, "spk %s", UPGRADELVL_SOUND2 ); case 3: client_cmd ( id, "spk %s", UPGRADELVL_SOUND3 ); } } #endif #if defined SELECT_ULTIMATE public ShowUltimatesMenu ( id ) { new szMenu [ 256 ]; formatex ( szMenu, sizeof ( szMenu ) -1,"\rMeniul Ultimatei" ); new menu = menu_create ( szMenu, "UltimateMenu_Handle" ); #if defined ULT_SUICIDE if ( is_user_connected ( id ) ) { new _ult = 1; if ( NextUltimate [ id ] == _ult ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\r%s \w-\y Selectat", CSDM_Ultimates [ NextUltimate [ id ] ] ); menu_additem ( menu, MenuItem, "1", ( 1<<31 ) ); } else { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\w%s", CSDM_Ultimates [ _ult ] ); menu_additem ( menu, MenuItem, "1", 0 ); } } #endif #if defined ULT_BLINK if ( is_user_connected ( id ) ) { new _ult = 2; if ( NextUltimate [ id ] == _ult ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\r%s \w-\y Selectat", CSDM_Ultimates [ NextUltimate [ id ] ] ); menu_additem ( menu, MenuItem, "2", ( 1<<31 ) ); } else { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\w%s", CSDM_Ultimates [ _ult ] ); menu_additem ( menu, MenuItem, "2", 0 ); } } #endif #if defined ULT_CHAINLIGHTNING if ( is_user_connected ( id ) ) { new _ult = 3; if ( NextUltimate [ id ] == _ult ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\r%s \w-\y Selectat", CSDM_Ultimates [ NextUltimate [ id ] ] ); menu_additem ( menu, MenuItem, "3", ( 1<<31 ) ); } else { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\w%s", CSDM_Ultimates [ _ult ] ); menu_additem ( menu, MenuItem, "3", 0 ); } } #endif #if defined ULT_IMMOLATE if ( is_user_connected ( id ) ) { new _ult = 4; if ( NextUltimate [ id ] == _ult ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\r%s \w-\y Selectat", CSDM_Ultimates [ NextUltimate [ id ] ] ); menu_additem ( menu, MenuItem, "4", ( 1<<31 ) ); } else { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\w%s", CSDM_Ultimates [ _ult ] ); menu_additem ( menu, MenuItem, "4", 0 ); } } #endif #if defined ULT_LOCUSTSWARM if ( is_user_connected ( id ) ) { new _ult = 5; if ( NextUltimate [ id ] == _ult ) { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\r%s \w-\y Selectat", CSDM_Ultimates [ NextUltimate [ id ] ] ); menu_additem ( menu, MenuItem, "5", ( 1<<31 ) ); } else { new MenuItem [ 256 ]; formatex ( MenuItem, sizeof ( MenuItem ) -1,"\w%s", CSDM_Ultimates [ _ult ] ); menu_additem ( menu, MenuItem, "5", 0 ); } } #endif menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL ); menu_display ( id, menu, 0 ); } public UltimateMenu_Handle ( id, menu, item ) { if( item == MENU_EXIT ) return 1; new data [ 6 ], szName [ 64 ]; new access, callback; menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback ); new key = str_to_num ( data ); switch ( key ) { #if defined ULT_SUICIDE case 1: { if ( !PlayerUltimate [ id ] ) { PlayerUltimate [ id ] = str_to_num ( ULTIMATE_SUICIDE [ 1 ] ); if ( !UltimateGlobalDelay && !UltimateDelay [ id ] ) Ultimate_Icon ( id, 1 ); else if ( UltimateGlobalDelay && UltimateDelay [ id ] ) UltimateDelay [ id ] = 0; else if ( !UltimateGlobalDelay && UltimateDelay [ id ] && !task_exists ( id+TASK_DELAY ) ) Ultimate_Delay ( id ); } else chat_color ( id, "%s Ultimata !gVa fi activata!t La urmatorul!g Spawn!t.", szPrefix ); NextUltimate [ id ] = str_to_num ( ULTIMATE_SUICIDE [ 1 ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif } #endif #if defined ULT_BLINK case 2: { if ( !PlayerUltimate [ id ] ) { PlayerUltimate [ id ] = str_to_num ( ULTIMATE_BLINK [ 1 ] ); if ( !UltimateGlobalDelay && !UltimateDelay [ id ] ) Ultimate_Icon ( id, 1 ); else if ( UltimateGlobalDelay && UltimateDelay [ id ] ) UltimateDelay [ id ] = 0; else if ( !UltimateGlobalDelay && UltimateDelay [ id ] && !task_exists ( id+TASK_DELAY ) ) Ultimate_Delay ( id ); } else chat_color ( id, "%s Ultimata !gVa fi activata!t La urmatorul!g Spawn!t.", szPrefix ); NextUltimate [ id ] = str_to_num ( ULTIMATE_BLINK [ 1 ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif } #endif #if defined ULT_CHAINLIGHTNING case 3: { if ( !PlayerUltimate [ id ] ) { PlayerUltimate [ id ] = str_to_num ( ULTIMATE_CHAINLIGHTNING [ 1 ] ); if ( !UltimateGlobalDelay && !UltimateDelay [ id ] ) Ultimate_Icon ( id, 1 ); else if ( UltimateGlobalDelay && UltimateDelay [ id ] ) UltimateDelay [ id ] = 0; else if ( !UltimateGlobalDelay && UltimateDelay [ id ] && !task_exists ( id+TASK_DELAY ) ) Ultimate_Delay ( id ); } else chat_color ( id, "%s The !gUltimate!t will be active in the!g next spawn!t.", szPrefix ); NextUltimate [ id ] = str_to_num ( ULTIMATE_CHAINLIGHTNING [ 1 ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif } #endif #if defined ULT_IMMOLATE case 4: { if ( !PlayerUltimate [ id ] ) { PlayerUltimate [ id ] = str_to_num ( ULTIMATE_IMMOLATE [ 1 ] ); if ( !UltimateGlobalDelay && !UltimateDelay [ id ] ) Ultimate_Icon ( id, 1 ); else if ( UltimateGlobalDelay && UltimateDelay [ id ] ) UltimateDelay [ id ] = 0; else if ( !UltimateGlobalDelay && UltimateDelay [ id ] && !task_exists ( id+TASK_DELAY ) ) Ultimate_Delay ( id ); } else chat_color ( id, "%s Ultimata !gVa fi activata!t La urmatorul!g Spawn!t.", szPrefix ); NextUltimate [ id ] = str_to_num ( ULTIMATE_IMMOLATE [ 1 ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif } #endif #if defined ULT_LOCUSTSWARM case 5: { if ( !PlayerUltimate [ id ] ) { PlayerUltimate [ id ] = str_to_num ( ULTIMATE_LOCUSTSWARM [ 1 ] ); if ( !UltimateGlobalDelay && !UltimateDelay [ id ] ) Ultimate_Icon ( id, 1 ); else if ( UltimateGlobalDelay && UltimateDelay [ id ] ) UltimateDelay [ id ] = 0; else if ( !UltimateGlobalDelay && UltimateDelay [ id ] && !task_exists ( id+TASK_DELAY ) ) Ultimate_Delay ( id ); } else chat_color ( id, "%s The !gUltimate!t will be active in the!g next spawn!t.", szPrefix ); NextUltimate [ id ] = str_to_num ( ULTIMATE_LOCUSTSWARM [ 1 ] ); #if defined UPGRADELVL_SOUND PlayUpgradeLevelSound ( id ); #endif } #endif } menu_destroy ( menu ); return 1; } #endif #if defined AIM_MESSAGE public fwdPlayerPreThink( id ) { if( is_user_alive( id ) ) { new target, body; get_user_aiming( id, target, body, 9999 ); new CsTeams:team = cs_get_user_team( id ); if( is_user_alive( target ) ) { if( IsPlayer( target ) ) { new CsTeams:targetTeam = cs_get_user_team( target ); new sName[ 32 ]; get_user_name( target, sName, sizeof ( sName ) -1 ); new sMessage[ 64 ]; if( targetTeam == team ) { formatex( sMessage, sizeof ( sMessage ) -1, "%s: %s HP: %i | AP: %i^nLevel: %d", IsUserVip( target ) ? "VIP" : "Friend", sName, get_user_health( target ), get_user_armor ( target ), csdm_get_user_level ( target ) ); } if( targetTeam == CS_TEAM_CT ) { set_hudmessage( 0, 63, 127, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1 ); } else if( targetTeam == CS_TEAM_T ) { set_hudmessage( 127, 0, 0, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1 ); } show_hudmessage( id, "%s", sMessage ); } } } return FMRES_IGNORED; } #endif #if defined DONATE_GOLD public hook_say ( id ) { static s_Args [ 32 ]; read_args ( s_Args, sizeof ( s_Args ) - 1 ); remove_quotes ( s_Args ); if ( equal ( s_Args, "/give", 5 ) || equal ( s_Args, "/donate", 5 ) ) { replace ( s_Args, sizeof ( s_Args ) - 1, "/", "" ); client_cmd ( id, "amx_%s", s_Args ); } return 0; } public give_gold ( id ) { new s_Arg1 [ 32 ], s_Arg2 [ 6 ]; read_argv ( 1, s_Arg1, 31 ); read_argv ( 2, s_Arg2, 5 ); new iTarget = cmd_target ( id, s_Arg1, 8 ); new iAmmount = str_to_num ( s_Arg2 ); if ( iTarget == id ) { chat_color ( id, "%s Eroare! Nu iti poti dona !ggold !ttie insuti.", szPrefix ); return 1; } if ( !iTarget ) { chat_color ( id, "%s Eroare! Acest!g jucator!t nu exista.", szPrefix ); return 1; } new iCurrentMoney = csdm_get_user_gold ( id ); if ( iAmmount <= 0 ) { chat_color ( id, "%s Eroare! Nu poti dona o suma!g negativa!t sau egala cu!g 0!t.", szPrefix ); return 1; } if ( iAmmount > iCurrentMoney ) { chat_color ( id, "%s Eroare! Aceasta suma este mai mare decat detii.", szPrefix ); return 1; } new iFinalMoney; iFinalMoney = iCurrentMoney - iAmmount; csdm_set_user_gold ( id, iFinalMoney ); new iTargetName [ 32 ], iName [ 32 ]; get_user_name ( iTarget, iTargetName, 31 ); get_user_name ( id, iName, 31 ); chat_color ( id, "%s I-ai donat lui!g %s!t suma de!g %d!t gold.", szPrefix, iTargetName, iAmmount ); new iTargetFinalMoney, iTargetCurrMoney; iTargetCurrMoney = csdm_get_user_gold ( iTarget ); iTargetFinalMoney = iTargetCurrMoney + iAmmount; csdm_set_user_gold ( iTarget, iTargetFinalMoney ); chat_color ( id, "%s Ai primit de la!g %s!t suma de!g %d!t gold.", szPrefix, iName, iAmmount ); return PLUGIN_CONTINUE; } #endif public SaveData ( id ) { new Name [ 32 ]; get_user_name ( id, Name, 31 ); new _UserXp = User [ id ] [ Xp ]; new _UserLevel = User [ id ] [ Level ]; new _UserUpPoints = User [ id ] [ UpgradePoints ]; new _UserGold = User [ id ] [ Gold ]; new _UserUltimate = NextUltimate [ id ]; new _SpawnHealth; #if defined UPGRADE_SPAWNHEALTH _SpawnHealth = Item [ id ] [ SpawnHealth ]; #else _SpawnHealth = Item [ id ] [ TempSpawnHealth ]; #endif new _SpawnArmor; #if defined UPGRADE_SPAWNARMOR _SpawnArmor = Item [ id ] [ SpawnArmor ]; #else _SpawnArmor = Item [ id ] [ TempSpawnArmor ]; #endif new _SpawnSpeed; #if defined UPGRADE_SPAWNSPEED _SpawnSpeed = Item [ id ] [ SpawnSpeed ]; #else _SpawnSpeed = Item [ id ] [ TempSpawnSpeed ]; #endif new _SpawnGravity; #if defined UPGRADE_SPAWNGRAVITY _SpawnGravity = Item [ id ] [ SpawnGravity ]; #else _SpawnGravity = Item [ id ] [ TempSpawnGravity ]; #endif new _KillBonus; #if defined UPGRADE_KILLBONUS _KillBonus = Item [ id ] [ KillBonus ]; #else _KillBonus = Item [ id ] [ TempKillBonus ]; #endif new _DamageMultiplier; #if defined UPGRADE_DAMAGEMULTIPLIER _DamageMultiplier = Item [ id ] [ DamageMultiplier ]; #else _DamageMultiplier = Item [ id ] [ TempDamageMultiplier ]; #endif new _CriticalHit; #if defined UPGRADE_CRITICALHIT _CriticalHit = Item [ id ] [ CriticalHit ]; #else _CriticalHit = Item [ id ] [ TempCriticalHit ]; #endif new _Shield; #if defined UPGRADE_SHIELD _Shield = Item [ id ] [ Shield ]; #else _Shield = Item [ id ] [ TempShield ]; #endif new _DeadlyShot; #if defined UPGRADE_DEADLYSHOT _DeadlyShot = Item [ id ] [ DeadlyShot ]; #else _DeadlyShot = Item [ id ] [ TempDeadlyShot ]; #endif new _Stunning; #if defined UPGRADE_DEADLYSHOT _Stunning = Item [ id ] [ Stunning ]; #else _Stunning = Item [ id ] [ TempStunning ]; #endif new _Regeneration; #if defined UPGRADE_REGENERATION _Regeneration = Item [ id ] [ Regeneration ]; #else _Regeneration = Item [ id ] [ TempRegeneration ]; #endif new StrongData [ 1024 ]; formatex ( StrongData, sizeof ( StrongData ) - 1, "^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^" ^"%i^"", _UserXp, _UserLevel, _UserUpPoints, _UserGold, _SpawnHealth, _SpawnArmor, _SpawnSpeed, _SpawnGravity, _KillBonus, _DamageMultiplier, _CriticalHit, _Shield, _DeadlyShot, _Stunning, _Regeneration, _UserUltimate ); new Save [ 1024 ]; format ( Save, sizeof ( Save ) - 1, "^"%s^" %s", Name, StrongData ); new Line [ 128 ], Linie, IsPlayer = false, Arg1 [ 32 ]; new FileOpen = fopen ( SaveDataFile, "rt" ); while ( !feof ( FileOpen ) ) { fgets ( FileOpen, Line, 127 ); trim ( Line ); parse ( Line, Arg1, 31 ); if ( equali ( Arg1, Name ) ) { write_file ( SaveDataFile, Save, Linie ); IsPlayer = true; break } Linie++; } fclose ( FileOpen ) if ( !IsPlayer ) write_file ( SaveDataFile, Save, -1 ); } public LoadData ( 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 ], Arg17 [ 32 ]; new FileOpen = fopen ( SaveDataFile, "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, Arg17, 31 ); if ( equali ( Arg1, Name ) ) { User [ id ] [ Xp ] = str_to_num ( Arg2 ); User [ id ] [ Level ] = str_to_num ( Arg3 ); User [ id ] [ UpgradePoints ] = str_to_num ( Arg4 ); User [ id ] [ Gold ] = str_to_num ( Arg5 ); NextUltimate [ id ] = str_to_num ( Arg17 ); #if defined UPGRADE_SPAWNHEALTH Item [ id ] [ SpawnHealth ] = str_to_num ( Arg6 ); #else Item [ id ] [ TempSpawnHealth ] = str_to_num ( Arg6 ); #endif #if defined UPGRADE_SPAWNARMOR Item [ id ] [ SpawnArmor ] = str_to_num ( Arg7 ); #else Item [ id ] [ TempSpawnArmor ] = str_to_num ( Arg7 ); #endif #if defined UPGRADE_SPAWNSPEED Item [ id ] [ SpawnSpeed ] = str_to_num ( Arg8 ); #else Item [ id ] [ TempSpawnSpeed ] = str_to_num ( Arg8 ); #endif #if defined UPGRADE_SPAWNGRAVITY Item [ id ] [ SpawnGravity ] = str_to_num ( Arg9 ); #else Item [ id ] [ TempSpawnGravity ] = str_to_num ( Arg9 ); #endif #if defined UPGRADE_KILLBONUS Item [ id ] [ KillBonus ] = str_to_num ( Arg10 ); #else Item [ id ] [ TempKillBonus ] = str_to_num ( Arg10 ); #endif #if defined UPGRADE_DAMAGEMULTIPLIER Item [ id ] [ DamageMultiplier ] = str_to_num ( Arg11 ); #else Item [ id ] [ TempDamageMultiplier ] = str_to_num ( Arg11 ); #endif #if defined UPGRADE_CRITICALHIT Item [ id ] [ CriticalHit ] = str_to_num ( Arg12 ); #else Item [ id ] [ TempCriticalHit ] = str_to_num ( Arg12 ); #endif #if defined UPGRADE_SHIELD Item [ id ] [ Shield ] = str_to_num ( Arg13 ); #else Item [ id ] [ TempShield ] = str_to_num ( Arg13 ); #endif #if defined UPGRADE_DEADLYSHOT Item [ id ] [ DeadlyShot ] = str_to_num ( Arg14 ); #else Item [ id ] [ TempDeadlyShot ] = str_to_num ( Arg14 ); #endif #if defined UPGRADE_STUNNING Item [ id ] [ Stunning ] = str_to_num ( Arg15 ); #else Item [ id ] [ TempStunning ] = str_to_num ( Arg15 ); #endif #if defined UPGRADE_REGENERATION Item [ id ] [ Regeneration ] = str_to_num ( Arg16 ); #else Item [ id ] [ TempRegeneration ] = str_to_num ( Arg16 ); #endif IsPlayer = true; break; } } fclose ( FileOpen ); if ( !IsPlayer ) { User [ id ] [ Xp ] = 0; User [ id ] [ Level ] = 0; User [ id ] [ UpgradePoints ] = 0; User [ id ] [ Gold ] = 50; NextUltimate [ id ] = 0; #if defined UPGRADE_SPAWNHEALTH Item [ id ] [ SpawnHealth ] = 0; #else Item [ id ] [ TempSpawnHealth ] = 0; #endif #if defined UPGRADE_SPAWNARMOR Item [ id ] [ SpawnArmor ] = 0; #else Item [ id ] [ TempSpawnArmor ] = 0; #endif #if defined UPGRADE_SPAWNSPEED Item [ id ] [ SpawnSpeed ] = 0; #else Item [ id ] [ TempSpawnSpeed ] = 0; #endif #if defined UPGRADE_SPAWNGRAVITY Item [ id ] [ SpawnGravity ] = 0; #else Item [ id ] [ TempSpawnGravity ] = 0; #endif #if defined UPGRADE_KILLBONUS Item [ id ] [ KillBonus ] = 0; #else Item [ id ] [ TempKillBonus ] = 0; #endif #if defined UPGRADE_DAMAGEMULTIPLIER Item [ id ] [ DamageMultiplier ] = 0; #else Item [ id ] [ TempDamageMultiplier ] = 0; #endif #if defined UPGRADE_CRITICALHIT Item [ id ] [ CriticalHit ] = 0; #else Item [ id ] [ TempCriticalHit ] = 0; #endif #if defined UPGRADE_SHIELD Item [ id ] [ Shield ] = 0; #else Item [ id ] [ TempShield ] = 0; #endif #if defined UPGRADE_DEADLYSHOT Item [ id ] [ DeadlyShot ] = 0; #else Item [ id ] [ TempDeadlyShot ] = 0; #endif #if defined UPGRADE_STUNNING Item [ id ] [ Stunning ] = 0; #else Item [ id ] [ TempStunning ] = 0; #endif #if defined UPGRADE_REGENERATION Item [ id ] [ Regeneration ] = 0; #else Item [ id ] [ TempRegeneration ] = 0; #endif } } #if defined ULTIMATE_KILLSTREAK public event_death(id) { new killer = read_data(1); new victim = read_data(2); new headshot = read_data(3); new weapon[24], vicname[32], killname[32] read_data(4,weapon,23) get_user_name(victim,vicname,31) get_user_name(killer,killname,31) if(headshot == 1 && get_pcvar_num(hsenable) ==1) { set_hudmessage(0, 0, 255, -1.0, 0.30, 0, 6.0, 6.0) show_hudmessage(0, (hsmessages[random_num(0,3)]), killname, vicname) new i i = random_num(0,hsounds-1) client_cmd(0,"spk %s",hslist) } if(weapon[0] == 'k' && get_pcvar_num(knifeenable) ==1) { set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0) show_hudmessage(0, (knmessages[random_num(0,2)]), killname, vicname) new r r = random_num(0,knsounds-1) client_cmd(0,"spk %s",knlist[r]) } if(weapon[1] == 'r' && get_pcvar_num(nadecvar) ==1) { set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0) show_hudmessage(0,(nademessages[random_num(0,2)]),killname,vicname) client_cmd(0,"spk ultimate_sounds/nade_ultimate") } if(kill[killer][0] && equal(kill[killer],weapon) && get_pcvar_num(cvardouble) == 1) { set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0) show_hudmessage(0,"Wow %s made a double kill", killname) kill[killer][0] = 0; new q q= random_num(0,maxdbsounds-1) client_cmd(0,"spk %s",doublelist[q]) } else { kill[killer] = weapon; set_task(0.1,"clear_kill",TASK_CLEAR_KILL+killer); } kills[killer] += 1; kills[victim] = 0; deaths[killer] = 0; deaths[victim] += 1; for (new i = 0; i < LEVELS; i++) { if (kills[killer] == levels) { announce(killer, i); return PLUGIN_CONTINUE; } } return PLUGIN_CONTINUE; } announce(killer, level) { new name[33] new r = random(256) new g = random(256) new b = random(256) new Ult_Gold = ULTIMATE_KILLSTREAK_GOLD [ level ]; csdm_set_user_gold ( killer, csdm_get_user_gold ( killer ) + Ult_Gold ); new Message2 [ 256 ]; formatex ( Message2, sizeof ( Message2 ) - 1,"+%d", Ult_Gold ); HudMessage ( killer, Message2, 0, 127, 255, 0.85, 0.85, _, _, 0.5 ); get_user_name(killer, name, 32); set_hudmessage(r,g,b, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2); if( (get_pcvar_num(killstreaktype) <= 0 ) || get_pcvar_num(killstreaktype) > 3) return PLUGIN_HANDLED; if(get_pcvar_num(killstreaktype) == 1) { show_hudmessage(0, messages[level], name); } if(get_pcvar_num(killstreaktype) == 2) { client_cmd(0, "spk %s", sounds[level]); } if(get_pcvar_num(killstreaktype) == 3) { show_hudmessage(0, messages[level], name); client_cmd(0, "spk %s", sounds[level]); } return PLUGIN_CONTINUE; } public reset_hud(id) { if (is_mode_set(16)) { if (kills[id] > levels[0]) { client_print(id, print_chat, "* You are on a killstreak with %d kills.", kills[id]); } else if (deaths[id] > 1) { client_print(id, print_chat, "* Take care, you are on a deathstreak with %d deaths in a row.", deaths[id]); } } } public rnstart(id) { if(get_pcvar_num(rnstartcvar) == 1) { set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0) show_hudmessage(0, "Prepare To Fight!") new q q = random_num(0,prpsounds-1) client_cmd(0,"spk %s",preplist[q]) } } public clear_kill(taskid) { new id = taskid-TASK_CLEAR_KILL; kill[id][0] = 0; } ULTIMATE_KILLSTREAK_PRECACHE ( ) { precache_sound ( "ultimate_sounds/triplekill_ultimate.wav" ); precache_sound ( "ultimate_sounds/maniac.wav" ); precache_sound ( "ultimate_sounds/WhickedSick.wav" ); precache_sound ( "ultimate_sounds/eagleeye.wav" ); precache_sound ( "ultimate_sounds/pancake.wav" ); precache_sound ( "ultimate_sounds/holyshit_ultimate.wav" ); precache_sound ( "ultimate_sounds/ludicrouskill_ultimate.wav" ); precache_sound ( "ultimate_sounds/GodLike.wav" ); precache_sound ( "ultimate_sounds/rampage_ultimate.wav" ); precache_sound ( "ultimate_sounds/unstoppable_ultimate.wav" ); precache_sound ( "ultimate_sounds/monsterkill_ultimate.wav" ); precache_sound ( "ultimate_sounds/headshot1_ultimate.wav" ); precache_sound ( "ultimate_sounds/headshot2_ultimate.wav" ); precache_sound ( "ultimate_sounds/Ownage.wav" ); precache_sound ( "ultimate_sounds/knife1_ultimate.wav" ); precache_sound ( "ultimate_sounds/knife2_ultimate.wav" ); precache_sound ( "ultimate_sounds/prepare1_ultimate.wav" ); precache_sound ( "ultimate_sounds/prepare2_ultimate.wav" ); precache_sound ( "ultimate_sounds/prepare3_ultimate.wav" ); precache_sound ( "ultimate_sounds/nade_ultimate.wav" ); precache_sound ( "ultimate_sounds/suicide1_ultimate.wav" ); precache_sound ( "ultimate_sounds/suicide2_ultimate.wav" ); precache_sound ( "ultimate_sounds/suicide3_ultimate.wav" ); precache_sound ( "ultimate_sounds/suicide4_ultimate.wav" ); precache_sound ( "ultimate_sounds/doublekill1_ultimate.wav" ); precache_sound ( "ultimate_sounds/doublekill2_ultimate.wav" ); precache_sound ( "ultimate_sounds/Combowhore.wav" ); } #endif #if defined SELECT_ULTIMATE public set_user_ultimate(id, ultimate) { if(is_user_connected(id)) NextUltimate[id] = ultimate } public get_user_ultimate(id) { return is_user_connected(id) ? PlayerUltimate[id] : 0 } public get_user_ultimate_name(id) { new None[64]; formatex(None,sizeof(None)-1,"None"); if(is_user_connected(id)) { #if defined ULT_SUICIDE if(get_user_ultimate(id) == str_to_num(ULTIMATE_SUICIDE[1])) { new Suicide[64]; formatex(Suicide,sizeof(Suicide)-1,"%s", ULTIMATE_SUICIDE[0]); return Suicide } #endif #if defined ULT_BLINK if(get_user_ultimate(id) == str_to_num(ULTIMATE_BLINK[1])) { new Blink[64]; formatex(Blink,sizeof(Blink)-1,"%s", ULTIMATE_BLINK[0]); return Blink } #endif #if defined ULT_CHAINLIGHTNING if(get_user_ultimate(id) == str_to_num(ULTIMATE_CHAINLIGHTNING[1])) { new ChainLighthing[64]; formatex(ChainLighthing,sizeof(ChainLighthing)-1,"%s", ULTIMATE_CHAINLIGHTNING[0]); return ChainLighthing } #endif #if defined ULT_IMMOLATE if(get_user_ultimate(id) == str_to_num(ULTIMATE_IMMOLATE[1])) { new Immolate[64]; formatex(Immolate,sizeof(Immolate)-1,"%s", ULTIMATE_IMMOLATE[0]); return Immolate } #endif #if defined ULT_LOCUSTSWARM if(get_user_ultimate(id) == str_to_num(ULTIMATE_LOCUSTSWARM[1])) { new LocustWarm[64]; formatex(LocustWarm,sizeof(LocustWarm)-1,"%s", ULTIMATE_LOCUSTSWARM[0]); return LocustWarm } #endif return None } return None } public EVENT_Death ( ) { new Victim = read_data ( 2 ); Ultimate_Reset(Victim); if(is_user_connected(Victim)) { #if defined ULT_SUICIDE if(get_user_ultimate(Victim) == str_to_num(ULTIMATE_SUICIDE[1])) { if(!UltimateGlobalDelay && !UltimateDelay[Victim]) Ultimate_SuicideExplode(Victim) } #endif #if defined ULT_VENGEANCE if(get_user_ultimate(Victim) == str_to_num(ULTIMATE_VENGEANCE[1])) { if(!UltimateGlobalDelay && !UltimateDelay[Victim]) Ultimate_Vengeance(Victim); } #endif } } public EVENT_NewRound() { UltimateGlobalDelay = get_pcvar_num(cvar_ultimate_countdown_start) Ultimate_GlobalDelay(); } public FWD_TraceLine(Float:v1[3], Float:v2[3], noMonsters, pentToSkip) { new Attacker = pentToSkip; new Victim = get_tr(TR_pHit); new HitZone = (1 << get_tr(TR_iHitgroup)); if(is_user_connected(Victim) && is_user_alive(Victim) && is_user_connected(Attacker) && is_user_alive(Attacker)) { if(Ultimate_Is_Searching[Attacker]) { if(get_user_team(Attacker) != get_user_team(Victim)) { #if defined ULT_CHAINLIGHTNING if(get_user_ultimate(Attacker) == str_to_num(ULTIMATE_CHAINLIGHTNING[1])) Ultimate_ChainLightning(Attacker, Victim, HitZone); #endif #if defined ULT_IMMOLATE if(get_user_ultimate(Attacker) == str_to_num(ULTIMATE_IMMOLATE[1])) Ultimate_Immolate(Attacker, Victim); #endif Ultimate_Is_Searching[Attacker] = false; UltimateDelay[Attacker] = get_pcvar_num(cvar_ultimate_countdown); Ultimate_Delay(Attacker) } } } } public FWD_PlayerPreThink(id) { if(is_user_connected(id)) { if(get_user_ultimate(id) && !(get_user_flags(id) & VIP_LEVEL)) { PlayerUltimate[id] = 0 NextUltimate[id] = 0 } } } public HAM_Spawn_Post(id) { if(is_user_connected(id)) { task_exists(TASK_SEARCHING + id) ? remove_task(TASK_SEARCHING + id) : 0; task_exists(TASK_DELAY + id) ? remove_task(TASK_DELAY + id) : 0; UltimateDelay[id] = 0; Ultimate_Is_Searching[id] = false; Ultimate_Icon(id, 0) if(NextUltimate[id] != get_user_ultimate(id)) PlayerUltimate[id] = NextUltimate[id] if(!UltimateGlobalDelay) { if(!UltimateDelay[id]) UltimateDelay[id] = get_pcvar_num(cvar_ultimate_countdown_start); if(!task_exists(id+TASK_DELAY)) Ultimate_Delay(id) } } } public CMD_Ultimate(id) { if(is_user_connected(id) && is_user_alive(id)) { if(!get_user_ultimate(id)) { new Message[64]; formatex(Message,sizeof(Message)-1,"Ultimate not found."); HudMessage(id, Message, _, _, _, _, _, _, _, 1.0); emit_sound(id, CHAN_ITEM, SOUND_ERROR, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } else if(UltimateGlobalDelay > 0) { new Message[64]; formatex(Message,sizeof(Message)-1,"Ultimate not ready.^n(%d seconds remaining).", UltimateGlobalDelay); HudMessage(id, Message, _, _, _, _, _, _, _, 1.0); emit_sound(id, CHAN_ITEM, SOUND_ERROR, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } else if(UltimateDelay[id] > 0) { new Message[64]; formatex(Message,sizeof(Message)-1,"Ultimate not ready.^n(%d seconds remaining).", UltimateDelay[id]); HudMessage(id, Message, _, _, _, _, _, _, _, 1.0); emit_sound(id, CHAN_ITEM, SOUND_ERROR, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } else if(UltimateIsUsed[id]) { new Message[64]; formatex(Message,sizeof(Message)-1,"Ultimate not ready.^n(%d seconds remaining).", UltimateDelay[id]); HudMessage(id, Message, _, _, _, _, _, _, _, 1.0); emit_sound(id, CHAN_ITEM, SOUND_ERROR, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } else { #if defined ULT_SUICIDE if(get_user_ultimate(id) == str_to_num(ULTIMATE_SUICIDE[1])) { if(SuicideBombArmed[id]) { set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE); user_kill(id, 1); UltimateDelay[id] = get_pcvar_num(cvar_ultimate_countdown); Ultimate_Delay(id) Ultimate_SuicideExplode(id) SuicideBombArmed[id] = false } else { SuicideBombArmed[id] = true Ultimate_Icon(id, 2); new Message[64]; formatex(Message,sizeof(Message)-1,"Suicide Bomb Armed^nPress Again To Detonate"); HudMessage(id, Message, 178, 14, 41, _, _, _, _, 2.0); } } #endif #if defined ULT_BLINK if(get_user_ultimate(id) == str_to_num(ULTIMATE_BLINK[1])) { if(Ultimate_Blink(id)) { UltimateDelay[id] = get_pcvar_num(cvar_ultimate_countdown); Ultimate_Delay(id) } else { UltimateDelay[id] = 2; Ultimate_Delay(id) client_print(id, print_center,"Pozitia de teleportare este invalida.") } } #endif #if defined ULT_CHAINLIGHTNING if(get_user_ultimate(id) == str_to_num(ULTIMATE_CHAINLIGHTNING[1])) { if(!Ultimate_Is_Searching[id]) { Ultimate_Is_Searching[id] = true; if(!task_exists(TASK_SEARCHING + id)) { new Parm[2]; Parm[0] = id; Parm[1] = 5; Ultimate_Searching(Parm); } } } #endif #if defined ULT_IMMOLATE if(get_user_ultimate(id) == str_to_num(ULTIMATE_IMMOLATE[1])) { if(!Ultimate_Is_Searching[id]) { Ultimate_Is_Searching[id] = true; if(!task_exists(TASK_SEARCHING + id)) { new Parm[2]; Parm[0] = id; Parm[1] = 5; Ultimate_Searching(Parm); } } } #endif #if defined ULT_LOCUSTSWARM if(get_user_ultimate(id) == str_to_num(ULTIMATE_LOCUSTSWARM[1])) Ultimate_LocustSwarm(id); #endif } } return 1; } public Ultimate_GlobalDelay() { if(UltimateGlobalDelay > 1) { UltimateGlobalDelay--; new Players[32], Num; get_players(Players, Num); for(new i = 0; i < Num; i++) { if(is_user_connected(Players)) Ultimate_Icon(Players, 0); } set_task(1.0, "Ultimate_GlobalDelay") } else if(UltimateGlobalDelay <= 1) { UltimateGlobalDelay = 0; new Players[32], Num; get_players(Players, Num); for(new i = 0; i < Num; i++) { if(is_user_connected(Players) && is_user_alive(Players) && get_user_ultimate(Players)) { emit_sound(Players, CHAN_ITEM, SOUND_ULTIMATEREADY, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); Ultimate_Icon(Players, 1); new Message[64]; formatex(Message,sizeof(Message)-1,"Ultimate is ready."); HudMessage(Players, Message, 255, 127, 0, -1.0, 0.85, 0, 6.0, 1.0); } } } } public Ultimate_Delay(id) { if(id >= TASK_DELAY) id -= TASK_DELAY; if(is_user_connected(id) && is_user_alive(id) && get_user_ultimate(id)) { if(UltimateDelay[id] > 1) { UltimateDelay[id]--; Ultimate_Icon(id, 0); set_task(1.0, "Ultimate_Delay", id+TASK_DELAY); } else if(UltimateDelay[id] <= 1) { UltimateDelay[id] = 0; emit_sound(id, CHAN_ITEM, SOUND_ULTIMATEREADY, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); new Message[64]; formatex(Message,sizeof(Message)-1,"Ultimate is ready."); HudMessage(id, Message, 255, 127, 0, -1.0, 0.85, 0, 6.0, 1.0); Ultimate_Icon(id, 1); } } } public Ultimate_Icon(id, flag) { if(get_user_ultimate(id)) { if(!is_user_alive(id)) flag = 0 new Red, Green, Blue; #if defined ULT_SUICIDE if(get_user_ultimate(id) == str_to_num(ULTIMATE_SUICIDE[1])) { Red=255, Green=0, Blue=0; if(flag == 2 && SuicideBombArmed[id]) Red=255, Green=255, Blue=255; Create_StatusIcon(id, flag, ULTIMATE_SUICIDE[2], Red, Green, Blue); } #endif #if defined ULT_BLINK if(get_user_ultimate(id) == str_to_num(ULTIMATE_BLINK[1])) { Red=0, Green=120, Blue=120; Create_StatusIcon(id, flag, ULTIMATE_BLINK[2], Red, Green, Blue); } #endif #if defined ULT_CHAINLIGHTNING if(get_user_ultimate(id) == str_to_num(ULTIMATE_CHAINLIGHTNING[1])) { Red=255, Green=255, Blue=255; Create_StatusIcon(id, flag, ULTIMATE_CHAINLIGHTNING[2], Red, Green, Blue); } #endif #if defined ULT_IMMOLATE if(get_user_ultimate(id) == str_to_num(ULTIMATE_IMMOLATE[1])) { Red=255, Green=0, Blue=0; if(flag == 2) Red=255, Green=255, Blue=255; Create_StatusIcon(id, flag, ULTIMATE_IMMOLATE[2], Red, Green, Blue); } #endif #if defined ULT_LOCUSTSWARM if(get_user_ultimate(id) == str_to_num(ULTIMATE_LOCUSTSWARM[1])) { Red=0, Green=255, Blue=0; Create_StatusIcon(id, flag, ULTIMATE_LOCUSTSWARM[2], Red, Green, Blue); } #endif } } public Ultimate_Searching(parm[]) { new id = parm[0]; new TimeLeft = parm[1]; parm[1]--; if(!is_user_connected(id) || !is_user_alive(id)) Ultimate_Is_Searching[id] = false; if(TimeLeft == 0) { Ultimate_Is_Searching[id] = false; Ultimate_Icon(id, 1); } if(Ultimate_Is_Searching[id]) { Ultimate_Icon(id, 2); emit_sound(id, CHAN_STATIC, SOUND_SEARCHING, 1.0, ATTN_NORM, 0, PITCH_NORM); set_task(1.0, "Ultimate_Searching", TASK_SEARCHING + id, parm, 2); } } public Ultimate_Reset(id) { #if defined ULT_SUICIDE task_exists(TASK_EXPLOSION + id) ? remove_task(TASK_EXPLOSION + id) : 0; task_exists(TASK_BEAMCYLINDER + id) ? remove_task(TASK_BEAMCYLINDER + id) : 0; SuicideBombArmed[id] = false; #endif #if defined ULT_CHAINLIGHTNING task_exists(TASK_LIGHTNINGNEXT + id) ? remove_task(TASK_LIGHTNINGNEXT + id) : 0; LightningHit[id] = false; #endif #if defined ULT_IMMOLATE task_exists(TASK_BURNING + id) ? remove_task(TASK_BURNING + id) : 0; #endif #if defined ULT_VENGEANCE task_exists(TASK_SPAWN + id) ? remove_task(TASK_SPAWN + id) : 0; task_exists(TASK_SPAWNPLAYER + id) ? remove_task(TASK_SPAWNPLAYER + id) : 0; #endif #if defined ULT_LOCUSTSWARM task_exists(TASK_FUNNELS + id) ? remove_task(TASK_FUNNELS + id) : 0; #endif task_exists(TASK_SEARCHING + id) ? remove_task(TASK_SEARCHING + id) : 0; task_exists(TASK_DELAY + id) ? remove_task(TASK_DELAY + id) : 0; UltimateDelay[id] = 0; Ultimate_Is_Searching[id] = false; Ultimate_Icon(id, 0) } public Create_StatusIcon(id, status, sprite[], red, green, blue){ message_begin(MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id) write_byte(status) // status write_string(sprite) // sprite name write_byte(red) // red write_byte(green) // green write_byte(blue) // blue message_end() } #if defined ULT_SUICIDE // Suicide Explosion public Ultimate_SuicideExplode(id) { emit_sound(id, CHAN_STATIC, SOUND_SUICIDE, 1.0, ATTN_NORM, 0, PITCH_NORM); new parm[5], Origin[3]; get_user_origin(id, Origin); parm[0] = id; parm[1] = 6; parm[2] = Origin[0]; parm[3] = Origin[1]; parm[4] = Origin[2]; set_task(0.50, "SuicideExplode", TASK_EXPLOSION + id, parm, 5); set_task(0.50, "SuicideBlastCircles", TASK_BEAMCYLINDER + id, parm, 5); message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_IMPLOSION) write_coord(Origin[0]) // position(X) write_coord(Origin[1]) // position(Y) write_coord(Origin[2]) // position(Z) write_byte(100) // radius write_byte(20) // count write_byte(5) // life in 0.1's message_end() } public SuicideExplode(parm[5]) { new id = parm[0]; new Origin[3]; Origin[0] = parm[2]; Origin[1] = parm[3]; Origin[2] = parm[4]; new Float:Origin2[3]; IVecFVec(Origin, Origin2); message_begin(MSG_PVS, SVC_TEMPENTITY, Origin) write_byte(TE_EXPLOSION) write_coord(Origin[0]) // position(X) write_coord(Origin[1]) // position(Y) write_coord(Origin[2]) // position(Z) write_short(SPR_SUICIDE_EXPLODE) // sprite index write_byte((random_num(0,20) + 20)) // scale in 0.1's write_byte(12) // framerate write_byte(TE_EXPLFLAG_NONE) // flags message_end() message_begin(MSG_PVS, SVC_TEMPENTITY, Origin) write_byte(TE_SMOKE) write_coord(Origin[0]) // position(X) write_coord(Origin[1]) // position(Y) write_coord(Origin[2]) // position(Z) write_short(SPR_SUICIDE_SMOKE) // Sprite index write_byte(60) // scale * 10 write_byte(10) // framerate message_end() for(new Victim = 1; Victim < get_maxplayers(); Victim++) { if(is_user_connected(Victim) && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id) && Victim != id ) { new Float:VictimOrigin[3], Float:Distance_F, Distance; pev(Victim, pev_origin, VictimOrigin); Distance_F = get_distance_f(Origin2, VictimOrigin); Distance = floatround(Distance_F); if(Distance <= EXPLOSION_BLAST_RADIUS) { new Float:DistanceRatio, Float:Damage; DistanceRatio = floatdiv(float(Distance), EXPLOSION_BLAST_RADIUS); Damage = EXPLOSION_MAX_DAMAGE - floatround(floatmul(EXPLOSION_MAX_DAMAGE, DistanceRatio)); new BloodColor = ExecuteHam(Ham_BloodColor, Victim); if(BloodColor != -1) { new Amount = floatround(Damage); Amount *= 2; //according to HLSDK message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BLOODSPRITE); write_coord(floatround(VictimOrigin[0])); write_coord(floatround(VictimOrigin[1])); write_coord(floatround(VictimOrigin[2])); write_short(BloodSpray); write_short(BloodDrop); write_byte(BloodColor); write_byte(min(max(3, Amount/10), 16)); message_end(); } if ( !csdm_shop_get_user_necklace ( Victim ) ) { if(parm[1] == 6) make_knockback(Victim, Origin2, EXPLOSION_KNOCKBACK*Damage); if(get_user_health(Victim) - Damage >= 1) { ExecuteHam(Ham_TakeDamage, Victim, id, id, Damage, DMG_BLAST); Create_ScreenFade(id,(1<<13),(1<<14), 0x0000, 255, 255, 255, 100); Create_ScreenShake(Victim,(1<<14),(1<<13),(1<<14)); } else death_message(id, Victim, "Suicide Explode"); } else emit_sound ( id, CHAN_STATIC, NECKLACE_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM ); } } } --parm[1]; if(parm[1] > 0) set_task(0.1, "SuicideExplode", TASK_EXPLOSION + id, parm, 5); } public SuicideBlastCircles(parm[5]) { new Origin[3]; Origin[0] = parm[2]; Origin[1] = parm[3]; Origin[2] = parm[4]-16; new Float:Origin2[3]; IVecFVec(Origin, Origin2); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin2, 0) write_byte(TE_BEAMCYLINDER) // TE id engfunc(EngFunc_WriteCoord, Origin2[0]) // x engfunc(EngFunc_WriteCoord, Origin2[1]) // y engfunc(EngFunc_WriteCoord, Origin2[2]) // z engfunc(EngFunc_WriteCoord, Origin2[0]) // x axis engfunc(EngFunc_WriteCoord, Origin2[1]) // y axis engfunc(EngFunc_WriteCoord, Origin2[2]+385.0) // z axis write_short(SPR_SUICIDE_BLAST) // sprite write_byte(0) // startframe write_byte(0) // framerate write_byte(4) // life write_byte(60) // width write_byte(0) // noise write_byte(255) // red write_byte(255) // green write_byte(255) // blue write_byte(200) // brightness write_byte(0) // speed message_end() engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin2, 0) write_byte(TE_BEAMCYLINDER) // TE id engfunc(EngFunc_WriteCoord, Origin2[0]) // x engfunc(EngFunc_WriteCoord, Origin2[1]) // y engfunc(EngFunc_WriteCoord, Origin2[2]) // z engfunc(EngFunc_WriteCoord, Origin2[0]) // x axis engfunc(EngFunc_WriteCoord, Origin2[1]) // y axis engfunc(EngFunc_WriteCoord, Origin2[2]+470.0) // z axis write_short(SPR_SUICIDE_BLAST) // sprite write_byte(0) // startframe write_byte(0) // framerate write_byte(4) // life write_byte(60) // width write_byte(0) // noise write_byte(255) // red write_byte(255) // green write_byte(255) // blue write_byte(200) // brightness write_byte(0) // speed message_end() engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin2, 0) write_byte(TE_BEAMCYLINDER) // TE id engfunc(EngFunc_WriteCoord, Origin2[0]) // x engfunc(EngFunc_WriteCoord, Origin2[1]) // y engfunc(EngFunc_WriteCoord, Origin2[2]) // z engfunc(EngFunc_WriteCoord, Origin2[0]) // x axis engfunc(EngFunc_WriteCoord, Origin2[1]) // y axis engfunc(EngFunc_WriteCoord, Origin2[2]+555.0) // z axis write_short(SPR_SUICIDE_BLAST) // sprite write_byte(0) // startframe write_byte(0) // framerate write_byte(4) // life write_byte(60) // width write_byte(0) // noise write_byte(255) // red write_byte(255) // green write_byte(255) // blue write_byte(200) // brightness write_byte(0) // speed message_end() message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(TE_DLIGHT); write_coord(Origin[0]); // x write_coord(Origin[1]); // y write_coord(Origin[2]); // z write_byte(floatround(EXPLOSION_BLAST_RADIUS/10.0)); // radius write_byte(255) // red write_byte(255) // green write_byte(255) // blue write_byte(8); // life write_byte(60); // decay rate message_end(); } #endif #if defined ULT_BLINK //Blink public Ultimate_Blink(id) { new Origin[3], NewOrigin[3]; get_user_origin(id, NewOrigin, 3); get_user_origin(id, Origin); Origin[2] += 15; NewOrigin[2] += 15; if(IsStunned[id]) { new Message[64]; formatex(Message,sizeof(Message)-1,"Esti orbit din cauza luminii!"); HudMessage(id, Message, 255, 208, 0, -1.0, 0.85, _, _, 1.0); return false } if(is_restricted_area(id, NewOrigin)) { chat_color ( id, "%s Pozitia !gde teleport!t este !ginvalida!t!", szPrefix ); return false } new Float:SpriteOrigin[3] pev(id, pev_origin, SpriteOrigin) fm_set_user_origin(id, NewOrigin); new Float:SpriteOrigin2[3] pev(id, pev_origin, SpriteOrigin2) if(is_player_stuck(id)) { if(is_user_connected(id)) { static Float:origin[3] static Float:mins[3], hull static Float:vec[3] static o pev(id, pev_origin, origin) hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN if(!is_hull_vacant(origin, hull, id) && !(pev(id, pev_solid) & SOLID_NOT)) { pev(id, pev_mins, mins) vec[2] = origin[2] for(o=0; o < sizeof Size; ++o) { vec[0] = origin[0] - mins[0] * Size[o][0] vec[1] = origin[1] - mins[1] * Size[o][1] vec[2] = origin[2] - mins[2] * Size[o][2] if(is_hull_vacant(vec, hull, id)) { engfunc(EngFunc_SetOrigin, id, vec) set_pev(id, pev_velocity,{0.0,0.0,0.0}) o = sizeof Size } } } } } emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM); engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, SpriteOrigin, 0) write_byte(TE_EXPLOSION) engfunc(EngFunc_WriteCoord, SpriteOrigin[0]) // x axis engfunc(EngFunc_WriteCoord, SpriteOrigin[1]) // y axis engfunc(EngFunc_WriteCoord, SpriteOrigin[2]) // z axis write_short(SPR_TELEPORT) write_byte(22) write_byte(35) write_byte(TE_EXPLFLAG_NOSOUND) message_end() engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, SpriteOrigin2, 0) write_byte(TE_EXPLOSION) engfunc(EngFunc_WriteCoord, SpriteOrigin2[0]) // x axis engfunc(EngFunc_WriteCoord, SpriteOrigin2[1]) // y axis engfunc(EngFunc_WriteCoord, SpriteOrigin2[2]) // z axis write_short(SPR_TELEPORT) write_byte(22) write_byte(35) write_byte(TE_EXPLFLAG_NOSOUND) message_end() message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_SPRITETRAIL); write_coord(floatround(SpriteOrigin2[0])); write_coord(floatround(SpriteOrigin2[1])); write_coord(floatround(SpriteOrigin2[2])+40); write_coord(floatround(SpriteOrigin2[0])); write_coord(floatround(SpriteOrigin2[1])); write_coord(floatround(SpriteOrigin2[2])); write_short(SPR_TELEPORT_GIB); write_byte(30); write_byte(10); write_byte(1); write_byte(50); write_byte(10); message_end(); Create_ScreenFade(id,(1<<15),(1<<10),(1<<12), 0, 0, 255, 180); Create_ScreenShake(id,(1<<14),(1<<13),(1<<14)); return true; } public is_player_stuck(id) { static Float:originF[3] pev(id, pev_origin, originF) engfunc(EngFunc_TraceHull, originF, originF, 0,(pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0) if(get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen)) return true return false } public is_restricted_area(id, Origin[3]) { new MapName[32]; get_mapname(MapName, 32); new x = Origin[0]; new y = Origin[1]; new z = Origin[2]; if(equali(MapName, "de_dust")) { if(z > 220) return true; } else if(equali(MapName, "awp_assault")) { if(z > 520 && y > 2400 && y < 2600) return true; } else if(equali(MapName, "de_dust_cz")) { if(z > 220) return true; } else if(equali(MapName, "de_aztec_cz")) { if(z > 300) return true; } else if(equali(MapName, "cs_assault_upc")) { if(z > 650) return true; } else if(equali(MapName, "de_aztec")) { if(z > 300) return true; } else if(equali(MapName, "de_cbble") || equali(MapName, "de_cbble_cz")) { if(z > 315) { if(!((x > -1320 && x < -1150) &&(y > 2600 && y < 2900))) return true; } } else if(equali(MapName, "cs_assault")) { if(z > 700) return true; } else if(equali(MapName, "cs_militia") || equali(MapName, "cs_militia_cz")) { if(z > 500) return true; } else if(equali(MapName, "cs_italy")) { if(z > -220 && y < -2128) return true; else if(z > 250) { if((x < -1000 && x > -1648) &&(y > 1900 && y < 2050)) return true; else if((x < -1552 && x > -1648) &&(y > 1520 && y < 2050)) return true; } } else if(equali(MapName, "cs_italy_cz")) { if(y > 2608) return true; } else if(equali(MapName, "de_dust2")) { if(z > 270) return true; } else if(equali(MapName, "de_dust2_cz")) { if(z > 270) return true; } else if(equali(MapName, "fy_dustworld")) { if(z > 82) return true; } else if(equali(MapName, "fy_pool_day")) { if(z > 190) return true; } else if(equali(MapName, "as_oilrig")) { if(x > 1700) return true; } return false; } public is_hull_vacant(const Float:origin[3], hull,id) { static tr engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr) if(!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid)) return true return false } #endif #if defined ULT_CHAINLIGHTNING //Chain Lightning public Ultimate_ChainLightning(Caster, Target, BodyPart) { ChainEffect(Caster, Target, CHAINLIGHTNING_LINEWIDTH, CHAINLIGHTNING_DAMAGE, BodyPart); new parm[5]; parm[0] = Target; parm[1] = CHAINLIGHTNING_DAMAGE; parm[2] = CHAINLIGHTNING_LINEWIDTH; parm[3] = Caster; parm[4] = BodyPart; set_task(0.2, "ChainLightning", TASK_LIGHTNING + Target, parm, 5); } public ChainLightning(parm[5]) { new Enemy = parm[0]; if(is_user_connected(Enemy)) { new Caster = parm[3]; new BodyPart = parm[4]; new CasterTeam = get_user_team(Caster) new Origin[3]; get_user_origin(Enemy, Origin); new Players[32], Num; get_players(Players, Num, "a"); new i, Target = 0; new ClosestTarget = 0, ClosestDistance = 0; new DistanceBetween = 0; new TargetOrigin[3] for(i = 0; i < Num; i++) { Target = Players[i]; if(get_user_team(Target) != CasterTeam ) { if ( !csdm_shop_get_user_necklace ( Target ) ) { get_user_origin(Target, TargetOrigin) DistanceBetween = get_distance(Origin, TargetOrigin); if(DistanceBetween < LIGHTNING_RANGE && !LightningHit[Target]) { if(DistanceBetween < ClosestDistance || ClosestTarget == 0) { ClosestDistance = DistanceBetween; ClosestTarget = Target; } } } else emit_sound ( Target, CHAN_STATIC, NECKLACE_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM ); } } if(ClosestTarget) { parm[1] = floatround(float(parm[2])*2/3); parm[2] = floatround(float(parm[2])*2/3); ChainEffect(Caster, ClosestTarget, parm[2], parm[1], BodyPart); parm[0] = ClosestTarget; set_task(0.2, "ChainLightning", TASK_LIGHTNINGNEXT + Caster, parm, 5); } else { for(i = 0; i < Num; i++) { LightningHit[Players[i]] = false; } } } } public ChainEffect(Caster, Target, LineWidth, Damage, BodyPart) { LightningHit[Target] = true; if(get_user_health(Target) - Damage >= 1) { ExecuteHam(Ham_TakeDamage, Target, Caster, Caster, float(Damage), DMG_BLAST); Create_ScreenFade(Target,(1<<13),(1<<14), 0x0000, 255, 255, 255, 100); Create_ScreenShake(Target,(1<<14),(1<<13),(1<<14)); } else death_message(Caster, Target, "Chain Lightning"); message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMENTS) write_short(Caster) // start entity write_short(Target) // end entity write_short(SPR_LIGHTNING) // model write_byte(0) // starting frame write_byte(30) // frame rate write_byte(10) // life write_byte(LineWidth) // line width write_byte(50) // noise amplitude write_byte(255) // red write_byte(255) // green write_byte(255) // blue write_byte(200) // brightness write_byte(0) // scroll speed message_end() new Origin[3] get_user_origin(Target, Origin); message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_ELIGHT) write_short(Target) // entity write_coord(Origin[0]) // initial position write_coord(Origin[1]) // initial position write_coord(Origin[2]) // initial position write_coord(100) // radius write_byte(255) // red write_byte(255) // green write_byte(255) // blue write_byte(10) // life write_coord(0) // decay rate message_end() emit_sound(Caster, CHAN_STATIC, SOUND_LIGHTNING, 1.0, ATTN_NORM, 0, PITCH_NORM); } #endif #if defined ULT_IMMOLATE //Immolate public Ultimate_Immolate(Caster, Target) { emit_sound(Caster, CHAN_STATIC, SOUND_IMMOLATE, 0.5, ATTN_NORM, 0, PITCH_NORM); new TargetOrigin[3]; get_user_origin(Target, TargetOrigin); message_begin(MSG_PVS, SVC_TEMPENTITY, TargetOrigin) write_byte(TE_EXPLOSION) write_coord(TargetOrigin[0]) // position(X) write_coord(TargetOrigin[1]) // position(Y) write_coord(TargetOrigin[2]) // position(Z) write_short(SPR_IMMOLATE) // sprite index write_byte(20) // scale in 0.1's write_byte(24) // framerate write_byte(4) // flags message_end() message_begin(MSG_PVS, SVC_TEMPENTITY, TargetOrigin) write_byte(TE_EXPLOSION) write_coord(TargetOrigin[0]) // position(X) write_coord(TargetOrigin[1]) // position(Y) write_coord(TargetOrigin[2]) // position(Z) write_short(SPR_BURNING) // sprite index write_byte(30) // scale in 0.1's write_byte(24) // framerate write_byte(4) // flags message_end() if(get_user_health(Target) - float(IMMOLATE_DAMAGE) >= 1) { ExecuteHam(Ham_TakeDamage, Target, Caster, Caster, float(IMMOLATE_DAMAGE), DMG_BURN); Create_ScreenFade(Target,(1<<13),(1<<14), 0x0000, 255, 108, 0, 160); Create_ScreenShake(Target, 0xFFFF,(1<<13), 0xFFFF); } else death_message(Caster, Target, "Immolate"); new parm[3]; parm[0] = Caster; parm[1] = Target; parm[2] = 1; set_task(1.0, "Immolate_DoT", TASK_BURNING + Target, parm, 3); } public Immolate_DoT(parm[3]) { new Caster = parm[0]; new Target = parm[1]; new Counter = parm[2]; if(Counter > IMMOLATE_DOT || !is_user_alive(Target) || !is_user_connected(Target) || csdm_shop_get_user_necklace ( Target ) ) { Immolate_Remove(Target); if ( csdm_shop_get_user_necklace ( Target ) ) emit_sound ( Target, CHAN_STATIC, NECKLACE_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM ); return } new TargetOrigin[3]; get_user_origin(Target, TargetOrigin); emit_sound(Target, CHAN_STATIC, SOUND_IMMOLATE_BURNING, 0.5, ATTN_NORM, 0, PITCH_NORM); message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_SPRITE) write_coord(TargetOrigin[0]) // position write_coord(TargetOrigin[1]) write_coord(TargetOrigin[2]) write_short(SPR_FIRE) // sprite index write_byte(3) // scale in 0.1's write_byte(200) // brightness message_end() if(get_user_health(Target) - float(IMMOLATE_DOT_DAMAGE) >= 1) { ExecuteHam(Ham_TakeDamage, Target, Caster, Caster, float(IMMOLATE_DOT_DAMAGE), DMG_BURN); Create_ScreenFade(Target,(1<<13),(1<<14), 0x0000, 255, 108, 0, 160); Create_ScreenShake(Target, 0xFFFF,(1<<13), 0xFFFF); } else death_message(Caster, Target, "Immolate Burn"); parm[2]++; set_task(1.0, "Immolate_DoT", TASK_BURNING + Target, parm, 3); return } public Immolate_Remove(Target) { remove_task(TASK_BURNING + Target); return PLUGIN_HANDLED; } #endif #if defined ULT_LOCUSTSWARM public Ultimate_LocustSwarm(id) { new Victim = LocustGetTarget(id); if(Victim == -1) { new Message[64]; formatex(Message,sizeof(Message)-1, "No valid targets found"); HudMessage(id, Message, _, _, _, _, _, _, _, 2.0); } else { new CasterOrigin[3]; get_user_origin(id, CasterOrigin); Ultimate_Icon(id, 2); UltimateDelay[id] = get_pcvar_num(cvar_ultimate_countdown); new parm[10]; parm[0] = id; // caster parm[1] = Victim; // victim parm[2] = CasterOrigin[0]; parm[3] = CasterOrigin[1]; parm[4] = CasterOrigin[2]; LocustEffect(parm); } } public LocustGetTarget(id) { new Team = get_user_team(id); new Players[32], Num, TargetID; new Targets[33], TotalTargets = 0; get_players(Players, Num, "a"); for(new i = 0; i < Num; i++) { TargetID = Players[i]; if(get_user_team(TargetID) != Team ) { if ( !csdm_shop_get_user_necklace ( TargetID ) ) Targets[TotalTargets++] = TargetID; else emit_sound ( TargetID, CHAN_STATIC, NECKLACE_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM ); } } if(TotalTargets == 0) { return -1; } new Victim = 0, RandomSpot; while(Victim == 0) { RandomSpot = random_num(0, TotalTargets); Victim = Targets[RandomSpot]; } return Victim; } public LocustEffect(parm[]) { new Attacker = parm[0]; new Victim = parm[1]; if(Attacker >= TASK_FUNNELS) { Attacker -= TASK_FUNNELS; } if(!is_user_alive(Victim) || !is_user_connected(Victim)) { chat_color(Attacker, "%s Victim is no longer targetable for !gLocust Swarm!t, finding new target!", szPrefix); new Victim = LocustGetTarget(Attacker); if(Victim == -1) { new Message[64]; formatex(Message,sizeof(Message)-1, "No valid targets found"); HudMessage(Attacker, Message, _, _, _, _, _, _, _, 2.0); UltimateDelay[Attacker] = 2; Ultimate_Delay(Attacker) } else { new CasterOrigin[3]; get_user_origin(Attacker, CasterOrigin); parm[1] = Victim; // victim parm[2] = CasterOrigin[0]; parm[3] = CasterOrigin[1]; parm[4] = CasterOrigin[2]; chat_color(Attacker, "%s Victim is no longer !gtargetable!t, try casting again!", szPrefix); UltimateDelay[Attacker] = 2; Ultimate_Delay(Attacker) } } new MULTIPLIER = 150 new VictimOrigin[3], Funnel[3]; get_user_origin(Victim, VictimOrigin); Funnel[0] = parm[2]; Funnel[1] = parm[3]; Funnel[2] = parm[4]; message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_LARGEFUNNEL) write_coord(Funnel[0]) // origin, x write_coord(Funnel[1]) // origin, y write_coord(Funnel[2]) // origin, z write_short(SPR_SNOW) // sprite(0 for none) write_short(0) // 0 for collapsing, 1 for sending outward message_end() new Dist[3]; Dist[0] = HLP_Diff(VictimOrigin[0], Funnel[0]); Dist[1] = HLP_Diff(VictimOrigin[1], Funnel[1]); Dist[2] = HLP_Diff(VictimOrigin[2], Funnel[2]); for(new i = 0; i < 3; i++) { if(HLP_Diff(VictimOrigin[i], Funnel[i] - MULTIPLIER) < Dist[i]) { Funnel[i] -= MULTIPLIER; } else if(HLP_Diff(VictimOrigin[i], Funnel[0] + MULTIPLIER) < Dist[i]) { Funnel[i] += MULTIPLIER; } else { Funnel[i] = VictimOrigin[i]; } } parm[2] = Funnel[0]; parm[3] = Funnel[1]; parm[4] = Funnel[2]; if(!(Dist[0] < 50 && Dist[1] < 50 && Dist[2] < 50)) { new Float:Time = 0.2; set_task(Time, "LocustEffect", Attacker + TASK_FUNNELS, parm, 5); } else { new Damage = random_num(LOCUSTSWARM_DMG_MIN, LOCUSTSWARM_DMG_MAX); new Float:FDamage = float(Damage); if(get_user_health(Victim) - Damage >= 1) { ExecuteHam(Ham_TakeDamage, Victim, Attacker, Attacker, FDamage, DMG_BLAST); Create_ScreenFade(Victim,(1<<13),(1<<14), 0x0000, 0, 200, 0, 100); Create_ScreenShake(Victim, 0xFFFF,(1<<13), 0xFFFF); } else death_message(Attacker, Victim, "Locust Swarm"); Ultimate_Icon(Attacker, 0); Ultimate_Delay(Attacker) emit_sound(Victim, CHAN_STATIC, SOUND_LOCUSTSWARM, 1.0, ATTN_NORM, 0, PITCH_NORM); new Name[32]; get_user_name(Victim, Name, 31); chat_color ( Attacker, "%s!g Locust Swarm !thit !g%s !tfor !g%d!t damage!", szPrefix, Name, Damage); } } public HLP_Diff(iNum, iNum2) { if(iNum > iNum2) { return(iNum-iNum2); } else { return(iNum2-iNum); } return 0; } #endif #if defined VIP_MULTIJUMP public client_PreThink(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE if(get_cvar_num("amx_mjadminonly") && (!access(id,VIP_LEVEL))) return PLUGIN_CONTINUE new nbut = get_user_button(id) new obut = get_user_oldbutton(id) if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP)) { if(jumpnum[id] < get_cvar_num("amx_maxjumps")) { dojump[id] = true jumpnum[id]++ return PLUGIN_CONTINUE } } if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) { jumpnum[id] = 0 return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public client_PostThink(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE if(get_cvar_num("amx_mjadminonly") && (!access(id,VIP_LEVEL))) return PLUGIN_CONTINUE if(dojump[id] == true) { new Float:velocity[3] entity_get_vector(id,EV_VEC_velocity,velocity) velocity[2] = random_float(265.0,285.0) entity_set_vector(id,EV_VEC_velocity,velocity) dojump[id] = false return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } #endif #if defined NADE_DROPS public event_damage(id) { // if player is still alive or plugin is disabled if(get_user_health(id) > 0 || get_cvar_num("mp_nadedrops") < 1) { return PLUGIN_CONTINUE; } // if player had HE grenade if(hasweapon(id,"weapon_hegrenade") > 0) { new grenade = create_entity("info_target"); // create grenade entity entity_set_string(grenade,EV_SZ_classname,"fake_hegrenade"); // change name entity_set_int(grenade,EV_ENT_owner,id); // set owner entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet // set grenade entity's size new Float:minbox[3] = { -2.5, -2.5, -2.5 } new Float:maxbox[3] = { 2.5, 2.5, 2.5 }; entity_set_vector(grenade,EV_VEC_mins,minbox); entity_set_vector(grenade,EV_VEC_maxs,maxbox); // set grenade's overall being of a whole entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER); entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS); // set a random angle new Float:angles[3] = { 0.0, 0.0, 0.0 }; angles[1] = float(random_num(0,180)); entity_set_vector(grenade,EV_VEC_angles,angles); // get player's origin new Float:origin[3]; entity_get_vector(id,EV_VEC_origin,origin); origin[0] += 10; // offset // set model and origin entity_set_model(grenade,"models/w_hegrenade.mdl"); entity_set_vector(grenade,EV_VEC_origin,origin); } // if player had smoke grenade if(hasweapon(id,"weapon_smokegrenade") > 0) { new grenade = create_entity("info_target"); // create grenade entity entity_set_string(grenade,EV_SZ_classname,"fake_smokegrenade"); // change name entity_set_int(grenade,EV_ENT_owner,id); // set owner entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet // set grenade entity's size new Float:minbox[3] = { -2.5, -2.5, -2.5 } new Float:maxbox[3] = { 2.5, 2.5, 2.5 }; entity_set_vector(grenade,EV_VEC_mins,minbox); entity_set_vector(grenade,EV_VEC_maxs,maxbox); // set grenade's overall being of a whole entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER); entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS); // set a random angle new Float:angles[3] = { 0.0, 0.0, 0.0 }; angles[1] = float(random_num(0,180)); entity_set_vector(grenade,EV_VEC_angles,angles); // get player's origin new Float:origin[3]; entity_get_vector(id,EV_VEC_origin,origin); origin[0] -= 10; // offset // set model and origin entity_set_model(grenade,"models/w_smokegrenade.mdl"); entity_set_vector(grenade,EV_VEC_origin,origin); } // if player had at least one flashbang if(hasweapon(id,"weapon_flashbang") > 0) { new grenade = create_entity("info_target"); // create grenade entity entity_set_string(grenade,EV_SZ_classname,"fake_flashbang"); // change name entity_set_int(grenade,EV_ENT_owner,id); // set owner entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet // set grenade entity's size new Float:minbox[3] = { -2.5, -2.5, -2.5 } new Float:maxbox[3] = { 2.5, 2.5, 2.5 }; entity_set_vector(grenade,EV_VEC_mins,minbox); entity_set_vector(grenade,EV_VEC_maxs,maxbox); // set grenade's overall being of a whole entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER); entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS); // set a random angle new Float:angles[3] = { 0.0, 0.0, 0.0 }; angles[1] = float(random_num(0,180)); entity_set_vector(grenade,EV_VEC_angles,angles); // get player's origin new Float:origin[3]; entity_get_vector(id,EV_VEC_origin,origin); origin[1] += 10; // offset // set model and origin entity_set_model(grenade,"models/w_flashbang.mdl"); entity_set_vector(grenade,EV_VEC_origin,origin); } // if player had two flashbangs, drop another if(hasweapon(id,"weapon_flashbang") > 1) { new grenade = create_entity("info_target"); // create grenade entity entity_set_string(grenade,EV_SZ_classname,"fake_flashbang"); // change name entity_set_int(grenade,EV_ENT_owner,id); // set owner entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet // set grenade entity's size new Float:minbox[3] = { -2.5, -2.5, -2.5 } new Float:maxbox[3] = { 2.5, 2.5, 2.5 }; entity_set_vector(grenade,EV_VEC_mins,minbox); entity_set_vector(grenade,EV_VEC_maxs,maxbox); // set grenade's overall being of a whole entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER); entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS); // set a random angle new Float:angles[3] = { 0.0, 0.0, 0.0 }; angles[1] = float(random_num(0,180)); entity_set_vector(grenade,EV_VEC_angles,angles); // get player's origin new Float:origin[3]; entity_get_vector(id,EV_VEC_origin,origin); origin[1] -= 10; // offset // set model and origin entity_set_model(grenade,"models/w_flashbang.mdl"); entity_set_vector(grenade,EV_VEC_origin,origin); } return PLUGIN_CONTINUE; } // ResetHUD public event_resethud(id) { if(is_user_connected(id) == 1 && get_user_team(id) < 3) { set_task(0.5,"checkalive",id); // delay, because client is technically dead on ResetHUD } } // check if user is alive public checkalive(id) { if(is_user_alive(id) == 1) { // if so clear_nades(id); // clear nades (they just spawned) } } // entity touching public pfn_touch(pentru,ptd) { if(!is_valid_ent(ptd)) { // invalid toucher return PLUGIN_CONTINUE; } new classname[32]; entity_get_string(ptd,EV_SZ_classname,classname,31); // get name of toucher new bounced = entity_get_int(ptd,EV_INT_iuser1); // bounced yet? // check if one of our fake grenades is colliding with world and mp_nadedropsounds is positive if((equal(classname,"fake_hegrenade") || equal(classname,"fake_flashbang") || equal(classname,"fake_smokegrenade")) && pentru == 0 && bounced == 0 && get_cvar_num("mp_nadedropsounds") > 0) { emit_sound(ptd,CHAN_ITEM,"weapons/he_bounce-1.wav",0.5,ATTN_NORM,0,PITCH_LOW); // play sound entity_set_int(ptd,EV_INT_iuser1,1); // has bounced return PLUGIN_CONTINUE; } // now check for more invalid entities or players if(!is_valid_ent(pentru) || !is_valid_ent(ptd) || !is_user_connected(ptd)) { return PLUGIN_CONTINUE; } entity_get_string(pentru,EV_SZ_classname,classname,31); // get name of touched // if player is touching hegrenade and doesn't have one if(equal(classname,"fake_hegrenade") && hasweapon(ptd,"weapon_hegrenade") == 0) { fm_give_item(ptd,"weapon_hegrenade"); remove_entity(pentru); return PLUGIN_CONTINUE; } // if player is touching smokegrenade and doesn't have one if(equal(classname,"fake_smokegrenade") && hasweapon(ptd,"weapon_smokegrenade") == 0) { fm_give_item(ptd,"weapon_smokegrenade"); remove_entity(pentru); return PLUGIN_CONTINUE; } // if player is touching flashbang and has room for another if(equal(classname,"fake_flashbang") && hasweapon(ptd,"weapon_flashbang") < 2) { fm_give_item(ptd,"weapon_flashbang"); remove_entity(pentru); return PLUGIN_CONTINUE; } return PLUGIN_CONTINUE; } // function to check if player has a specific weapon. // returns the amount of ammo for that weapon in backpack. // we use this so we can check for multiple flashbangs as well public hasweapon(id,weaponname[32]) { if(is_user_connected(id) == 0 || get_user_team(id) > 2) { return 0; } new weapons[32], num; get_user_weapons(id,weapons,num); // get weapons new foundweapon; // if we found the weapon yet (and if we did how much ammo for it) // loop through weapons for(new i=0;i<num;i++) { new checkweaponname[32]; get_weaponname(weapons[i],checkweaponname,31); if(equal(weaponname,checkweaponname)) { // compare names new clip, ammo; // clip and ammo get_user_ammo(id,weapons[i],clip,ammo); // get clip and ammo foundweapon = ammo; // return amount in clip (for multiple FBs) break; } } return foundweapon; } // clear user's grenades public clear_nades(id) { new currnade; // go through fake HE grenades currnade = -1; while((currnade = find_ent_by_class(currnade,"fake_hegrenade")) > 0) { if(entity_get_int(currnade,EV_ENT_owner) == id) { remove_entity(currnade); } } // go through fake smoke grenades currnade = -1; while((currnade = find_ent_by_class(currnade,"fake_smokegrenade")) > 0) { if(entity_get_int(currnade,EV_ENT_owner) == id) { remove_entity(currnade); } } // go through fake flashbangs currnade = -1; while((currnade = find_ent_by_class(currnade,"fake_flashbang")) > 0) { if(entity_get_int(currnade,EV_ENT_owner) == id) { remove_entity(currnade); } } } #endif #if defined TEAM_SEMICLIP public fwdPlayerPreThink_SemiClip( plr ) { static id; if( is_user_alive( plr ) ) { for( id = 1 ; id <= g_iMaxPlayers ; id++ ) { if( pev( id, pev_solid ) == SOLID_SLIDEBOX && g_bSemiclip[plr][id] && id != plr ) { set_pev( id, pev_solid, SOLID_NOT ); g_bHasSemiclip[id] = true; } } } } public fwdPlayerPostThink( plr ) { static id; if( is_user_alive( plr ) ) { for( id = 1 ; id <= g_iMaxPlayers ; id++ ) { if( g_bHasSemiclip[id] ) { set_pev( id, pev_solid, SOLID_SLIDEBOX ); g_bHasSemiclip[id] = false; } } } } public fwdThink( ent ) { static i, j; static team[33]; static Float:origin[33][3]; if( ent == g_iTaskId ) { if( get_pcvar_num( g_iCvar[0] ) ) { for( i = 1 ; i <= g_iMaxPlayers ; i++ ) { if( is_user_alive( i ) ) { pev( i, pev_origin, origin[i] ); if( get_pcvar_num( g_iCvar[1] ) ) team[i] = get_user_team( i ); for( j = 1 ; j <= g_iMaxPlayers ; j++ ) { if( is_user_alive( j ) ) { if( get_pcvar_num( g_iCvar[1] ) && team[i] != team[j] ) { g_bSemiclip[i][j] = false; g_bSemiclip[j][i] = false; } else if( floatabs( origin[i][0] - origin[j][0] ) < 120.0 && floatabs( origin[i][1] - origin[j][1] ) < 120.0 && floatabs( origin[i][2] - origin[j][2] ) < ( 120.0 * 2 ) ) { g_bSemiclip[i][j] = true; g_bSemiclip[j][i] = true; } else { g_bSemiclip[i][j] = false; g_bSemiclip[j][i] = false; } } } } } } set_pev( ent, pev_nextthink, get_gametime( ) + 0.2 ); } } public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset ) { if( player ) { if( g_bSemiclip[host][ent] ) { set_es( es_handle, ES_Solid, SOLID_NOT ); // makes semiclip flawless if( get_pcvar_num( g_iCvar[2] ) == 1 ) { set_es( es_handle, ES_RenderMode, kRenderTransAlpha ); set_es( es_handle, ES_RenderAmt, 85 ); } else if( get_pcvar_num( g_iCvar[2] ) == 2 ) { set_es( es_handle, ES_Effects, EF_NODRAW ); set_es( es_handle, ES_Solid, SOLID_NOT ); } } } } // is there a better way to detect changings of g_iCvar[0]? public fwdClientCommand( plr ) { // use the forwards just when needed, for good performance if( !get_pcvar_num( g_iCvar[0] ) && g_bSemiclipEnabled ) { unregister_forward( FM_PlayerPreThink, g_iForwardId[0] ); unregister_forward( FM_PlayerPostThink, g_iForwardId[1] ); unregister_forward( FM_AddToFullPack, g_iForwardId[2], 1 ); g_bSemiclipEnabled = false; } else if( get_pcvar_num( g_iCvar[0] ) && !g_bSemiclipEnabled ) { g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" ); g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" ); g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 ); g_bSemiclipEnabled = true; } } #endif #if defined LEVEL_ON_CHAT public handle_say(id) { new chat[192], none[2][32], message[192], name[192] read_argv(1, chat, sizeof(chat) -1) formatex(none[0], sizeof(none) -1, ""), formatex(none[1], sizeof(none) -1, " ") if(!equali(chat, none[0]) && !equali(chat, none[1])) { get_user_name(id, name, sizeof(name) -1) if(!is_user_alive(id)) { formatex(message, sizeof(message) -1, "^4[LVL: %d]^1 *DEAD*^3 %s : ^1%s", User [ id ] [ Level ], name, chat) } else { formatex(message, sizeof(message) -1, "^4[LVL: %d]^3 %s ^1 : %s", User [ id ] [ Level ], name , chat) } switch(cs_get_user_team(id)) { case CS_TEAM_CT: ColorChat(0, BLUE, message) case CS_TEAM_T: ColorChat(0, RED, message) } return PLUGIN_HANDLED_MAIN } return PLUGIN_CONTINUE } public handle_team_say(id) { new chat[192], none[2][32], message[192], message2[192], name[192] read_argv(1, chat, sizeof(chat) -1) formatex(none[0], sizeof(none) -1, ""), formatex(none[1], sizeof(none) -1, " ") if(!equali(chat, none[0]) && !equali(chat, none[1])) { get_user_name(id, name, sizeof(name) -1) switch(cs_get_user_team(id)) { case CS_TEAM_CT: { if(!is_user_alive(id)) formatex(message, sizeof(message) -1, "^4[LVL: %d]^1 (Counter-Terrorists) *DEAD*^3 %s : ^1%s", User [ id ] [ Level ], name, chat) else formatex(message, sizeof(message) -1, "^4[LVL: %d]^1 (Counter-Terrorists)^3 %s : ^1%s", User [ id ] [ Level ], name, chat) new iPlayers[32], iNum, iPid get_players(iPlayers, iNum) for(new i; i < iNum; i++) { iPid = iPlayers[i] if(cs_get_user_team(iPid) != CS_TEAM_CT) continue; ColorChat(iPid, BLUE, message) } } case CS_TEAM_T: { if(!is_user_alive(id)) formatex(message2, sizeof(message2) -1, "^4[LVL: %d]^1 (Terrorists) *DEAD*^3 %s : ^1%s", User [ id ] [ Level ], name, chat) else formatex(message2, sizeof(message2) -1, "^4[LVL: %d]^1 (Terrorists)^3 %s : ^1%s", User [ id ] [ Level ], name, chat) new iPlayers[32], iNum, iPid get_players(iPlayers, iNum) for(new i; i< iNum; i++) { iPid = iPlayers[i] if(cs_get_user_team(iPid) != CS_TEAM_T) continue ColorChat(iPid, RED, message2) } } } return PLUGIN_HANDLED_MAIN } return PLUGIN_CONTINUE } #endif 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]); } #endif stock ShakeScreen( id, const Float:seconds ) { message_begin( MSG_ONE, get_user_msgid( "ScreenShake" ), { 0, 0, 0 }, id ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( 1<<13 ); message_end( ); } stock FadeScreen( id, const Float:seconds, const redd, const greenn, const bluee, const alpha ) { message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), _, id ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( floatround( 4096.0 * seconds, floatround_round ) ); write_short( 0x0000 ); write_byte( redd ); write_byte( greenn ); write_byte( bluee ); write_byte( alpha ); message_end( ); } stock Create_TE_SPRITETRAIL(start[3], end[3], iSprite, count, life, scale, velocity, random ){ message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord( start[0] ) // start position (X) write_coord( start[1] ) // start position (Y) write_coord( start[2] ) // start position (Z) write_coord( end[0] ) // end position (X) write_coord( end[1] ) // end position (Y) write_coord( end[2] ) // end position (Z) write_short( iSprite ) // sprite index write_byte( count ) // count write_byte( life) // life in 0.1's write_byte( scale) // scale in 0.1's write_byte( velocity ) // velocity along vector in 10's write_byte( random ) // randomness of velocity in 10's message_end() } stock bool:IsUserVip( id ) { if ( get_user_flags ( id ) & VIP_LEVEL ) return true; return false; } #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 chat_color(const id, const input[], any:...) { new count = 1, players[32] static msg[320] vformat(msg, 190, input, 3) replace_all(msg, 190, "!g", "^4") replace_all(msg, 190, "!n", "^1") replace_all(msg, 190, "!t", "^3") replace_all(msg, 190, "!t2", "^0") 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\\ lang2057\\ f0\\ fs16 \n\\ par } */
Negasire Comenzi :(
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
- JuNNNNkieWho
- Membru, skill +1
- Posts: 106
- Joined: 20 Dec 2015, 08:25
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Contact:
- Diktator
- Membru, skill 0
- Posts: 83
- Joined: 02 Dec 2016, 16:44
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Contact:
le-ai gasit sau le mai cauti?
give_gold
give_xp
give_gold
give_xp
0.70$ pe dealskins [dot] com, foloseste promo code: CSGO4ITEMS
- JuNNNNkieWho
- Membru, skill +1
- Posts: 106
- Joined: 20 Dec 2015, 08:25
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Contact:
Nu merg mane alea
- JuNNNNkieWho
- Membru, skill +1
- Posts: 106
- Joined: 20 Dec 2015, 08:25
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Contact:
Nu cred ca sunt bagate pentru ca amx_give si amx_donate,pot sa isi dau playerii intre ei.Si ei daca au logic