Advertisement
macquid123560

Top Jailbreak | Lr

Mar 23rd, 2016
2,232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 36.69 KB | None | 0 0
  1. /* Includes */
  2.  
  3. #include < amxmodx >
  4. #include < fakemeta_util >
  5. #include < fun >
  6. #include < cstrike >
  7. #include < hamsandwich >
  8. #include < dhudmessage >
  9.  
  10. /* Defines */
  11.  
  12. #define TASKID_COUNTDOWN    1561
  13. #define TASKID_MSG      1562
  14. #define TASKID_BEACON       1563
  15. #define MAX_SOUNDS      9
  16.  
  17. new Rambo[ ] = "Top/JB/rambo1.mp3";
  18. new s4s[ ] = "Top/JB/shot4shot.mp3";
  19.  
  20.  
  21. native StartContest( const index, const player, contest );
  22. native start_dodgeball( const index, const player );
  23. native GetUserBalls( const index );
  24. /* Enums */
  25.  
  26. enum _:enWeaponsData
  27. {
  28.     wName[ 32 ],
  29.     wClass[ 32 ],
  30.     wIndex
  31. };
  32.  
  33. enum _:enComboData
  34. {
  35.     cmbName[ 32 ],
  36.     cmdIndex
  37. };
  38.  
  39. /* Arrays */
  40.  
  41. new Info[ 5 ][ ] =
  42. {
  43.     "JailBreak Last Request",
  44.     "1.0",
  45.     "Built by Rejack || Edit by @.TheBomB`",
  46.     "Top JailBreak",        // Prefix
  47.     "Top Jailbreak"         // Chat Prefix
  48. };
  49.  
  50. new szTypes[ ][ ] =
  51. {
  52.     "Shot 4 Shot",
  53.     "Custom War",
  54.     "Special Duels",
  55.     "Chat Duels",
  56.     "Rambo"
  57. };
  58.  
  59. new LR_SPEARGUN = 2;
  60.  
  61. new szWarOptions[ ][ ] =
  62. {
  63.     "Normal",
  64.     "HP",
  65.     "HS",
  66.     "Gravity"
  67. };
  68.  
  69. new szMusic[ MAX_SOUNDS ][ ] =
  70. {
  71.     "Top/JB/LR/winsound1.mp3",
  72.     "Top/JB/LR/winsound2.mp3",
  73.     "Top/JB/LR/winsound3.mp3",
  74.     "Top/JB/LR/winsound4.mp3",
  75.     "Top/JB/LR/winsound5.mp3",
  76.     "Top/JB/LR/winsound6.mp3",
  77.     "Top/JB/LR/winsound7.mp3",
  78.     "Top/JB/LR/winsound8.mp3",
  79.     "Top/JB/LR/winsound9.mp3"
  80.  
  81.  
  82. }
  83.  
  84. new szS4S[ ][ enWeaponsData ] =
  85. {
  86.     { "Deagle", "weapon_deagle",    CSW_DEAGLE },
  87.     { "Awp",    "weapon_awp",       CSW_AWP },
  88.     { "Scout""weapon_scout",     CSW_SCOUT },
  89.     { "USP",    "weapon_usp",       CSW_USP },
  90.     { "Glock 18",   "weapon_glock18",   CSW_GLOCK18 }
  91. };
  92.  
  93. new szWar[ ][ enWeaponsData ] =
  94. {
  95.     { "M4A1",   "weapon_m4a1",      CSW_M4A1 },
  96.     { "AK47",   "weapon_ak47",      CSW_AK47 },
  97.     { "M249",   "weapon_m249",      CSW_M249 },
  98.     { "MP5",    "weapon_mp5navy",   CSW_MP5NAVY },
  99.     { "M3",     "weapon_m3",        CSW_M3 },
  100.     { "Glock""weapon_glock18",   CSW_GLOCK18 },
  101.     { "USP",    "weapon_usp",       CSW_USP },
  102.     { "Deagle", "weapon_deagle",    CSW_DEAGLE },
  103.     { "Famas""weapon_famas",     CSW_FAMAS },
  104.     { "Galil""weapon_galil",     CSW_GALIL },
  105.     { "Knife""weapon_knife",     CSW_KNIFE },
  106.     { "Awp",    "weapon_awp",       CSW_AWP },
  107.     { "Grenade",    "weapon_hegrenade", CSW_HEGRENADE },
  108.     { "Smoke""weapon_smokegrenade",  CSW_SMOKEGRENADE },
  109.     { "Xm 1014",    "weapon_xm1014",    CSW_XM1014 },
  110.     { "Scout""weapon_scout",          CSW_SCOUT },
  111.     { "UMP 45", "weapon_ump45",          CSW_UMP45}
  112. };
  113.  
  114.  
  115. new szFun[ ][ ] =
  116. {
  117.     "Shark",
  118.     "Drop Bomb",
  119.     "Drop Deagle",
  120.     "Shot The Bomb",
  121.     "Survival",
  122.     "Invisible",
  123.     "Spray",
  124.     "Hide'N'Seek",
  125.     "Strip Weapon",
  126.     "Combo",
  127.     "Drop Bomb [\rNo Pool\w]",
  128.     "Dodgeball",
  129.     "Deagle Power",
  130.     "Power Grenade",
  131.     "Spear Gun",
  132.     "Tactical Knifes",
  133.          "Pumpkin",
  134.     "Cannon"
  135. };
  136.  
  137. new const szContests[ ][ ] =
  138. {
  139.          "First Write",
  140.     "Translate",
  141.     "Missing Letter",
  142.     "Mathematics",
  143.     "Type Race"
  144. };
  145.  
  146. new g_szCombo[ ] = { IN_ATTACK, IN_ATTACK2, IN_BACK, IN_FORWARD, IN_MOVELEFT, IN_MOVERIGHT, IN_JUMP, IN_DUCK, IN_RELOAD, IN_USE, IN_SCORE };
  147.  
  148. new szCombo[ ][ ] = { "Attack", "Attack2", "Back", "Forward", "Left", "Right", "Jump", "Duck", "Reload", "Use", "Score" };
  149.  
  150. new const szGuns[][] =
  151. {
  152.         "events/awp.sc",
  153.         "events/g3sg1.sc",
  154.         "events/ak47.sc",
  155.         "events/scout.sc",
  156.         "events/m249.sc",
  157.         "events/m4a1.sc",
  158.         "events/sg552.sc",
  159.         "events/aug.sc",
  160.         "events/sg550.sc",
  161.         "events/m3.sc",
  162.         "events/xm1014.sc",
  163.         "events/usp.sc",
  164.         "events/mac10.sc",
  165.         "events/ump45.sc",
  166.         "events/fiveseven.sc",
  167.         "events/p90.sc",
  168.         "events/deagle.sc",
  169.         "events/p228.sc",
  170.         "events/glock18.sc",
  171.         "events/mp5n.sc",
  172.         "events/tmp.sc",
  173.         "events/elite_left.sc",
  174.         "events/elite_right.sc",
  175.         "events/galil.sc",
  176.         "events/famas.sc"
  177. };
  178.  
  179. new TheStriped, TheStriper;
  180.  
  181. native is_after_lr()
  182.  
  183. native is_player_premium( index );
  184.  
  185. native give_speargun( index );
  186. native remove_speargun( index );
  187.  
  188. native give_tactical( index );
  189. native remove_tactical( index );
  190.  
  191. native give_pumpkin__( index );
  192. native remove_pumpkin__( index );
  193.  
  194. native get_cannon( index );
  195. native remove_cannon( index );
  196.  
  197. new szItem[ 128 ];
  198. new bool: bActive, bool: bShot, bool: bPlayer[ 33 ], bool: bTurn[ 33 ], bool: bMsg[ 33 ], bool: bCombo, bool: bPressed, bool: bPowerDeagle;
  199. new g_iMaxPlayers, g_iTimer, g_iCount, iType, iWar, iDuel, g_iCombo[ 11 ], iCombo[ 33 ], beaconSprite, g_iBit, g_iForward, g_max_clients;
  200. new Float: fCombo[ 33 ];
  201. new bool:TakeBox;
  202.  
  203. new LR_PREMIUM = 5;
  204.  
  205. public plugin_init()
  206. {
  207.    
  208.     register_plugin( Info[ 0 ], Info[ 1 ], Info[ 2 ] );
  209.  
  210.     register_saycmd( "lr", "CmdMenu" );
  211.     register_saycmd( "infomsg", "CmdInfoMsg" );
  212.    
  213.     register_event( "DeathMsg", "evDeathMsg", "a" );
  214.     register_logevent( "evRoundStart", 2, "1=Round_Start" );
  215.    
  216.     register_forward( FM_PlaybackEvent, "FwdPlaybackEvent" );
  217.     register_forward( FM_PlayerPreThink, "FwdPreThink" );
  218.     register_forward( FM_SetModel, "FwdSetModel" );
  219.     register_forward( FM_Voice_SetClientListening, "FwdVoiceSetClientListening" );
  220.    
  221.     unregister_forward( FM_PrecacheEvent, g_iForward, 1 );
  222.    
  223.     RegisterHam( Ham_TakeDamage, "player", "FwdTakeDamage", 0 );
  224.    
  225.     g_iMaxPlayers = get_maxplayers();
  226.     g_max_clients = global_get( glb_maxClients );
  227.    
  228.    
  229. }
  230.  
  231. public FwdUseButton()
  232. {
  233.     if ( !bActive )
  234.         return 1;
  235.    
  236.     return 4;
  237. }
  238.  
  239. public plugin_precache()
  240. {
  241.     beaconSprite = precache_model( "sprites/white.spr" );
  242.    
  243.     precache_sound( Rambo );
  244.     precache_sound( s4s );
  245.    
  246.     g_iForward = register_forward( FM_PrecacheEvent, "FwdPrecacheEvent", 1 );
  247.    
  248.     for ( new i; i < MAX_SOUNDS; i++ )
  249.         precache_sound( szMusic[ i ] );
  250. }
  251.  
  252. public plugin_natives()
  253. {
  254.     register_library( "LastRequest" );
  255.    
  256.     register_native( "is_user_lr", "native_is_user_lr" );
  257.     register_native( "is_lr_start", "native_is_lr_satrt" );
  258.     register_native( "is_lr_active", "native_is_lr_satrt" );
  259.     register_native( "stop_lr", "native_stop_lr" );
  260.     register_native( "is_lr_dodgeball", "native_is_lr_dodgeball" );
  261.     register_native( "get_user_bmsg", "_get_user_bmsg" );
  262.     register_native( "is_after_lr", "_is_after_lr" );
  263. }
  264.  
  265. public bool: native_is_lr_satrt()
  266.     return bActive;
  267.  
  268. public _is_after_lr(plugin,params)
  269.     return TakeBox;
  270.    
  271. public native_stop_lr()
  272.     StopRequest( ( get_param( 1 ) == 0 ) ? false : true );
  273.    
  274. public bool: native_is_user_lr( plugin, params )
  275.     return bPlayer[ get_param( 1 ) ];
  276.  
  277. public _get_user_bmsg( plugin, params )
  278. {
  279.     return bMsg[ get_param( 1 ) ];
  280. }
  281.  
  282. public bool: native_is_lr_dodgeball( plugin, params )
  283.     return (iType==2&&iDuel==11) ? true : false;
  284.    
  285. /* Others */
  286.  
  287. public CmdInfoMsg( client )
  288. {
  289.     bMsg[ client ] = !bMsg[ client ];
  290.    
  291.     ColorPrint( client, "You^4 %s^3 Info Message^1!", bMsg[ client ] ? "Disabled" : "Enabled" );
  292.    
  293.     return 1;
  294. }
  295.  
  296. public client_putinserver( client )
  297. {
  298.     bPlayer[ client ] = false;
  299.    
  300.     bTurn[ client ] = false;
  301. }
  302.  
  303. public client_disconnect( client )
  304. {
  305.     if ( bPlayer[ client ] && bActive && iType != 3 )
  306.     {
  307.         StopRequest();
  308.        
  309.         ColorPrint( 0, "The^3 Last Request^1 was stopped because^4 %s^1 left the game.", szName( client ) );
  310.     }
  311. }
  312.  
  313. /* Menu */
  314.  
  315. public CmdMenu( client )
  316. {
  317.     if ( !is_user_valid( client ) )
  318.         return ColorPrint( client, GetReason( client ) );
  319.    
  320.     formatex( szItem, charsmax( szItem ), "\r[\w%s\r]\w Last Request", Info[ 3 ] );
  321.    
  322.     new Menu = menu_create( szItem, "SubMenu" );
  323.    
  324.     for ( new i; i < sizeof szTypes - 1; i++ )
  325.         AddItem( Menu, "%s %s", szTypes[ i ], (i==3) ? "^n":"" );
  326.    
  327.     menu_additem( Menu, "\yRambo" );
  328.    
  329.     menu_addblank( Menu, 0 );
  330.    
  331.     menu_display( client, Menu );
  332.    
  333.     return 1;
  334. }
  335.  
  336. public SubMenu( client, Menu, Item )
  337. {
  338.     if ( !is_user_valid( client ) )
  339.         return ColorPrint( client, GetReason( client ) );
  340.    
  341.     if ( Item == MENU_EXIT )
  342.     {
  343.         menu_destroy( Menu );
  344.        
  345.         return 1;
  346.     }
  347.    
  348.     new iMenu;
  349.    
  350.     if ( Item != 1 )
  351.     {
  352.        
  353.         formatex( szItem, charsmax( szItem ), "\r[\w%s\r]\w %s Duels", Info[ 3 ], szTypes[ Item ] );
  354.        
  355.         iMenu = menu_create( szItem, "SubDuels" );
  356.     }
  357.    
  358.     iType = Item;
  359.    
  360.     switch ( Item )
  361.     {
  362.         case 0:
  363.         {
  364.             for ( new i; i < sizeof szS4S; i++ )
  365.                 menu_additem( iMenu, szS4S[ i ] );
  366.         }
  367.        
  368.         case 1:
  369.         {
  370.             CmdWar( client );
  371.            
  372.             return 1;
  373.         }
  374.        
  375.         case 2:
  376.         {
  377.             for ( new i; i < sizeof szFun; i++ )
  378.                 menu_additem( iMenu, szFun[ i ] );
  379.         }
  380.        
  381.         case 3:
  382.         {
  383.             for ( new i; i < sizeof szContests; i++ )
  384.                 menu_additem( iMenu, szContests[ i ] );
  385.         }
  386.        
  387.         case 4: // Rambo
  388.         {
  389.             StopRequest();
  390.            
  391.             iType = 4;
  392.            
  393.             bPlayer[ client ] = true;
  394.            
  395.             bActive = true;
  396.            
  397.             fm_strip_user_weapons( client );
  398.            
  399.             fm_give_item( client, "weapon_m249" );
  400.            
  401.             cs_set_user_bpammo( client, CSW_M249, 9999 );
  402.            
  403.             fm_set_user_health( client, TeamCount( "CT" ) * 500 );
  404.            
  405.             for ( new i = 1; i < g_iMaxPlayers; i++ )
  406.             {
  407.                 if ( !is_user_alive( i ) || !is_user_connected( i ) || cs_get_user_team( i ) != CS_TEAM_CT )
  408.                     continue;
  409.                
  410.                 fm_strip_user_weapons( i );
  411.                
  412.                 fm_give_item( i, "weapon_m4a1" );
  413.                
  414.                 fm_give_item( i, "weapon_deagle" );
  415.                
  416.                 fm_give_item( i, "weapon_knife" );
  417.                
  418.                 cs_set_user_bpammo( i, CSW_M4A1, 120 );
  419.                
  420.                 cs_set_user_bpammo( i, CSW_DEAGLE, 70 );
  421.                
  422.                 fm_set_user_health( i, 100 );
  423.             }
  424.            
  425.             CmdMsg();
  426.            
  427.             ColorPrint( 0, "^3%s^1 started^4 Rambo^1!", szName( client ) );
  428.             client_cmd( 0, "; mp3 play ^"sound/%s", Rambo );
  429.            
  430.             fn_Cells()
  431.            
  432.             return 1;
  433.         }
  434.     }
  435.    
  436.     menu_display( client, iMenu );
  437.    
  438.     menu_destroy( Menu );
  439.    
  440.     return 1;
  441. }
  442.            
  443. public CmdWar( client )
  444. {
  445.     if ( !is_user_valid( client ) )
  446.         return ColorPrint( client, GetReason( client ) );
  447.    
  448.     formatex( szItem, charsmax( szItem ), "\r[\w%s\r]\w War Duels", Info[ 3 ] );
  449.    
  450.     new Menu = menu_create( szItem, "SubWar" );
  451.    
  452.     AddItem( Menu, "Game Mode:\r %s", szWarOptions[ iWar ] );
  453.    
  454.     for ( new i; i < sizeof szWar; i++ )
  455.     {
  456.         if ( iWar == 2 && i == charsmax( szWar ) )
  457.             break;
  458.        
  459.         menu_additem( Menu, szWar[ i ] )
  460.     }
  461.    
  462.     menu_display( client, Menu );
  463.    
  464.     return 1;
  465. }
  466.  
  467. public SubWar( client, Menu, Item )
  468. {
  469.     if ( !is_user_valid( client ) )
  470.         return ColorPrint( client, GetReason( client ) );
  471.    
  472.     if ( Item == MENU_EXIT )
  473.     {
  474.         menu_destroy( Menu );
  475.        
  476.         return 1;
  477.     }
  478.    
  479.     if ( Item == 0 )
  480.     {
  481.         if ( iWar == 3 )
  482.             iWar = -1;
  483.        
  484.         iWar++;
  485.        
  486.         CmdWar( client );
  487.        
  488.         return 1;
  489.     }
  490.    
  491.     iDuel = Item - 1;
  492.    
  493.     menu_destroy( Menu );
  494.    
  495.     CmdPlayers( client );
  496.    
  497.     return 1;
  498. }
  499.  
  500. public SubDuels( client, Menu, Item )
  501. {
  502.     if ( !is_user_valid( client ) )
  503.         return ColorPrint( client, GetReason( client ) );
  504.    
  505.     if ( Item == MENU_EXIT )
  506.     {
  507.         menu_destroy( Menu );
  508.        
  509.         return 1;
  510.     }
  511.    
  512.     iDuel = Item;
  513.    
  514.     menu_destroy( Menu );
  515.    
  516.     CmdPlayers( client );
  517.    
  518.     return 1;
  519. }
  520.  
  521. public CmdPlayers( client )
  522. {
  523.     if ( !is_user_valid( client ) )
  524.         return ColorPrint( client, GetReason( client ) );
  525.    
  526.     formatex( szItem, charsmax( szItem ), "\r[\w%s\r]\w Select a Player\d:^n^nDuel:\y %s", Info[ 3 ], GetDuel() );
  527.    
  528.     new Menu = menu_create( szItem, "SubPlayers" );
  529.    
  530.     new Players[ 32 ], iNum, szTempid[ 10 ], iPlayer;
  531.    
  532.     get_players( Players, iNum, "aceh", "CT" );
  533.    
  534.     for ( new i; i < iNum; i++ )
  535.     {
  536.         iPlayer = Players[ i ];
  537.        
  538.         num_to_str( iPlayer, szTempid, charsmax( szTempid ) );
  539.        
  540.         menu_additem( Menu, szName( iPlayer ), szTempid );
  541.     }
  542.    
  543.     menu_display( client, Menu );
  544.    
  545.     return 1;
  546. }
  547.  
  548. public SubPlayers( client, Menu, Item )
  549. {
  550.     if ( !is_user_valid( client ) )
  551.         return ColorPrint( client, GetReason( client ) );
  552.    
  553.     if ( Item == MENU_EXIT )
  554.     {
  555.         menu_destroy( Menu );
  556.        
  557.         return 1;
  558.     }
  559.    
  560.     new Trash, mData[ 6 ];
  561.    
  562.     menu_item_getinfo( Menu, Item, Trash, mData, charsmax( mData ), _,_, Trash );
  563.    
  564.     new iPlayer = str_to_num( mData );
  565.    
  566.     if ( cs_get_user_team( iPlayer ) != CS_TEAM_CT || !is_user_alive( iPlayer ) || !is_user_connected( iPlayer ) )
  567.         return ColorPrint( client, "This player is no longer valid." );
  568.    
  569.     StopRequest( true );
  570.    
  571.     bPlayer[ client ] = true;
  572.    
  573.     bPlayer[ iPlayer ] = true;
  574.    
  575.     StartGames( client, iPlayer );
  576.    
  577.     return 1;
  578. }
  579.  
  580. /* Forwards */
  581.  
  582. public FwdTakeDamage( victim, inf, attacker, Float:damage, damagebits )
  583. {
  584.     if ( !is_user_connected( victim ) || !is_user_alive( victim ) || !is_user_connected( attacker ) || !is_user_alive( attacker ) )
  585.         return 1;
  586.    
  587.     if ( attacker == victim || !bPowerDeagle || !bPlayer[ attacker ] || !bPlayer[ victim ] )
  588.         return 1;
  589.    
  590.     static g_mWeapon;
  591.    
  592.     g_mWeapon = get_user_weapon( attacker );
  593.    
  594.     if ( g_mWeapon == CSW_DEAGLE || g_mWeapon == CSW_HEGRENADE )
  595.     {
  596.         new Float:iOrigin[ 3 ], Float:Vec[ 3 ];
  597.        
  598.         get_velocity( victim, iOrigin, 1500.0, Vec );
  599.        
  600.         Vec[ 2 ] = 300.0;
  601.        
  602.         set_pev( victim, pev_velocity, Vec );
  603.     }
  604.    
  605.     return 1;
  606. }
  607.  
  608. public FwdPreThink( client )
  609. {
  610.     if ( !bPressed && TeamCount( "TERRORIST" ) == 1 && TeamCount( "CT" ) > 0 )
  611.     {
  612.         bPressed = true;
  613.        
  614.         for ( new i = 1; i < g_iMaxPlayers; i++ )
  615.         {
  616.             if ( !is_user_connected( i ) || !is_user_alive( i ) || cs_get_user_team( i ) != CS_TEAM_T  )
  617.                 continue;
  618.            
  619.             client_cmd( i, "say /lr" );
  620.            
  621.             break;
  622.         }
  623.        
  624.         return 1;
  625.     }
  626.    
  627.     if ( !bActive || !bPlayer[ client ] || !bCombo || !is_user_alive( client ) || !is_user_connected( client ) )
  628.         return 1;
  629.    
  630.     new button  = fm_get_user_button( client );
  631.    
  632.     new oldbutton   = fm_get_user_oldbutton( client );
  633.    
  634.     new pressed = button & ~oldbutton;
  635.    
  636.     if ( pressed & g_szCombo[ g_iCombo[ iCombo[ client ] ] ] )
  637.     {
  638.         iCombo[ client ]++;
  639.        
  640.         ColorPrint( client, "You pressed the^4 right^1 key! ^3[^4 Combo Status:^1 %i/10 ^3]", iCombo[ client ] );
  641.        
  642.         fCombo[ client ] = get_gametime();
  643.        
  644.         if ( iCombo[ client ] == 10 )
  645.         {
  646.             bCombo = false;
  647.            
  648.             for ( new i = 1; i < g_iMaxPlayers; i++ )
  649.             {
  650.                 if ( !is_user_alive( i ) || !is_user_connected( i ) || !bPlayer[ i ] )
  651.                     continue;
  652.                
  653.                 if ( cs_get_user_team( client ) == CS_TEAM_CT && cs_get_user_team( i ) == CS_TEAM_T
  654.                 || cs_get_user_team( client ) == CS_TEAM_T && cs_get_user_team( i ) == CS_TEAM_CT )
  655.                     set_pev( i, pev_flags, pev( i, pev_flags) | FL_FROZEN );
  656.             }
  657.            
  658.             fm_give_item( client, "weapon_m4a1" );
  659.            
  660.             cs_set_user_bpammo( client, CSW_M4A1, 120 );
  661.            
  662.             return 1;
  663.         }
  664.        
  665.         return 1;
  666.     }
  667.    
  668.     if ( fCombo[ client ] + 1 < get_gametime() )
  669.     {
  670.         fCombo[ client ] = get_gametime();
  671.        
  672.         iCombo[ client ] = 0;
  673.            
  674.         return 1;
  675.     }
  676.    
  677.     if ( pressed )
  678.     {
  679.         iCombo[ client ] = 0;
  680.        
  681.         ColorPrint( client, "Wrong key! you^4 failed^1!^3 try again^1!" );
  682.     }
  683.    
  684.     return 1;
  685. }
  686.  
  687. public FwdPrecacheEvent( type, const name[] )
  688. {
  689.     for ( new i = 0; i < sizeof szGuns; ++i )
  690.     {
  691.         if ( equal( szGuns[ i ], name ) )
  692.         {
  693.             g_iBit |= (1<<get_orig_retval());
  694.            
  695.             return 2;
  696.         }
  697.     }
  698.    
  699.     return 1;
  700. }
  701.  
  702. public FwdPlaybackEvent( iFlags, client, iEvent )
  703. {
  704.     if ( !( g_iBit & (1<<iEvent) ) || !(1<=client<=g_max_clients) )
  705.         return 2;
  706.    
  707.     if ( bActive && bPlayer[ client ] && bShot )
  708.     {
  709.         if ( !bTurn[ client ] )
  710.             return 4;
  711.        
  712.         for ( new i = 1; i < g_iMaxPlayers; i++ )
  713.         {
  714.             if ( !is_user_alive( i ) || !is_user_connected( i ) || !bPlayer[ i ] || bTurn[ i ] )
  715.                 continue;
  716.            
  717.             if ( i == client )
  718.                 continue;
  719.            
  720.             bTurn[ i ] = true;
  721.            
  722.             cs_set_weapon_ammo( fm_find_ent_by_owner( 1, szS4S[ iDuel ][ wClass ], i ), 1 );
  723.         }
  724.        
  725.         bTurn[ client ] = false;
  726.        
  727.         cs_set_weapon_ammo( fm_find_ent_by_owner( 1, szS4S[ iDuel ][ wClass ], client ), 0 );
  728.     }
  729.    
  730.     return 2;
  731. }
  732.  
  733. public FwdSetModel( ent )
  734. {
  735.     if ( !bActive )
  736.         return 1;
  737.    
  738.     if ( !pev_valid( ent ) )
  739.         return 1;
  740.    
  741.     if ( iDuel == 1 || iDuel == 2 || iDuel == 3 || iDuel == 10 )
  742.     {
  743.         static client; client = pev( ent,pev_owner );
  744.        
  745.         if ( !( 1 <= client <= g_max_clients ) )
  746.             return 1;
  747.            
  748.         switch( get_user_team( client ) )
  749.         {
  750.             case 1: fm_set_rendering( ent, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 1 );
  751.            
  752.             case 2: fm_set_rendering( ent, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 1 );
  753.         }
  754.     }
  755.    
  756.     return 1;
  757. }
  758.  
  759. public FwdVoiceSetClientListening( Rec, Sender, bool:bListen )
  760. {
  761.     if ( !is_user_connected( Sender ) || !is_user_connected( Rec ) || get_user_flags( Sender ) & ADMIN_BAN
  762.     || cs_get_user_team( Sender ) == CS_TEAM_CT && is_user_alive( Sender )
  763.     || cs_get_user_team( Sender ) == CS_TEAM_T && is_user_alive( Sender ) && TeamCount( "TERRORIST" ) == 1 )
  764.         return 1;
  765.    
  766.     engfunc( EngFunc_SetClientListening, Rec, Sender, 0 );
  767.    
  768.     return 4;
  769. }
  770.  
  771. /* Beacon */
  772.  
  773.  
  774. public CmdBeacon( const client )
  775. {
  776.     if ( !bActive || !bPlayer[ client ] )
  777.         return 1;
  778.    
  779.     static CsTeams: iTeam;
  780.    
  781.     iTeam = cs_get_user_team( client );
  782.    
  783.     static iOrigin[ 3 ];
  784.     get_user_origin( client, iOrigin );
  785.     message_begin(MSG_BROADCAST, SVC_TEMPENTITY );
  786.     write_byte(TE_BEAMCYLINDER );               // TE id
  787.     write_coord(iOrigin[0])                 // x
  788.     write_coord(iOrigin[1])                 // y
  789.     write_coord(iOrigin[2]-20)              // z
  790.     write_coord(iOrigin[0])                 // x axis
  791.     write_coord(iOrigin[1]);                // y axis
  792.     write_coord(iOrigin[2]+200);                // z axis
  793.     write_short( beaconSprite );                // sprite
  794.     write_byte(0);                      // startframe  
  795.     write_byte(1);                      // framerate  
  796.     write_byte(5);                      // life
  797.     write_byte(5);                      // width
  798.     write_byte(1);                      // noise    
  799.     write_byte( (iTeam==CS_TEAM_CT) ? 0 : 255 );        // red  
  800.     write_byte( 0 );                    // green  
  801.     write_byte( (iTeam==CS_TEAM_CT) ? 255 : 0 );        // blue  
  802.     write_byte(255);                    // brightness
  803.     write_byte(0);                      // speed
  804.     message_end();
  805.    
  806.     set_task( 1.5, "CmdBeacon", client );
  807.    
  808.     return 1;
  809. }
  810.  
  811.  
  812. /* Events */
  813.  
  814. public evCountdown()
  815. {
  816.     if ( g_iTimer <= 0 )
  817.     {
  818.         if ( iDuel == 9 )
  819.         {
  820.             bCombo = true;
  821.            
  822.             ComboMsg();
  823.        
  824.             return 1;
  825.         }
  826.            
  827.         for ( new i = 1; i < g_iMaxPlayers; i++ )
  828.         {
  829.             if ( !is_user_connected( i ) || !is_user_alive( i ) || !bPlayer[ i ] || cs_get_user_team( i ) != CS_TEAM_T )
  830.                 continue;
  831.            
  832.             set_pev( i, pev_flags, pev( i, pev_flags ) & ~FL_FROZEN );
  833.         }
  834.        
  835.         g_iCount = 10;
  836.        
  837.         evCount();
  838.        
  839.         return 1;
  840.     }
  841.    
  842.     new Vox[ 32 ];num_to_word( g_iTimer, Vox, charsmax( Vox ) );
  843.    
  844.     client_cmd( 0, "spk ^"vox/%s^"", Vox, (g_iTimer > 1) ? "s" : "" );
  845.    
  846.     set_hudmessage( 255, 0, 0, -1.0, 0.35, 1, 6.0, 1.0, 0.1, 0.1, -1 );
  847.    
  848.     show_hudmessage( 0, "%s will start in %i Seconds!", GetDuel(), g_iTimer );
  849.    
  850.     g_iTimer--;
  851.    
  852.     set_task( 1.0, "evCountdown", TASKID_COUNTDOWN );
  853.    
  854.     return 1;
  855. }
  856.  
  857. public evCount()
  858. {
  859.     if ( g_iCount <= 0 )
  860.     {
  861.         if ( iType == 2 )
  862.         {
  863.             {
  864.                 for ( new i = 1; i < g_iMaxPlayers; i++ )
  865.                 {
  866.                     if ( !is_user_connected( i ) || !is_user_alive( i ) || !bPlayer[ i ] )
  867.                         continue;
  868.                    
  869.                     if ( iDuel == 7 )
  870.                     {
  871.                         if ( cs_get_user_team( i ) == CS_TEAM_CT )
  872.                             fm_set_user_godmode( i, 0 );
  873.                        
  874.                         if ( cs_get_user_team( i ) == CS_TEAM_T )
  875.                         {
  876.                             fm_give_item( i, "weapon_m4a1" );
  877.                            
  878.                             cs_set_user_bpammo( i, CSW_M4A1, 999 );
  879.                         }
  880.                     }
  881.                    
  882.                     if ( iDuel == 8 )
  883.                     {
  884.                         if ( cs_get_user_team( i ) == CS_TEAM_CT )
  885.                         {
  886.                             fm_give_item( i, "weapon_m4a1" );
  887.                            
  888.                             cs_set_user_bpammo( i, CSW_M4A1, 999 );
  889.                         }
  890.                     }
  891.                 }
  892.             }
  893.         }
  894.        
  895.         return 1;
  896.     }
  897.    
  898.     //set_hudmessage( 0, 130, 255, -1.0, -1.0, 1, 6.0, 1.0, 0.1, 0.1, -1 );
  899.    
  900.     //show_hudmessage( 0, "%i", g_iCount );
  901.    
  902.     set_hudmessage
  903.    
  904.     g_iCount--;
  905.    
  906.     set_task( 1.0, "evCount", TASKID_COUNTDOWN );
  907.    
  908.     return 1;
  909. }
  910.  
  911. public evRoundStart()
  912. {
  913.     StopRequest();
  914. }
  915.  
  916. public evDeathMsg()
  917. {
  918.     if ( !bActive )
  919.         return 0;
  920.    
  921.     new attacker = read_data( 1 );
  922.     new victim = read_data( 2 );
  923.    
  924.     if ( !is_user_connected( attacker ) || !is_user_connected( victim ) || !bPlayer[ attacker ] || !bPlayer[ victim ] )
  925.         return 0;
  926.    
  927.     if ( attacker != victim )
  928.     {
  929.         client_cmd( 0, "; mp3 play ^"sound/%s", szMusic[ random( MAX_SOUNDS ) ] );
  930.         client_cmd(attacker,"dsdance")
  931.         ColorPrint( 0, "^3%s^1 won the^4 %s^1 against^3 %s^1!", szName( attacker  ), GetDuel(), szName( victim ) );
  932.         TakeBox = true
  933.         set_task(10.0, "DontTake")
  934.     }
  935.    
  936.     if( iType == LR_PREMIUM && iDuel == LR_SPEARGUN )
  937.         remove_speargun( attacker );
  938.        
  939.     bPlayer[ attacker ] = bPlayer[ victim ] = false;
  940.    
  941.     StopRequest();
  942.    
  943.     return 0;
  944. }
  945.  
  946. public DontTake()
  947. {
  948.     TakeBox = false
  949. }  
  950.  
  951. stock StopRequest( bool: bReset = false )
  952. {
  953.     bActive     = false;
  954.    
  955.     bShot       = false;
  956.    
  957.     bCombo      = false;
  958.    
  959.     bPressed    = false;
  960.    
  961.     bPowerDeagle    = false;
  962.    
  963.     if ( !bReset )
  964.         iDuel = iType = iWar = 0;
  965.    
  966.     remove_task( TASKID_COUNTDOWN );
  967.    
  968.     remove_task( 19234 )
  969.    
  970.     remove_task( TASKID_MSG );
  971.    
  972.     remove_task( TASKID_BEACON );
  973.    
  974.     set_user_hitzones( 0, 0, 255 );
  975.    
  976.     for ( new i = 1; i < g_iMaxPlayers; i++ )
  977.     {
  978.         if ( !is_user_connected( i ) || !is_user_alive( i ) )
  979.             continue;
  980.        
  981.         bPlayer[ i ] = false;
  982.        
  983.         bTurn[ i ] = false;
  984.        
  985.         fm_set_user_gravity( i, 1.0 );
  986.        
  987.         fm_set_user_noclip( i, 0 );
  988.        
  989.         fm_set_user_rendering( i );
  990.        
  991.         fm_set_user_godmode( i, 0 );
  992.     }  
  993. }
  994.  
  995. /* Messages */
  996.  
  997. public CmdMsg()
  998. {  
  999.     if ( !bActive )
  1000.         return 1;
  1001.    
  1002.     new Players[ 32 ], iNum, szMsg[ 512 ], szText[ 128 ];
  1003.    
  1004.     get_players( Players, iNum );
  1005.        
  1006.     formatex( szMsg, charsmax( szMsg ), "^nTop Jailbreak | Last Request^n^nDuel: %s", GetDuel() );
  1007.  
  1008.     AddLines( szMsg, charsmax( szMsg ) );
  1009.    
  1010.     for ( new i; i < iNum; i++ )
  1011.     {
  1012.         new iPlayer = Players[ i ];
  1013.        
  1014.         if ( bPlayer[ iPlayer ] )
  1015.         {  
  1016.            
  1017.             formatex( szText, charsmax( szText ), "%s: %s | %i Health^n", (cs_get_user_team( iPlayer )==CS_TEAM_CT) ? "Guard" : "Prisoner", szName( iPlayer ), get_user_health( iPlayer ), GetUserBalls( iPlayer ) );
  1018.            
  1019.             if ( iType == 2 && iDuel == 11 )    /* Dodgeball */
  1020.             formatex( szText, charsmax( szText ), "^%s: %s | %i Health | Balls Threw: %i^n", (cs_get_user_team( iPlayer )==CS_TEAM_CT) ? "Guard" : "Prisoner", szName( iPlayer ), get_user_health( iPlayer ), GetUserBalls( iPlayer ) );
  1021.            
  1022.             add( szMsg, charsmax( szMsg ), szText );
  1023.         }
  1024.     }
  1025.    
  1026.     add( szMsg, charsmax( szMsg ), "^n^nTo disable this message type /infomsg ." );
  1027.    
  1028.     ShowMsg( szMsg );
  1029.    
  1030.     set_task( 0.3, "CmdMsg", TASKID_MSG );
  1031.    
  1032.     return 1;
  1033. }
  1034.  
  1035. public ComboMsg()
  1036. {
  1037.     if ( !bCombo || !bActive )
  1038.         return 1;
  1039.    
  1040.     new Players[ 32 ], iNum, iPlayer, szMsg[ 512 ], szText[ 192 ];
  1041.        
  1042.     get_players( Players, iNum );
  1043.    
  1044.     set_hudmessage( 0, 130, 255, 0.08, 0.12, 1, 0.1, 0.3, 0.1, 0.1 );
  1045.    
  1046.     formatex( szMsg, charsmax( szMsg ), "%s  Last Request^n%s^n", Info[ 3 ], GetDuel() );
  1047.        
  1048.     AddLines( szMsg, charsmax( szMsg ) );
  1049.        
  1050.     AddPlayers( szMsg, charsmax( szMsg ), szText, charsmax( szText ) );
  1051.    
  1052.     add( szMsg, charsmax( szMsg ), "^n^nTo disable this message type /infomsg ." );
  1053.    
  1054.     for ( new i; i < iNum; i++ )
  1055.     {
  1056.         iPlayer = Players[ i ];
  1057.        
  1058.         if ( bMsg[ iPlayer ] )
  1059.             continue;
  1060.    
  1061.    
  1062.    
  1063.         set_hudmessage( 0, 130, 255, -1.0, 0.23, 1, 0.1, 0.3, 0.1, 0.1 );
  1064.        
  1065.         show_hudmessage( iPlayer, "^n%s%s%s^n%s%s%s^n%s%s%s^n%s%s%s^n%s%s%s^n%s%s%s^n%s%s%s^n%s%s%s^n%s%s%s^n%s%s%s^n",
  1066.         (iCombo[ iPlayer ]==0) ? ">>" : "", szCombo[ g_iCombo[ 0 ] ], (iCombo[ iPlayer ]==0) ? "<<" : "",
  1067.         (iCombo[ iPlayer ]==1) ? ">>" : "", szCombo[ g_iCombo[ 1 ] ], (iCombo[ iPlayer ]==1) ? "<<" : "",
  1068.         (iCombo[ iPlayer ]==2) ? ">>" : "", szCombo[ g_iCombo[ 2 ] ], (iCombo[ iPlayer ]==2) ? "<<" : "",
  1069.         (iCombo[ iPlayer ]==3) ? ">>" : "", szCombo[ g_iCombo[ 3 ] ], (iCombo[ iPlayer ]==3) ? "<<" : "",
  1070.         (iCombo[ iPlayer ]==4) ? ">>" : "", szCombo[ g_iCombo[ 4 ] ], (iCombo[ iPlayer ]==4) ? "<<" : "",
  1071.         (iCombo[ iPlayer ]==5) ? ">>" : "", szCombo[ g_iCombo[ 5 ] ], (iCombo[ iPlayer ]==5) ? "<<" : "",
  1072.         (iCombo[ iPlayer ]==6) ? ">>" : "", szCombo[ g_iCombo[ 6 ] ], (iCombo[ iPlayer ]==6) ? "<<" : "",
  1073.         (iCombo[ iPlayer ]==7) ? ">>" : "", szCombo[ g_iCombo[ 7 ] ], (iCombo[ iPlayer ]==7) ? "<<" : "",
  1074.         (iCombo[ iPlayer ]==8) ? ">>" : "", szCombo[ g_iCombo[ 8 ] ], (iCombo[ iPlayer ]==8) ? "<<" : "",
  1075.         (iCombo[ iPlayer ]==9) ? ">>" : "", szCombo[ g_iCombo[ 9 ] ], (iCombo[ iPlayer ]==9) ? "<<" : "" );
  1076.            
  1077.         add( szMsg, charsmax( szMsg ), szText );
  1078.        
  1079.     }
  1080.    
  1081.     set_task( 0.2, "ComboMsg", TASKID_MSG );
  1082.    
  1083.     return 1;
  1084. }
  1085.  
  1086. stock ShowMsg( szMsg[] )
  1087. {
  1088.     new Players[ 32 ], iNum, iPlayer;
  1089.    
  1090.     get_players( Players, iNum, "ch" );
  1091.    
  1092.     set_hudmessage( 0, 130, 255, 0.04, 0.19, 0, 6.0, 0.2, 0.1, 0.1, -1 );
  1093.    
  1094.     for ( new i; i < iNum; i++ )
  1095.     {
  1096.         iPlayer = Players[ i ];
  1097.        
  1098.         if ( bMsg[ iPlayer ] )
  1099.             continue;
  1100.        
  1101.         show_hudmessage( iPlayer, szMsg );
  1102.     }
  1103. }
  1104.        
  1105. /* Stocks */
  1106.  
  1107. stock StartGames( const client, const iPlayer )
  1108. {
  1109.     new Item = iDuel;
  1110.    
  1111.     bActive = true;
  1112.    
  1113.     fm_strip_user_weapons( client );
  1114.    
  1115.     fm_strip_user_weapons( iPlayer );
  1116.    
  1117.     SetHealth( client, iPlayer, 100 );
  1118.    
  1119.     g_iTimer = 5;
  1120.    
  1121.     CmdBeacon( client );
  1122.    
  1123.     CmdBeacon( iPlayer );
  1124.    
  1125.     switch ( iType )
  1126.     {
  1127.         case 0: // Shot 4 Shot
  1128.         {
  1129.             client_cmd( 0, "; mp3 play ^"sound/%s", s4s );
  1130.            
  1131.             bShot = true;
  1132.            
  1133.             bTurn[ client ] = true;
  1134.            
  1135.             bTurn[ iPlayer ] = false;
  1136.            
  1137.             fm_give_item( client, szS4S[ Item ][ wClass ] );
  1138.            
  1139.             fm_give_item( iPlayer, szS4S[ Item ][ wClass ] );
  1140.            
  1141.             cs_set_weapon_ammo( fm_find_ent_by_owner( 1, szS4S[ Item ][ wClass ], client ), 1 );
  1142.            
  1143.             cs_set_weapon_ammo( fm_find_ent_by_owner( 1, szS4S[ Item ][ wClass ], iPlayer ), 0 );
  1144.         }
  1145.        
  1146.         case 1: // War
  1147.         {  
  1148.             switch ( iWar )
  1149.             {
  1150.                 case 1: SetHealth( client, iPlayer, 1500 );
  1151.                
  1152.                 case 2:
  1153.                 {
  1154.                     set_user_hitzones( 0, 0, 2 );
  1155.                    
  1156.                     SetHealth( client, iPlayer, 1000 );
  1157.                 }
  1158.                
  1159.                 case 3: fm_set_user_gravity( client, 0.5 ), fm_set_user_gravity( iPlayer, 0.5 ), SetHealth( client, iPlayer, 750 );
  1160.             }
  1161.            
  1162.             if ( szWar[ Item ][ wIndex ] == CSW_KNIFE )
  1163.             {
  1164.                 fm_give_item( client, "weapon_knife" );
  1165.                
  1166.                 fm_give_item( iPlayer, "weapon_knife" );
  1167.             }
  1168.            
  1169.             else    GiveWeapons( client, iPlayer, szWar[ Item ][ wClass ], szWar[ Item ][ wIndex ] );
  1170.         }
  1171.        
  1172.         case 2: // Fun
  1173.         {
  1174.             switch ( Item )
  1175.             {
  1176.                 case 0: // Kill the Noclip Man
  1177.                 {
  1178.                     fm_give_item( client, "weapon_deagle" );
  1179.                    
  1180.                     cs_set_user_bpammo( client, CSW_DEAGLE, 999 );
  1181.                    
  1182.                     fm_give_item( iPlayer, "weapon_knife" );
  1183.                    
  1184.                     fm_set_user_noclip( iPlayer, 1 );
  1185.                 }
  1186.  
  1187.                 case 1, 10: // Bomb Toss && Spray the Bomb Contest
  1188.                 {
  1189.                     GiveWeapons( client, iPlayer, "weapon_c4", CSW_C4 );
  1190.                    
  1191.                     fm_give_item( client, "weapon_knife" );
  1192.                    
  1193.                     fm_give_item( iPlayer, "weapon_knife" );
  1194.  
  1195.                 }
  1196.                    
  1197.                 case 2: // Gun Toss
  1198.                 {
  1199.                     fm_give_item( client, "weapon_deagle" );
  1200.                    
  1201.                     fm_give_item( iPlayer, "weapon_deagle" );
  1202.                    
  1203.                     cs_set_weapon_ammo( fm_find_ent_by_owner( 1, "weapon_deagle", client ), 0 );
  1204.                    
  1205.                     cs_set_weapon_ammo( fm_find_ent_by_owner( 1, "weapon_deagle", iPlayer ), 0 );
  1206.                    
  1207.                     fm_give_item( client, "weapon_knife" );
  1208.                    
  1209.                     fm_give_item( iPlayer, "weapon_knife" );
  1210.  
  1211.                 }
  1212.                    
  1213.                 case 3: //  Away the Bomb
  1214.                 {
  1215.                     GiveWeapons( client, iPlayer, "weapon_deagle", CSW_DEAGLE );
  1216.                    
  1217.                     GiveWeapons( client, iPlayer, "weapon_c4", CSW_C4 );
  1218.  
  1219.                 }
  1220.                    
  1221.                 case 4: // Survival Duel
  1222.                 {
  1223.                     SetHealth( client, iPlayer, 100, 5000 );
  1224.                    
  1225.                     fm_give_item( client, "weapon_m4a1" );
  1226.                    
  1227.                     cs_set_user_bpammo( client, CSW_M4A1, 999 );
  1228.                    
  1229.                     fm_give_item( iPlayer, "weapon_knife" );
  1230.                 }
  1231.                    
  1232.                 case 5: // Invisible Duel
  1233.                 {
  1234.                     fm_set_user_rendering( client, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 16 );
  1235.                    
  1236.                     fm_set_user_rendering( iPlayer, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 16 );
  1237.                    
  1238.                     GiveWeapons( client, iPlayer, "weapon_m4a1",  CSW_M4A1 );
  1239.                    
  1240.                     SetHealth( client, iPlayer, 500 );
  1241.                    
  1242.                     remove_task( TASKID_BEACON );
  1243.                 }
  1244.                
  1245.                 case 6: // Spray Contest
  1246.                 {
  1247.                     fm_give_item( client, "weapon_knife" );
  1248.                     fm_give_item( iPlayer, "weapon_knife" );
  1249.                 }
  1250.                
  1251.                 case 7: // Hide'N'Seek Duel
  1252.                 {
  1253.                     fm_set_user_rendering( client, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 16 );
  1254.                    
  1255.                     fm_give_item( iPlayer, "weapon_knife" );
  1256.                    
  1257.                     fm_set_user_godmode( iPlayer, 1 );
  1258.                    
  1259.                     g_iCount = 60;
  1260.                    
  1261.                     evCount();
  1262.                 }
  1263.                    
  1264.                 case 8: // Strip Duel
  1265.                 {
  1266.                     fm_strip_user_weapons( client );
  1267.                     fm_strip_user_weapons( iPlayer );
  1268.                    
  1269.                     evCountdown();
  1270.                    
  1271.                     TheStriper = cs_get_user_team( client ) == CS_TEAM_T ? client : iPlayer;
  1272.                     TheStriped = cs_get_user_team( client ) != CS_TEAM_T ? client : iPlayer;
  1273.  
  1274.                     if( cs_get_user_team( client ) == CS_TEAM_T )
  1275.                     {
  1276.                         fm_give_item( client, "weapon_m4a1" );
  1277.                         cs_set_user_bpammo( client, CSW_M4A1, 9999 );
  1278.                         fm_set_user_health( iPlayer, 1000 );
  1279.                     }
  1280.                    
  1281.                     else
  1282.                     {
  1283.                         fm_give_item( iPlayer, "weapon_m4a1" );
  1284.                         cs_set_user_bpammo( iPlayer, CSW_M4A1, 9999 );
  1285.                         fm_set_user_health( iPlayer, 1000 );
  1286.                     }
  1287.                    
  1288.                     g_iCount = 10;
  1289.                    
  1290.                     set_task( 1.0, "StripCountdown", 19234, _,_, "b" );
  1291.                    
  1292.                     fm_set_user_health( client, 1000 );
  1293.                     fm_set_user_health( iPlayer, 1000 );
  1294.                 }
  1295.                    
  1296.                 case 9: // Combo Contest
  1297.                 {
  1298.                     for ( new i; i < 10; i++ )
  1299.                         g_iCombo[ i ] = random( sizeof g_szCombo );
  1300.                    
  1301.                     iCombo[ client ] = 0;
  1302.                    
  1303.                     iCombo[ iPlayer ] = 0;
  1304.                    
  1305.                     g_iTimer = 5;
  1306.                    
  1307.                     evCountdown();
  1308.                    
  1309.                     return 1;
  1310.                 }
  1311.                
  1312.                 case 11: // Dodgeball
  1313.                     start_dodgeball( client, iPlayer );
  1314.                
  1315.                 case 12: // Deagle Power
  1316.                 {
  1317.                     bPowerDeagle    = true;
  1318.                    
  1319.                     fm_give_item( client, "weapon_deagle" );
  1320.                    
  1321.                     fm_give_item( iPlayer, "weapon_deagle" );
  1322.                    
  1323.                     cs_set_user_bpammo( client, CSW_DEAGLE, 9999 );
  1324.                    
  1325.                     cs_set_user_bpammo( iPlayer, CSW_DEAGLE, 9999 );
  1326.                    
  1327.                     fm_set_user_health( client, 750 );
  1328.                     fm_set_user_health( iPlayer, 750 );
  1329.                 }
  1330.                
  1331.                 case 13: // Grenade Power
  1332.                 {
  1333.                     bPowerDeagle    = true;
  1334.                    
  1335.                     fm_give_item( client, "weapon_hegrenade" );
  1336.                    
  1337.                     fm_give_item( iPlayer, "weapon_hegrenade" );
  1338.                    
  1339.                     cs_set_user_bpammo( client, CSW_HEGRENADE, 9999 );
  1340.                    
  1341.                     cs_set_user_bpammo( iPlayer, CSW_HEGRENADE, 9999 );
  1342.                    
  1343.                     fm_set_user_health( client, 750 );
  1344.                    
  1345.                     fm_set_user_health( iPlayer, 750 );
  1346.                 }
  1347.                 case 14: // SpearGun
  1348.                 {
  1349.                    
  1350.                     fm_set_user_health( client, 1500 );
  1351.                     fm_set_user_health( iPlayer, 1500 );
  1352.                    
  1353.                     g_iTimer = 5;
  1354.                     evCountdown();
  1355.                    
  1356.                     give_speargun( client );
  1357.                     give_speargun( iPlayer );
  1358.                 }
  1359.                 case 15:
  1360.                 {
  1361.                    
  1362.                     fm_set_user_health( client, 1500 );
  1363.                     fm_set_user_health( iPlayer, 1500 );
  1364.                    
  1365.                     g_iTimer = 5;
  1366.                     evCountdown();
  1367.                    
  1368.                     give_tactical( client );
  1369.                     give_tactical( iPlayer );
  1370.                 }
  1371.                 case 16:
  1372.                 {
  1373.                    
  1374.                     fm_set_user_health( client, 1500 );
  1375.                     fm_set_user_health( iPlayer, 1500 );
  1376.                    
  1377.                     g_iTimer = 5;
  1378.                     evCountdown();
  1379.                    
  1380.                     give_pumpkin__( client );
  1381.                     give_pumpkin__( iPlayer );
  1382.  
  1383.                 }
  1384.  
  1385.                 case 17:
  1386.                 {
  1387.                    
  1388.                     fm_set_user_health( client, 1500 );
  1389.                     fm_set_user_health( iPlayer, 1500 );
  1390.                    
  1391.                     g_iTimer = 5;
  1392.                     evCountdown();
  1393.                    
  1394.                     get_cannon( client );
  1395.                     get_cannon( iPlayer );
  1396.  
  1397.                 }
  1398.             }
  1399.         }
  1400.        
  1401.         case 3:
  1402.         {
  1403.             StartContest( client, iPlayer, iDuel );
  1404.            
  1405.             return 1;
  1406.         }      
  1407.     }
  1408.    
  1409.     fn_Cells()
  1410.    
  1411.     CmdMsg();
  1412.    
  1413.     return 1;
  1414. }
  1415.  
  1416. public fn_Cells()
  1417. {
  1418.     static iEnt;
  1419.    
  1420.     iEnt = -1;
  1421.    
  1422.     while( ( iEnt = engfunc( EngFunc_FindEntityByString, iEnt, "classname", "func_door" ) ) != 0 )
  1423.         dllfunc( DLLFunc_Use, iEnt, 0 );
  1424. }
  1425.  
  1426. public StripCountdown()
  1427. {
  1428.     if( g_iCount <= 0 )
  1429.     {
  1430.         new OldStriper, OldStriped;
  1431.        
  1432.         OldStriper = TheStriper;
  1433.         OldStriped = TheStriped;
  1434.        
  1435.         TheStriped = OldStriper;
  1436.         TheStriper = OldStriped;
  1437.        
  1438.         for ( new i; i < get_maxplayers(); i++ )
  1439.         {
  1440.             new iPlayer = i;
  1441.            
  1442.             if ( bPlayer[ iPlayer ] )
  1443.             {
  1444.                 fm_strip_user_weapons( iPlayer );
  1445.                
  1446.                 if( i == TheStriper )
  1447.                 {
  1448.                     fm_give_item( iPlayer, "weapon_m4a1" );
  1449.                     cs_set_user_bpammo( iPlayer, CSW_M4A1, 9999 );
  1450.                     fm_set_user_health( iPlayer, 1000 );
  1451.                 }
  1452.             }
  1453.         }
  1454.        
  1455.        
  1456.         g_iCount = 10;
  1457.    
  1458.     }
  1459.    
  1460.     else
  1461.     {
  1462.         set_dhudmessage( 255, 0, 0, -1.0, 0.35, 1, 6.0, -1.0 )
  1463.        
  1464.         for ( new i = 0;  i < get_maxplayers(); i++ )
  1465.         {
  1466.             if( !is_user_alive( i ) )
  1467.                 continue;
  1468.                
  1469.             if( TheStriped == i && user_has_weapon( i, CSW_M4A1 ) )
  1470.                 fm_strip_user_weapons( i );
  1471.                
  1472.             new iPlayer = i;
  1473.                
  1474.             if( TheStriper == i )
  1475.                 show_dhudmessage( i, "You have %i Second%s^nleft to try kill %s.", g_iCount, g_iCount == 1 ? "" : "s", szName( TheStriped ) );
  1476.                    
  1477.             else if( TheStriped == i )
  1478.                 show_dhudmessage( i, "You have %i Second%s^nleft to try staying alive from %s.", g_iCount, g_iCount == 1 ? "" : "s", szName( TheStriper ) );
  1479.         }
  1480.     }
  1481.    
  1482. }
  1483.  
  1484. stock SetHealth( const client, const iPlayer, iHealth = 100, pHealth = 0 )
  1485. {
  1486.     fm_set_user_health( client, iHealth );
  1487.    
  1488.     fm_set_user_health( iPlayer, (pHealth!=0) ? pHealth : iHealth );
  1489. }
  1490.  
  1491. stock GiveWeapons( const client, const iPlayer, szClass[], g_iIndex, bool: bSpecial = false )
  1492. {
  1493.     fm_give_item( client, szClass );
  1494.    
  1495.     fm_give_item( iPlayer, szClass );
  1496.    
  1497.     if ( bSpecial )
  1498.         return 1;
  1499.    
  1500.     if ( g_iIndex != CSW_KNIFE || g_iIndex != CSW_C4 )
  1501.         cs_set_user_bpammo( client, g_iIndex, 999 ), cs_set_user_bpammo( iPlayer, g_iIndex, 999 );
  1502.    
  1503.     return 1;
  1504. }
  1505.  
  1506. stock GetDuel()
  1507. {  
  1508.     new szBuffer[ 128 ];
  1509.    
  1510.     switch ( iType )
  1511.     {
  1512.         case 0: formatex( szBuffer, charsmax( szBuffer ), "%s | Shot4Shot", szS4S[ iDuel ] );
  1513.        
  1514.         case 1: formatex( szBuffer, charsmax( szBuffer ), "%s | %s Duel", szWar[ iDuel ], szWarOptions[ iWar ] );
  1515.        
  1516.         case 2: formatex( szBuffer, charsmax( szBuffer ), szFun[ iDuel ] );
  1517.        
  1518.         case 3: formatex( szBuffer, charsmax( szBuffer ), "%s Contest", szContests[ iDuel ] );
  1519.        
  1520.         case 4: formatex( szBuffer, charsmax( szBuffer ), "Rambo" );
  1521.     }
  1522.    
  1523.     return szBuffer;
  1524. }
  1525.  
  1526. stock ColorPrint( const client, const string[], any:... )
  1527. {
  1528.     new szMsg[ 191 ], Players[ 32 ], PNum = 1;
  1529.    
  1530.     static iLen; iLen = formatex( szMsg, charsmax( szMsg ), "^1[^4 %s^1 ] ", Info[ 4 ] );
  1531.    
  1532.     vformat( szMsg[ iLen ], charsmax( szMsg ) - iLen, string, 3 );
  1533.    
  1534.     if ( client )
  1535.         Players[ 0 ] = client;
  1536.    
  1537.     else
  1538.         get_players( Players, PNum, "ch" );
  1539.    
  1540.     for ( new i; i < PNum; i++ )
  1541.     {
  1542.         if( is_user_connected( Players[ i ] ) )
  1543.         {
  1544.             message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, Players[ i ] );
  1545.            
  1546.             write_byte( Players[ i ] );
  1547.            
  1548.             write_string( szMsg );
  1549.            
  1550.             message_end( );
  1551.         }
  1552.     }
  1553.    
  1554.     return 1;
  1555. }
  1556.  
  1557. stock szName( const index )
  1558. {
  1559.     new ClientName[ 32 ];
  1560.    
  1561.     get_user_name( index, ClientName, charsmax( ClientName ) );
  1562.    
  1563.     return ClientName;
  1564. }
  1565.  
  1566. stock register_saycmd( szCommand[], szFunction[] )
  1567. {
  1568.     new szSayType[ ][ ] = { "say", "say_team" }, szSigns[ ][ ] = { "!", "/" }, szSign[ 64 ];
  1569.    
  1570.     for ( new i; i < sizeof szSayType; i++ )
  1571.     {
  1572.         for ( new j; j < sizeof szSigns; j++ )
  1573.         {
  1574.             formatex( szSign, charsmax( szSign ), "%s %s%s", szSayType[ i ], szSigns[ j ], szCommand );
  1575.            
  1576.             register_clcmd( szSign, szFunction );
  1577.         }
  1578.     }
  1579. }
  1580.  
  1581. stock TeamCount( szTeam[] )
  1582. {
  1583.     new Players[ 32 ], iNum;
  1584.    
  1585.     get_players( Players, iNum, "aceh", szTeam );
  1586.    
  1587.     return iNum;
  1588. }
  1589.  
  1590. stock GetReason( const index )
  1591. {
  1592.     new szReason[ 128 ];
  1593.    
  1594.     if ( !is_user_alive( index ) )
  1595.         szReason = "^1You need to be^4 Alive^1.";
  1596.        
  1597.     if ( cs_get_user_team( index ) != CS_TEAM_T )
  1598.         szReason = "^1You need to be a^4 Terrorist^1.";
  1599.    
  1600.     if ( TeamCount( "TERRORIST" ) > 1 )
  1601.         szReason = "^1There are too many^3 Alive Terrorists^1.";
  1602.    
  1603.     if ( TeamCount( "CT" ) <= 0 )
  1604.         szReason = "^1There are too many^3 Alive Counter-Terrorists^1.";
  1605.    
  1606.     if ( bActive )
  1607.         szReason = "^1A Last-Request has already been started.";
  1608.    
  1609.     return szReason;
  1610. }
  1611.  
  1612. stock bool: is_user_valid( const index )
  1613. {
  1614.     if ( !is_user_alive( index ) )
  1615.         return false;
  1616.        
  1617.     if ( cs_get_user_team( index ) != CS_TEAM_T )
  1618.         return false;
  1619.    
  1620.     if ( TeamCount( "TERRORIST" ) > 1 )
  1621.         return false;
  1622.    
  1623.     if ( TeamCount( "CT" ) <= 0 )
  1624.         return false;
  1625.    
  1626.     if ( bActive )
  1627.         return false;
  1628.    
  1629.     return true;
  1630. }
  1631.    
  1632. stock AddItem( Menu, string[], any:... )
  1633. {
  1634.     new szMsg[ 128 ];static iLen;
  1635.    
  1636.     vformat( szMsg[ iLen ], charsmax( szMsg ) - iLen, string, 3 );
  1637.    
  1638.     formatex( szItem, charsmax( szItem ), szMsg );
  1639.    
  1640.     menu_additem( Menu, szItem );
  1641. }
  1642.  
  1643. stock AddLines( Output[], Len )
  1644. {
  1645.     add( Output, Len, "^n----------------------------------^n" );
  1646. }
  1647.  
  1648. stock AddPlayers( Output[], Len, Src[], srcLen )
  1649. {
  1650.     for ( new i = 1; i < g_iMaxPlayers; i++ )
  1651.     {
  1652.         if ( !is_user_connected( i ) || !is_user_alive( i ) || !bPlayer[ i ] )
  1653.             continue;
  1654.        
  1655.         formatex( Src, srcLen, "^n %s:^n    %s : %i HP", (cs_get_user_team( i )==CS_TEAM_CT)? "CT's" :"T's", szName( i ), get_user_health( i ) );
  1656.        
  1657.         add( Output, Len, Src );
  1658.     }
  1659. }
  1660.  
  1661. stock get_velocity( ent, Float:fOrigin[ 3 ], Float:fSpeed, Float:fVelocity[ 3 ] )
  1662. {
  1663.     new Float:fEntOrigin[3];
  1664.    
  1665.     pev( ent, pev_origin, fEntOrigin );
  1666.    
  1667.     new Float:fDistance[3];
  1668.     fDistance[0] = fEntOrigin[0] - fOrigin[0];
  1669.     fDistance[1] = fEntOrigin[1] - fOrigin[1];
  1670.     fDistance[2] = fEntOrigin[2] - fOrigin[2];
  1671.    
  1672.     new Float:fTime = ( vector_distance( fEntOrigin,fOrigin ) / fSpeed );
  1673.    
  1674.     fVelocity[0] = fDistance[0] / fTime;
  1675.     fVelocity[1] = fDistance[1] / fTime;
  1676.     fVelocity[2] = fDistance[2] / fTime;
  1677.    
  1678.     return (fVelocity[0] && fVelocity[1] && fVelocity[2]);
  1679. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement