HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include < amxmodx >
  2. #include < cstrike >
  3. #include < fun >
  4. #include < fakemeta >
  5. #include < fakemeta_util >
  6. #include < hamsandwich >
  7.  
  8. // Enums
  9. /////////
  10.  
  11. enum
  12. {
  13. LR_NONE=-1,
  14. LR_S4S,
  15. LR_SPRAY,
  16. LR_RACE,
  17. LR_GUNTOSS,
  18. LR_KNIFE,
  19. LR_NADETOSS,
  20. LR_SCOUT,
  21. LR_SHOTGUN,
  22.  
  23. MAX_GAMES
  24. };
  25.  
  26. enum
  27. {
  28. GREY = 0,
  29. RED,
  30. BLUE,
  31. NORMAL
  32. };
  33.  
  34. enum
  35. {
  36. ALIVE,
  37. DEAD,
  38. ALL
  39. };
  40.  
  41. enum
  42. {
  43. LR_PRISONER,
  44. LR_GUARD
  45. };
  46.  
  47. enum ( += 100 )
  48. {
  49. TASK_BEACON,
  50. TASK_ENDLR
  51. };
  52.  
  53. // Consts
  54. //////////
  55.  
  56. new const g_szPrefix[ ] = "!g[Jailbreak]!n";
  57.  
  58. new const g_szBeaconSound[ ] = "buttons/blip1.wav";
  59. new const g_szBeaconSprite[ ] = "sprites/white.spr";
  60.  
  61. new const g_szGameNames[ MAX_GAMES ][ ] =
  62. {
  63. "Shot 4 Shot",
  64. "Spray festes",
  65. "Verseny",
  66. "Pisztoly dobas",
  67. "Kes Harc",
  68. "Granat Harc",
  69. "Scout Harc",
  70. "Shotgun Harc"
  71. };
  72.  
  73. new const g_szDescription[ MAX_GAMES ][ ] =
  74. {
  75. "Felvaltva loves deagleval",
  76. "Mindket jatekos a falra fest az nyer akie a magasabb",
  77. "Mindeket jatekos versenyezik a palyan.",
  78. "Aki eldobja a Deagle-t legtavolabb az nyer.",
  79. "Harc a kessel egymas ellen.",
  80. "Felkell robbantani a tarsad.",
  81. "Harc a Scouttal.",
  82. "Harc a Shoutgannal."
  83. };
  84.  
  85. new const g_szTeamName[ ][ ] =
  86. {
  87. "",
  88. "TERRORISTA",
  89. "CT",
  90. "NEZO"
  91. };
  92.  
  93. new const g_szPlugin[ ] = "Jailbreak Last Request";
  94. new const g_szVersion[ ] = "2.0";
  95.  
  96. // Integers
  97. ////////////
  98.  
  99. new g_iCurrentGame = LR_NONE;
  100. new g_iLastRequest[ 2 ];
  101. new g_iCurrentPage[ 33 ];
  102. new g_iChosenGame[ 33 ];
  103.  
  104. new g_iSprite;
  105.  
  106. new g_iMaxPlayers;
  107.  
  108. // Booleans
  109. ///////////
  110.  
  111. new bool:g_bAlive[ 33 ];
  112. new bool:g_bConnected[ 33 ];
  113.  
  114. new bool:g_bLastRequestAllowed;
  115.  
  116. // Messages
  117. ////////////
  118.  
  119. new g_msgTeamInfo;
  120. new g_msgSayText;
  121.  
  122. public plugin_precache()
  123. {
  124. precache_sound( g_szBeaconSound );
  125.  
  126. g_iSprite = precache_model( g_szBeaconSprite );
  127. }
  128.  
  129. public plugin_init()
  130. {
  131. register_plugin(g_szPlugin,g_szVersion,"H3avY Ra1n");
  132.  
  133. register_clcmd( "say /lr", "Cmd_LastRequest" );
  134. register_clcmd( "say !lr", "Cmd_LastRequest" );
  135. register_clcmd( "say /lastrequest", "Cmd_LastRequest" );
  136. register_clcmd( "say !lastrequest", "Cmd_LastRequest" );
  137.  
  138. register_clcmd( "say_team /lr", "Cmd_LastRequest" );
  139. register_clcmd( "say_team !lr", "Cmd_LastRequest" );
  140. register_clcmd( "say_team /lastrequest", "Cmd_LastRequest" );
  141. register_clcmd( "say_team !lastrequest", "Cmd_LastRequest" );
  142.  
  143. register_event( "HLTV", "Event_RoundStart", "a", "1=0", "2=0" );
  144.  
  145. register_logevent( "Logevent_RoundStart", 2, "1=Round_Start" );
  146.  
  147. RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1 );
  148. RegisterHam( Ham_Weapon_PrimaryAttack, "weapon_deagle", "Ham_DeagleFire_Post", 1 );
  149. RegisterHam( Ham_Killed, "player", "Ham_PlayerKilled_Post", 1 );
  150. RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 );
  151.  
  152. register_forward( FM_Think, "Forward_EntityThink_Pre", 0 );
  153.  
  154. register_message( get_user_msgid( "TextMsg" ), "Message_TextMsg" );
  155.  
  156. g_msgTeamInfo = get_user_msgid( "TeamInfo" );
  157. g_msgSayText = get_user_msgid( "SayText" );
  158.  
  159. g_iMaxPlayers = get_maxplayers();
  160.  
  161. set_task( 2.0, "StartBeacon", .flags="b" );
  162.  
  163. set_task( 300.0, "Task_Advertise", .flags="b" );
  164. }
  165.  
  166. public client_putinserver( id )
  167. {
  168. g_iCurrentPage[ id ] = 0;
  169.  
  170. g_bConnected[ id ] = true;
  171. }
  172.  
  173. public client_disconnect( id )
  174. {
  175. g_bConnected[ id ] = false;
  176.  
  177. if( g_bAlive[ id ] )
  178. g_bAlive[ id ] = false;
  179.  
  180. if( id == g_iLastRequest[ LR_PRISONER ] || id == g_iLastRequest[ LR_GUARD ] )
  181. {
  182. EndLastRequest( id == g_iLastRequest[ LR_PRISONER ] ? g_iLastRequest[ LR_GUARD ] : g_iLastRequest[ LR_PRISONER ], id );
  183. }
  184.  
  185. remove_task( id + TASK_ENDLR );
  186. }
  187.  
  188. public Ham_PlayerSpawn_Post( id )
  189. {
  190. if( !is_user_alive( id ) )
  191. return HAM_IGNORED;
  192.  
  193. g_bAlive[ id ] = true;
  194.  
  195. return HAM_IGNORED;
  196. }
  197.  
  198. public Ham_PlayerKilled_Post( iVictim, iKiller, iShouldGib )
  199. {
  200. g_bAlive[ iVictim ] = false;
  201.  
  202. if( iVictim == g_iLastRequest[ LR_PRISONER ] )
  203. {
  204. EndLastRequest( g_iLastRequest[ LR_GUARD ], iVictim );
  205. }
  206.  
  207. else if( iVictim == g_iLastRequest[ LR_GUARD ] )
  208. {
  209. EndLastRequest( g_iLastRequest[ LR_PRISONER ], iVictim );
  210. }
  211.  
  212. if( !g_bLastRequestAllowed && cs_get_user_team( iVictim ) == CS_TEAM_T )
  213. {
  214. if( get_playercount( CS_TEAM_T, ALIVE ) == 1 )
  215. {
  216. ColorChat( 0, NORMAL, "%s !gUtolso kivansag most megengedett.", g_szPrefix );
  217. g_bLastRequestAllowed = true;
  218. }
  219. }
  220. }
  221.  
  222. public Ham_DeagleFire_Post( iEnt )
  223. {
  224. if( g_iCurrentGame != LR_S4S )
  225. {
  226. return;
  227. }
  228.  
  229. new id = pev( iEnt, pev_owner );
  230. new iOpponentEnt;
  231.  
  232. if( cs_get_weapon_ammo( iEnt ) == 0 )
  233. {
  234. if( id == g_iLastRequest[ LR_PRISONER ] )
  235. {
  236. iOpponentEnt = fm_find_ent_by_owner( -1, "weapon_deagle", g_iLastRequest[ LR_GUARD ] );
  237.  
  238. if( pev_valid( iOpponentEnt ) )
  239. cs_set_weapon_ammo( iOpponentEnt, 1 );
  240. }
  241.  
  242. else if( id == g_iLastRequest[ LR_GUARD ] )
  243. {
  244. iOpponentEnt = fm_find_ent_by_owner( -1, "weapon_deagle", g_iLastRequest[ LR_PRISONER ] );
  245.  
  246. if( pev_valid( iOpponentEnt ) )
  247. cs_set_weapon_ammo( iOpponentEnt, 1 );
  248. }
  249. }
  250. }
  251.  
  252. public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )
  253. {
  254. if( !( 1 <= iAttacker <= g_iMaxPlayers ) )
  255. return HAM_IGNORED;
  256.  
  257. new bool:g_bVictimLR = iVictim == g_iLastRequest[ LR_PRISONER ] || iVictim == g_iLastRequest[ LR_GUARD ];
  258. new bool:g_bAttackerLR = iAttacker == g_iLastRequest[ LR_PRISONER ] || iAttacker == g_iLastRequest[ LR_GUARD ];
  259.  
  260. if( g_bVictimLR && !g_bAttackerLR )
  261. {
  262. return HAM_SUPERCEDE;
  263. }
  264.  
  265. else if( !g_bVictimLR && g_bAttackerLR )
  266. {
  267. return HAM_SUPERCEDE;
  268. }
  269.  
  270. return HAM_IGNORED;
  271. }
  272.  
  273. public Event_RoundStart()
  274. {
  275. g_bLastRequestAllowed = false;
  276. g_iCurrentGame = LR_NONE;
  277. }
  278.  
  279.  
  280.  
  281. public Logevent_RoundStart()
  282. {
  283. if( !g_bLastRequestAllowed && get_playercount( CS_TEAM_T, ALIVE ) == 1 )
  284. {
  285. g_bLastRequestAllowed = true;
  286. ColorChat( 0, NORMAL, "%s !gUtolso kivansag most megengedett.", g_szPrefix );
  287. }
  288. }
  289.  
  290. public Forward_EntityThink_Pre( iEnt )
  291. {
  292. if( !pev_valid( iEnt ) || g_iCurrentGame != LR_NADETOSS )
  293. return FMRES_IGNORED;
  294.  
  295. new id = pev( iEnt, pev_owner );
  296.  
  297. if( id != g_iLastRequest[ LR_PRISONER ] && id != g_iLastRequest[ LR_GUARD ] )
  298. return FMRES_IGNORED;
  299.  
  300. new szModel[ 32 ];
  301.  
  302. pev( iEnt, pev_model, szModel, charsmax( szModel ) );
  303.  
  304. if( equal( szModel, "models/w_smokegrenade.mdl" ) )
  305. {
  306. set_pev( iEnt, pev_renderfx, kRenderFxGlowShell );
  307. set_pev( iEnt, pev_renderamt, 125.0 );
  308. set_pev( iEnt, pev_rendermode, kRenderTransAlpha );
  309.  
  310. set_pev( iEnt, pev_rendercolor, id == g_iLastRequest[ LR_GUARD ] ? { 0.0, 0.0, 255.0 } : { 255.0, 0.0, 0.0 } );
  311.  
  312. return FMRES_SUPERCEDE;
  313. }
  314.  
  315. return FMRES_IGNORED;
  316. }
  317.  
  318.  
  319.  
  320. public Message_TextMsg()
  321. {
  322. if( g_iCurrentGame == LR_NONE )
  323. {
  324. return PLUGIN_CONTINUE;
  325. }
  326.  
  327. static szText[ 25 ];
  328. get_msg_arg_string( 2, szText, charsmax( szText ) );
  329.  
  330. if( equal( szText, "#Round_Draw" ) || equal( szText, "#Game_will_restart_in" ) || equal( szText, "#Game_Commencing" ) )
  331. {
  332. g_iCurrentGame = LR_NONE;
  333.  
  334. strip_user_weapons( g_iLastRequest[ LR_PRISONER ] );
  335. strip_user_weapons( g_iLastRequest[ LR_GUARD ] );
  336.  
  337. GiveWeapons( g_iLastRequest[ LR_GUARD ] );
  338.  
  339. g_iLastRequest[ LR_PRISONER ] = 0;
  340. g_iLastRequest[ LR_GUARD ] = 0;
  341. }
  342.  
  343. return PLUGIN_CONTINUE;
  344. }
  345.  
  346. public Cmd_LastRequest( id )
  347. {
  348. if( !g_bAlive[ id ] )
  349. {
  350. ColorChat( id, NORMAL, "%s Te vagy az utolso !gUtolso Kivansag !n.", g_szPrefix );
  351. return PLUGIN_HANDLED;
  352. }
  353.  
  354. else if( cs_get_user_team( id ) != CS_TEAM_T )
  355. {
  356. ColorChat( id, NORMAL, "%s Kelleni-e egy fogolynak. !gUtolso Kivansag!n.", g_szPrefix );
  357. return PLUGIN_HANDLED;
  358. }
  359.  
  360. else if( !g_bLastRequestAllowed )
  361. {
  362. ColorChat( id, NORMAL, "%s Túl sok fogoly !gUtolso kivansag!n.", g_szPrefix );
  363. return PLUGIN_HANDLED;
  364. }
  365.  
  366. else if( g_iCurrentGame != LR_NONE )
  367. {
  368. ColorChat( id, NORMAL, "%s Van egy utolso kerese!", g_szPrefix );
  369. return PLUGIN_HANDLED;
  370. }
  371.  
  372. else LastRequestMenu( id );
  373.  
  374. return PLUGIN_HANDLED;
  375. }
  376.  
  377. public LastRequestMenu( id )
  378. {
  379. new hMenu = menu_create( "\yValassz jatekot:", "LastRequestMenu_Handler" );
  380.  
  381. new szInfo[ 6 ];
  382.  
  383. for( new i = 0; i < MAX_GAMES; i++ )
  384. {
  385. num_to_str( i, szInfo, charsmax( szInfo ) );
  386.  
  387. menu_additem( hMenu, g_szGameNames[ i ], szInfo );
  388. }
  389.  
  390. menu_setprop( hMenu, MPROP_NEXTNAME, "Kovetkezo oldal" );
  391. menu_setprop( hMenu, MPROP_BACKNAME, "Elozo oldal" );
  392.  
  393. menu_display( id, hMenu, 0 );
  394. }
  395.  
  396. public LastRequestMenu_Handler( id, hMenu, iItem )
  397. {
  398. if( iItem == MENU_EXIT )
  399. {
  400. menu_destroy( hMenu );
  401. return PLUGIN_HANDLED;
  402. }
  403.  
  404. new szData[ 6 ];
  405. new iAccess, hCallback;
  406. menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), _, _, hCallback );
  407.  
  408. g_iChosenGame[ id ] = str_to_num( szData );
  409.  
  410. if( g_iCurrentGame != LR_NONE )
  411. {
  412. menu_destroy( hMenu );
  413. g_iChosenGame[ id ] = LR_NONE;
  414. ColorChat( id, NORMAL, "%s Mar letezik az utolso keres.", g_szPrefix );
  415. return PLUGIN_HANDLED;
  416. }
  417.  
  418. ShowPlayerMenu( id );
  419.  
  420. menu_destroy( hMenu );
  421. return PLUGIN_HANDLED;
  422. }
  423.  
  424.  
  425. public ShowPlayerMenu( id )
  426. {
  427. new hMenu = menu_create( "\yValassz ellenfelt:", "PlayerMenu_Handler" );
  428.  
  429. new szPlayerName[ 32 ], szInfo[ 6 ];
  430.  
  431. for( new i = 1; i < g_iMaxPlayers; i++ )
  432. {
  433. if( !g_bAlive[ i ] || cs_get_user_team( i ) != CS_TEAM_CT )
  434. continue;
  435.  
  436. get_user_name( i, szPlayerName, charsmax( szPlayerName ) );
  437.  
  438. num_to_str( i, szInfo, charsmax( szInfo ) );
  439.  
  440. menu_additem( hMenu, szPlayerName, szInfo );
  441. }
  442.  
  443. menu_setprop( hMenu, MPROP_NEXTNAME, "Kovetkezo oldal" );
  444. menu_setprop( hMenu, MPROP_BACKNAME, "Elozo oldal" );
  445.  
  446. menu_display( id, hMenu, 0 );
  447. }
  448.  
  449. public PlayerMenu_Handler( id, hMenu, iItem )
  450. {
  451. if( iItem == MENU_EXIT || !g_bAlive[ id ] || !g_bLastRequestAllowed || g_iCurrentGame != LR_NONE )
  452. {
  453. g_iChosenGame[ id ] = LR_NONE;
  454.  
  455. menu_destroy( hMenu );
  456. return PLUGIN_HANDLED;
  457. }
  458.  
  459. new szData[ 6 ], szPlayerName[ 64 ];
  460. new iAccess, hCallback;
  461.  
  462. menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szPlayerName, charsmax( szPlayerName ), hCallback );
  463.  
  464. new iGuard = str_to_num( szData );
  465.  
  466. if( !g_bAlive[ iGuard ] || cs_get_user_team( iGuard ) != CS_TEAM_CT )
  467. {
  468. ColorChat( id, NORMAL, "%s Ez a jatekos mar nem elerheto.", g_szPrefix );
  469. menu_destroy( hMenu );
  470.  
  471. ShowPlayerMenu( id );
  472. return PLUGIN_HANDLED;
  473. }
  474.  
  475. StartGame( g_iChosenGame[ id ], id, iGuard );
  476.  
  477. menu_destroy( hMenu );
  478. return PLUGIN_HANDLED;
  479. }
  480.  
  481. public StartGame( iGame, iPrisoner, iGuard )
  482. {
  483. g_iCurrentGame = iGame;
  484.  
  485. g_iLastRequest[ LR_PRISONER ] = iPrisoner;
  486. g_iLastRequest[ LR_GUARD ] = iGuard;
  487.  
  488. new szPrisonerName[ 32 ], szGuardName[ 32 ];
  489.  
  490. get_user_name( iPrisoner, szPrisonerName, charsmax( szPrisonerName ) );
  491. get_user_name( iGuard, szGuardName, charsmax( szGuardName ) );
  492.  
  493. ColorChat( 0, NORMAL, "%s !t%s!n ellen !t%s!n -> !g%s!n!", g_szPrefix, szPrisonerName, szGuardName, g_szGameNames[ iGame ] );
  494.  
  495. strip_user_weapons( iPrisoner );
  496. strip_user_weapons( iGuard );
  497.  
  498. set_user_health( iPrisoner, 100 );
  499. set_user_health( iGuard, 100 );
  500.  
  501. set_user_armor( iPrisoner, 0 );
  502. set_user_armor( iGuard, 0 );
  503.  
  504. StartBeacon();
  505.  
  506. ColorChat( iPrisoner, NORMAL, "%s !tCelkituzes: %s", g_szPrefix, g_szDescription[ iGame ] );
  507. ColorChat( iGuard, NORMAL, "%s !tCelkituzes: %s", g_szPrefix, g_szDescription[ iGame ] );
  508.  
  509. switch( iGame )
  510. {
  511. case LR_S4S:
  512. {
  513. LR_Shot4Shot( iPrisoner );
  514. LR_Shot4Shot( iGuard );
  515. }
  516.  
  517. case LR_RACE:
  518. {
  519. LR_Race( iPrisoner );
  520. LR_Race( iGuard );
  521. }
  522.  
  523. case LR_KNIFE:
  524. {
  525. LR_Knife( iPrisoner );
  526. LR_Knife( iGuard );
  527. }
  528.  
  529. case LR_SPRAY:
  530. {
  531. LR_Spray( iPrisoner );
  532. LR_Spray( iGuard );
  533. }
  534.  
  535. case LR_GUNTOSS:
  536. {
  537. LR_GunToss( iPrisoner );
  538. LR_GunToss( iGuard );
  539. }
  540.  
  541. case LR_NADETOSS:
  542. {
  543. LR_NadeToss( iPrisoner );
  544. LR_NadeToss( iGuard );
  545. }
  546.  
  547. case LR_SCOUT:
  548. {
  549. LR_Scout( iPrisoner );
  550. LR_Scout( iGuard );
  551. }
  552.  
  553. case LR_SHOTGUN:
  554. {
  555. LR_Shotgun( iPrisoner );
  556. LR_Shotgun( iGuard );
  557. }
  558. }
  559. }
  560.  
  561. public StartBeacon()
  562. {
  563. if( g_iCurrentGame == LR_NONE )
  564. {
  565. return;
  566. }
  567.  
  568. new id;
  569.  
  570. for( new i = 0; i < 2; i++ )
  571. {
  572. id = g_iLastRequest[ i ];
  573.  
  574. static origin[3]
  575. emit_sound( id, CHAN_ITEM, g_szBeaconSound, 1.0, ATTN_NORM, 0, PITCH_NORM )
  576.  
  577. get_user_origin( id, origin )
  578. message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
  579. write_byte( TE_BEAMCYLINDER )
  580. write_coord( origin[0] ) //position.x
  581. write_coord( origin[1] ) //position.y
  582. write_coord( origin[2]-20 ) //position.z
  583. write_coord( origin[0] ) //axis.x
  584. write_coord( origin[1] ) //axis.y
  585. write_coord( origin[2]+200 ) //axis.z
  586. write_short( g_iSprite ) //sprite index
  587. write_byte( 0 ) //starting frame
  588. write_byte( 1 ) //frame rate in 0.1's
  589. write_byte( 6 ) //life in 0.1's
  590. write_byte( 10 ) //line width in 0.1's
  591. write_byte( 1 ) //noise amplitude in 0.01's
  592.  
  593. switch( cs_get_user_team( id ) )
  594. {
  595. case CS_TEAM_CT:
  596. {
  597. write_byte( 0 );
  598. write_byte( 0 );
  599. write_byte( 255 );
  600. }
  601.  
  602. case CS_TEAM_T:
  603. {
  604. write_byte( 255 );
  605. write_byte( 0 );
  606. write_byte( 0 );
  607. }
  608. }
  609.  
  610. write_byte( 255 ); // brightness
  611. write_byte( 0 ); // scroll speed in 0.1's
  612. message_end();
  613. }
  614. }
  615.  
  616. public EndLastRequest( iWinner, iLoser )
  617. {
  618. new szWinnerName[ 32 ], szLoserName[ 32 ];
  619.  
  620. get_user_name( iWinner, szWinnerName, 31 );
  621. get_user_name( iLoser, szLoserName, 31 );
  622.  
  623. ColorChat( 0, NORMAL, "%s !t%s!n ut !t%s!n az Utolso Kivansagod.", g_szPrefix, szWinnerName, szLoserName );
  624.  
  625. strip_user_weapons( iLoser );
  626.  
  627. g_iCurrentGame = LR_NONE;
  628.  
  629. g_iLastRequest[ LR_PRISONER ] = 0;
  630. g_iLastRequest[ LR_GUARD ] = 0;
  631.  
  632. set_task( 0.1, "Task_EndLR", TASK_ENDLR + iWinner );
  633. }
  634.  
  635. public Task_EndLR( iTaskID )
  636. {
  637. new id = iTaskID - TASK_ENDLR;
  638.  
  639. strip_user_weapons( id );
  640. set_user_health( id, 100 );
  641.  
  642. if( cs_get_user_team( id ) == CS_TEAM_CT )
  643. GiveWeapons( id );
  644. }
  645.  
  646. //////////////////////////////
  647. // LR Games //
  648. //////////////////////////////
  649.  
  650. LR_Knife( id )
  651. {
  652. new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ];
  653.  
  654. give_item( id, "weapon_knife" );
  655.  
  656. get_mapname( szMapName, charsmax( szMapName ) );
  657.  
  658. if( equali( szMapName, "some1s_jailbreak" ) )
  659. {
  660. iCTOrigin = { -759, 1047, 100 };
  661. iTOrigin = { -585, 867, 100 };
  662.  
  663. if( id == g_iLastRequest[ LR_PRISONER ] )
  664. set_user_origin( id, iTOrigin );
  665.  
  666. else
  667. set_user_origin( id, iCTOrigin );
  668. }
  669. }
  670.  
  671. LR_Shotgun( id )
  672. {
  673. give_item( id, "weapon_m3" );
  674. cs_set_user_bpammo( id, CSW_M3, 28 );
  675. }
  676.  
  677. LR_Scout( id )
  678. {
  679. new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ];
  680.  
  681. give_item( id, "weapon_scout" );
  682. cs_set_user_bpammo( id, CSW_SCOUT, 90 );
  683.  
  684. get_mapname( szMapName, charsmax( szMapName ) );
  685.  
  686. if( equali( szMapName, "some1s_jailbreak" ) )
  687. {
  688. iCTOrigin = { -2898, -2040, 37 };
  689. iTOrigin = { -2908, 905, 37 };
  690.  
  691. if( id == g_iLastRequest[ LR_PRISONER ] )
  692. set_user_origin( id, iTOrigin );
  693.  
  694. else
  695. set_user_origin( id, iCTOrigin );
  696. }
  697. }
  698.  
  699. LR_Shot4Shot( id )
  700. {
  701. new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ];
  702.  
  703. if( id == g_iLastRequest[ LR_PRISONER ] )
  704. {
  705. cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 1 );
  706. }
  707.  
  708. else cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 0 );
  709.  
  710. get_mapname( szMapName, charsmax( szMapName ) );
  711.  
  712. if( equali( szMapName, "some1s_jailbreak" ) )
  713. {
  714. iCTOrigin = { -1352, 271, 38 };
  715. iTOrigin = { -1338, -782, 38 };
  716.  
  717. if( id == g_iLastRequest[ LR_PRISONER ] )
  718. set_user_origin( id, iTOrigin );
  719.  
  720. else
  721. set_user_origin( id, iCTOrigin );
  722. }
  723. }
  724.  
  725. LR_Race( id )
  726. {
  727. give_item( id, "weapon_knife" );
  728. }
  729.  
  730. LR_Spray( id )
  731. {
  732. give_item( id, "weapon_knife" );
  733. }
  734.  
  735. LR_GunToss( id )
  736. {
  737. give_item( id, "weapon_knife" );
  738. cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 0 );
  739. }
  740.  
  741. LR_NadeToss( id )
  742. {
  743. give_item( id, "weapon_knife" );
  744. give_item( id, "weapon_smokegrenade" );
  745. ColorChat( id, NORMAL, "%s Ne dobja el !", g_szPrefix );
  746. }
  747.  
  748. public Task_Advertise()
  749. {
  750. ColorChat( 0, NORMAL, "%s Szerver elindult! !tUtolso kivansagod v%s !nby !tH3avY Ra1n!n.", g_szPrefix, g_szVersion );
  751. }
  752.  
  753. GiveWeapons( id )
  754. {
  755. give_item( id, "weapon_m4a1" );
  756. give_item( id, "weapon_deagle" );
  757. give_item( id, "weapon_smokegrenade" );
  758.  
  759. cs_set_user_bpammo( id, CSW_M4A1, 90 );
  760. cs_set_user_bpammo( id, CSW_DEAGLE, 120 );
  761. }
  762.  
  763. ColorChat( id, colour, const text[], any:... )
  764. {
  765. if( !get_playersnum() )
  766. {
  767. return;
  768. }
  769.  
  770. static message[192];
  771.  
  772. message[0] = 0x01;
  773. vformat(message[1], sizeof(message) - 1, text, 4);
  774.  
  775. replace_all(message, sizeof(message) - 1, "!g", "^x04");
  776. replace_all(message, sizeof(message) - 1, "!n", "^x01");
  777. replace_all(message, sizeof(message) - 1, "!t", "^x03");
  778.  
  779. static index, MSG_Type;
  780.  
  781. if( !id )
  782. {
  783. static i;
  784. for(i = 1; i <= g_iMaxPlayers; i++)
  785. {
  786. if( g_bConnected[i] )
  787. {
  788. index = i;
  789. break;
  790. }
  791. }
  792.  
  793. MSG_Type = MSG_ALL;
  794. }
  795. else
  796. {
  797. MSG_Type = MSG_ONE;
  798. index = id;
  799. }
  800.  
  801. static bool:bChanged;
  802. if( colour == GREY || colour == RED || colour == BLUE )
  803. {
  804. message_begin(MSG_Type, g_msgTeamInfo, _, index);
  805. write_byte(index);
  806. write_string(g_szTeamName[colour]);
  807. message_end();
  808.  
  809. bChanged = true;
  810. }
  811.  
  812. message_begin(MSG_Type, g_msgSayText, _, index);
  813. write_byte(index);
  814. write_string(message);
  815. message_end();
  816.  
  817. if( bChanged )
  818. {
  819. message_begin(MSG_Type, g_msgTeamInfo, _, index);
  820. write_byte(index);
  821. write_string(g_szTeamName[_:cs_get_user_team(index)]);
  822. message_end();
  823. }
  824. }
  825.  
  826. get_playercount( CsTeams:iTeam, iStatus )
  827. {
  828. new iPlayerCount;
  829.  
  830. for( new i = 1; i <= g_iMaxPlayers; i++ )
  831. {
  832. if( !g_bConnected[ i ] || cs_get_user_team( i ) != iTeam ) continue;
  833.  
  834. switch( iStatus )
  835. {
  836. case DEAD: if( g_bAlive[ i ] ) continue;
  837. case ALIVE: if( !g_bAlive[ i ] ) continue;
  838. }
  839.  
  840. iPlayerCount++;
  841. }
  842.  
  843. return iPlayerCount;
  844. }