hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.08.23. 12:39



Jelenlévő felhasználók

Jelenleg 346 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 344 vendég

A legtöbb felhasználó (2883 fő) 2025.07.30. 16:00-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [7 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: (ReApi) Extended Weapon Menu
HozzászólásElküldve:2025.05.13. 16:19 
Offline
Jómunkásember

Csatlakozott:2020.06.14. 17:59
Hozzászólások:422
Megköszönt másnak: 77 alkalommal
Megköszönték neki: 10 alkalommal
Sziasztok!

Gránátot és flasht vakítót nem ad mikor ki válasszuk a fegyvereket....

  1. /*
  2.                 Extended Weapon Menu
  3.                     v1.4 by mforce
  4.            
  5.             Changes:
  6.            
  7.             v1.1 - Multilang added, strip_user_weapons fixed, "hardcoded" things fixed,
  8.             unnecessary cvar removed, using Safety1st method for money block, ColorChat included.
  9.            
  10.             v1.2 - AMXX 1.8.3 support fixed, minimal improvements (less cvar hook)
  11.             v1.21 - Multilang fix.
  12.             v1.3 - Plugin pause removed. Added files for modify weapon menu items.
  13.             v1.4 - Added give and drop by Safety1st, menu builds by Vaqtincha's plugin.
  14.         */
  15.          
  16.          
  17.         #include <amxmodx>
  18.         #include <reapi>
  19.          
  20.         new const PLUGIN[] = ".:[Dead~Rising]:. Fegyvermenü";
  21.         new const VERSION[] = "1.4";
  22.         new const AUTHOR[] = "mforce";
  23.        
  24.         new const Maps[][] = {    
  25.          "aim_ak-colt_pool",
  26.          "fy_snow4",
  27.          "awp_cold2",
  28.          "aim_crazyjump_2015",
  29.          "aim_ak-colt3",
  30.          "fy_snow2006"
  31.         }
  32.          
  33.         new const PREFIX[] = "^4.:[^1Dead~Rising^4]:.";
  34.          
  35.         #if AMXX_VERSION_NUM < 183
  36.         #include <colorchat>
  37.         const MAX_PLAYERS = 32;
  38.         #endif
  39.         const HUD_HIDE_MONEY = 1<<5;
  40.          
  41.         new Array:g_Primary_MenuItems, Array:g_Secondary_MenuItems;
  42.         new g_iPrim_TotalItems, g_iSec_TotalItems;
  43.         new g_iPrim_EquipMenuID, g_iSec_EquipMenuID;
  44.         enum _:weapinfo {weap_name[32], bpammo};
  45.         enum _:PCVARS {AwpMinPlayers, MaxAwps, PistolMenu, MaxHeg, MaxFlash, MaxSmoke}
  46.         enum _:TEAMS {TE, CT};
  47.         enum _:MAXGRENADES {HE, FLASH, SMOKE};
  48.         enum _:AWPCVARS {MinPlayers, MaxAwp};
  49.         new g_Cvars[PCVARS], bool:g_AllowAWP, g_Awps[TEAMS], bool:g_Used[MAX_PLAYERS+1], g_Grenades[MAXGRENADES], g_AWPCvarHook[AWPCVARS];
  50.         new GunMenuOff;
  51.          
  52.         new const g_szWeaponNames[CSW_P90+1][] = {
  53.             "","weapon_p228","weapon_shield","weapon_scout","weapon_hegrenade","weapon_xm1014","weapon_c4",
  54.             "weapon_mac10","weapon_aug","weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
  55.             "weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp",
  56.             "weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1",
  57.             "weapon_flashbang","weapon_deagle","weapon_sg552","weapon_ak47","weapon_knife","weapon_p90"
  58.         }
  59.          
  60.         public plugin_init() {
  61.             register_plugin(PLUGIN, VERSION, AUTHOR);
  62.             register_dictionary("extended_weapon_menu.txt");
  63.             g_Cvars[AwpMinPlayers] = register_cvar("ewm_awpminplayers", "3")
  64.             g_Cvars[MaxAwps] = register_cvar("ewm_maxawp", "3")
  65.             g_Cvars[PistolMenu] = register_cvar("ewm_pistolmenu", "1")
  66.             g_Cvars[MaxHeg] = register_cvar("ewm_maxheg", "1")
  67.             g_Cvars[MaxFlash] = register_cvar("ewm_maxflash", "2")
  68.             g_Cvars[MaxSmoke] = register_cvar("ewm_maxsmoke", "1")
  69.             RegisterHookChain(RG_CBasePlayer_Spawn, "weapmenu", true);
  70.             register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  71.            
  72.             new const commands[][] = {"say /gun", "say /guns", "say /weap", "say_team /gun", "say_team /guns", "say_team /weap"};
  73.             for(new i; i < sizeof(commands); i++) {
  74.                 register_clcmd(commands[i], "weapmenu");
  75.             }
  76.            
  77.             new Map[32];
  78.             get_mapname(Map, charsmax(Map));
  79.      
  80.             for(new i; i < sizeof(Maps); i++){
  81.                 if(equal(Map,Maps[i])){
  82.                     GunMenuOff = 1;
  83.                     break;
  84.                 }
  85.             }
  86.            
  87.             set_member_game(m_bMapHasBuyZone, false);
  88.             register_event("ResetHUD", "Event_ResetHUD", "b")
  89.             register_event("HideWeapon", "Event_HideWeapon", "b")
  90.             set_msg_block(get_user_msgid("Money"), BLOCK_SET)
  91.            
  92.             g_Primary_MenuItems = ArrayCreate(weapinfo);
  93.             g_Secondary_MenuItems = ArrayCreate(weapinfo);
  94.         }
  95.          
  96.         public plugin_cfg() {
  97.             new sBuffer[256], sFile[128], sData[2][32], pFile;
  98.             get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  99.             add(sFile, charsmax(sFile), "/ewm_weapons.ini");
  100.          
  101.             pFile = fopen(sFile, "rt");
  102.             if(!pFile) set_fail_state("Error reading weapon menu items config file.");
  103.            
  104.             new Trie:tCheckWeaponName = TrieCreate();
  105.             new Trie:tCheckAddedItems = TrieCreate()
  106.            
  107.             for(new i = 0; i< sizeof(g_szWeaponNames); i++)
  108.                 TrieSetCell(tCheckWeaponName, g_szWeaponNames[i], 1);
  109.            
  110.             new bSection, menudata[weapinfo];
  111.            
  112.             while(!feof(pFile)) {
  113.                 fgets(pFile, sBuffer, charsmax(sBuffer)); trim(sBuffer);
  114.                 if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  115.                
  116.                 if(sBuffer[0] == '[') {
  117.                     if(equali(sBuffer, "[weapons]")) bSection = 1;
  118.                     else if(equali(sBuffer, "[pistols]")) bSection = 2;
  119.                     else bSection = 0;
  120.                    
  121.                     continue;
  122.                 }
  123.          
  124.                 if(parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]))) {
  125.                     format(sData[0], charsmax(sData[]), "weapon_%s", sData[0]);
  126.                     strtolower(sData[0]);
  127.                    
  128.                     if(!sData[0][0] || !TrieKeyExists(tCheckWeaponName, sData[0])) {
  129.                         server_print("WARNING: Invalid weapon name ^"%s^" will be skipped!", sData[0]);
  130.                         continue;
  131.                     }
  132.                     if(TrieKeyExists(tCheckAddedItems, sData[0])) {
  133.                         server_print("WARNING: Item ^"%s^" is already added!", sData[0]);
  134.                         continue;
  135.                     }
  136.                    
  137.                     copy(menudata[weap_name], charsmax(menudata[weap_name]), sData[0]);
  138.                     menudata[bpammo] = str_to_num(sData[1]);
  139.                     TrieSetCell(tCheckAddedItems, sData[0], 1);
  140.                    
  141.                     if(bSection == 1) {
  142.                         ArrayPushArray(g_Primary_MenuItems, menudata);
  143.                         g_iPrim_TotalItems++
  144.                     }
  145.                     else if(bSection == 2) {
  146.                         ArrayPushArray(g_Secondary_MenuItems, menudata);
  147.                         g_iSec_TotalItems++
  148.                     }
  149.                 }
  150.             }
  151.            
  152.             fclose(pFile);
  153.             TrieDestroy(tCheckWeaponName);
  154.             TrieDestroy(tCheckAddedItems);
  155.            
  156.             if(!g_iPrim_TotalItems || !g_iSec_TotalItems) set_fail_state("Error! The menu doesn't contain any weapons.");
  157.            
  158.             build_menu();
  159.         }
  160.          
  161.         build_menu() {
  162.             g_iPrim_EquipMenuID = menu_create(PLUGIN, "Prim_WeaponMenuHandler")
  163.             g_iSec_EquipMenuID = menu_create(PLUGIN, "Sec_WeaponMenuHandler")
  164.             // menu_setprop(g_iPrim_EquipMenuID, MPROP_NUMBER_COLOR, "\r")
  165.          
  166.             new szMenuText[64], menudata[weapinfo], szNum[3], i;
  167.            
  168.             for(i = 0; i < g_iPrim_TotalItems; i++) {
  169.                 ArrayGetArray(g_Primary_MenuItems, i, menudata)
  170.                 strtoupper(menudata[weap_name]);
  171.                 formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  172.                 num_to_str(i, szNum, charsmax(szNum))
  173.                 menu_additem(g_iPrim_EquipMenuID, szMenuText, szNum, 0)
  174.             }
  175.            
  176.             for(i = 0; i < g_iSec_TotalItems; i++) {
  177.                 ArrayGetArray(g_Secondary_MenuItems, i, menudata)
  178.                 strtoupper(menudata[weap_name]);
  179.                 formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  180.                 num_to_str(i, szNum, charsmax(szNum))
  181.                 menu_additem(g_iSec_EquipMenuID, szMenuText, szNum, 0)
  182.             }
  183.            
  184.             menu_setprop(g_iPrim_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  185.             menu_setprop(g_iSec_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  186.             formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_BACK");
  187.             menu_setprop(g_iPrim_EquipMenuID, MPROP_BACKNAME, szMenuText);
  188.             menu_setprop(g_iSec_EquipMenuID, MPROP_BACKNAME, szMenuText);
  189.             formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_NEXT");
  190.             menu_setprop(g_iPrim_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  191.             menu_setprop(g_iSec_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  192.             formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_EXIT");
  193.             menu_setprop(g_iPrim_EquipMenuID, MPROP_EXITNAME, szMenuText);
  194.             menu_setprop(g_iSec_EquipMenuID, MPROP_EXITNAME, szMenuText);
  195.         }
  196.          
  197.         public Prim_WeaponMenuHandler(id, iMenu, iItem) {
  198.             if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  199.          
  200.             new szNum[3], iAccess, cb;
  201.             menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  202.          
  203.             new iItemIndex = str_to_num(szNum);
  204.             new menudata[weapinfo];
  205.            
  206.             ArrayGetArray(g_Primary_MenuItems, iItemIndex, menudata);
  207.            
  208.             if(equal(menudata[weap_name], "weapon_awp")) {
  209.                 if(!g_AllowAWP) {
  210.                     client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_ALLOWFROM", g_AWPCvarHook[MinPlayers], g_AWPCvarHook[MinPlayers]);
  211.                     weapmenu(id);
  212.                     return PLUGIN_HANDLED;
  213.                 }
  214.                 else if(g_AWPCvarHook[MaxAwp]) {
  215.                     switch(get_member(id, m_iTeam)) {
  216.                         case TEAM_TERRORIST: {
  217.                             if(g_Awps[TE] < g_AWPCvarHook[MaxAwp]) g_Awps[TE]++;
  218.                             else {
  219.                                 client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  220.                                 weapmenu(id);
  221.                                 return PLUGIN_HANDLED;
  222.                             }
  223.                         }
  224.                         case TEAM_CT: {
  225.                             if(g_Awps[CT] < g_AWPCvarHook[MaxAwp]) g_Awps[CT]++;
  226.                             else {
  227.                                 client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  228.                                 weapmenu(id);
  229.                                 return PLUGIN_HANDLED;
  230.                             }
  231.                         }
  232.                     }
  233.                 }
  234.             }
  235.            
  236.             if(get_pcvar_num(g_Cvars[PistolMenu]) == 1) {
  237.                 menu_display(id, g_iSec_EquipMenuID, 0);
  238.             }
  239.             else {
  240.                 rg_give_item(id, "weapon_deagle", GT_REPLACE);
  241.                 rg_set_user_bpammo(id, WEAPON_DEAGLE, 35);
  242.             }
  243.            
  244.             add_weapon(id, menudata[weap_name], menudata[bpammo]);
  245.             rg_set_user_armor(id, 100, ARMOR_VESTHELM);
  246.             give_grenades(id);
  247.             strtoupper(menudata[weap_name]);
  248.             client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_CHOOSED", menudata[weap_name][7]);
  249.             g_Used[id] = true;
  250.          
  251.             return PLUGIN_HANDLED;
  252.         }
  253.          
  254.         stock add_weapon(id, const weapname[], bp_ammo) {
  255.             rg_give_item(id, weapname, GT_REPLACE);
  256.             new weaponid = rg_get_weapon_info(weapname, WI_ID);
  257.             rg_set_user_bpammo(id, WeaponIdType:weaponid, bp_ammo);
  258.         }
  259.          
  260.         public Sec_WeaponMenuHandler(id, iMenu, iItem) {
  261.             if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  262.          
  263.             new szNum[3], iAccess, cb;
  264.             menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  265.          
  266.             new iItemIndex = str_to_num(szNum);
  267.             new menudata[weapinfo];
  268.            
  269.             ArrayGetArray(g_Secondary_MenuItems, iItemIndex, menudata);
  270.            
  271.             add_weapon(id, menudata[weap_name], menudata[bpammo]);
  272.            
  273.             return PLUGIN_HANDLED;
  274.         }
  275.          
  276.         public Event_NewRound() {
  277.             arrayset(g_Used, false, sizeof(g_Used));
  278.             arrayset(g_Awps, 0, sizeof(g_Awps));
  279.             g_AWPCvarHook[MinPlayers] = get_pcvar_num(g_Cvars[AwpMinPlayers]);
  280.             g_AllowAWP = (get_member_game(m_iNumTerrorist) >= g_AWPCvarHook[MinPlayers] && get_member_game(m_iNumCT) >= g_AWPCvarHook[MinPlayers]) ? true : false;
  281.             g_Grenades[HE] = get_pcvar_num(g_Cvars[MaxHeg]);
  282.             g_Grenades[FLASH] = get_pcvar_num(g_Cvars[MaxFlash]);
  283.             g_Grenades[SMOKE] = get_pcvar_num(g_Cvars[MaxSmoke]);
  284.             g_AWPCvarHook[MaxAwp] = get_pcvar_num(g_Cvars[MaxAwps]);
  285.         }
  286.          
  287.         public weapmenu(id) {
  288.             if (!is_user_alive(id) || g_Used[id] || GunMenuOff) return;
  289.            
  290.             menu_display(id, g_iPrim_EquipMenuID, 0);
  291.         }
  292.          
  293.         give_grenades(id) {
  294.             if(g_Grenades[HE])
  295.                 add_weapon(id, "weapon_hegrenade", g_Grenades[HE]);
  296.          
  297.             if(g_Grenades[FLASH])
  298.                 add_weapon(id, "weapon_flashbang", g_Grenades[FLASH]);
  299.          
  300.             if(g_Grenades[SMOKE])
  301.                 add_weapon(id, "weapon_smokegrenade", g_Grenades[SMOKE]);
  302.         }
  303.          
  304.         public Event_ResetHUD(id) {
  305.             set_member(id, m_iClientHideHUD, 0)
  306.             set_member(id, m_iHideHUD, HUD_HIDE_MONEY)
  307.         }
  308.          
  309.         public Event_HideWeapon(id) {
  310.             // for compatibility with other plugins using that message; ZP for example
  311.             new iFlags = read_data(1)
  312.             if(~iFlags & HUD_HIDE_MONEY) {
  313.                 set_member(id, m_iClientHideHUD, 0)
  314.                 set_member(id, m_iHideHUD, iFlags|HUD_HIDE_MONEY)
  315.             }
  316.         }
  317.          
  318.         public plugin_end() {
  319.             ArrayDestroy(g_Primary_MenuItems);
  320.             ArrayDestroy(g_Secondary_MenuItems);
  321.         }
  322. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  323. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  324. */


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: (ReApi) Extended Weapon Menu
HozzászólásElküldve:2025.07.31. 19:06 
Offline
Újonc

Csatlakozott:2025.07.31. 18:58
Hozzászólások:1
Szia!

A give_grenades(id) függvényt kell kicserélni a helyes kódra, ami a Reapi függvényeket (pl. rg_give_item) használja a gránátok kiosztásához.
A kódodban a jelenlegi give_grenades(id) így néz ki:

[code]give_grenades(id) {
if(g_Grenades[HE])
add_weapon(id, "weapon_hegrenade", g_Grenades[HE]);

if(g_Grenades[FLASH])
add_weapon(id, "weapon_flashbang", g_Grenades[FLASH]);

if(g_Grenades[SMOKE])
add_weapon(id, "weapon_smokegrenade", g_Grenades[SMOKE]);
}[/code]

Ezt kell lecserélni erre:
[code]stock give_grenades(id) {
if(g_Grenades[HE]) {
rg_give_item(id, "weapon_hegrenade", GT_APPEND);
rg_set_user_bpammo(id, CSW_HEGRENADE, g_Grenades[HE]);
}

if(g_Grenades[FLASH]) {
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_set_user_bpammo(id, CSW_FLASHBANG, g_Grenades[FLASH]);
}

if(g_Grenades[SMOKE]) {
rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
rg_set_user_bpammo(id, CSW_SMOKEGRENADE, g_Grenades[SMOKE]);
}
}[/code]

_________________
Az algoritmusok és a logika a mindennapjaim részei. A programozás megtanított a problémamegoldásra, kreativitásra és türelemre. Bármi kérdésed van, nyugodtan írj!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2025.08.03. 19:36 
Offline
Fanatikus
Avatar

Csatlakozott:2018.11.02. 12:23
Hozzászólások:152
Megköszönt másnak: 2 alkalommal
Megköszönték neki: 19 alkalommal
saxxo írta:
Sziasztok!

Gránátot és flasht vakítót nem ad mikor ki válasszuk a fegyvereket....

  1. /*
  2.                 Extended Weapon Menu
  3.                     v1.4 by mforce
  4.            
  5.             Changes:
  6.            
  7.             v1.1 - Multilang added, strip_user_weapons fixed, "hardcoded" things fixed,
  8.             unnecessary cvar removed, using Safety1st method for money block, ColorChat included.
  9.            
  10.             v1.2 - AMXX 1.8.3 support fixed, minimal improvements (less cvar hook)
  11.             v1.21 - Multilang fix.
  12.             v1.3 - Plugin pause removed. Added files for modify weapon menu items.
  13.             v1.4 - Added give and drop by Safety1st, menu builds by Vaqtincha's plugin.
  14.         */
  15.          
  16.          
  17.         #include <amxmodx>
  18.         #include <reapi>
  19.          
  20.         new const PLUGIN[] = ".:[Dead~Rising]:. Fegyvermenü";
  21.         new const VERSION[] = "1.4";
  22.         new const AUTHOR[] = "mforce";
  23.        
  24.         new const Maps[][] = {    
  25.          "aim_ak-colt_pool",
  26.          "fy_snow4",
  27.          "awp_cold2",
  28.          "aim_crazyjump_2015",
  29.          "aim_ak-colt3",
  30.          "fy_snow2006"
  31.         }
  32.          
  33.         new const PREFIX[] = "^4.:[^1Dead~Rising^4]:.";
  34.          
  35.         #if AMXX_VERSION_NUM < 183
  36.         #include <colorchat>
  37.         const MAX_PLAYERS = 32;
  38.         #endif
  39.         const HUD_HIDE_MONEY = 1<<5;
  40.          
  41.         new Array:g_Primary_MenuItems, Array:g_Secondary_MenuItems;
  42.         new g_iPrim_TotalItems, g_iSec_TotalItems;
  43.         new g_iPrim_EquipMenuID, g_iSec_EquipMenuID;
  44.         enum _:weapinfo {weap_name[32], bpammo};
  45.         enum _:PCVARS {AwpMinPlayers, MaxAwps, PistolMenu, MaxHeg, MaxFlash, MaxSmoke}
  46.         enum _:TEAMS {TE, CT};
  47.         enum _:MAXGRENADES {HE, FLASH, SMOKE};
  48.         enum _:AWPCVARS {MinPlayers, MaxAwp};
  49.         new g_Cvars[PCVARS], bool:g_AllowAWP, g_Awps[TEAMS], bool:g_Used[MAX_PLAYERS+1], g_Grenades[MAXGRENADES], g_AWPCvarHook[AWPCVARS];
  50.         new GunMenuOff;
  51.          
  52.         new const g_szWeaponNames[CSW_P90+1][] = {
  53.             "","weapon_p228","weapon_shield","weapon_scout","weapon_hegrenade","weapon_xm1014","weapon_c4",
  54.             "weapon_mac10","weapon_aug","weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
  55.             "weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp",
  56.             "weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1",
  57.             "weapon_flashbang","weapon_deagle","weapon_sg552","weapon_ak47","weapon_knife","weapon_p90"
  58.         }
  59.          
  60.         public plugin_init() {
  61.             register_plugin(PLUGIN, VERSION, AUTHOR);
  62.             register_dictionary("extended_weapon_menu.txt");
  63.             g_Cvars[AwpMinPlayers] = register_cvar("ewm_awpminplayers", "3")
  64.             g_Cvars[MaxAwps] = register_cvar("ewm_maxawp", "3")
  65.             g_Cvars[PistolMenu] = register_cvar("ewm_pistolmenu", "1")
  66.             g_Cvars[MaxHeg] = register_cvar("ewm_maxheg", "1")
  67.             g_Cvars[MaxFlash] = register_cvar("ewm_maxflash", "2")
  68.             g_Cvars[MaxSmoke] = register_cvar("ewm_maxsmoke", "1")
  69.             RegisterHookChain(RG_CBasePlayer_Spawn, "weapmenu", true);
  70.             register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  71.            
  72.             new const commands[][] = {"say /gun", "say /guns", "say /weap", "say_team /gun", "say_team /guns", "say_team /weap"};
  73.             for(new i; i < sizeof(commands); i++) {
  74.                 register_clcmd(commands[i], "weapmenu");
  75.             }
  76.            
  77.             new Map[32];
  78.             get_mapname(Map, charsmax(Map));
  79.      
  80.             for(new i; i < sizeof(Maps); i++){
  81.                 if(equal(Map,Maps[i])){
  82.                     GunMenuOff = 1;
  83.                     break;
  84.                 }
  85.             }
  86.            
  87.             set_member_game(m_bMapHasBuyZone, false);
  88.             register_event("ResetHUD", "Event_ResetHUD", "b")
  89.             register_event("HideWeapon", "Event_HideWeapon", "b")
  90.             set_msg_block(get_user_msgid("Money"), BLOCK_SET)
  91.            
  92.             g_Primary_MenuItems = ArrayCreate(weapinfo);
  93.             g_Secondary_MenuItems = ArrayCreate(weapinfo);
  94.         }
  95.          
  96.         public plugin_cfg() {
  97.             new sBuffer[256], sFile[128], sData[2][32], pFile;
  98.             get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  99.             add(sFile, charsmax(sFile), "/ewm_weapons.ini");
  100.          
  101.             pFile = fopen(sFile, "rt");
  102.             if(!pFile) set_fail_state("Error reading weapon menu items config file.");
  103.            
  104.             new Trie:tCheckWeaponName = TrieCreate();
  105.             new Trie:tCheckAddedItems = TrieCreate()
  106.            
  107.             for(new i = 0; i< sizeof(g_szWeaponNames); i++)
  108.                 TrieSetCell(tCheckWeaponName, g_szWeaponNames[i], 1);
  109.            
  110.             new bSection, menudata[weapinfo];
  111.            
  112.             while(!feof(pFile)) {
  113.                 fgets(pFile, sBuffer, charsmax(sBuffer)); trim(sBuffer);
  114.                 if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  115.                
  116.                 if(sBuffer[0] == '[') {
  117.                     if(equali(sBuffer, "[weapons]")) bSection = 1;
  118.                     else if(equali(sBuffer, "[pistols]")) bSection = 2;
  119.                     else bSection = 0;
  120.                    
  121.                     continue;
  122.                 }
  123.          
  124.                 if(parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]))) {
  125.                     format(sData[0], charsmax(sData[]), "weapon_%s", sData[0]);
  126.                     strtolower(sData[0]);
  127.                    
  128.                     if(!sData[0][0] || !TrieKeyExists(tCheckWeaponName, sData[0])) {
  129.                         server_print("WARNING: Invalid weapon name ^"%s^" will be skipped!", sData[0]);
  130.                         continue;
  131.                     }
  132.                     if(TrieKeyExists(tCheckAddedItems, sData[0])) {
  133.                         server_print("WARNING: Item ^"%s^" is already added!", sData[0]);
  134.                         continue;
  135.                     }
  136.                    
  137.                     copy(menudata[weap_name], charsmax(menudata[weap_name]), sData[0]);
  138.                     menudata[bpammo] = str_to_num(sData[1]);
  139.                     TrieSetCell(tCheckAddedItems, sData[0], 1);
  140.                    
  141.                     if(bSection == 1) {
  142.                         ArrayPushArray(g_Primary_MenuItems, menudata);
  143.                         g_iPrim_TotalItems++
  144.                     }
  145.                     else if(bSection == 2) {
  146.                         ArrayPushArray(g_Secondary_MenuItems, menudata);
  147.                         g_iSec_TotalItems++
  148.                     }
  149.                 }
  150.             }
  151.            
  152.             fclose(pFile);
  153.             TrieDestroy(tCheckWeaponName);
  154.             TrieDestroy(tCheckAddedItems);
  155.            
  156.             if(!g_iPrim_TotalItems || !g_iSec_TotalItems) set_fail_state("Error! The menu doesn't contain any weapons.");
  157.            
  158.             build_menu();
  159.         }
  160.          
  161.         build_menu() {
  162.             g_iPrim_EquipMenuID = menu_create(PLUGIN, "Prim_WeaponMenuHandler")
  163.             g_iSec_EquipMenuID = menu_create(PLUGIN, "Sec_WeaponMenuHandler")
  164.             // menu_setprop(g_iPrim_EquipMenuID, MPROP_NUMBER_COLOR, "\r")
  165.          
  166.             new szMenuText[64], menudata[weapinfo], szNum[3], i;
  167.            
  168.             for(i = 0; i < g_iPrim_TotalItems; i++) {
  169.                 ArrayGetArray(g_Primary_MenuItems, i, menudata)
  170.                 strtoupper(menudata[weap_name]);
  171.                 formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  172.                 num_to_str(i, szNum, charsmax(szNum))
  173.                 menu_additem(g_iPrim_EquipMenuID, szMenuText, szNum, 0)
  174.             }
  175.            
  176.             for(i = 0; i < g_iSec_TotalItems; i++) {
  177.                 ArrayGetArray(g_Secondary_MenuItems, i, menudata)
  178.                 strtoupper(menudata[weap_name]);
  179.                 formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  180.                 num_to_str(i, szNum, charsmax(szNum))
  181.                 menu_additem(g_iSec_EquipMenuID, szMenuText, szNum, 0)
  182.             }
  183.            
  184.             menu_setprop(g_iPrim_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  185.             menu_setprop(g_iSec_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  186.             formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_BACK");
  187.             menu_setprop(g_iPrim_EquipMenuID, MPROP_BACKNAME, szMenuText);
  188.             menu_setprop(g_iSec_EquipMenuID, MPROP_BACKNAME, szMenuText);
  189.             formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_NEXT");
  190.             menu_setprop(g_iPrim_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  191.             menu_setprop(g_iSec_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  192.             formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_EXIT");
  193.             menu_setprop(g_iPrim_EquipMenuID, MPROP_EXITNAME, szMenuText);
  194.             menu_setprop(g_iSec_EquipMenuID, MPROP_EXITNAME, szMenuText);
  195.         }
  196.          
  197.         public Prim_WeaponMenuHandler(id, iMenu, iItem) {
  198.             if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  199.          
  200.             new szNum[3], iAccess, cb;
  201.             menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  202.          
  203.             new iItemIndex = str_to_num(szNum);
  204.             new menudata[weapinfo];
  205.            
  206.             ArrayGetArray(g_Primary_MenuItems, iItemIndex, menudata);
  207.            
  208.             if(equal(menudata[weap_name], "weapon_awp")) {
  209.                 if(!g_AllowAWP) {
  210.                     client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_ALLOWFROM", g_AWPCvarHook[MinPlayers], g_AWPCvarHook[MinPlayers]);
  211.                     weapmenu(id);
  212.                     return PLUGIN_HANDLED;
  213.                 }
  214.                 else if(g_AWPCvarHook[MaxAwp]) {
  215.                     switch(get_member(id, m_iTeam)) {
  216.                         case TEAM_TERRORIST: {
  217.                             if(g_Awps[TE] < g_AWPCvarHook[MaxAwp]) g_Awps[TE]++;
  218.                             else {
  219.                                 client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  220.                                 weapmenu(id);
  221.                                 return PLUGIN_HANDLED;
  222.                             }
  223.                         }
  224.                         case TEAM_CT: {
  225.                             if(g_Awps[CT] < g_AWPCvarHook[MaxAwp]) g_Awps[CT]++;
  226.                             else {
  227.                                 client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  228.                                 weapmenu(id);
  229.                                 return PLUGIN_HANDLED;
  230.                             }
  231.                         }
  232.                     }
  233.                 }
  234.             }
  235.            
  236.             if(get_pcvar_num(g_Cvars[PistolMenu]) == 1) {
  237.                 menu_display(id, g_iSec_EquipMenuID, 0);
  238.             }
  239.             else {
  240.                 rg_give_item(id, "weapon_deagle", GT_REPLACE);
  241.                 rg_set_user_bpammo(id, WEAPON_DEAGLE, 35);
  242.             }
  243.            
  244.             add_weapon(id, menudata[weap_name], menudata[bpammo]);
  245.             rg_set_user_armor(id, 100, ARMOR_VESTHELM);
  246.             give_grenades(id);
  247.             strtoupper(menudata[weap_name]);
  248.             client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_CHOOSED", menudata[weap_name][7]);
  249.             g_Used[id] = true;
  250.          
  251.             return PLUGIN_HANDLED;
  252.         }
  253.          
  254.         stock add_weapon(id, const weapname[], bp_ammo) {
  255.             rg_give_item(id, weapname, GT_REPLACE);
  256.             new weaponid = rg_get_weapon_info(weapname, WI_ID);
  257.             rg_set_user_bpammo(id, WeaponIdType:weaponid, bp_ammo);
  258.         }
  259.          
  260.         public Sec_WeaponMenuHandler(id, iMenu, iItem) {
  261.             if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  262.          
  263.             new szNum[3], iAccess, cb;
  264.             menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  265.          
  266.             new iItemIndex = str_to_num(szNum);
  267.             new menudata[weapinfo];
  268.            
  269.             ArrayGetArray(g_Secondary_MenuItems, iItemIndex, menudata);
  270.            
  271.             add_weapon(id, menudata[weap_name], menudata[bpammo]);
  272.            
  273.             return PLUGIN_HANDLED;
  274.         }
  275.          
  276.         public Event_NewRound() {
  277.             arrayset(g_Used, false, sizeof(g_Used));
  278.             arrayset(g_Awps, 0, sizeof(g_Awps));
  279.             g_AWPCvarHook[MinPlayers] = get_pcvar_num(g_Cvars[AwpMinPlayers]);
  280.             g_AllowAWP = (get_member_game(m_iNumTerrorist) >= g_AWPCvarHook[MinPlayers] && get_member_game(m_iNumCT) >= g_AWPCvarHook[MinPlayers]) ? true : false;
  281.             g_Grenades[HE] = get_pcvar_num(g_Cvars[MaxHeg]);
  282.             g_Grenades[FLASH] = get_pcvar_num(g_Cvars[MaxFlash]);
  283.             g_Grenades[SMOKE] = get_pcvar_num(g_Cvars[MaxSmoke]);
  284.             g_AWPCvarHook[MaxAwp] = get_pcvar_num(g_Cvars[MaxAwps]);
  285.         }
  286.          
  287.         public weapmenu(id) {
  288.             if (!is_user_alive(id) || g_Used[id] || GunMenuOff) return;
  289.            
  290.             menu_display(id, g_iPrim_EquipMenuID, 0);
  291.         }
  292.          
  293.         give_grenades(id) {
  294.             if(g_Grenades[HE])
  295.                 add_weapon(id, "weapon_hegrenade", g_Grenades[HE]);
  296.          
  297.             if(g_Grenades[FLASH])
  298.                 add_weapon(id, "weapon_flashbang", g_Grenades[FLASH]);
  299.          
  300.             if(g_Grenades[SMOKE])
  301.                 add_weapon(id, "weapon_smokegrenade", g_Grenades[SMOKE]);
  302.         }
  303.          
  304.         public Event_ResetHUD(id) {
  305.             set_member(id, m_iClientHideHUD, 0)
  306.             set_member(id, m_iHideHUD, HUD_HIDE_MONEY)
  307.         }
  308.          
  309.         public Event_HideWeapon(id) {
  310.             // for compatibility with other plugins using that message; ZP for example
  311.             new iFlags = read_data(1)
  312.             if(~iFlags & HUD_HIDE_MONEY) {
  313.                 set_member(id, m_iClientHideHUD, 0)
  314.                 set_member(id, m_iHideHUD, iFlags|HUD_HIDE_MONEY)
  315.             }
  316.         }
  317.          
  318.         public plugin_end() {
  319.             ArrayDestroy(g_Primary_MenuItems);
  320.             ArrayDestroy(g_Secondary_MenuItems);
  321.         }
  322. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  323. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  324. */


Szia! Cseréld le a teljes give_grenades funkciót a kódban, erre, és működni fog:

  1. give_grenades(id) {
  2.     // HE gránátok adása
  3.     for (new i = 0; i < g_Grenades[HE]; i++) {
  4.         rg_give_item(id, "weapon_hegrenade");
  5.     }
  6.    
  7.     // Vakítógránátok adása
  8.     for (new i = 0; i < g_Grenades[FLASH]; i++) {
  9.         rg_give_item(id, "weapon_flashbang");
  10.     }
  11.    
  12.     // Füstgránátok adása
  13.     for (new i = 0; i < g_Grenades[SMOKE]; i++) {
  14.         rg_give_item(id, "weapon_smokegrenade");
  15.     }
  16. }

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Tegnap, 09:36 
Offline
Beavatott
Avatar

Csatlakozott:2018.12.09. 10:07
Hozzászólások:94
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 8 alkalommal
Próbáld.
  1. #include <amxmodx>
  2. #include <reapi>
  3.  
  4. new const PLUGIN[] = ".:[Dead~Rising]:. Fegyvermenü";
  5. new const VERSION[] = "1.4";
  6. new const AUTHOR[] = "mforce";
  7.  
  8. new const Maps[][] = {    
  9.  "aim_ak-colt_pool",
  10.  "fy_snow4",
  11.  "awp_cold2",
  12.  "aim_crazyjump_2015",
  13.  "aim_ak-colt3",
  14.  "fy_snow2006"
  15. }
  16.  
  17. new const PREFIX[] = "^4.:[^1Dead~Rising^4]:.";
  18.  
  19. #if AMXX_VERSION_NUM < 183
  20. #include <colorchat>
  21. const MAX_PLAYERS = 32;
  22. #endif
  23. const HUD_HIDE_MONEY = 1<<5;
  24.  
  25. new Array:g_Primary_MenuItems, Array:g_Secondary_MenuItems;
  26. new g_iPrim_TotalItems, g_iSec_TotalItems;
  27. new g_iPrim_EquipMenuID, g_iSec_EquipMenuID;
  28. enum _:weapinfo {weap_name[32], bpammo};
  29. enum _:PCVARS {AwpMinPlayers, MaxAwps, PistolMenu, MaxHeg, MaxFlash, MaxSmoke}
  30. enum _:TEAMS {TE, CT};
  31. enum _:MAXGRENADES {HE, FLASH, SMOKE};
  32. enum _:AWPCVARS {MinPlayers, MaxAwp};
  33. new g_Cvars[PCVARS], bool:g_AllowAWP, g_Awps[TEAMS], bool:g_Used[MAX_PLAYERS+1], g_Grenades[MAXGRENADES], g_AWPCvarHook[AWPCVARS];
  34. new GunMenuOff;
  35.  
  36. new const g_szWeaponNames[CSW_P90+1][] = {
  37.     "","weapon_p228","weapon_shield","weapon_scout","weapon_hegrenade","weapon_xm1014","weapon_c4",
  38.     "weapon_mac10","weapon_aug","weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
  39.     "weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp",
  40.     "weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1",
  41.     "weapon_flashbang","weapon_deagle","weapon_sg552","weapon_ak47","weapon_knife","weapon_p90"
  42. }
  43.  
  44. public plugin_init() {
  45.     register_plugin(PLUGIN, VERSION, AUTHOR);
  46.     register_dictionary("extended_weapon_menu.txt");
  47.     g_Cvars[AwpMinPlayers] = register_cvar("ewm_awpminplayers", "3")
  48.     g_Cvars[MaxAwps] = register_cvar("ewm_maxawp", "3")
  49.     g_Cvars[PistolMenu] = register_cvar("ewm_pistolmenu", "1")
  50.     g_Cvars[MaxHeg] = register_cvar("ewm_maxheg", "1")
  51.     g_Cvars[MaxFlash] = register_cvar("ewm_maxflash", "2")
  52.     g_Cvars[MaxSmoke] = register_cvar("ewm_maxsmoke", "1")
  53.     RegisterHookChain(RG_CBasePlayer_Spawn, "weapmenu", true);
  54.     register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  55.    
  56.     new const commands[][] = {"say /gun", "say /guns", "say /weap", "say_team /gun", "say_team /guns", "say_team /weap"};
  57.     for(new i; i < sizeof(commands); i++) {
  58.         register_clcmd(commands[i], "weapmenu");
  59.     }
  60.    
  61.     new Map[32];
  62.     get_mapname(Map, charsmax(Map));
  63.  
  64.     for(new i; i < sizeof(Maps); i++){
  65.         if(equal(Map,Maps[i])){
  66.             GunMenuOff = 1;
  67.             break;
  68.         }
  69.     }
  70.    
  71.     set_member_game(m_bMapHasBuyZone, false);
  72.     register_event("ResetHUD", "Event_ResetHUD", "b")
  73.     register_event("HideWeapon", "Event_HideWeapon", "b")
  74.     set_msg_block(get_user_msgid("Money"), BLOCK_SET)
  75.    
  76.     g_Primary_MenuItems = ArrayCreate(weapinfo);
  77.     g_Secondary_MenuItems = ArrayCreate(weapinfo);
  78. }
  79.  
  80. public plugin_cfg() {
  81.     new sBuffer[256], sFile[128], sData[2][32], pFile;
  82.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  83.     add(sFile, charsmax(sFile), "/ewm_weapons.ini");
  84.  
  85.     pFile = fopen(sFile, "rt");
  86.     if(!pFile) set_fail_state("Error reading weapon menu items config file.");
  87.    
  88.     new Trie:tCheckWeaponName = TrieCreate();
  89.     new Trie:tCheckAddedItems = TrieCreate()
  90.    
  91.     for(new i = 0; i< sizeof(g_szWeaponNames); i++)
  92.         TrieSetCell(tCheckWeaponName, g_szWeaponNames[i], 1);
  93.    
  94.     new bSection, menudata[weapinfo];
  95.    
  96.     while(!feof(pFile)) {
  97.         fgets(pFile, sBuffer, charsmax(sBuffer)); trim(sBuffer);
  98.         if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  99.        
  100.         if(sBuffer[0] == '[') {
  101.             if(equali(sBuffer, "[weapons]")) bSection = 1;
  102.             else if(equali(sBuffer, "[pistols]")) bSection = 2;
  103.             else bSection = 0;
  104.            
  105.             continue;
  106.         }
  107.  
  108.         if(parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]))) {
  109.             format(sData[0], charsmax(sData[]), "weapon_%s", sData[0]);
  110.             strtolower(sData[0]);
  111.            
  112.             if(!sData[0][0] || !TrieKeyExists(tCheckWeaponName, sData[0])) {
  113.                 server_print("WARNING: Invalid weapon name ^"%s^" will be skipped!", sData[0]);
  114.                 continue;
  115.             }
  116.             if(TrieKeyExists(tCheckAddedItems, sData[0])) {
  117.                 server_print("WARNING: Item ^"%s^" is already added!", sData[0]);
  118.                 continue;
  119.             }
  120.            
  121.             copy(menudata[weap_name], charsmax(menudata[weap_name]), sData[0]);
  122.             menudata[bpammo] = str_to_num(sData[1]);
  123.             TrieSetCell(tCheckAddedItems, sData[0], 1);
  124.            
  125.             if(bSection == 1) {
  126.                 ArrayPushArray(g_Primary_MenuItems, menudata);
  127.                 g_iPrim_TotalItems++
  128.             }
  129.             else if(bSection == 2) {
  130.                 ArrayPushArray(g_Secondary_MenuItems, menudata);
  131.                 g_iSec_TotalItems++
  132.             }
  133.         }
  134.     }
  135.    
  136.     fclose(pFile);
  137.     TrieDestroy(tCheckWeaponName);
  138.     TrieDestroy(tCheckAddedItems);
  139.    
  140.     if(!g_iPrim_TotalItems || !g_iSec_TotalItems) set_fail_state("Error! The menu doesn't contain any weapons.");
  141.    
  142.     build_menu();
  143. }
  144.  
  145. build_menu() {
  146.     g_iPrim_EquipMenuID = menu_create(PLUGIN, "Prim_WeaponMenuHandler")
  147.     g_iSec_EquipMenuID = menu_create(PLUGIN, "Sec_WeaponMenuHandler")
  148.  
  149.     new szMenuText[64], menudata[weapinfo], szNum[3], i;
  150.    
  151.     for(i = 0; i < g_iPrim_TotalItems; i++) {
  152.         ArrayGetArray(g_Primary_MenuItems, i, menudata)
  153.         strtoupper(menudata[weap_name]);
  154.         formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  155.         num_to_str(i, szNum, charsmax(szNum))
  156.         menu_additem(g_iPrim_EquipMenuID, szMenuText, szNum, 0)
  157.     }
  158.    
  159.     for(i = 0; i < g_iSec_TotalItems; i++) {
  160.         ArrayGetArray(g_Secondary_MenuItems, i, menudata)
  161.         strtoupper(menudata[weap_name]);
  162.         formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  163.         num_to_str(i, szNum, charsmax(szNum))
  164.         menu_additem(g_iSec_EquipMenuID, szMenuText, szNum, 0)
  165.     }
  166.    
  167.     menu_setprop(g_iPrim_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  168.     menu_setprop(g_iSec_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  169.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_BACK");
  170.     menu_setprop(g_iPrim_EquipMenuID, MPROP_BACKNAME, szMenuText);
  171.     menu_setprop(g_iSec_EquipMenuID, MPROP_BACKNAME, szMenuText);
  172.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_NEXT");
  173.     menu_setprop(g_iPrim_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  174.     menu_setprop(g_iSec_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  175.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_EXIT");
  176.     menu_setprop(g_iPrim_EquipMenuID, MPROP_EXITNAME, szMenuText);
  177.     menu_setprop(g_iSec_EquipMenuID, MPROP_EXITNAME, szMenuText);
  178. }
  179.  
  180. public Prim_WeaponMenuHandler(id, iMenu, iItem) {
  181.     if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  182.  
  183.     new szNum[3], iAccess, cb;
  184.     menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  185.  
  186.     new iItemIndex = str_to_num(szNum);
  187.     new menudata[weapinfo];
  188.    
  189.     ArrayGetArray(g_Primary_MenuItems, iItemIndex, menudata);
  190.    
  191.     if(equal(menudata[weap_name], "weapon_awp")) {
  192.         if(!g_AllowAWP) {
  193.             client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_ALLOWFROM", g_AWPCvarHook[MinPlayers], g_AWPCvarHook[MinPlayers]);
  194.             weapmenu(id);
  195.             return PLUGIN_HANDLED;
  196.         }
  197.         else if(g_AWPCvarHook[MaxAwp]) {
  198.             switch(get_member(id, m_iTeam)) {
  199.                 case TEAM_TERRORIST: {
  200.                     if(g_Awps[TE] < g_AWPCvarHook[MaxAwp]) g_Awps[TE]++;
  201.                     else {
  202.                         client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  203.                         weapmenu(id);
  204.                         return PLUGIN_HANDLED;
  205.                     }
  206.                 }
  207.                 case TEAM_CT: {
  208.                     if(g_Awps[CT] < g_AWPCvarHook[MaxAwp]) g_Awps[CT]++;
  209.                     else {
  210.                         client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  211.                         weapmenu(id);
  212.                         return PLUGIN_HANDLED;
  213.                     }
  214.                 }
  215.             }
  216.         }
  217.     }
  218.    
  219.     if(get_pcvar_num(g_Cvars[PistolMenu]) == 1) {
  220.         menu_display(id, g_iSec_EquipMenuID, 0);
  221.     }
  222.     else {
  223.         rg_give_item(id, "weapon_deagle", GT_REPLACE);
  224.         rg_set_user_bpammo(id, WEAPON_DEAGLE, 35);
  225.     }
  226.    
  227.     add_weapon(id, menudata[weap_name], menudata[bpammo]);
  228.     rg_set_user_armor(id, 100, ARMOR_VESTHELM);
  229.     give_grenades(id);
  230.     strtoupper(menudata[weap_name]);
  231.     client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_CHOOSED", menudata[weap_name][7]);
  232.     g_Used[id] = true;
  233.  
  234.     return PLUGIN_HANDLED;
  235. }
  236.  
  237. stock add_weapon(id, const weapname[], bp_ammo) {
  238.     rg_give_item(id, weapname, GT_REPLACE);
  239.     new weaponid = rg_get_weapon_info(weapname, WI_ID);
  240.     rg_set_user_bpammo(id, WeaponIdType:weaponid, bp_ammo);
  241. }
  242.  
  243. public Sec_WeaponMenuHandler(id, iMenu, iItem) {
  244.     if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  245.  
  246.     new szNum[3], iAccess, cb;
  247.     menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  248.  
  249.     new iItemIndex = str_to_num(szNum);
  250.     new menudata[weapinfo];
  251.    
  252.     ArrayGetArray(g_Secondary_MenuItems, iItemIndex, menudata);
  253.    
  254.     add_weapon(id, menudata[weap_name], menudata[bpammo]);
  255.    
  256.     return PLUGIN_HANDLED;
  257. }
  258.  
  259. public Event_NewRound() {
  260.     arrayset(g_Used, false, sizeof(g_Used));
  261.     arrayset(g_Awps, 0, sizeof(g_Awps));
  262.     g_AWPCvarHook[MinPlayers] = get_pcvar_num(g_Cvars[AwpMinPlayers]);
  263.     g_AllowAWP = (get_member_game(m_iNumTerrorist) >= g_AWPCvarHook[MinPlayers] && get_member_game(m_iNumCT) >= g_AWPCvarHook[MinPlayers]) ? true : false;
  264.     g_Grenades[HE] = get_pcvar_num(g_Cvars[MaxHeg]);
  265.     g_Grenades[FLASH] = get_pcvar_num(g_Cvars[MaxFlash]);
  266.     g_Grenades[SMOKE] = get_pcvar_num(g_Cvars[MaxSmoke]);
  267.     g_AWPCvarHook[MaxAwp] = get_pcvar_num(g_Cvars[MaxAwps]);
  268. }
  269.  
  270. public weapmenu(id) {
  271.     if (!is_user_alive(id) || g_Used[id] || GunMenuOff) return;
  272.    
  273.     menu_display(id, g_iPrim_EquipMenuID, 0);
  274. }
  275.  
  276. // --- JAVÍTOTT RÉSZ ---
  277. give_grenades(id) {
  278.     // HE
  279.     for(new i=0; i < g_Grenades[HE]; i++) {
  280.         rg_give_item(id, "weapon_hegrenade");
  281.     }
  282.  
  283.     // Flash
  284.     for(new i=0; i < g_Grenades[FLASH]; i++) {
  285.         rg_give_item(id, "weapon_flashbang");
  286.     }
  287.  
  288.     // Smoke
  289.     for(new i=0; i < g_Grenades[SMOKE]; i++) {
  290.         rg_give_item(id, "weapon_smokegrenade");
  291.     }
  292. }
  293. // ---------------------
  294.  
  295. public Event_ResetHUD(id) {
  296.     set_member(id, m_iClientHideHUD, 0)
  297.     set_member(id, m_iHideHUD, HUD_HIDE_MONEY)
  298. }
  299.  
  300. public Event_HideWeapon(id) {
  301.     new iFlags = read_data(1)
  302.     if(~iFlags & HUD_HIDE_MONEY) {
  303.         set_member(id, m_iClientHideHUD, 0)
  304.         set_member(id, m_iHideHUD, iFlags|HUD_HIDE_MONEY)
  305.     }
  306. }
  307.  
  308. public plugin_end() {
  309.     ArrayDestroy(g_Primary_MenuItems);
  310.     ArrayDestroy(g_Secondary_MenuItems);
  311. }

_________________
[steam]steamcommunity.com/id/XaHuReW-NEW/[/steam]

Ők köszönték meg ✪ BeNiCh' nek ezt a hozzászólást: saxxo (Tegnap, 14:57)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Tegnap, 14:57 
Offline
Jómunkásember

Csatlakozott:2020.06.14. 17:59
Hozzászólások:422
Megköszönt másnak: 77 alkalommal
Megköszönték neki: 10 alkalommal
✪ BeNiCh' írta:
Próbáld.
  1. #include <amxmodx>
  2. #include <reapi>
  3.  
  4. new const PLUGIN[] = ".:[Dead~Rising]:. Fegyvermenü";
  5. new const VERSION[] = "1.4";
  6. new const AUTHOR[] = "mforce";
  7.  
  8. new const Maps[][] = {    
  9.  "aim_ak-colt_pool",
  10.  "fy_snow4",
  11.  "awp_cold2",
  12.  "aim_crazyjump_2015",
  13.  "aim_ak-colt3",
  14.  "fy_snow2006"
  15. }
  16.  
  17. new const PREFIX[] = "^4.:[^1Dead~Rising^4]:.";
  18.  
  19. #if AMXX_VERSION_NUM < 183
  20. #include <colorchat>
  21. const MAX_PLAYERS = 32;
  22. #endif
  23. const HUD_HIDE_MONEY = 1<<5;
  24.  
  25. new Array:g_Primary_MenuItems, Array:g_Secondary_MenuItems;
  26. new g_iPrim_TotalItems, g_iSec_TotalItems;
  27. new g_iPrim_EquipMenuID, g_iSec_EquipMenuID;
  28. enum _:weapinfo {weap_name[32], bpammo};
  29. enum _:PCVARS {AwpMinPlayers, MaxAwps, PistolMenu, MaxHeg, MaxFlash, MaxSmoke}
  30. enum _:TEAMS {TE, CT};
  31. enum _:MAXGRENADES {HE, FLASH, SMOKE};
  32. enum _:AWPCVARS {MinPlayers, MaxAwp};
  33. new g_Cvars[PCVARS], bool:g_AllowAWP, g_Awps[TEAMS], bool:g_Used[MAX_PLAYERS+1], g_Grenades[MAXGRENADES], g_AWPCvarHook[AWPCVARS];
  34. new GunMenuOff;
  35.  
  36. new const g_szWeaponNames[CSW_P90+1][] = {
  37.     "","weapon_p228","weapon_shield","weapon_scout","weapon_hegrenade","weapon_xm1014","weapon_c4",
  38.     "weapon_mac10","weapon_aug","weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
  39.     "weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp",
  40.     "weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1",
  41.     "weapon_flashbang","weapon_deagle","weapon_sg552","weapon_ak47","weapon_knife","weapon_p90"
  42. }
  43.  
  44. public plugin_init() {
  45.     register_plugin(PLUGIN, VERSION, AUTHOR);
  46.     register_dictionary("extended_weapon_menu.txt");
  47.     g_Cvars[AwpMinPlayers] = register_cvar("ewm_awpminplayers", "3")
  48.     g_Cvars[MaxAwps] = register_cvar("ewm_maxawp", "3")
  49.     g_Cvars[PistolMenu] = register_cvar("ewm_pistolmenu", "1")
  50.     g_Cvars[MaxHeg] = register_cvar("ewm_maxheg", "1")
  51.     g_Cvars[MaxFlash] = register_cvar("ewm_maxflash", "2")
  52.     g_Cvars[MaxSmoke] = register_cvar("ewm_maxsmoke", "1")
  53.     RegisterHookChain(RG_CBasePlayer_Spawn, "weapmenu", true);
  54.     register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  55.    
  56.     new const commands[][] = {"say /gun", "say /guns", "say /weap", "say_team /gun", "say_team /guns", "say_team /weap"};
  57.     for(new i; i < sizeof(commands); i++) {
  58.         register_clcmd(commands[i], "weapmenu");
  59.     }
  60.    
  61.     new Map[32];
  62.     get_mapname(Map, charsmax(Map));
  63.  
  64.     for(new i; i < sizeof(Maps); i++){
  65.         if(equal(Map,Maps[i])){
  66.             GunMenuOff = 1;
  67.             break;
  68.         }
  69.     }
  70.    
  71.     set_member_game(m_bMapHasBuyZone, false);
  72.     register_event("ResetHUD", "Event_ResetHUD", "b")
  73.     register_event("HideWeapon", "Event_HideWeapon", "b")
  74.     set_msg_block(get_user_msgid("Money"), BLOCK_SET)
  75.    
  76.     g_Primary_MenuItems = ArrayCreate(weapinfo);
  77.     g_Secondary_MenuItems = ArrayCreate(weapinfo);
  78. }
  79.  
  80. public plugin_cfg() {
  81.     new sBuffer[256], sFile[128], sData[2][32], pFile;
  82.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  83.     add(sFile, charsmax(sFile), "/ewm_weapons.ini");
  84.  
  85.     pFile = fopen(sFile, "rt");
  86.     if(!pFile) set_fail_state("Error reading weapon menu items config file.");
  87.    
  88.     new Trie:tCheckWeaponName = TrieCreate();
  89.     new Trie:tCheckAddedItems = TrieCreate()
  90.    
  91.     for(new i = 0; i< sizeof(g_szWeaponNames); i++)
  92.         TrieSetCell(tCheckWeaponName, g_szWeaponNames[i], 1);
  93.    
  94.     new bSection, menudata[weapinfo];
  95.    
  96.     while(!feof(pFile)) {
  97.         fgets(pFile, sBuffer, charsmax(sBuffer)); trim(sBuffer);
  98.         if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  99.        
  100.         if(sBuffer[0] == '[') {
  101.             if(equali(sBuffer, "[weapons]")) bSection = 1;
  102.             else if(equali(sBuffer, "[pistols]")) bSection = 2;
  103.             else bSection = 0;
  104.            
  105.             continue;
  106.         }
  107.  
  108.         if(parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]))) {
  109.             format(sData[0], charsmax(sData[]), "weapon_%s", sData[0]);
  110.             strtolower(sData[0]);
  111.            
  112.             if(!sData[0][0] || !TrieKeyExists(tCheckWeaponName, sData[0])) {
  113.                 server_print("WARNING: Invalid weapon name ^"%s^" will be skipped!", sData[0]);
  114.                 continue;
  115.             }
  116.             if(TrieKeyExists(tCheckAddedItems, sData[0])) {
  117.                 server_print("WARNING: Item ^"%s^" is already added!", sData[0]);
  118.                 continue;
  119.             }
  120.            
  121.             copy(menudata[weap_name], charsmax(menudata[weap_name]), sData[0]);
  122.             menudata[bpammo] = str_to_num(sData[1]);
  123.             TrieSetCell(tCheckAddedItems, sData[0], 1);
  124.            
  125.             if(bSection == 1) {
  126.                 ArrayPushArray(g_Primary_MenuItems, menudata);
  127.                 g_iPrim_TotalItems++
  128.             }
  129.             else if(bSection == 2) {
  130.                 ArrayPushArray(g_Secondary_MenuItems, menudata);
  131.                 g_iSec_TotalItems++
  132.             }
  133.         }
  134.     }
  135.    
  136.     fclose(pFile);
  137.     TrieDestroy(tCheckWeaponName);
  138.     TrieDestroy(tCheckAddedItems);
  139.    
  140.     if(!g_iPrim_TotalItems || !g_iSec_TotalItems) set_fail_state("Error! The menu doesn't contain any weapons.");
  141.    
  142.     build_menu();
  143. }
  144.  
  145. build_menu() {
  146.     g_iPrim_EquipMenuID = menu_create(PLUGIN, "Prim_WeaponMenuHandler")
  147.     g_iSec_EquipMenuID = menu_create(PLUGIN, "Sec_WeaponMenuHandler")
  148.  
  149.     new szMenuText[64], menudata[weapinfo], szNum[3], i;
  150.    
  151.     for(i = 0; i < g_iPrim_TotalItems; i++) {
  152.         ArrayGetArray(g_Primary_MenuItems, i, menudata)
  153.         strtoupper(menudata[weap_name]);
  154.         formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  155.         num_to_str(i, szNum, charsmax(szNum))
  156.         menu_additem(g_iPrim_EquipMenuID, szMenuText, szNum, 0)
  157.     }
  158.    
  159.     for(i = 0; i < g_iSec_TotalItems; i++) {
  160.         ArrayGetArray(g_Secondary_MenuItems, i, menudata)
  161.         strtoupper(menudata[weap_name]);
  162.         formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  163.         num_to_str(i, szNum, charsmax(szNum))
  164.         menu_additem(g_iSec_EquipMenuID, szMenuText, szNum, 0)
  165.     }
  166.    
  167.     menu_setprop(g_iPrim_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  168.     menu_setprop(g_iSec_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  169.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_BACK");
  170.     menu_setprop(g_iPrim_EquipMenuID, MPROP_BACKNAME, szMenuText);
  171.     menu_setprop(g_iSec_EquipMenuID, MPROP_BACKNAME, szMenuText);
  172.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_NEXT");
  173.     menu_setprop(g_iPrim_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  174.     menu_setprop(g_iSec_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  175.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_EXIT");
  176.     menu_setprop(g_iPrim_EquipMenuID, MPROP_EXITNAME, szMenuText);
  177.     menu_setprop(g_iSec_EquipMenuID, MPROP_EXITNAME, szMenuText);
  178. }
  179.  
  180. public Prim_WeaponMenuHandler(id, iMenu, iItem) {
  181.     if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  182.  
  183.     new szNum[3], iAccess, cb;
  184.     menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  185.  
  186.     new iItemIndex = str_to_num(szNum);
  187.     new menudata[weapinfo];
  188.    
  189.     ArrayGetArray(g_Primary_MenuItems, iItemIndex, menudata);
  190.    
  191.     if(equal(menudata[weap_name], "weapon_awp")) {
  192.         if(!g_AllowAWP) {
  193.             client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_ALLOWFROM", g_AWPCvarHook[MinPlayers], g_AWPCvarHook[MinPlayers]);
  194.             weapmenu(id);
  195.             return PLUGIN_HANDLED;
  196.         }
  197.         else if(g_AWPCvarHook[MaxAwp]) {
  198.             switch(get_member(id, m_iTeam)) {
  199.                 case TEAM_TERRORIST: {
  200.                     if(g_Awps[TE] < g_AWPCvarHook[MaxAwp]) g_Awps[TE]++;
  201.                     else {
  202.                         client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  203.                         weapmenu(id);
  204.                         return PLUGIN_HANDLED;
  205.                     }
  206.                 }
  207.                 case TEAM_CT: {
  208.                     if(g_Awps[CT] < g_AWPCvarHook[MaxAwp]) g_Awps[CT]++;
  209.                     else {
  210.                         client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  211.                         weapmenu(id);
  212.                         return PLUGIN_HANDLED;
  213.                     }
  214.                 }
  215.             }
  216.         }
  217.     }
  218.    
  219.     if(get_pcvar_num(g_Cvars[PistolMenu]) == 1) {
  220.         menu_display(id, g_iSec_EquipMenuID, 0);
  221.     }
  222.     else {
  223.         rg_give_item(id, "weapon_deagle", GT_REPLACE);
  224.         rg_set_user_bpammo(id, WEAPON_DEAGLE, 35);
  225.     }
  226.    
  227.     add_weapon(id, menudata[weap_name], menudata[bpammo]);
  228.     rg_set_user_armor(id, 100, ARMOR_VESTHELM);
  229.     give_grenades(id);
  230.     strtoupper(menudata[weap_name]);
  231.     client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_CHOOSED", menudata[weap_name][7]);
  232.     g_Used[id] = true;
  233.  
  234.     return PLUGIN_HANDLED;
  235. }
  236.  
  237. stock add_weapon(id, const weapname[], bp_ammo) {
  238.     rg_give_item(id, weapname, GT_REPLACE);
  239.     new weaponid = rg_get_weapon_info(weapname, WI_ID);
  240.     rg_set_user_bpammo(id, WeaponIdType:weaponid, bp_ammo);
  241. }
  242.  
  243. public Sec_WeaponMenuHandler(id, iMenu, iItem) {
  244.     if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  245.  
  246.     new szNum[3], iAccess, cb;
  247.     menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  248.  
  249.     new iItemIndex = str_to_num(szNum);
  250.     new menudata[weapinfo];
  251.    
  252.     ArrayGetArray(g_Secondary_MenuItems, iItemIndex, menudata);
  253.    
  254.     add_weapon(id, menudata[weap_name], menudata[bpammo]);
  255.    
  256.     return PLUGIN_HANDLED;
  257. }
  258.  
  259. public Event_NewRound() {
  260.     arrayset(g_Used, false, sizeof(g_Used));
  261.     arrayset(g_Awps, 0, sizeof(g_Awps));
  262.     g_AWPCvarHook[MinPlayers] = get_pcvar_num(g_Cvars[AwpMinPlayers]);
  263.     g_AllowAWP = (get_member_game(m_iNumTerrorist) >= g_AWPCvarHook[MinPlayers] && get_member_game(m_iNumCT) >= g_AWPCvarHook[MinPlayers]) ? true : false;
  264.     g_Grenades[HE] = get_pcvar_num(g_Cvars[MaxHeg]);
  265.     g_Grenades[FLASH] = get_pcvar_num(g_Cvars[MaxFlash]);
  266.     g_Grenades[SMOKE] = get_pcvar_num(g_Cvars[MaxSmoke]);
  267.     g_AWPCvarHook[MaxAwp] = get_pcvar_num(g_Cvars[MaxAwps]);
  268. }
  269.  
  270. public weapmenu(id) {
  271.     if (!is_user_alive(id) || g_Used[id] || GunMenuOff) return;
  272.    
  273.     menu_display(id, g_iPrim_EquipMenuID, 0);
  274. }
  275.  
  276. // --- JAVÍTOTT RÉSZ ---
  277. give_grenades(id) {
  278.     // HE
  279.     for(new i=0; i < g_Grenades[HE]; i++) {
  280.         rg_give_item(id, "weapon_hegrenade");
  281.     }
  282.  
  283.     // Flash
  284.     for(new i=0; i < g_Grenades[FLASH]; i++) {
  285.         rg_give_item(id, "weapon_flashbang");
  286.     }
  287.  
  288.     // Smoke
  289.     for(new i=0; i < g_Grenades[SMOKE]; i++) {
  290.         rg_give_item(id, "weapon_smokegrenade");
  291.     }
  292. }
  293. // ---------------------
  294.  
  295. public Event_ResetHUD(id) {
  296.     set_member(id, m_iClientHideHUD, 0)
  297.     set_member(id, m_iHideHUD, HUD_HIDE_MONEY)
  298. }
  299.  
  300. public Event_HideWeapon(id) {
  301.     new iFlags = read_data(1)
  302.     if(~iFlags & HUD_HIDE_MONEY) {
  303.         set_member(id, m_iClientHideHUD, 0)
  304.         set_member(id, m_iHideHUD, iFlags|HUD_HIDE_MONEY)
  305.     }
  306. }
  307.  
  308. public plugin_end() {
  309.     ArrayDestroy(g_Primary_MenuItems);
  310.     ArrayDestroy(g_Secondary_MenuItems);
  311. }


Szia!
Esetleg ki tudod nekem bővíteni annyival hogy inifájlból olvassa be hogy melyik pályán ne fusson a fegyvermenü?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Tegnap, 15:49 
Offline
Beavatott
Avatar

Csatlakozott:2018.12.09. 10:07
Hozzászólások:94
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 8 alkalommal
Hozlétre ewm_weapons.ini fálj és oda ird be a tiltot mapokat.
  1. #include <amxmodx>
  2. #include <reapi>
  3.  
  4. new const PLUGIN[] = ".:[Dead~Rising]:. Fegyvermenü";
  5. new const VERSION[] = "1.4";
  6. new const AUTHOR[] = "mforce";
  7.  
  8. new const PREFIX[] = "^4.:[^1Dead~Rising^4]:.";
  9.  
  10. #if AMXX_VERSION_NUM < 183
  11. #include <colorchat>
  12. const MAX_PLAYERS = 32;
  13. #endif
  14. const HUD_HIDE_MONEY = 1<<5;
  15.  
  16. new Array:g_Primary_MenuItems, Array:g_Secondary_MenuItems;
  17. new g_iPrim_TotalItems, g_iSec_TotalItems;
  18. new g_iPrim_EquipMenuID, g_iSec_EquipMenuID;
  19. enum _:weapinfo {weap_name[32], bpammo};
  20. enum _:PCVARS {AwpMinPlayers, MaxAwps, PistolMenu, MaxHeg, MaxFlash, MaxSmoke}
  21. enum _:TEAMS {TE, CT};
  22. enum _:MAXGRENADES {HE, FLASH, SMOKE};
  23. enum _:AWPCVARS {MinPlayers, MaxAwp};
  24. new g_Cvars[PCVARS], bool:g_AllowAWP, g_Awps[TEAMS], bool:g_Used[MAX_PLAYERS+1], g_Grenades[MAXGRENADES], g_AWPCvarHook[AWPCVARS];
  25.  
  26. new g_DisabledMaps;
  27. new GunMenuOff;
  28.  
  29. new const g_szWeaponNames[CSW_P90+1][] = {
  30.     "","weapon_p228","weapon_shield","weapon_scout","weapon_hegrenade","weapon_xm1014","weapon_c4",
  31.     "weapon_mac10","weapon_aug","weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
  32.     "weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp",
  33.     "weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1",
  34.     "weapon_flashbang","weapon_deagle","weapon_sg552","weapon_ak47","weapon_knife","weapon_p90"
  35. }
  36.  
  37. public plugin_init() {
  38.     register_plugin(PLUGIN, VERSION, AUTHOR);
  39.     register_dictionary("extended_weapon_menu.txt");
  40.     g_Cvars[AwpMinPlayers] = register_cvar("ewm_awpminplayers", "3");
  41.     g_Cvars[MaxAwps] = register_cvar("ewm_maxawp", "3");
  42.     g_Cvars[PistolMenu] = register_cvar("ewm_pistolmenu", "1");
  43.     g_Cvars[MaxHeg] = register_cvar("ewm_maxheg", "1");
  44.     g_Cvars[MaxFlash] = register_cvar("ewm_maxflash", "2");
  45.     g_Cvars[MaxSmoke] = register_cvar("ewm_maxsmoke", "1");
  46.     RegisterHookChain(RG_CBasePlayer_Spawn, "weapmenu", true);
  47.     register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  48.  
  49.     new const commands[][] = {"say /gun", "say /guns", "say /weap", "say_team /gun", "say_team /guns", "say_team /weap"};
  50.     for(new i; i < sizeof(commands); i++) {
  51.         register_clcmd(commands[i], "weapmenu");
  52.     }
  53.  
  54.     new Map[32];
  55.     get_mapname(Map, charsmax(Map));
  56.     strtolower(Map);
  57.  
  58.     // Tiltott pályák ellenőrzése
  59.     new szMapName[32];
  60.     for(new i = 0; i < ArraySize(g_DisabledMaps); i++) {
  61.         ArrayGetString(g_DisabledMaps, i, szMapName, charsmax(szMapName));
  62.         if(equal(Map, szMapName)) {
  63.             GunMenuOff = 1;
  64.             break;
  65.         }
  66.     }
  67.  
  68.     set_member_game(m_bMapHasBuyZone, false);
  69.     register_event("ResetHUD", "Event_ResetHUD", "b");
  70.     register_event("HideWeapon", "Event_HideWeapon", "b");
  71.     set_msg_block(get_user_msgid("Money"), BLOCK_SET);
  72.  
  73.     g_Primary_MenuItems = ArrayCreate(weapinfo);
  74.     g_Secondary_MenuItems = ArrayCreate(weapinfo);
  75. }
  76.  
  77. public plugin_cfg() {
  78.     new sBuffer[256], sFile[128], sData[2][32], pFile;
  79.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  80.     add(sFile, charsmax(sFile), "/ewm_weapons.ini");
  81.  
  82.     pFile = fopen(sFile, "rt");
  83.     if(!pFile) set_fail_state("Error reading weapon menu items config file.");
  84.  
  85.     new Trie:tCheckWeaponName = TrieCreate();
  86.     new Trie:tCheckAddedItems = TrieCreate();
  87.  
  88.     for(new i = 0; i< sizeof(g_szWeaponNames); i++)
  89.         TrieSetCell(tCheckWeaponName, g_szWeaponNames[i], 1);
  90.  
  91.     new bSection, menudata[weapinfo];
  92.  
  93.     while(!feof(pFile)) {
  94.         fgets(pFile, sBuffer, charsmax(sBuffer)); trim(sBuffer);
  95.         if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  96.  
  97.         if(sBuffer[0] == '[') {
  98.             if(equali(sBuffer, "[weapons]")) bSection = 1;
  99.             else if(equali(sBuffer, "[pistols]")) bSection = 2;
  100.             else bSection = 0;
  101.  
  102.             continue;
  103.         }
  104.  
  105.         if(parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]))) {
  106.             format(sData[0], charsmax(sData[]), "weapon_%s", sData[0]);
  107.             strtolower(sData[0]);
  108.  
  109.             if(!sData[0][0] || !TrieKeyExists(tCheckWeaponName, sData[0])) {
  110.                 server_print("WARNING: Invalid weapon name ^"%s^" will be skipped!", sData[0]);
  111.                 continue;
  112.             }
  113.             if(TrieKeyExists(tCheckAddedItems, sData[0])) {
  114.                 server_print("WARNING: Item ^"%s^" is already added!", sData[0]);
  115.                 continue;
  116.             }
  117.  
  118.             copy(menudata[weap_name], charsmax(menudata[weap_name]), sData[0]);
  119.             menudata[bpammo] = str_to_num(sData[1]);
  120.             TrieSetCell(tCheckAddedItems, sData[0], 1);
  121.  
  122.             if(bSection == 1) {
  123.                 ArrayPushArray(g_Primary_MenuItems, menudata);
  124.                 g_iPrim_TotalItems++;
  125.             }
  126.             else if(bSection == 2) {
  127.                 ArrayPushArray(g_Secondary_MenuItems, menudata);
  128.                 g_iSec_TotalItems++;
  129.             }
  130.         }
  131.     }
  132.  
  133.     fclose(pFile);
  134.     TrieDestroy(tCheckWeaponName);
  135.     TrieDestroy(tCheckAddedItems);
  136.  
  137.     if(!g_iPrim_TotalItems || !g_iSec_TotalItems) set_fail_state("Error! The menu doesn't contain any weapons.");
  138.  
  139.     build_menu();
  140.  
  141.     // --- Tiltott pályák ini betöltése ---
  142.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  143.     add(sFile, charsmax(sFile), "/ewm_blockedmaps.ini");
  144.  
  145.     g_DisabledMaps = ArrayCreate(32);
  146.  
  147.     pFile = fopen(sFile, "rt");
  148.     if(pFile) {
  149.         while(!feof(pFile)) {
  150.             fgets(pFile, sBuffer, charsmax(sBuffer));
  151.             trim(sBuffer);
  152.             if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  153.             strtolower(sBuffer);
  154.             ArrayPushString(g_DisabledMaps, sBuffer);
  155.         }
  156.         fclose(pFile);
  157.     } else {
  158.         server_print("[EWM] Figyelem: Nem találtam a %s fájlt!", sFile);
  159.     }
  160. }

_________________
[steam]steamcommunity.com/id/XaHuReW-NEW/[/steam]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Tegnap, 17:50 
Offline
Jómunkásember

Csatlakozott:2020.06.14. 17:59
Hozzászólások:422
Megköszönt másnak: 77 alkalommal
Megköszönték neki: 10 alkalommal
✪ BeNiCh' írta:
Hozlétre ewm_weapons.ini fálj és oda ird be a tiltot mapokat.
  1. #include <amxmodx>
  2. #include <reapi>
  3.  
  4. new const PLUGIN[] = ".:[Dead~Rising]:. Fegyvermenü";
  5. new const VERSION[] = "1.4";
  6. new const AUTHOR[] = "mforce";
  7.  
  8. new const PREFIX[] = "^4.:[^1Dead~Rising^4]:.";
  9.  
  10. #if AMXX_VERSION_NUM < 183
  11. #include <colorchat>
  12. const MAX_PLAYERS = 32;
  13. #endif
  14. const HUD_HIDE_MONEY = 1<<5;
  15.  
  16. new Array:g_Primary_MenuItems, Array:g_Secondary_MenuItems;
  17. new g_iPrim_TotalItems, g_iSec_TotalItems;
  18. new g_iPrim_EquipMenuID, g_iSec_EquipMenuID;
  19. enum _:weapinfo {weap_name[32], bpammo};
  20. enum _:PCVARS {AwpMinPlayers, MaxAwps, PistolMenu, MaxHeg, MaxFlash, MaxSmoke}
  21. enum _:TEAMS {TE, CT};
  22. enum _:MAXGRENADES {HE, FLASH, SMOKE};
  23. enum _:AWPCVARS {MinPlayers, MaxAwp};
  24. new g_Cvars[PCVARS], bool:g_AllowAWP, g_Awps[TEAMS], bool:g_Used[MAX_PLAYERS+1], g_Grenades[MAXGRENADES], g_AWPCvarHook[AWPCVARS];
  25.  
  26. new g_DisabledMaps;
  27. new GunMenuOff;
  28.  
  29. new const g_szWeaponNames[CSW_P90+1][] = {
  30.     "","weapon_p228","weapon_shield","weapon_scout","weapon_hegrenade","weapon_xm1014","weapon_c4",
  31.     "weapon_mac10","weapon_aug","weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
  32.     "weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp",
  33.     "weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1",
  34.     "weapon_flashbang","weapon_deagle","weapon_sg552","weapon_ak47","weapon_knife","weapon_p90"
  35. }
  36.  
  37. public plugin_init() {
  38.     register_plugin(PLUGIN, VERSION, AUTHOR);
  39.     register_dictionary("extended_weapon_menu.txt");
  40.     g_Cvars[AwpMinPlayers] = register_cvar("ewm_awpminplayers", "3");
  41.     g_Cvars[MaxAwps] = register_cvar("ewm_maxawp", "3");
  42.     g_Cvars[PistolMenu] = register_cvar("ewm_pistolmenu", "1");
  43.     g_Cvars[MaxHeg] = register_cvar("ewm_maxheg", "1");
  44.     g_Cvars[MaxFlash] = register_cvar("ewm_maxflash", "2");
  45.     g_Cvars[MaxSmoke] = register_cvar("ewm_maxsmoke", "1");
  46.     RegisterHookChain(RG_CBasePlayer_Spawn, "weapmenu", true);
  47.     register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  48.  
  49.     new const commands[][] = {"say /gun", "say /guns", "say /weap", "say_team /gun", "say_team /guns", "say_team /weap"};
  50.     for(new i; i < sizeof(commands); i++) {
  51.         register_clcmd(commands[i], "weapmenu");
  52.     }
  53.  
  54.     new Map[32];
  55.     get_mapname(Map, charsmax(Map));
  56.     strtolower(Map);
  57.  
  58.     // Tiltott pályák ellenőrzése
  59.     new szMapName[32];
  60.     for(new i = 0; i < ArraySize(g_DisabledMaps); i++) {
  61.         ArrayGetString(g_DisabledMaps, i, szMapName, charsmax(szMapName));
  62.         if(equal(Map, szMapName)) {
  63.             GunMenuOff = 1;
  64.             break;
  65.         }
  66.     }
  67.  
  68.     set_member_game(m_bMapHasBuyZone, false);
  69.     register_event("ResetHUD", "Event_ResetHUD", "b");
  70.     register_event("HideWeapon", "Event_HideWeapon", "b");
  71.     set_msg_block(get_user_msgid("Money"), BLOCK_SET);
  72.  
  73.     g_Primary_MenuItems = ArrayCreate(weapinfo);
  74.     g_Secondary_MenuItems = ArrayCreate(weapinfo);
  75. }
  76.  
  77. public plugin_cfg() {
  78.     new sBuffer[256], sFile[128], sData[2][32], pFile;
  79.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  80.     add(sFile, charsmax(sFile), "/ewm_weapons.ini");
  81.  
  82.     pFile = fopen(sFile, "rt");
  83.     if(!pFile) set_fail_state("Error reading weapon menu items config file.");
  84.  
  85.     new Trie:tCheckWeaponName = TrieCreate();
  86.     new Trie:tCheckAddedItems = TrieCreate();
  87.  
  88.     for(new i = 0; i< sizeof(g_szWeaponNames); i++)
  89.         TrieSetCell(tCheckWeaponName, g_szWeaponNames[i], 1);
  90.  
  91.     new bSection, menudata[weapinfo];
  92.  
  93.     while(!feof(pFile)) {
  94.         fgets(pFile, sBuffer, charsmax(sBuffer)); trim(sBuffer);
  95.         if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  96.  
  97.         if(sBuffer[0] == '[') {
  98.             if(equali(sBuffer, "[weapons]")) bSection = 1;
  99.             else if(equali(sBuffer, "[pistols]")) bSection = 2;
  100.             else bSection = 0;
  101.  
  102.             continue;
  103.         }
  104.  
  105.         if(parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]))) {
  106.             format(sData[0], charsmax(sData[]), "weapon_%s", sData[0]);
  107.             strtolower(sData[0]);
  108.  
  109.             if(!sData[0][0] || !TrieKeyExists(tCheckWeaponName, sData[0])) {
  110.                 server_print("WARNING: Invalid weapon name ^"%s^" will be skipped!", sData[0]);
  111.                 continue;
  112.             }
  113.             if(TrieKeyExists(tCheckAddedItems, sData[0])) {
  114.                 server_print("WARNING: Item ^"%s^" is already added!", sData[0]);
  115.                 continue;
  116.             }
  117.  
  118.             copy(menudata[weap_name], charsmax(menudata[weap_name]), sData[0]);
  119.             menudata[bpammo] = str_to_num(sData[1]);
  120.             TrieSetCell(tCheckAddedItems, sData[0], 1);
  121.  
  122.             if(bSection == 1) {
  123.                 ArrayPushArray(g_Primary_MenuItems, menudata);
  124.                 g_iPrim_TotalItems++;
  125.             }
  126.             else if(bSection == 2) {
  127.                 ArrayPushArray(g_Secondary_MenuItems, menudata);
  128.                 g_iSec_TotalItems++;
  129.             }
  130.         }
  131.     }
  132.  
  133.     fclose(pFile);
  134.     TrieDestroy(tCheckWeaponName);
  135.     TrieDestroy(tCheckAddedItems);
  136.  
  137.     if(!g_iPrim_TotalItems || !g_iSec_TotalItems) set_fail_state("Error! The menu doesn't contain any weapons.");
  138.  
  139.     build_menu();
  140.  
  141.     // --- Tiltott pályák ini betöltése ---
  142.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  143.     add(sFile, charsmax(sFile), "/ewm_blockedmaps.ini");
  144.  
  145.     g_DisabledMaps = ArrayCreate(32);
  146.  
  147.     pFile = fopen(sFile, "rt");
  148.     if(pFile) {
  149.         while(!feof(pFile)) {
  150.             fgets(pFile, sBuffer, charsmax(sBuffer));
  151.             trim(sBuffer);
  152.             if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  153.             strtolower(sBuffer);
  154.             ArrayPushString(g_DisabledMaps, sBuffer);
  155.         }
  156.         fclose(pFile);
  157.     } else {
  158.         server_print("[EWM] Figyelem: Nem találtam a %s fájlt!", sFile);
  159.     }
  160. }


Köszönöm...


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [7 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 6 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole