Nu cred ca e chiar asa dificil , dar nu ma pricep cu scripturile.
- SMA | Afiseaza codul
/*=========================================================================================================================== ********************************************************* *********** [ Advanced VIP Menu Furien 0.0.1 ] ************ ********************************************************* ------------------------- ---- * Description * ---- ------------------------- - Un meniu de VIP, mai avansat, care ofera anumitor jucatori de pe server sa beneficieze de Hook, Teleport, Unlimited Clip, Respwan, HP + AP, Super Knife, Viteza, Invizibilitate si altele. ------------------------- --- * Configuration * --- ------------------------- f_vip_chose "valoare" - De cate ori pe runda sa fie accesat meniul f_vip_teleport_cooldown "valoare" - Cooldown la Teleport f_vip_teleport_range "123456789" - Teleport Range f_vip_norecoil", "valoare.0" - - Intre 0.9 si 0.0 (sa fie cu .zecimala) No recoil pentru arme f_vip_invisibility_amount "valoare" - Intre 0 si 250 ( Cat de invizibil sa fie VIP-ul dupa ce cumpara Invizibilitate ) f_vip_godmode_cooldown "valoare" - Odata la cat timp sa poti folosi Zeus Mode f_vip_godmode_time "valoare" - Cat timp poti avea Zeus Mode ------------------------- ----- * Modules * ----- ------------------------- - Hamsandwich - Fakemeta - Cstrike - Fun ------------------------- --- * Credits * --- ------------------------- - tuty: Jetpack; - CSO Knife Generator: ZombiMod.ru; - CoolDown la Puteri: sDs|Aragon*; - Hook: Kz Arg Mod by ReymonARG! ------------------------- --- * Changelog * --- ------------------------- * v0.0.1: - Initial release ( 15th Nov 2013 ) ------------------------- --- * Update * --- ------------------------- - Sistem de Grenade - Rope - Adaugare Cvar-uri, o sa-l fac pe "format text" - And Other... ********************************************************* *********** [ Advanced Furien VIP Menu 0.0.1 ] ************ ********************************************************* ===========================================================================================================================*/ #include < amxmodx > #include < hamsandwich > #include < cstrike > #include < xs > #include < fun > #include < fakemeta > #include < CC_ColorChat > //#include < dhudmessage > //#pragma tabsize 1 #pragma semicolon 1 #define PLUGIN "Furien VIP Menu" #define VERSION "0.0.1" #define ACCESS_VIP ADMIN_LEVEL_H // Unlimited Clip & No Recoil #define OFFSET_LINUX_WEAPONS 4 #define OFFSET_WEAPON_OWNER 41 #define OFFSET_CLIPAMMO 51 #define OFFSET_ACTIVE_ITEM 373 #define NO_UCLIP_WEAPONS_BITSUM ( ( 1<<CSW_HEGRENADE ) | ( 1<<CSW_SMOKEGRENADE ) | ( 1<<CSW_FLASHBANG ) | ( 1<<CSW_KNIFE ) | ( 1<<CSW_C4 ) ) // Teleport #define FFADE_IN 0x0000 #define FFADE_OUT 0x0001 #define FFADE_MODULATE 0x0002 #define FFADE_STAYOUT 0x0004 // Knock Back Combat Knife #define CB_SEC_DMG 8.0 #define CB_PRIM_DMG 5.0 #define CB_SEC_HEAD_DMG 4.0 #define CB_PRIM_HEAD_DMG 20.0 #define CB_KNOCKBACK 20 // For Hook #define HookTask 24896172 #define HookSpeed 800.0 // Cvar's new g_iCvarFurienVipHasChosen, g_iCvarCooldownTeleport, g_iCvarTeleportRange, g_iCvarNoRecoil, g_iCvarInvisibilityAmount, g_iCvarGodmodeCountDown, g_iCvarGodmodeTime; new const g_szTag[ ] = "[ Furien VIP Menu ]"; new const g_iMaxClips[ ] = { 0, 13, 0, 10, 0, 7, 0, 30, 30, 0, 15, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 0, 7, 30, 30, 0, 50 }; new const SOUND_BLINK[ ] = { "weapons/flashbang-1.wav" }; new const g_szHook[ ] = "weapons/xbow_fire1.wav"; new const CombatKnifeSoundList[ ][ ] = { "combatknife/combatknife_deploy1.wav", "combatknife/combatknife1.wav", "combatknife/combatknife2.wav", "combatknife/combatknife_hwall.wav", "combatknife/combatknife_slash1.wav", "combatknife/combatknife_stab.wav" }; new const OriginalKnifeSounds[ ][ ] = { "weapons/knife_deploy1.wav", "weapons/knife_hit1.wav", "weapons/knife_hit2.wav", "weapons/knife_hit3.wav", "weapons/knife_hit4.wav", "weapons/knife_hitwall1.wav", "weapons/knife_slash1.wav", "weapons/knife_slash2.wav", "weapons/knife_stab.wav" }; new const p_CB[ ] = "models/combat_knife/p_combatknife.mdl"; new const v_CB[ ] = "models/combat_knife/v_combatknife.mdl"; new const Blood[ ][ ] = { "sprites/blood.spr", "sprites/bloodspray.spr" }; static g_Blood[ sizeof Blood ]; const UNIT_SEC = 0x1000; const FFADE = 0x0000; const NORECOIL_WPN_BS = ( ( 1<<2 ) | ( 1<<CSW_HEGRENADE ) | ( 1<<CSW_SMOKEGRENADE ) | ( 1<<CSW_FLASHBANG ) | ( 1<<CSW_KNIFE ) | ( 1<<CSW_C4 ) ); // FURIEN: new bool:Teleport[ 33 ], bool:Speed[ 33 ], bool:Hook[ 33 ], bool:CombatKnife[ 33 ], bool:GodMode[ 33 ]; // HUMAN: new bool:Jetpack[ 33 ], bool:Invisibility[ 33 ], bool:UnlimitedClip[ 33 ], bool:NoRecoil[ 33 ]; new g_iUserHasChossen[ 33 ]; new bool:g_iUserHasUClip[ 33 ]; new bool:g_iUserHasTeleport[ 33 ]; new bool:g_iUserHasJetPack[ 33 ]; new bool:g_iUserHasSpeed[ 33 ]; new bool:g_iUserHasInvisibility[ 33 ]; new bool:g_iUserHasHook[ 33 ]; new bool:g_iUserHasCombatKnife[ 33 ]; new bool:g_iUserHasNoRecoil[ 33 ]; new bool:g_iUserHasGodmode[ 33 ]; new ShockWave, BlueFlare2, JetPackSprite, iBeamSprite; new GodMode_Countdown[ 33 ]; new Teleport_Cooldown[ 33 ]; new iHookOrigin[ 33 ][ 3 ]; new Float:LastMessage[ 33 ]; new WpnName[ 32 ]; new Float:cl_pushangle[ 33 ][ 3 ]; public plugin_init( ) { register_plugin( PLUGIN, VERSION, "YONTU" ); register_clcmd( "+hook", "ClCmdUseHook" ); register_clcmd( "-hook", "ClCmdStopUsingHook" ); register_clcmd( "teleport", "ClCmdUseTeleport" ); register_clcmd( "godmode", "ClCmdUseGodmode" ); register_clcmd( "say /vm", "ClCmdSayVipMenu" ); register_clcmd( "say_team /vm", "ClCmdSayVipMenu" ); register_event( "CurWeapon", "event_CurWeapon", "be", "1=1" ); register_event( "CurWeapon", "CurWeapon2", "be", "1=1" ); register_forward( FM_EmitSound, "fw_EmitSounds" ); register_logevent( "fw_RoundStart", 2 , "1=Round_Start" ); RegisterHam( Ham_Player_Jump, "player", "Ham_bacon_playerJumping" ); RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawnPost", 1 ); RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 ); RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Post", 1 ); g_iCvarFurienVipHasChosen = register_cvar( "f_vip_chose", "100" ); g_iCvarCooldownTeleport = register_cvar( "f_vip_teleport_cooldown", "10" ); g_iCvarTeleportRange = register_cvar( "f_vip_teleport_range", "123456789" ); g_iCvarNoRecoil = register_cvar( "f_vip_norecoil", "0.0" ); g_iCvarInvisibilityAmount = register_cvar( "f_vip_invisibility_amount", "15" ); g_iCvarGodmodeCountDown = register_cvar( "f_vip_godmode_cooldown", "15" ); g_iCvarGodmodeTime = register_cvar( "f_vip_godmode_time", "10" ); //g_iCvar[ ] = register_cvar( "f_vip_", "" ); for( new i = 1; i <= CSW_P90; i++ ) { if( !( NORECOIL_WPN_BS & ( 1<<i ) ) && get_weaponname( i, WpnName, charsmax( WpnName ) ) ) { RegisterHam( Ham_Weapon_PrimaryAttack, WpnName, "fwd_primary_attack" ); RegisterHam( Ham_Weapon_PrimaryAttack, WpnName, "fwd_primary_attack_post", 1 ); } } } public plugin_precache( ) { precache_model( v_CB ); precache_model( p_CB ); precache_sound( g_szHook ); ShockWave = precache_model( "sprites/shockwave.spr" ); BlueFlare2 = precache_model( "sprites/blueflare2.spr" ); JetPackSprite = precache_model( "sprites/explode1.spr" ); iBeamSprite = precache_model( "sprites/plasma.spr" ); static i; for( i = 0; i <= charsmax( Blood ); i++ ) g_Blood[ i ] = precache_model( Blood[ i ] ); for( i = 0; i <= charsmax( CombatKnifeSoundList ); i++ ) precache_sound( CombatKnifeSoundList[ i ] ); } public client_putinserver( id ) { RemoveAll( id ); g_iUserHasChossen[ id ] = false; g_iUserHasUClip[ id ] = false; g_iUserHasTeleport[ id ] = false; g_iUserHasJetPack[ id ] = false; g_iUserHasSpeed[ id ] = false; g_iUserHasInvisibility[ id ] = false; g_iUserHasHook[ id ] = false; g_iUserHasCombatKnife[ id ] = false; g_iUserHasNoRecoil[ id ] = false; g_iUserHasGodmode[ id ] = false; } public client_disconnect( id ) { RemoveAll( id ); g_iUserHasChossen[ id ] = false; g_iUserHasUClip[ id ] = false; g_iUserHasTeleport[ id ] = false; g_iUserHasJetPack[ id ] = false; g_iUserHasSpeed[ id ] = false; g_iUserHasInvisibility[ id ] = false; g_iUserHasHook[ id ] = false; g_iUserHasCombatKnife[ id ] = false; g_iUserHasNoRecoil[ id ] = false; g_iUserHasGodmode[ id ] = false; } public RemoveAll( id ) { Teleport[ id ] = false; Speed[ id ] = false; Jetpack[ id ] = false; Invisibility[ id ] = false; UnlimitedClip[ id ] = false; CombatKnife[ id ] = false; GodMode[ id ] = false; } public fw_RoundStart( ) { new szPlayers[ 32 ], iNum; get_players( szPlayers, iNum, "p" ); for( new i = 0; i < iNum; i++) { g_iUserHasChossen[ i ] = false; g_iUserHasUClip[ i ] = false; g_iUserHasTeleport[ i ] = false; g_iUserHasJetPack[ i ] = false; g_iUserHasSpeed[ i ] = false; g_iUserHasInvisibility[ i ] = false; g_iUserHasHook[ i ] = false; g_iUserHasCombatKnife[ i ] = false; g_iUserHasNoRecoil[ i ] = false; g_iUserHasGodmode[ i ] = false; Teleport[ i ] = false; Speed[ i ] = false; Jetpack[ i ] = false; Invisibility[ i ] = false; UnlimitedClip[ i ] = false; CombatKnife[ i ] = false; GodMode[ i ] = false; } } public Ham_PlayerSpawnPost( id ) { if( !is_user_alive( id ) || !is_user_connected( id ) ) return HAM_IGNORED; RemoveAll( id ); g_iUserHasChossen[ id ] = false; g_iUserHasUClip[ id ] = false; g_iUserHasTeleport[ id ] = false; g_iUserHasJetPack[ id ] = false; g_iUserHasSpeed[ id ] = false; g_iUserHasInvisibility[ id ] = false; g_iUserHasHook[ id ] = false; g_iUserHasCombatKnife[ id ] = false; g_iUserHasNoRecoil[ id ] = false; g_iUserHasGodmode[ id ] = false; return HAM_IGNORED; } public ClCmdSayVipMenu( id ) { if( is_user_alive( id ) || !is_user_alive( id ) && get_user_flags( id ) & ACCESS_VIP ) { if( g_iUserHasChossen[ id ] >= get_pcvar_num( g_iCvarFurienVipHasChosen ) ) { set_hudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.2, 1, 6.0, 5.0 ); show_hudmessage( id, "Ai folosit deja meniul de %d ori !", get_pcvar_num( g_iCvarFurienVipHasChosen ) ); return 1; } if( get_user_team( id ) == 1 ) { set_task( 0.1, "ShowFurienVipMenu", id ); } if( get_user_team( id ) == 2 ) { set_task( 0.1, "ShowSurvivorVipMenu", id ); } } else { ColorChat( id, GREEN, "%s^x01 Nu esti membru^x03 VIP^x01. Doneaza !!!", g_szTag ); } return 1; } public ShowFurienVipMenu( id ) { new szMenu = menu_create( "\rFurien \yV\rI\wP\r Menu", "FurienMenuGiver" ); new iMoney = cs_get_user_money( id ); // COMBAT KNIFE if( CombatKnife[ id ] ) { menu_additem( szMenu, "\dCombat Knife - \rAlready Have", "1", 0 ); } else if( is_user_alive( id ) && iMoney < 7000 ) { menu_additem( szMenu, "\dCombat Knife -\r No Money", "1", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dCombat Knife - \rOnly Alive", "1", 0 ); } else if( !Teleport[ id ] || iMoney >= 7000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yCombat Knife\r (\yKnock Back\r)\w -\r [\y 7000\w $\r ]" ); menu_additem( szMenu, szBuffer, "1", 0 ); cs_set_user_money( id, iMoney ); } // HP + AP if( get_user_health( id ) && get_user_armor( id ) >= 250 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d100 HP + 100 AP - \rMax. Health & Armor" ); menu_additem( szMenu, szBuffer, "2", 0 ); } else if( is_user_alive( id ) && iMoney < 1000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d100 HP + 100 AP - \rNo Money" ); menu_additem( szMenu, szBuffer, "2", 0 ); } else if( !is_user_alive( id ) ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d100 HP + 100 AP - \rOnly Alive" ); menu_additem( szMenu, szBuffer, "2", 0 ); } else if( is_user_alive( id ) && get_user_health( id ) || get_user_health( id ) > 250 || iMoney >= 1000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\y100 HP\w + \y100 AP\w -\r [\y 1000\w $\r ]" ); menu_additem( szMenu, szBuffer, "2", 0 ); cs_set_user_money( id, iMoney ); } // RESPAWN if( !is_user_alive( id ) && iMoney < 5000 ) { menu_additem( szMenu, "\dRespawn -\r No Money", "3", 0 ); } else if( is_user_alive( id ) ) { menu_additem( szMenu, "\dRespawn - \rOnly Dead", "3", 0 ); } else if( !is_user_alive( id ) && iMoney >= 5000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yRespawn\w -\r [\y 5000\w $\r ]" ); menu_additem( szMenu, szBuffer, "3", 0 ); cs_set_user_money( id, iMoney ); } // TELEPORT if( Teleport[ id ] ) { menu_additem( szMenu, "\dTeleport - \rAlready Have", "4", 0 ); } else if( is_user_alive( id ) && iMoney < 8000 ) { menu_additem( szMenu, "\dTeleport -\r No Money", "4", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dTeleport - \rOnly Alive", "4", 0 ); } else if( !Teleport[ id ] || iMoney >= 8000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yTeleport\w -\r [\y 8000\w $\r ]" ); menu_additem( szMenu, szBuffer, "4", 0 ); cs_set_user_money( id, iMoney ); } // SPEED if( Speed[ id ] ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d500 Speed - \rAlready Have" ); menu_additem( szMenu, szBuffer, "5", 0 ); } else if( is_user_alive( id ) && iMoney < 6500 ) { menu_additem( szMenu, "\dSpeed -\r No Money", "5", 0 ); } else if( !is_user_alive( id ) ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d500 Speed - \rOnly Alive" ); menu_additem( szMenu, szBuffer, "5", 0 ); } else if( !Speed[ id ] || iMoney >= 6500 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\y500 Speed\w -\r [\y 6500\w $\r ]" ); menu_additem( szMenu, szBuffer, "5", 0 ); cs_set_user_money( id, iMoney ); } // HOOK if( Hook[ id ] ) { menu_additem( szMenu, "\dHook - \rAlready Have", "6", 0 ); } else if( is_user_alive( id ) && iMoney < 12000 ) { menu_additem( szMenu, "\dHook -\r No Money", "6", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dHook - \rOnly Alive", "6", 0 ); } else if( !Hook[ id ] || iMoney >= 12000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yHook\w -\r [\y 12000\w $\r ]" ); menu_additem( szMenu, szBuffer, "6", 0 ); cs_set_user_money( id, iMoney ); } // GODMODE if( GodMode[ id ] ) { menu_additem( szMenu, "\dZeus Mode - \rAlready Have", "7", 0 ); } else if( is_user_alive( id ) && iMoney < 15000 ) { menu_additem( szMenu, "\dZeus Mode -\r No Money", "7", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dZeus Mode - \rOnly Alive", "7", 0 ); } else if( !GodMode[ id ] || iMoney >= 15000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yZeus Mode\w -\r [\y 15000\w $\r ]" ); menu_additem( szMenu, szBuffer, "7", 0 ); cs_set_user_money( id, iMoney ); } menu_setprop( szMenu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, szMenu, 0 ); return 1; } public ShowSurvivorVipMenu( id ) { new szMenu = menu_create( "\rHumans \yV\rI\wP\r Menu", "HumansMenuGiver" ); new iMoney = cs_get_user_money( id ); // HP + AP if( get_user_health( id ) && get_user_armor( id ) >= 250 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d50 HP + 50 AP - \rMax. Health & Armor" ); menu_additem( szMenu, szBuffer, "1", 0 ); } else if( is_user_alive( id ) && iMoney < 1500 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d50 HP + 50 AP - \rNo Money" ); menu_additem( szMenu, szBuffer, "1", 0 ); } else if( !is_user_alive( id ) ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\d100 HP + 100 AP - \rOnly Alive" ); menu_additem( szMenu, szBuffer, "1", 0 ); } else if( is_user_alive( id ) && get_user_health( id ) || get_user_health( id ) > 250 || iMoney >= 1500 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\y50 HP\w +\y 50 AP\w -\r [\y 1500\w $\r ]" ); menu_additem( szMenu, szBuffer, "1", 0 ); cs_set_user_money( id, iMoney ); } // JETPACK if( Jetpack[ id ] ) { menu_additem( szMenu, "\dJetPack - \rAlready Have", "2", 0 ); } else if( is_user_alive( id ) && iMoney < 9000 ) { menu_additem( szMenu, "\dJetPack -\r No Money", "2", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dJetPack - \rOnly Alive", "2", 0 ); } else if( !Jetpack[ id ] || iMoney >= 9000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yJetPack\w -\r [\y 9000\w $\r ]" ); menu_additem( szMenu, szBuffer, "2", 0 ); cs_set_user_money( id, iMoney ); } // RESPAWN if( !is_user_alive( id ) || is_user_alive( id ) && iMoney < 5500 ) { menu_additem( szMenu, "\dRespawn -\r No Money", "3", 0 ); } else if( is_user_alive( id ) ) { menu_additem( szMenu, "\dRespawn - \rOnly Dead", "3", 0 ); } else if( !is_user_alive( id ) && iMoney >= 5500 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yRespawn\w -\r [\y 5000\w $\r ]" ); menu_additem( szMenu, szBuffer, "3", 0 ); cs_set_user_money( id, iMoney ); } // UNLIMITED CLIP if( UnlimitedClip[ id ] ) { menu_additem( szMenu, "\dUnlimited Clip - \rAlready Have", "4", 0 ); } else if( is_user_alive( id ) && iMoney < 8500 ) { menu_additem( szMenu, "\dUnlimited Clip -\r No Money", "4", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dUnlimited Clip - \rOnly Alive", "4", 0 ); } else if( !UnlimitedClip[ id ] || iMoney >= 8500 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yUnlimited\y Clip\w -\r [\y 8500\w $\r ]" ); menu_additem( szMenu, szBuffer, "4", 0 ); cs_set_user_money( id, iMoney ); } // INVISIBILITY if( Invisibility[ id ] ) { menu_additem( szMenu, "\dInvisibility - \rAlready Have", "5", 0 ); } else if( is_user_alive( id ) && iMoney < 4000 ) { menu_additem( szMenu, "\dInvisibility -\r No Money", "5", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dInvisibility - \rOnly Alive", "5", 0 ); } else if( !Invisibility[ id ] || iMoney >= 4000 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yInvisibility\w -\r [\y 4000\w $\r ]" ); menu_additem( szMenu, szBuffer, "5", 0 ); cs_set_user_money( id, iMoney ); } // NO RECOIL if( NoRecoil[ id ] ) { menu_additem( szMenu, "\dNo Recoil - \rAlready Have", "6", 0 ); } else if( is_user_alive( id ) && iMoney < 3500 ) { menu_additem( szMenu, "\dNo Recoil -\r No Money", "6", 0 ); } else if( !is_user_alive( id ) ) { menu_additem( szMenu, "\dNo Recoil - \rOnly Alive", "6", 0 ); } else if( !NoRecoil[ id ] || iMoney >= 3500 ) { new szBuffer[ 256 ]; formatex( szBuffer, sizeof( szBuffer ) - 1, "\yNo Recoil\w -\r [\y 3500\w $\r ]" ); menu_additem( szMenu, szBuffer, "6", 0 ); cs_set_user_money( id, iMoney ); } menu_setprop( szMenu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, szMenu, 0 ); return 1; } public FurienMenuGiver( id, szMenu, item ) { if( item == MENU_EXIT ) { menu_destroy( szMenu ); return PLUGIN_HANDLED; } new data[ 6 ], szName[ 64 ]; new access, callback; menu_item_getinfo( szMenu, item, access, data, charsmax( data ), szName, charsmax( szName ), callback ); new key = str_to_num( data ); switch( key ) { // COMBAT KNIFE case 1: { if( !CombatKnife[ id ] ) { new iMoney = cs_get_user_money( id ) - 7000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 7000 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Ai cumparat^x03 Combat Knife^x01!", g_szTag ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasCombatKnife[ id ] = true; CombatKnife[ id ] = true; CurWeapon2( id ); engclient_cmd( id, "weapon_knife" ); return 1; } } } // HP + AP case 2: { new iMoney = cs_get_user_money( id ) - 1000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 1000 - YourMoney ); return 1; } else { new Health = get_user_health( id ); new Armor = get_user_armor( id ); // HP if( Health <= 250 ) { set_user_health( id, get_user_health( id ) + 100 ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; return 1; } // AP if( Armor <= 250 ) { set_user_armor( id, get_user_armor( id ) + 100 ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; return 1; } if( Armor && Health > 250 ) { ColorChat( id, GREEN, "%s^x01 Ai atins maximul de HP & AP:^x03 300 ^x01!!!", g_szTag ); return 1; } } } // RESPAWN case 3: { new iMoney = cs_get_user_money( id ) - 5000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 5000 - YourMoney ); return 1; } if( cs_get_user_team( id ) == CS_TEAM_SPECTATOR ) { ColorChat( id, GREEN, "%s^x01 Nu poti folosi aceasta comanda cand esti^x03 Spectator^x01.", g_szTag ); return PLUGIN_HANDLED; } if( is_user_alive( id ) ) { set_hudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.2, 1, 6.0, 5.0 ); show_hudmessage( id, "Nu poti folosi aceasta comanda cand esti viu !!!" ); return PLUGIN_HANDLED; } else { ExecuteHamB( Ham_CS_RoundRespawn, id ); cs_set_user_money( id, iMoney ); ColorChat( id, GREEN, "%s^x01 Tocmai ai reinviat!", g_szTag ); g_iUserHasChossen[ id ] = true; } } // TELEPORT case 4: { if( !Teleport[ id ] ) { new iMoney = cs_get_user_money( id ) - 8000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 8000 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Acum te poti teleporta, apasand pe tasta^x03 X^x01 !", g_szTag ); client_cmd( id, "bind x teleport" ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasTeleport[ id ] = true; Teleport[ id ] = true; return 1; } } } // SPEED case 5: { if( !Speed[ id ] ) { new iMoney = cs_get_user_money( id ) - 6500; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 6500 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Ai devenit mai rapid!^x03 Schimba arma^x01!", g_szTag ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasSpeed[ id ] = true; Speed[ id ] = true; return 1; } } } // HOOK case 6: { if( !Hook[ id ] ) { new iMoney = cs_get_user_money( id ) - 12000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 12000 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Acum te poti agata de pereti, apasand pe tasta^x03 Z^x01 !", g_szTag ); client_cmd( id, "bind z +hook" ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasHook[ id ] = true; Hook[ id ] = true; return 1; } } } // GODMODE case 7: { if( !GodMode[ id ] ) { new iMoney = cs_get_user_money( id ) - 15000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 15000 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Acum poti deveni invincibil, apasand pe tasta^x03 V^x01 !", g_szTag ); client_cmd( id, "bind v godmode" ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasGodmode[ id ] = true; GodMode[ id ] = true; return 1; } } } } menu_destroy( szMenu ); return PLUGIN_HANDLED; } public HumansMenuGiver( id, szMenu, item ) { if( item == MENU_EXIT ) { menu_destroy( szMenu ); return PLUGIN_HANDLED; } new data[ 6 ], szName[ 64 ]; new access, callback; menu_item_getinfo( szMenu, item, access, data, charsmax( data ), szName, charsmax( szName ), callback ); new key = str_to_num( data ); switch( key ) { // HP + AP case 1: { new iMoney = cs_get_user_money( id ) - 1500; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 1500 - YourMoney ); return 1; } else { new Health = get_user_health( id ); new Armor = get_user_armor( id ); // HP if( Health <= 250 ) { set_user_health( id, get_user_health( id ) + 50 ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; return 1; } // AP if( Armor <= 250 ) { set_user_armor( id, get_user_armor( id ) + 50 ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; return 1; } if( Armor && Health > 250 ) { ColorChat( id, GREEN, "%s^x01 Ai atins maximul de HP & AP:^x03 300 ^x01!!!", g_szTag ); return 1; } } } // JETPACK case 2: { if( !Jetpack[ id ] ) { new iMoney = cs_get_user_money( id ) - 9000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 9000 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Ai cumparat^x03 JetPack^x01! Apasa^x03 SPACE^x01 !", g_szTag ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasJetPack[ id ] = true; Jetpack[ id ] = true; return 1; } } } // RESPAWN case 3: { new iMoney = cs_get_user_money( id ) - 5500; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 5000 - YourMoney ); return 1; } if( cs_get_user_team( id ) == CS_TEAM_SPECTATOR ) { ColorChat( id, GREEN, "%s^x01 Nu poti folosi aceasta comanda cand esti^x03 Spectator^x01.", g_szTag ); return PLUGIN_HANDLED; } if( is_user_alive( id ) ) { set_hudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.2, 1, 6.0, 5.0 ); show_hudmessage( id, "Nu poti folosi aceasta comanda cand esti viu !!!" ); return PLUGIN_HANDLED; } else { ExecuteHamB( Ham_CS_RoundRespawn, id ); cs_set_user_money( id, iMoney ); ColorChat( id, GREEN, "%s^x01 Tocmai ai reinviat !", g_szTag ); g_iUserHasChossen[ id ] = true; } } // UNLIMITED CLIP case 4: { if( !UnlimitedClip[ id ] ) { new iMoney = cs_get_user_money( id ) - 8500; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 8500 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Ti-ai cumparat^x03 gloante infinite^x01 !", g_szTag ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasUClip[ id ] = true; UnlimitedClip[ id ] = true; return 1; } } } // INVISIBILITY case 5: { if( !Invisibility[ id ] ) { new iMoney = cs_get_user_money( id ) - 4000; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 4000 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 Ai devenit^x03 90%^x01 invizibil !", g_szTag ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasInvisibility[ id ] = true; Invisibility[ id ] = true; return 1; } } } // NO RECOIL case 6: { if( !NoRecoil[ id ] ) { new iMoney = cs_get_user_money( id ) - 3500; new YourMoney = cs_get_user_money( id ); if( iMoney < 0 ) { ColorChat( id, GREEN, "%s^x01 Mai ai nevoie de^x03 %d $^x01!!!", g_szTag, 3500 - YourMoney ); return 1; } else { ColorChat( id, GREEN, "%s^x01 De acum inainte, tinta nu-ti va mai sari !", g_szTag ); cs_set_user_money( id, iMoney ); g_iUserHasChossen[ id ] = true; g_iUserHasNoRecoil[ id ] = true; NoRecoil[ id ] = true; return 1; } } } } menu_destroy( szMenu ); return PLUGIN_HANDLED; } // JETPACK public Ham_bacon_playerJumping( id ) { if( g_iUserHasJetPack[ id ] ) { new iOrigin[ 3 ]; get_user_origin( id, iOrigin, 0 ); iOrigin[ 2 ] -= 20; new Float:fVelocity[ 3 ]; pev( id, pev_velocity, fVelocity ); fVelocity[ 2 ] += 93; set_pev( id, pev_velocity, fVelocity ); create_flame( iOrigin ); } } stock create_flame( origin[ 3 ] ) { message_begin( MSG_PVS, SVC_TEMPENTITY, origin ); write_byte( TE_SPRITE ); write_coord( origin[ 0 ] ); write_coord( origin[ 1 ] ); write_coord( origin[ 2 ] ); write_short( JetPackSprite ); write_byte( 3 ); write_byte( 99 ); message_end(); } public event_CurWeapon( id ) { if( get_user_flags( id ) & ACCESS_VIP && g_iUserHasUClip[ id ] ) { new iWeapon = read_data( 2 ); if( !( NO_UCLIP_WEAPONS_BITSUM & ( 1 << iWeapon ) ) ) set_pdata_int( get_pdata_cbase( id, OFFSET_ACTIVE_ITEM ), OFFSET_CLIPAMMO, g_iMaxClips[ iWeapon ], OFFSET_LINUX_WEAPONS ); } } public CurWeapon2( id ) { if( g_iUserHasSpeed[ id ] ) { set_user_maxspeed( id, 500.0 ); } else { set_user_maxspeed( id, 260.0 ); } if( g_iUserHasInvisibility[ id ] ) { set_user_rendering( id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, get_pcvar_num( g_iCvarInvisibilityAmount ) ); } else { set_user_rendering( id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 250 ); } if( get_user_weapon( id ) == CSW_KNIFE && g_iUserHasCombatKnife[ id ] ) { set_pev( id, pev_viewmodel2, v_CB ); set_pev( id, pev_weaponmodel2, p_CB ); } } // HOOK public ClCmdUseHook( id ) { if( !g_iUserHasHook[ id ] ) return 1; emit_sound( id,CHAN_VOICE, g_szHook, 1.0, ATTN_NORM, 0, PITCH_NORM ); set_pev( id, pev_gravity, 0.0 ); set_task( 0.1,"TaskHookPrethink", id + HookTask , "", 0, "b" ); Hook[ id ] = true; iHookOrigin[ id ][ 0 ] = 999999; TaskHookPrethink( id + HookTask ); return 1; } public ClCmdStopUsingHook( id ) { set_pev( id, pev_gravity, 1.0 ); Hook[ id ] = false; return 1; } // TELEPORT public ClCmdUseTeleport( id ) { if( !is_user_alive( id ) || !g_iUserHasTeleport[ id ] ) return PLUGIN_CONTINUE; if( Teleport_Cooldown[ id ] ) { ColorChat( id, TEAM_COLOR, "^x04%s^x01 Puterea iti va reveni in^x03 %d secunde^x01.", g_szTag, Teleport_Cooldown[ id ] ); return PLUGIN_CONTINUE; } else if( teleport( id ) ) { emit_sound( id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM ); remove_task( id ); Teleport_Cooldown[ id ] = get_pcvar_num( g_iCvarCooldownTeleport ); set_task( 1.0, "CountDown_Teleport", id, _, _, "b" ); set_hudmessage( 0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11 ); if( get_pcvar_num( g_iCvarCooldownTeleport ) != 1 ) { show_hudmessage( id, "Puterea iti va reveni in %d secunde.", get_pcvar_num( g_iCvarCooldownTeleport ) ); } if( get_pcvar_num( g_iCvarTeleportRange ) == 1) { show_hudmessage( id, "Puterea iti va reveni in %d secunda.", get_pcvar_num( g_iCvarCooldownTeleport ) ); } } else { ColorChat( id, TEAM_COLOR, "^x04%s^x03 Pozitia de teleportare nu e corecta.", g_szTag ); } return PLUGIN_CONTINUE; } public CountDown_Teleport( id ) { if( !is_user_alive( id ) || !g_iUserHasTeleport[ id ] ) { remove_task( id ); Teleport_Cooldown[ id ] = 0; return PLUGIN_HANDLED; } set_hudmessage( 0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11 ); if( is_user_alive( id ) && Teleport_Cooldown[ id ] == 1 ) { Teleport_Cooldown[ id ] --; show_hudmessage( id, "Puterea iti va reveni in %d secunda.", Teleport_Cooldown[ id ] ); } if( is_user_alive( id ) && Teleport_Cooldown[ id ] > 1 ) { Teleport_Cooldown[ id ] --; show_hudmessage( id, "Puterea iti va reveni in %d secunde.", Teleport_Cooldown[ id ] ); } if( Teleport_Cooldown[ id ] <= 0 ) { show_hudmessage( id, "Ti-a revenit puterea !" ); remove_task( id ); Teleport_Cooldown[ id ] = 0; } return PLUGIN_HANDLED; } // GODMODE public ClCmdUseGodmode( id ) { if( !is_user_alive( id ) || !g_iUserHasGodmode[ id ] ) return PLUGIN_CONTINUE; if( GodMode_Countdown[ id ] && LastMessage[ id ] < get_gametime( ) ) { LastMessage[ id ] = get_gametime( ) + 1.0; } else if ( godmode( id ) ) { GodMode_Countdown[ id ] = get_pcvar_num( g_iCvarGodmodeCountDown ); CountDown_GodMode( id ); } return PLUGIN_CONTINUE; } public CountDown_GodMode( id ) { if( !is_user_alive( id ) || !g_iUserHasGodmode[ id ] ) { remove_task( id ); GodMode_Countdown[ id ] = 0; return PLUGIN_HANDLED; } else if( GodMode_Countdown[ id ] > 0 ) { set_hudmessage( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); show_hudmessage( id, "Iti vei putea folosi puterea in %d secund%s !", GodMode_Countdown[ id ], GodMode_Countdown[ id ] == 1 ? "a" : "e" ); GodMode_Countdown[ id ]--; set_task( 1.0, "CountDown_GodMode", id ); } else if( GodMode_Countdown[ id ] <= 0 ) { set_hudmessage( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); show_hudmessage( id, "Iti poti folosi puterea din nou !" ); GodMode_Countdown [ id ] = 0; } return PLUGIN_HANDLED; } bool:godmode( id ) { set_user_godmode( id, 1 ); set_task( get_pcvar_float( g_iCvarGodmodeTime ), "stopgodmode", id ); return true; } public stopgodmode( id ) { set_user_godmode( id, 0 ); set_hudmessage( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); show_hudmessage( id, "Nu mai ai esti invincibil !" ); return 1; } // TELEPORT bool:teleport( id ) { new Float:vOrigin[ 3 ], Float:vNewOrigin[ 3 ], Float:vNormal[ 3 ], Float:vTraceDirection[ 3 ], Float:vTraceEnd[ 3 ]; pev( id, pev_origin, vOrigin ); velocity_by_aim( id, get_pcvar_num( g_iCvarTeleportRange ), vTraceDirection ); xs_vec_add( vTraceDirection, vOrigin, vTraceEnd ); engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 ); new Float:flFraction; get_tr2( 0, TR_flFraction, flFraction ); if( flFraction < 1.0 ) { get_tr2( 0, TR_vecEndPos, vTraceEnd ); get_tr2( 0, TR_vecPlaneNormal, vNormal ); } xs_vec_mul_scalar( vNormal, 40.0, vNormal ); xs_vec_add( vTraceEnd, vNormal, vNewOrigin ); if( is_player_stuck( id, vNewOrigin ) ) return false; emit_sound( id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM ); tele_effect( vOrigin ); engfunc( EngFunc_SetOrigin, id, vNewOrigin ); tele_effect2( vNewOrigin ); return true; } stock is_player_stuck( id, Float:originF[ 3 ] ) { engfunc( EngFunc_TraceHull, originF, originF, 0, ( pev( id, pev_flags ) & FL_DUCKING ) ? HULL_HEAD : HULL_HUMAN, id, 0 ); if( get_tr2( 0, TR_StartSolid ) || get_tr2( 0, TR_AllSolid ) || !get_tr2( 0, TR_InOpen ) ) return true; return false; } stock tele_effect( const Float:torigin[ 3 ] ) { new origin[ 3 ]; origin[ 0 ] = floatround( torigin[ 0 ] ); origin[ 1 ] = floatround( torigin[ 1 ] ); origin[ 2 ] = floatround( torigin[ 2 ] ); message_begin( MSG_PAS, SVC_TEMPENTITY, origin ); write_byte( TE_BEAMCYLINDER ); write_coord( origin[ 0 ] ); write_coord( origin[ 1 ] ); write_coord( origin[ 2 ] + 10 ); write_coord( origin[ 0 ] ); write_coord( origin[ 1 ] ); write_coord( origin[ 2 ] + 60 ); write_short( ShockWave ); write_byte( 0 ); write_byte( 0 ); write_byte( 3 ); write_byte( 60 ); write_byte( 0 ); write_byte( 255 ); write_byte( 255 ); write_byte( 255 ); write_byte( 255 ); write_byte( 0 ); message_end( ); } stock tele_effect2( const Float:torigin[ 3 ] ) { new origin[ 3 ]; origin[ 0 ] = floatround( torigin[ 0 ] ); origin[ 1 ] = floatround( torigin[ 1 ] ); origin[ 2 ] = floatround( torigin[ 2 ] ); message_begin( MSG_PAS, SVC_TEMPENTITY, origin ); write_byte( TE_BEAMCYLINDER ); write_coord( origin[ 0 ] ); write_coord( origin[ 1 ] ); write_coord( origin[ 2 ] + 10 ); write_coord( origin[ 0 ] ); write_coord( origin[ 1 ] ); write_coord( origin[ 2 ] + 60 ); write_short( ShockWave ); // Sprite write_byte( 0 ); // Startfrate write_byte( 0 ); // Framerate write_byte( 4 ); // Life write_byte( 80 ); // Width write_byte( 0 ); // Amplitude write_byte( 255 ); // Red write_byte( 255 ); // Green write_byte( 255 ); // Blue write_byte( 255 ); // Brightness write_byte( 0 ); // Speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_SPRITETRAIL ); write_coord( origin[ 0 ] ); write_coord( origin[ 1 ] ); write_coord( origin[ 2 ] + 40 ); write_coord( origin[ 0 ] ); write_coord( origin[ 1 ] ); write_coord( origin[ 2 ] ); write_short( BlueFlare2 ); write_byte( 30 ); write_byte( 10 ); write_byte( 1 ); write_byte( 50 ); write_byte( 10 ); message_end( ); } // HOOK public TaskHookPrethink( id ) { id -= HookTask; if( !is_user_alive( id ) ) { Hook[ id ] = false; } if( !Hook[ id ] ) { remove_task( id + HookTask ); return 1; } static iOrigin1[ 3 ]; new Float:fOrigin[3]; get_user_origin( id, iOrigin1 ); pev( id, pev_origin, fOrigin); if( iHookOrigin[ id ][ 0 ] == 999999 ) { static iOrigin2[ 3 ]; get_user_origin( id, iOrigin2, 3 ); iHookOrigin[ id ][ 0 ] = iOrigin2[ 0 ]; iHookOrigin[ id ][ 1 ] = iOrigin2[ 1 ]; iHookOrigin[ id ][ 2 ] = iOrigin2[ 2 ]; } message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 1 ); write_short( id ); write_coord( iHookOrigin[ id ][ 0 ] ); write_coord( iHookOrigin[ id ][ 1 ]); write_coord( iHookOrigin[ id ][ 2 ] ); write_short( iBeamSprite ); write_byte( 1 ); write_byte( 1 ); write_byte( 5 ); write_byte( 18 ); write_byte( 0 ); write_byte( random( 256 ) ); write_byte( random( 256 ) ); write_byte( random( 256 ) ); write_byte( 200 ); write_byte( 0 ); message_end( ); static Float:fVelocity[ 3 ]; fVelocity[ 0 ] = ( float( iHookOrigin[ id ][ 0 ] ) - float( iOrigin1[ 0 ] ) ) * 3.0; fVelocity[ 1 ] = ( float( iHookOrigin[ id ][ 1 ] ) - float( iOrigin1[ 1 ] ) ) * 3.0; fVelocity[ 2 ] = ( float( iHookOrigin[ id ][ 2 ] ) - float( iOrigin1[ 2 ] ) ) * 3.0; static Float:fY; fY = fVelocity[ 0 ] * fVelocity[ 0 ] + fVelocity[ 1 ] * fVelocity[ 1 ] + fVelocity[ 2 ] * fVelocity[ 2 ]; static Float:fX; fX = ( HookSpeed ) / floatsqroot( fY ); fVelocity[ 0 ] *= fX; fVelocity[ 1 ] *= fX; fVelocity[ 2 ] *= fX; set_velo( id, fVelocity ); return 0; } public set_velo( id, Float:fVelocity[ 3 ] ) { return set_pev( id, pev_velocity, fVelocity ); } // COMBAT KNIFE public fw_EmitSounds( const id, const channel, const sample[ ] ) { if( is_user_alive( id ) ) { if( g_iUserHasCombatKnife[ id ] ) { for( new i = 0; i < sizeof CombatKnifeSoundList; i++ ) { if( equal( sample, OriginalKnifeSounds[ i ] ) ) { emit_sound( id, channel, CombatKnifeSoundList[ i ], 1.0, ATTN_NORM, 0, PITCH_NORM ); return FMRES_SUPERCEDE; } } } } return FMRES_IGNORED; } public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:b_gDamage, damagetype ) { if( !is_user_alive( iAttacker ) ) return HAM_IGNORED; if( !g_iUserHasCombatKnife[ iAttacker ] || get_user_weapon( iAttacker ) != CSW_KNIFE ) return HAM_IGNORED; new g_bHit, target; get_user_aiming( iAttacker, target, g_bHit ); new bool:g_bHead = ( g_bHit == HIT_HEAD ); new Float:default_dmg = 1.0; if( pev( iAttacker, pev_button, IN_ATTACK ) ) { default_dmg = g_bHead ? CB_PRIM_HEAD_DMG : CB_PRIM_DMG; } else { default_dmg = g_bHead ? CB_SEC_HEAD_DMG : CB_SEC_DMG; } SetHamParamFloat( 4, b_gDamage * default_dmg ); return HAM_HANDLED; } public Ham_TakeDamage_Post( iVictim, iInflictor, iAttacker, Float:g_bDamage, damagetype ) { if( !is_user_alive( iAttacker ) || !is_user_alive( iVictim ) ) { return HAM_IGNORED; } if( !g_iUserHasCombatKnife[ iAttacker ] || get_user_weapon( iAttacker ) != CSW_KNIFE ) { return HAM_IGNORED; } new Float:Origin[ 3 ], Float:Origin2[ 3 ], Float:Velocity[ 3 ]; pev( iAttacker, pev_origin, Origin ); pev( iVictim, pev_origin, Origin2 ); xs_vec_sub( Origin2, Origin, Velocity ); xs_vec_normalize( Velocity, Velocity ); xs_vec_mul_scalar( Velocity, ( CB_KNOCKBACK * 100.0 ), Velocity ); if( Velocity[ 2 ] <= 100.0 ) { Velocity[ 2 ] = random_float( 150.0, 250.0 ); } message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BLOODSPRITE ); engfunc( EngFunc_WriteCoord, Origin2[ 0 ] ); engfunc( EngFunc_WriteCoord, Origin2[ 1] ); engfunc( EngFunc_WriteCoord, Origin2[ 2] ); write_short( g_Blood[ 0 ] ); write_short( g_Blood[ 1 ] ); write_byte( 77 ); write_byte( 4 ); message_end( ); set_pev( iVictim, pev_velocity, Velocity ); return HAM_HANDLED; } // NO RECOIL public fwd_primary_attack( ent ) { new id = pev( ent, pev_owner ); pev( id, pev_punchangle, cl_pushangle[ id ] ); return HAM_IGNORED; } public fwd_primary_attack_post( ent ) { new id = pev( ent, pev_owner ); if( g_iUserHasNoRecoil[ id ] ) { new Float:push[ 3 ]; pev( id, pev_punchangle, push ); xs_vec_sub( push, cl_pushangle[ id ], push ); xs_vec_mul_scalar( push, get_pcvar_float( g_iCvarNoRecoil ), push ); xs_vec_add( push, cl_pushangle[ id ], push ); set_pev( id, pev_punchangle, push ); return HAM_IGNORED; } return HAM_IGNORED; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */