hlmod.hu
https://hlmod.hu/

Fegyvermenü
https://hlmod.hu/viewtopic.php?f=9&t=22272
Oldal: 1 / 1

Szerző:  SmaCk [2015.09.27. 14:21 ]
Hozzászólás témája:  Fegyvermenü

Sziasztok.

Miért nem jelenik meg a fegyvermenü senkinek sem? Mi a hiba benne? :D
Próbáltam ezt is átírni, erről: new g_bHasWeapon[ Max_Players ]; erre: new g_bHasWeapon[ Max_Players+1 ];
SMA Forráskód: [ Mindet kijelol ]
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < fun >
  4. #include < fakemeta >
  5. #include < cstrike >
  6. #include < hamsandwich >
  7. #include < chatcolor >
  8.  
  9. #pragma semicolon 1
  10.  
  11. #define VERSION "0.0.1"
  12.  
  13. #define Max_Players 32
  14.  
  15. #define OFFSET_PRIMARYWEAPON 116
  16. #define OFFSET_C4_SLOT 372
  17.  
  18. #define Weapon_Menu_Name "Fegyverek"
  19. #define Pistol_Menu_Name "Pisztolyok"
  20.  
  21. #define Next_Button "Következő"
  22. #define Back_Button "Vissza"
  23. #define Exit_Button "Kilépés"
  24.  
  25. #define Money_Hud ( 1 << 5 )
  26.  
  27. new g_iWPCT;
  28. new g_iWPTE;
  29.  
  30. new pCvarMaxCTWps;
  31. new pCvarMaxTEWps;
  32.  
  33. new pCvarWPBlock;
  34.  
  35. new pCvarFlash;
  36. new pCvarHe;
  37. new pCvarSmoke;
  38.  
  39. new pCvarKevlar;
  40. new pCvarDefuser;
  41.  
  42. new pCvarPrefix;
  43. new pCvarMoney;
  44. new pCvarBlockBuy;
  45. new pCvarUnAmmo;
  46.  
  47. new const g_szMessages [ ] [ ] =
  48. {
  49. "",
  50. "Csapatonként csak két ember AWP-zhet!",
  51. "^3%s^1 AWP^4 csak^1 4v4-től használható!",
  52. "A vásárlás letiltva!",
  53. "Te már választottál fegyvert!"
  54. };
  55.  
  56. new const g_szWeaponMenuNames [ ] [ ] = {
  57.  
  58. "\r[M4A1\r]",
  59. "\r[\dAK47\r]",
  60. "\r[\dAWP\r]",
  61. "\r[\dM249\r]",
  62. "\r[\dAUG\r]",
  63. "\r[\dFamas\r]",
  64. "\r[\dGalil\r]",
  65. "\r[\dMP5\r]",
  66. "\r[\dXM1014\r]",
  67. "\r[\dM3\r]",
  68. "\r[\dScout\r]"
  69. };
  70.  
  71. new const g_szWeaponsName [ ] [ ] = {
  72.  
  73. "weapon_m4a1",
  74. "weapon_ak47",
  75. "weapon_awp",
  76. "weapon_m249",
  77. "weapon_aug",
  78. "weapon_famas",
  79. "weapon_galil",
  80. "weapon_mp5navy",
  81. "weapon_xm1014",
  82. "weapon_m3",
  83. "weapon_scout"
  84. };
  85.  
  86. new const g_szPistolsMenuNames [ ] [ ] = {
  87.  
  88. "\r[\dDeagle\r]",
  89. "\r[\dUSP\r]",
  90. "\r[\dGlock18\r]",
  91. "\r[\dFiveseven\r]",
  92. "\r[\dP228\r]",
  93. "\r[\dElite\r]"
  94. };
  95.  
  96. new const g_szPistolsName [ ] [ ] = {
  97.  
  98. "weapon_deagle",
  99. "weapon_usp",
  100. "weapon_glock18",
  101. "weapon_fiveseven",
  102. "weapon_p228",
  103. "weapon_elite"
  104. };
  105.  
  106.  
  107. new const g_szPistolName [ ] = "weapon_deagle";
  108.  
  109. const DoNotReload = ( ( 1 << CSW_HEGRENADE ) | ( 1 << CSW_SMOKEGRENADE ) | ( 1 << CSW_FLASHBANG ) | ( 1 << CSW_KNIFE ) | ( 1 << CSW_C4 ) );
  110. new const maxAmmo[ 31 ] = {
  111.  
  112. 0,
  113. 52,
  114. 0,
  115. 90,
  116. 1,
  117. 32,
  118. 1,
  119. 100,
  120. 90,
  121. 1,
  122. 120,
  123. 100,
  124. 100,
  125. 90,
  126. 90,
  127. 90,
  128. 100,
  129. 120,
  130. 30,
  131. 120,
  132. 200,
  133. 32,
  134. 90,
  135. 120,
  136. 90,
  137. 2,
  138. 35,
  139. 90,
  140. 90,
  141. 0,
  142. 100
  143. };
  144.  
  145. new g_szBuyCommands[ ][ ] =
  146. {
  147. "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47",
  148. "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren",
  149. "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge",
  150. "autoshotgun", "smg", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550",
  151. "buyammo1", "buyammo2"
  152. };
  153.  
  154. new const g_szMenuCommands[ ] [ ] =
  155. {
  156. "fegyo",
  157. "say fegyo",
  158. "say_team fegyo",
  159.  
  160. "fegyver",
  161. "say fegyver",
  162. "say_team fegyver",
  163.  
  164. "say /fegyo",
  165. "say_team /fegyo",
  166.  
  167. "say /fegyver",
  168. "say_team /fegyver"
  169.  
  170. };
  171.  
  172. new g_szChatPrefix[ 64 ];
  173. new g_msgHideWeapon;
  174. new g_bHasWeapon[ Max_Players ];
  175.  
  176. public plugin_init ( ) {
  177.  
  178. register_plugin( "Advanced Weapon Menu", VERSION, "#YouCantStopMe" );
  179.  
  180. RegisterHam( Ham_Spawn, "player", "func_OpenWeaponMenu", 1 );
  181.  
  182. pCvarMaxCTWps = register_cvar( "awm_max_ct_awp", "5" ); // Ct-nél 2 AWP-s lehet.
  183. pCvarMaxTEWps = register_cvar( "awm_max_te_awp", "5" ); // Terroristáknál 2 AWP-s lehet.
  184.  
  185. pCvarWPBlock = register_cvar( "awm_allow_wp_player", "4" ); // Ha mindkét csapatban van 4-4 játékos akkor engedi az AWP-t
  186.  
  187. pCvarFlash = register_cvar( "awm_give_flash", "2" ); // Itt tudod beállítani ,hogy adjon-e füst gránátot. ( 0 = Nem ad ) Alap: 2 Flash gránát
  188. pCvarHe = register_cvar( "awm_give_he", "1" ); // Itt tudod beállítani ,hogy adjon-e füst gránátot. ( 0 = Nem ad ) Alap: 1 Robanó gránát
  189. pCvarSmoke = register_cvar( "awm_give_smoke", "0" ); // Itt tudod beállítani ,hogy adjon-e füst gránátot. ( 0 = Nem ad )
  190.  
  191. pCvarKevlar = register_cvar( "awm_give_kevlar", "1" ); // Itt tudod beállítani ,hogy adjon-e kevlárt. ( 0 = Nem Ad ) Alap: 2 ( Kevlár + Sisak )
  192. pCvarDefuser = register_cvar( "awm_give_defuser", "1" ); // Itt tudod beállítani ,hogy adjon-e defusert. ( 0 = Nem Ad )
  193.  
  194. pCvarUnAmmo = register_cvar( "awm_unlimited_ammo", "0" ); // Itt tudod beállítani ,hogy elfoggyon-e a tár vagy ne. Alap: 1 ( Tehát nem fogy el a tár )
  195.  
  196. pCvarBlockBuy = register_cvar( "awm_block_buy", "1" ); // Itt tudod beállítani ,hogy tiltsa-e a vásárlást vagy ne. Alap 1 ( Tehát tiltva van ) ( 0 = Nincs tiltva )
  197. pCvarMoney = register_cvar( "awm_set_money", "0" ); // Itt tudod beállítani ,hogy mennyi pénze legyen a játékosoknak. ( 0 = Nincs , eltűnik a hudról is ) Alap: 0
  198. pCvarPrefix = register_cvar( "awm_prefix", "\w[\dEndLeSS\w] \y- \rOnly Dust2" ); // Itt tudod beállítani, hogy mi legyen a Fegyvermenü prefix-je.
  199.  
  200. g_msgHideWeapon = get_user_msgid( "HideWeapon" );
  201.  
  202. for( new i = 0; i < sizeof( g_szBuyCommands ); i++ )
  203. register_clcmd( g_szBuyCommands[ i ], "cmd_BlockBuy" );
  204.  
  205. for( new i = 0; i < sizeof( g_szMenuCommands ); i++ )
  206. register_clcmd( g_szMenuCommands[ i ], "cmd_ShowWeaponMenu" );
  207.  
  208. register_event( "ResetHUD", "onResetHUD", "b" );
  209. register_event( "CurWeapon", "eCurWeapon", "be", "1=1" );
  210.  
  211. register_message( g_msgHideWeapon, "msgHideWeapon" );
  212.  
  213. register_logevent( "eRoundEnd", 2, "1=Round_End" );
  214. }
  215.  
  216. public client_connect( iClient ) {
  217.  
  218. g_bHasWeapon[ iClient ] = false;
  219. }
  220.  
  221. public client_disconnect( iClient ) {
  222.  
  223. g_bHasWeapon[ iClient ] = false;
  224. }
  225.  
  226. public cmd_ShowWeaponMenu( iClient ) {
  227.  
  228. switch( g_bHasWeapon[ iClient ] ) {
  229.  
  230. case true:
  231. {
  232. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  233. client_print_color( iClient, Red, "^3%s %s" , g_szChatPrefix, g_szMessages[ 4 ] );
  234.  
  235. return PLUGIN_HANDLED;
  236. }
  237. case false: func_OpenWeaponMenu( iClient );
  238. }
  239. return PLUGIN_HANDLED;
  240. }
  241.  
  242. public cmd_BlockBuy( iClient ) {
  243.  
  244. if( !get_pcvar_num( pCvarBlockBuy ) )
  245. return PLUGIN_CONTINUE;
  246.  
  247. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  248. client_print_color( iClient, Red, "^3%s %s" , g_szChatPrefix, g_szMessages[ 3 ] );
  249. return PLUGIN_HANDLED;
  250. }
  251.  
  252. public eCurWeapon( iClient ) {
  253.  
  254. if( get_pcvar_num( pCvarUnAmmo ) ) {
  255.  
  256. if( is_user_alive( iClient ) ) {
  257.  
  258. new weapon = read_data( 2 );
  259. if( !( DoNotReload & ( 1 << weapon ) ) ) {
  260.  
  261. cs_set_user_bpammo( iClient, weapon, maxAmmo[ weapon ] );
  262. }
  263. }
  264. }
  265. }
  266.  
  267. public onResetHUD( iClient ) {
  268.  
  269. if( !get_pcvar_num( pCvarMoney ) ) {
  270.  
  271. message_begin( MSG_ONE, g_msgHideWeapon, _, iClient );
  272. write_byte( Money_Hud );
  273. message_end( );
  274. }
  275. }
  276.  
  277. public msgHideWeapon( ) {
  278.  
  279. if( !get_pcvar_num( pCvarMoney ) ) {
  280.  
  281. set_msg_arg_int( 1, ARG_BYTE, get_msg_arg_int( 1 ) | Money_Hud );
  282. }
  283. }
  284.  
  285. public eRoundEnd ( ) {
  286.  
  287. g_iWPCT = 0;
  288. g_iWPTE = 0;
  289. }
  290.  
  291. public func_OpenWeaponMenu ( iClient ) {
  292.  
  293. if( !is_user_alive( iClient ) )
  294. return;
  295.  
  296. cs_set_user_money( iClient, get_pcvar_num( pCvarMoney ) );
  297.  
  298. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  299.  
  300. g_bHasWeapon[ iClient ] = false;
  301.  
  302. new szMenuTitle[ 121 ];
  303. new szMenuItem[ 121 ];
  304.  
  305. format( szMenuTitle, charsmax( szMenuTitle ), "\r%s^n\w%s", g_szChatPrefix, Weapon_Menu_Name );
  306.  
  307. StripUserWeapons( iClient );
  308. new menu = menu_create( szMenuTitle, "func_OpenWeaponMenu_handler" );
  309.  
  310. for( new i = 0; i < sizeof( g_szWeaponMenuNames ); i++ ) {
  311.  
  312. if( i != 2 ) {
  313.  
  314. format( szMenuItem, charsmax( szMenuItem ), "\w%s", g_szWeaponMenuNames[ i ] );
  315. }
  316. else {
  317. switch( get_user_team( iClient ) )
  318. {
  319. case 1: format( szMenuItem, charsmax( szMenuItem ), "\w%s \y[\wElső \r%d \wembernek\y]", g_szWeaponMenuNames[ i ], get_pcvar_num( pCvarMaxTEWps ) );
  320. case 2: format( szMenuItem, charsmax( szMenuItem ), "\w%s \y[\wElső \r%d \wembernek\y]", g_szWeaponMenuNames[ i ], get_pcvar_num( pCvarMaxCTWps ) );
  321. default: continue;
  322. }
  323. }
  324.  
  325. menu_additem( menu, szMenuItem, _, 0 );
  326. }
  327.  
  328. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
  329. menu_setprop( menu, MPROP_BACKNAME, Back_Button );
  330. menu_setprop( menu, MPROP_NEXTNAME, Next_Button );
  331. menu_setprop( menu, MPROP_EXITNAME, Exit_Button );
  332. menu_display( iClient, menu );
  333. }
  334.  
  335. public func_OpenWeaponMenu_handler( iClient, iMenu, iItem ) {
  336.  
  337. if( iItem == MENU_EXIT ) {
  338.  
  339. StripUserWeapons( iClient );
  340. g_bHasWeapon[ iClient ] = false;
  341. menu_destroy( iMenu );
  342. return PLUGIN_HANDLED;
  343. }
  344.  
  345. new data[ 6 ], szName[ 64 ];
  346. new access, callback;
  347. menu_item_getinfo( iMenu, iItem, access, data, charsmax( data ), szName, charsmax( szName ), callback );
  348.  
  349. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  350.  
  351. if( iItem != 2 ) {
  352.  
  353. give_item( iClient, g_szWeaponsName[ iItem ] );
  354.  
  355. client_print_color( iClient, Red, "^1Sikeresen választás!", g_szChatPrefix ,g_szWeaponMenuNames[ iItem ] );
  356. }
  357. else {
  358.  
  359. new iTeams[ CsTeams ];
  360. GetPlayerCount( iTeams );
  361.  
  362. if( iTeams[ CS_TEAM_T ] < get_pcvar_num( pCvarWPBlock )
  363. || iTeams[ CS_TEAM_CT ] < get_pcvar_num( pCvarWPBlock ) ) {
  364.  
  365. client_print_color( iClient, Red, g_szMessages[ 2 ], g_szChatPrefix );
  366. func_OpenWeaponMenu( iClient );
  367.  
  368. return PLUGIN_HANDLED;
  369. }
  370.  
  371. new CsTeams:userTeam = cs_get_user_team( iClient );
  372. if( userTeam == CS_TEAM_CT ) {
  373.  
  374. if( g_iWPCT < get_pcvar_num( pCvarMaxCTWps ) ) {
  375.  
  376. give_item( iClient, g_szWeaponsName[ iItem ] );
  377. give_item( iClient, g_szPistolName );
  378.  
  379. client_print_color( iClient, Red, "^1Sikeresen választás!", g_szChatPrefix, g_szWeaponMenuNames[ iItem ] );
  380. g_iWPCT++;
  381. }
  382. else {
  383.  
  384. client_print( iClient, print_center, g_szMessages[ 1 ] );
  385. func_OpenWeaponMenu ( iClient );
  386.  
  387. return PLUGIN_HANDLED;
  388. }
  389. }
  390.  
  391. if( userTeam == CS_TEAM_T ) {
  392.  
  393. if( g_iWPTE < get_pcvar_num( pCvarMaxTEWps ) ) {
  394.  
  395.  
  396. give_item( iClient, g_szWeaponsName[ iItem ] );
  397. give_item( iClient, g_szPistolName );
  398.  
  399. client_print_color( iClient, Red, "^1Sikeresen választás!", g_szChatPrefix, g_szWeaponMenuNames[ iItem ] );
  400. g_iWPTE++;
  401. }
  402. else {
  403.  
  404. client_print( iClient, print_center, g_szMessages[ 1 ] );
  405. func_OpenWeaponMenu( iClient );
  406.  
  407. return PLUGIN_HANDLED;
  408. }
  409. }
  410. }
  411. func_OpenPistolMenu( iClient );
  412.  
  413. menu_destroy( iMenu );
  414. return PLUGIN_HANDLED;
  415. }
  416. public func_OpenPistolMenu ( iClient ) {
  417.  
  418. if( !is_user_alive( iClient ) )
  419. return;
  420.  
  421. cs_set_user_money( iClient, get_pcvar_num( pCvarMoney ) );
  422.  
  423. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  424.  
  425. new szMenuTitle[ 121 ];
  426. new szMenuItem[ 121 ];
  427.  
  428. format( szMenuTitle, charsmax( szMenuTitle ), "\r%s^n\w%s", g_szChatPrefix, Pistol_Menu_Name );
  429.  
  430. new menu = menu_create( szMenuTitle, "func_OpenPistolMenu_handler" );
  431.  
  432. for( new i = 0; i < sizeof( g_szPistolsMenuNames ); i++ ) {
  433.  
  434. format( szMenuItem, charsmax( szMenuItem ), "\w%s", g_szPistolsMenuNames[ i ] );
  435. menu_additem( menu, szMenuItem, _, 0 );
  436. }
  437.  
  438. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
  439. menu_setprop( menu, MPROP_BACKNAME, Back_Button );
  440. menu_setprop( menu, MPROP_NEXTNAME, Next_Button );
  441. menu_setprop( menu, MPROP_EXITNAME, Exit_Button );
  442. menu_display( iClient, menu );
  443. }
  444.  
  445. public func_OpenPistolMenu_handler( iClient, iMenu, iItem ) {
  446.  
  447. if( iItem == MENU_EXIT ) {
  448.  
  449. StripUserWeapons( iClient );
  450. g_bHasWeapon[ iClient ] = false;
  451. menu_destroy( iMenu );
  452. return PLUGIN_HANDLED;
  453. }
  454.  
  455. new data[ 6 ], szName[ 64 ];
  456. new access, callback;
  457. menu_item_getinfo( iMenu, iItem, access, data, charsmax( data ), szName, charsmax( szName ), callback );
  458. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  459.  
  460. give_item( iClient, g_szPistolsName[ iItem ] );
  461. give_item( iClient, "weapon_knife" );
  462.  
  463. give_player_stuff( iClient );
  464.  
  465. client_print_color( iClient, Red, "^1Sikeresen választás!", g_szChatPrefix ,g_szPistolsMenuNames[ iItem ] );
  466.  
  467. menu_destroy( iMenu );
  468. return PLUGIN_HANDLED;
  469. }
  470.  
  471. GetPlayerCount( iTeamPlayers[ CsTeams ] ) {
  472.  
  473. new iPlayers[ 32 ] , iPlayerCount;
  474.  
  475. get_players( iPlayers , iPlayerCount );
  476.  
  477. for ( new i = 0 ; i < iPlayerCount ; i++ )
  478. iTeamPlayers[ cs_get_user_team( iPlayers[ i ] ) ]++;
  479. }
  480.  
  481. stock give_player_stuff( iClient ) {
  482.  
  483. if( get_pcvar_num( pCvarFlash ) ) {
  484.  
  485. give_item( iClient, "weapon_flashbang" );
  486. cs_set_user_bpammo( iClient, CSW_FLASHBANG, get_pcvar_num( pCvarFlash ) );
  487. }
  488.  
  489. if( get_pcvar_num( pCvarHe ) ) {
  490.  
  491. give_item( iClient, "weapon_hegrenade" );
  492. cs_set_user_bpammo( iClient, CSW_HEGRENADE, get_pcvar_num( pCvarHe ) );
  493. }
  494.  
  495. if( get_pcvar_num( pCvarSmoke ) ) {
  496.  
  497. give_item( iClient, "weapon_smokegrenade" );
  498. cs_set_user_bpammo( iClient, CSW_SMOKEGRENADE, get_pcvar_num( pCvarSmoke ) );
  499. }
  500.  
  501. if( get_pcvar_num( pCvarKevlar ) ) {
  502.  
  503. switch( get_pcvar_num( pCvarKevlar ) ) {
  504.  
  505. case 1: give_item( iClient, "item_kevlar" );
  506. case 2: give_item( iClient, "item_assaultsuit" );
  507. default: return PLUGIN_CONTINUE;
  508. }
  509. }
  510.  
  511. if( get_pcvar_num( pCvarDefuser ) ) {
  512.  
  513. give_item( iClient, "item_thighpack" );
  514. }
  515.  
  516. if( !get_pcvar_num( pCvarUnAmmo ) ) {
  517.  
  518. new weapons[ 32 ];
  519. new weaponsnum;
  520. get_user_weapons( iClient, weapons, weaponsnum );
  521. for( new i = 0; i < weaponsnum; i++ )
  522. if( is_user_alive( iClient ) )
  523. if( maxAmmo[ weapons[ i ] ] > 0 )
  524. cs_set_user_bpammo( iClient, weapons[ i ], maxAmmo[ weapons[ i ] ] );
  525. }
  526.  
  527. g_bHasWeapon[ iClient ] = true;
  528. return PLUGIN_CONTINUE;
  529. }
  530.  
  531.  
  532. //Stolen from CSDM Weapon Menu
  533. stock StripUserWeapons( iClient ) {
  534.  
  535. new iC4Ent = get_pdata_cbase( iClient, OFFSET_C4_SLOT );
  536.  
  537. if( iC4Ent > 0 ) {
  538.  
  539. set_pdata_cbase( iClient, OFFSET_C4_SLOT, FM_NULLENT );
  540. }
  541.  
  542. strip_user_weapons( iClient );
  543. set_pdata_int( iClient, OFFSET_PRIMARYWEAPON, 0 );
  544.  
  545. if( iC4Ent > 0 ) {
  546.  
  547. set_pev( iClient, pev_weapons, pev( iClient, pev_weapons ) | ( 1 << CSW_C4 ) );
  548. set_pdata_cbase( iClient, OFFSET_C4_SLOT, iC4Ent );
  549.  
  550. cs_set_user_bpammo( iClient, CSW_C4, 1 );
  551. cs_set_user_plant( iClient, 1 );
  552. }
  553.  
  554. return PLUGIN_HANDLED;
  555. }
  556.  

Szerző:  mforce [2015.09.27. 15:00 ]
Hozzászólás témája:  Re: Fegyvermenü

SMA Forráskód: [ Mindet kijelol ]
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < fun >
  4. #include < fakemeta >
  5. #include < cstrike >
  6. #include < hamsandwich >
  7.  
  8. #pragma semicolon 1
  9.  
  10. #define VERSION "0.0.1"
  11.  
  12. #define Max_Players 32
  13.  
  14. #define OFFSET_PRIMARYWEAPON 116
  15. #define OFFSET_C4_SLOT 372
  16.  
  17. #define Weapon_Menu_Name "Fegyverek"
  18. #define Pistol_Menu_Name "Pisztolyok"
  19.  
  20. #define Next_Button "Következő"
  21. #define Back_Button "Vissza"
  22. #define Exit_Button "Kilépés"
  23.  
  24. #define Money_Hud ( 1 << 5 )
  25.  
  26. #define PREFIX "Fegyomenu"
  27.  
  28. new g_iWPCT;
  29. new g_iWPTE;
  30.  
  31. new pCvarMaxCTWps;
  32. new pCvarMaxTEWps;
  33.  
  34. new pCvarWPBlock;
  35.  
  36. new pCvarFlash;
  37. new pCvarHe;
  38. new pCvarSmoke;
  39.  
  40. new pCvarKevlar;
  41. new pCvarDefuser;
  42.  
  43. new pCvarPrefix;
  44. new pCvarMoney;
  45. new pCvarBlockBuy;
  46. new pCvarUnAmmo;
  47.  
  48. new const g_szMessages [ ] [ ] =
  49. {
  50. "",
  51. "Csapatonként csak két ember AWP-zhet!",
  52. "^3%s^1 WP^4 csak^1 4v4-től használható!",
  53. "A vásárlás letíltva!",
  54. "Te már választottál fegyvert!"
  55. };
  56.  
  57. new const g_szWeaponMenuNames [ ] [ ] = {
  58.  
  59. "M4A1",
  60. "AK47",
  61. "AWP",
  62. "M249",
  63. "AUG",
  64. "Famas",
  65. "Galil",
  66. "MP5",
  67. "XM1014",
  68. "M3",
  69. "Scout"
  70. };
  71.  
  72. new const g_szWeaponsName [ ] [ ] = {
  73.  
  74. "weapon_m4a1",
  75. "weapon_ak47",
  76. "weapon_awp",
  77. "weapon_m249",
  78. "weapon_aug",
  79. "weapon_famas",
  80. "weapon_galil",
  81. "weapon_mp5navy",
  82. "weapon_xm1014",
  83. "weapon_m3",
  84. "weapon_scout"
  85. };
  86.  
  87. new const g_szPistolsMenuNames [ ] [ ] = {
  88.  
  89. "Deagle",
  90. "USP",
  91. "Glock18",
  92. "Fiveseven",
  93. "P228",
  94. "Elite"
  95. };
  96.  
  97. new const g_szPistolsName [ ] [ ] = {
  98.  
  99. "weapon_deagle",
  100. "weapon_usp",
  101. "weapon_glock18",
  102. "weapon_fiveseven",
  103. "weapon_p228",
  104. "weapon_elite"
  105. };
  106.  
  107.  
  108. new const g_szPistolName [ ] = "weapon_deagle";
  109.  
  110. const DoNotReload = ( ( 1 << CSW_HEGRENADE ) | ( 1 << CSW_SMOKEGRENADE ) | ( 1 << CSW_FLASHBANG ) | ( 1 << CSW_KNIFE ) | ( 1 << CSW_C4 ) );
  111. new const maxAmmo[ 31 ] = {
  112.  
  113. 0,
  114. 52,
  115. 0,
  116. 90,
  117. 1,
  118. 32,
  119. 1,
  120. 100,
  121. 90,
  122. 1,
  123. 120,
  124. 100,
  125. 100,
  126. 90,
  127. 90,
  128. 90,
  129. 100,
  130. 120,
  131. 30,
  132. 120,
  133. 200,
  134. 32,
  135. 90,
  136. 120,
  137. 90,
  138. 2,
  139. 35,
  140. 90,
  141. 90,
  142. 0,
  143. 100
  144. };
  145.  
  146. new g_szBuyCommands[ ][ ] =
  147. {
  148. "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47",
  149. "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren",
  150. "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge",
  151. "autoshotgun", "smg", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550",
  152. "buyammo1", "buyammo2"
  153. };
  154.  
  155. new const g_szMenuCommands[ ] [ ] =
  156. {
  157. "fegyo",
  158. "say fegyo",
  159. "say_team fegyo",
  160.  
  161. "fegyver",
  162. "say fegyver",
  163. "say_team fegyver",
  164.  
  165. "say /fegyo",
  166. "say_team /fegyo",
  167.  
  168. "say /fegyver",
  169. "say_team /fegyver"
  170.  
  171. };
  172.  
  173. new g_szChatPrefix[ 64 ];
  174. new g_msgHideWeapon;
  175. new g_bHasWeapon[ Max_Players+1 ];
  176.  
  177. public plugin_init ( ) {
  178.  
  179. register_plugin( "Advanced Weapon Menu", VERSION, "#YouCantStopMe" );
  180.  
  181. RegisterHam( Ham_Spawn, "player", "func_OpenWeaponMenu", 1 );
  182.  
  183. pCvarMaxCTWps = register_cvar( "awm_max_ct_awp", "2" );
  184. pCvarMaxTEWps = register_cvar( "awm_max_te_awp", "2" );
  185.  
  186. pCvarWPBlock = register_cvar( "awm_allow_wp_player", "4" );
  187.  
  188. pCvarFlash = register_cvar( "awm_give_flash", "2" );
  189. pCvarHe = register_cvar( "awm_give_he", "1" );
  190. pCvarSmoke = register_cvar( "awm_give_smoke", "0" );
  191.  
  192. pCvarKevlar = register_cvar( "awm_give_kevlar", "2" );
  193. pCvarDefuser = register_cvar( "awm_give_defuser", "1" );
  194.  
  195. pCvarUnAmmo = register_cvar( "awm_unlimited_ammo", "1" );
  196.  
  197. pCvarBlockBuy = register_cvar( "awm_block_buy", "1" );
  198. pCvarMoney = register_cvar( "awm_set_money", "0" );
  199. pCvarPrefix = register_cvar( "awm_prefix", PREFIX );
  200.  
  201. g_msgHideWeapon = get_user_msgid( "HideWeapon" );
  202.  
  203. for( new i = 0; i < sizeof( g_szBuyCommands ); i++ )
  204. register_clcmd( g_szBuyCommands[ i ], "cmd_BlockBuy" );
  205.  
  206. for( new i = 0; i < sizeof( g_szMenuCommands ); i++ )
  207. register_clcmd( g_szMenuCommands[ i ], "cmd_ShowWeaponMenu" );
  208.  
  209. register_event( "ResetHUD", "onResetHUD", "b" );
  210. register_event( "CurWeapon", "eCurWeapon", "be", "1=1" );
  211.  
  212. register_message( g_msgHideWeapon, "msgHideWeapon" );
  213.  
  214. register_logevent( "eRoundEnd", 2, "1=Round_End" );
  215. }
  216.  
  217. public client_connect( iClient ) {
  218.  
  219. g_bHasWeapon[ iClient ] = false;
  220. }
  221.  
  222. public client_disconnect( iClient ) {
  223.  
  224. g_bHasWeapon[ iClient ] = false;
  225. }
  226.  
  227. public cmd_ShowWeaponMenu( iClient ) {
  228.  
  229. switch( g_bHasWeapon[ iClient ] ) {
  230.  
  231. case true:
  232. {
  233. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  234. ColorChat( iClient, "^3%s %s" , g_szChatPrefix, g_szMessages[ 4 ] );
  235.  
  236. return PLUGIN_HANDLED;
  237. }
  238. case false: func_OpenWeaponMenu( iClient );
  239. }
  240. return PLUGIN_HANDLED;
  241. }
  242.  
  243. public cmd_BlockBuy( iClient ) {
  244.  
  245. if( !get_pcvar_num( pCvarBlockBuy ) )
  246. return PLUGIN_CONTINUE;
  247.  
  248. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  249. ColorChat( iClient, "^3%s %s" , g_szChatPrefix, g_szMessages[ 3 ] );
  250. return PLUGIN_HANDLED;
  251. }
  252.  
  253. public eCurWeapon( iClient ) {
  254.  
  255. if( get_pcvar_num( pCvarUnAmmo ) ) {
  256.  
  257. if( is_user_alive( iClient ) ) {
  258.  
  259. new weapon = read_data( 2 );
  260. if( !( DoNotReload & ( 1 << weapon ) ) ) {
  261.  
  262. cs_set_user_bpammo( iClient, weapon, maxAmmo[ weapon ] );
  263. }
  264. }
  265. }
  266. }
  267.  
  268. public onResetHUD( iClient ) {
  269.  
  270. if( !get_pcvar_num( pCvarMoney ) ) {
  271.  
  272. message_begin( MSG_ONE, g_msgHideWeapon, _, iClient );
  273. write_byte( Money_Hud );
  274. message_end( );
  275. }
  276. }
  277.  
  278. public msgHideWeapon( ) {
  279.  
  280. if( !get_pcvar_num( pCvarMoney ) ) {
  281.  
  282. set_msg_arg_int( 1, ARG_BYTE, get_msg_arg_int( 1 ) | Money_Hud );
  283. }
  284. }
  285.  
  286. public eRoundEnd ( ) {
  287.  
  288. g_iWPCT = 0;
  289. g_iWPTE = 0;
  290. }
  291.  
  292. public func_OpenWeaponMenu ( iClient ) {
  293.  
  294. if( !is_user_alive( iClient ) )
  295. return;
  296.  
  297. cs_set_user_money( iClient, get_pcvar_num( pCvarMoney ) );
  298.  
  299. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  300.  
  301. g_bHasWeapon[ iClient ] = false;
  302.  
  303. new szMenuTitle[ 121 ];
  304. new szMenuItem[ 121 ];
  305.  
  306. format( szMenuTitle, charsmax( szMenuTitle ), "\r%s^n\w%s", g_szChatPrefix, Weapon_Menu_Name );
  307.  
  308. StripUserWeapons( iClient );
  309. new menu = menu_create( szMenuTitle, "func_OpenWeaponMenu_handler" );
  310.  
  311. for( new i = 0; i < sizeof( g_szWeaponMenuNames ); i++ ) {
  312.  
  313. if( i != 2 ) {
  314.  
  315. format( szMenuItem, charsmax( szMenuItem ), "\w%s", g_szWeaponMenuNames[ i ] );
  316. }
  317. else {
  318. switch( get_user_team( iClient ) )
  319. {
  320. case 1: format( szMenuItem, charsmax( szMenuItem ), "\w%s \y[Első %d embernek]", g_szWeaponMenuNames[ i ], get_pcvar_num( pCvarMaxTEWps ) );
  321. case 2: format( szMenuItem, charsmax( szMenuItem ), "\w%s \y[Első %d embernek]", g_szWeaponMenuNames[ i ], get_pcvar_num( pCvarMaxCTWps ) );
  322. default: continue;
  323. }
  324. }
  325.  
  326. menu_additem( menu, szMenuItem, _, 0 );
  327. }
  328.  
  329. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
  330. menu_setprop( menu, MPROP_BACKNAME, Back_Button );
  331. menu_setprop( menu, MPROP_NEXTNAME, Next_Button );
  332. menu_setprop( menu, MPROP_EXITNAME, Exit_Button );
  333. menu_display( iClient, menu );
  334. }
  335.  
  336. public func_OpenWeaponMenu_handler( iClient, iMenu, iItem ) {
  337.  
  338. if( iItem == MENU_EXIT ) {
  339.  
  340. StripUserWeapons( iClient );
  341. g_bHasWeapon[ iClient ] = false;
  342. menu_destroy( iMenu );
  343. return PLUGIN_HANDLED;
  344. }
  345.  
  346. new data[ 6 ], szName[ 64 ];
  347. new access, callback;
  348. menu_item_getinfo( iMenu, iItem, access, data, charsmax( data ), szName, charsmax( szName ), callback );
  349.  
  350. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  351.  
  352. if( iItem != 2 ) {
  353.  
  354. give_item( iClient, g_szWeaponsName[ iItem ] );
  355.  
  356. ColorChat( iClient, "^3%s^1 Te az ^4%s^1-t választottad!", g_szChatPrefix ,g_szWeaponMenuNames[ iItem ] );
  357. }
  358. else {
  359.  
  360. new iTeams[ CsTeams ];
  361. GetPlayerCount( iTeams );
  362.  
  363. if( iTeams[ CS_TEAM_T ] < get_pcvar_num( pCvarWPBlock )
  364. || iTeams[ CS_TEAM_CT ] < get_pcvar_num( pCvarWPBlock ) ) {
  365.  
  366. ColorChat( iClient, g_szMessages[ 2 ], g_szChatPrefix );
  367. func_OpenWeaponMenu( iClient );
  368.  
  369. return PLUGIN_HANDLED;
  370. }
  371.  
  372. new CsTeams:userTeam = cs_get_user_team( iClient );
  373. if( userTeam == CS_TEAM_CT ) {
  374.  
  375. if( g_iWPCT < get_pcvar_num( pCvarMaxCTWps ) ) {
  376.  
  377. give_item( iClient, g_szWeaponsName[ iItem ] );
  378. give_item( iClient, g_szPistolName );
  379.  
  380. ColorChat( iClient, "^3%s^1 Te az ^4%s^1-t választottad!", g_szChatPrefix, g_szWeaponMenuNames[ iItem ] );
  381. g_iWPCT++;
  382. }
  383. else {
  384.  
  385. client_print( iClient, print_center, g_szMessages[ 1 ] );
  386. func_OpenWeaponMenu ( iClient );
  387.  
  388. return PLUGIN_HANDLED;
  389. }
  390. }
  391.  
  392. if( userTeam == CS_TEAM_T ) {
  393.  
  394. if( g_iWPTE < get_pcvar_num( pCvarMaxTEWps ) ) {
  395.  
  396.  
  397. give_item( iClient, g_szWeaponsName[ iItem ] );
  398. give_item( iClient, g_szPistolName );
  399.  
  400. ColorChat( iClient, "^3%s^1 Te az ^4%s^1-t választottad!", g_szChatPrefix, g_szWeaponMenuNames[ iItem ] );
  401. g_iWPTE++;
  402. }
  403. else {
  404.  
  405. client_print( iClient, print_center, g_szMessages[ 1 ] );
  406. func_OpenWeaponMenu( iClient );
  407.  
  408. return PLUGIN_HANDLED;
  409. }
  410. }
  411. }
  412. func_OpenPistolMenu( iClient );
  413.  
  414. menu_destroy( iMenu );
  415. return PLUGIN_HANDLED;
  416. }
  417. public func_OpenPistolMenu ( iClient ) {
  418.  
  419. if( !is_user_alive( iClient ) )
  420. return;
  421.  
  422. cs_set_user_money( iClient, get_pcvar_num( pCvarMoney ) );
  423.  
  424. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  425.  
  426. new szMenuTitle[ 121 ];
  427. new szMenuItem[ 121 ];
  428.  
  429. format( szMenuTitle, charsmax( szMenuTitle ), "\r%s^n\w%s", g_szChatPrefix, Pistol_Menu_Name );
  430.  
  431. new menu = menu_create( szMenuTitle, "func_OpenPistolMenu_handler" );
  432.  
  433. for( new i = 0; i < sizeof( g_szPistolsMenuNames ); i++ ) {
  434.  
  435. format( szMenuItem, charsmax( szMenuItem ), "\w%s", g_szPistolsMenuNames[ i ] );
  436. menu_additem( menu, szMenuItem, _, 0 );
  437. }
  438.  
  439. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
  440. menu_setprop( menu, MPROP_BACKNAME, Back_Button );
  441. menu_setprop( menu, MPROP_NEXTNAME, Next_Button );
  442. menu_setprop( menu, MPROP_EXITNAME, Exit_Button );
  443. menu_display( iClient, menu );
  444. }
  445.  
  446. public func_OpenPistolMenu_handler( iClient, iMenu, iItem ) {
  447.  
  448. if( iItem == MENU_EXIT ) {
  449.  
  450. StripUserWeapons( iClient );
  451. g_bHasWeapon[ iClient ] = false;
  452. menu_destroy( iMenu );
  453. return PLUGIN_HANDLED;
  454. }
  455.  
  456. new data[ 6 ], szName[ 64 ];
  457. new access, callback;
  458. menu_item_getinfo( iMenu, iItem, access, data, charsmax( data ), szName, charsmax( szName ), callback );
  459. get_pcvar_string( pCvarPrefix, g_szChatPrefix, charsmax( g_szChatPrefix ) );
  460.  
  461. give_item( iClient, g_szPistolsName[ iItem ] );
  462. give_item( iClient, "weapon_knife" );
  463.  
  464. give_player_stuff( iClient );
  465.  
  466. ColorChat( iClient, "^3%s^1 Te az ^4%s^1-t választottad!", g_szChatPrefix ,g_szPistolsMenuNames[ iItem ] );
  467.  
  468. menu_destroy( iMenu );
  469. return PLUGIN_HANDLED;
  470. }
  471.  
  472. GetPlayerCount( iTeamPlayers[ CsTeams ] ) {
  473.  
  474. new iPlayers[ 32 ] , iPlayerCount;
  475.  
  476. get_players( iPlayers , iPlayerCount );
  477.  
  478. for ( new i = 0 ; i < iPlayerCount ; i++ )
  479. iTeamPlayers[ cs_get_user_team( iPlayers[ i ] ) ]++;
  480. }
  481.  
  482. stock give_player_stuff( iClient ) {
  483.  
  484. if( get_pcvar_num( pCvarFlash ) ) {
  485.  
  486. give_item( iClient, "weapon_flashbang" );
  487. cs_set_user_bpammo( iClient, CSW_FLASHBANG, get_pcvar_num( pCvarFlash ) );
  488. }
  489.  
  490. if( get_pcvar_num( pCvarHe ) ) {
  491.  
  492. give_item( iClient, "weapon_hegrenade" );
  493. cs_set_user_bpammo( iClient, CSW_HEGRENADE, get_pcvar_num( pCvarHe ) );
  494. }
  495.  
  496. if( get_pcvar_num( pCvarSmoke ) ) {
  497.  
  498. give_item( iClient, "weapon_smokegrenade" );
  499. cs_set_user_bpammo( iClient, CSW_SMOKEGRENADE, get_pcvar_num( pCvarSmoke ) );
  500. }
  501.  
  502. if( get_pcvar_num( pCvarKevlar ) ) {
  503.  
  504. switch( get_pcvar_num( pCvarKevlar ) ) {
  505.  
  506. case 1: give_item( iClient, "item_kevlar" );
  507. case 2: give_item( iClient, "item_assaultsuit" );
  508. default: return PLUGIN_CONTINUE;
  509. }
  510. }
  511.  
  512. if( get_pcvar_num( pCvarDefuser ) ) {
  513.  
  514. give_item( iClient, "item_thighpack" );
  515. }
  516.  
  517. if( !get_pcvar_num( pCvarUnAmmo ) ) {
  518.  
  519. new weapons[ 32 ];
  520. new weaponsnum;
  521. get_user_weapons( iClient, weapons, weaponsnum );
  522. for( new i = 0; i < weaponsnum; i++ )
  523. if( is_user_alive( iClient ) )
  524. if( maxAmmo[ weapons[ i ] ] > 0 )
  525. cs_set_user_bpammo( iClient, weapons[ i ], maxAmmo[ weapons[ i ] ] );
  526. }
  527.  
  528. g_bHasWeapon[ iClient ] = true;
  529. return PLUGIN_CONTINUE;
  530. }
  531.  
  532. stock ColorChat( iClient, const input[], any:...)
  533. {
  534. new count = 1, players[ 32 ];
  535. static msg[ 191 ];
  536. vformat( msg, 190, input, 3 );
  537.  
  538. replace_all( msg, 190, "^x01" , "^1");
  539. replace_all( msg, 190, "^x03" , "^3");
  540. replace_all( msg, 190, "^x04" , "^4");
  541.  
  542. if ( iClient ) players[ 0 ] = iClient; else get_players( players , count , "ch" );
  543. {
  544. for ( new i = 0; i < count; i++ )
  545. {
  546. if ( is_user_connected( players[ i ] ) )
  547. {
  548. message_begin( MSG_ONE_UNRELIABLE , get_user_msgid( "SayText" ), _, players[ i ] );
  549. write_byte( players[ i ] );
  550. write_string( msg );
  551. message_end( );
  552. }
  553. }
  554. }
  555. }
  556.  
  557.  
  558. //Stolen from CSDM Weapon Menu
  559. stock StripUserWeapons( iClient ) {
  560.  
  561. new iC4Ent = get_pdata_cbase( iClient, OFFSET_C4_SLOT );
  562.  
  563. if( iC4Ent > 0 ) {
  564.  
  565. set_pdata_cbase( iClient, OFFSET_C4_SLOT, FM_NULLENT );
  566. }
  567.  
  568. strip_user_weapons( iClient );
  569. set_pdata_int( iClient, OFFSET_PRIMARYWEAPON, 0 );
  570.  
  571. if( iC4Ent > 0 ) {
  572.  
  573. set_pev( iClient, pev_weapons, pev( iClient, pev_weapons ) | ( 1 << CSW_C4 ) );
  574. set_pdata_cbase( iClient, OFFSET_C4_SLOT, iC4Ent );
  575.  
  576. cs_set_user_bpammo( iClient, CSW_C4, 1 );
  577. cs_set_user_plant( iClient, 1 );
  578. }
  579.  
  580. return PLUGIN_HANDLED;
  581. }
  582.  

Szerző:  SmaCk [2015.09.27. 15:22 ]
Hozzászólás témája:  Re: Fegyvermenü

Köszi :D

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/