hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2026.02.03. 19:28



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Baidu [Spider], Bing [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  [2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: reapi fegyvermenü error forditásnál
HozzászólásElküldve:Ma, 07:26 
Offline
Jómunkásember

Csatlakozott:2020.06.14. 17:59
Hozzászólások:443
Megköszönt másnak: 82 alkalommal
Megköszönték neki: 10 alkalommal
Sziasztok. segitséget szeretnék kérni ebben....

  1. (ReApi) Extended Weapon Menu.sma(60) : warning 213: tag mismatch
  2. (ReApi) Extended Weapon Menu.sma(61) : warning 213: tag mismatch
  3. (ReApi) Extended Weapon Menu.sma(139) : error 017: undefined symbol "build_menu"
  4. (ReApi) Extended Weapon Menu.sma(145) : warning 213: tag mismatch
  5. (ReApi) Extended Weapon Menu.sma(154) : warning 213: tag mismatch
  6. (ReApi) Extended Weapon Menu.sma(63) : warning 204: symbol is assigned a value that is never used: "GunMenuOff"
  7. (ReApi) Extended Weapon Menu.sma(8) : warning 203: symbol is never used: "PREFIX"
  8. (ReApi) Extended Weapon Menu.sma(24) : warning 203: symbol is never used: "g_AWPCvarHook"
  9. (ReApi) Extended Weapon Menu.sma(24) : warning 203: symbol is never used: "g_AllowAWP"
  10. (ReApi) Extended Weapon Menu.sma(24) : warning 203: symbol is never used: "g_Awps"
  11. (ReApi) Extended Weapon Menu.sma(24) : warning 203: symbol is never used: "g_Grenades"
  12. (ReApi) Extended Weapon Menu.sma(24) : warning 203: symbol is never used: "g_Used"
  13. (ReApi) Extended Weapon Menu.sma(18) : warning 203: symbol is never used: "g_iPrim_EquipMenuID"
  14. (ReApi) Extended Weapon Menu.sma(18) : warning 203: symbol is never used: "g_iSec_EquipMenuID"
  15.  
  16. 1 Error.
  17. Could not locate output file compiled/(ReApi) Extended Weapon Menu.amx (compile failed).



  1. #include <amxmodx>
  2.     #include <reapi>
  3.      
  4.     new const PLUGIN[] = "[FTW] Fegyvermenü";
  5.     new const VERSION[] = "1.4";
  6.     new const AUTHOR[] = "mforce";
  7.      
  8.     new const PREFIX[] = "^4[FTW]";
  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.     }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:Ma, 12:11 
Offline
Tag
Avatar

Csatlakozott:2019.08.24. 05:30
Hozzászólások:43
Megköszönt másnak: 6 alkalommal
Megköszönték neki: 14 alkalommal
Nem tudom miért csak a fele van itt az eredeti kódnak de ha csak ezt a részét akarod használni akkor itt van, mőkédésre bírva:

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


AMX Mod X Compiler 1.10.0.5406
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team

Header size: 1016 bytes
Code size: 6788 bytes
Data size: 5664 bytes
Stack/heap size: 16384 bytes
Total requirements: 29852 bytes
Done.



Ha pedig az eredeti kód kell, akkor itt van, csak le kell fordítani magyarra:

  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 <cstrike>
  19. #include <fun>
  20. #include <fakemeta>
  21. #include <hamsandwich>
  22.  
  23. new const PLUGIN[] = "Extended Weapon Menu";
  24. new const VERSION[] = "1.4";
  25. new const AUTHOR[] = "mforce";
  26.  
  27.  
  28. new const PREFIX[] = "^4[EWM]";
  29.  
  30. #if AMXX_VERSION_NUM < 183
  31. #include <colorchat>
  32. const MAX_PLAYERS = 32;
  33. #endif
  34. const m_iHideHUD = 361;
  35. const m_iClientHideHUD = 362;
  36. const HUD_HIDE_MONEY = 1<<5;
  37. const m_iMapZone = 235;
  38.  
  39. new Array:g_Primary_MenuItems, Array:g_Secondary_MenuItems;
  40. new g_iPrim_TotalItems, g_iSec_TotalItems;
  41. new g_iPrim_EquipMenuID, g_iSec_EquipMenuID;
  42. enum _:weapinfo {weap_name[32], bpammo, weap_id};
  43. enum _:PCVARS {AwpMinPlayers, MaxAwps, PistolMenu, MaxHeg, MaxFlash, MaxSmoke}
  44. enum _:TEAMS {TE, CT};
  45. enum _:MAXGRENADES {HE, FLASH, SMOKE};
  46. enum _:AWPCVARS {MinPlayers, MaxAwp};
  47. new g_Cvars[PCVARS], bool:g_AllowAWP, g_Awps[TEAMS], bool:g_Used[MAX_PLAYERS+1], g_Grenades[MAXGRENADES], g_AWPCvarHook[AWPCVARS];
  48.  
  49.  
  50. new const g_szWeaponNames[CSW_P90+1][] = {
  51.     "","weapon_p228","weapon_shield","weapon_scout","weapon_hegrenade","weapon_xm1014","weapon_c4",
  52.     "weapon_mac10","weapon_aug","weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
  53.     "weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18","weapon_awp",
  54.     "weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1","weapon_tmp","weapon_g3sg1",
  55.     "weapon_flashbang","weapon_deagle","weapon_sg552","weapon_ak47","weapon_knife","weapon_p90"
  56. }
  57.  
  58. public plugin_init() {
  59.     register_plugin(PLUGIN, VERSION, AUTHOR);
  60.     register_dictionary("extended_weapon_menu.txt");
  61.     g_Cvars[AwpMinPlayers] = register_cvar("ewm_awpminplayers", "4")
  62.     g_Cvars[MaxAwps] = register_cvar("ewm_maxawp", "3")
  63.     g_Cvars[PistolMenu] = register_cvar("ewm_pistolmenu", "0")
  64.     g_Cvars[MaxHeg] = register_cvar("ewm_maxheg", "1")
  65.     g_Cvars[MaxFlash] = register_cvar("ewm_maxflash", "2")
  66.     g_Cvars[MaxSmoke] = register_cvar("ewm_maxsmoke", "1")
  67.     RegisterHam(Ham_Spawn, "player", "weapmenu", 1);
  68.     register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  69.    
  70.     new const commands[][] = {"say /gun", "say /guns", "say /weap", "say_team /gun", "say_team /guns", "say_team /weap"};
  71.     for(new i; i < sizeof(commands); i++) {
  72.         register_clcmd(commands[i], "weapmenu");
  73.     }
  74.    
  75.     register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon");
  76.     register_event("ResetHUD", "Event_ResetHUD", "b")
  77.     register_event("HideWeapon", "Event_HideWeapon", "b")
  78.     set_msg_block(get_user_msgid("Money"), BLOCK_SET)
  79.    
  80.     g_Primary_MenuItems = ArrayCreate(weapinfo);
  81.     g_Secondary_MenuItems = ArrayCreate(weapinfo);
  82. }
  83.  
  84. public plugin_cfg() {
  85.     new sBuffer[256], sFile[128], sData[2][32], pFile;
  86.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
  87.     add(sFile, charsmax(sFile), "/ewm_weapons.ini");
  88.  
  89.     pFile = fopen(sFile, "rt");
  90.     if(!pFile) set_fail_state("Error reading weapon menu items config file.");
  91.    
  92.     new Trie:tCheckWeaponName = TrieCreate();
  93.     new Trie:tCheckAddedItems = TrieCreate()
  94.    
  95.     new iWeaponIds[CSW_P90+1], iId;
  96.     for(new i = 0; i< sizeof(g_szWeaponNames); i++)
  97.         TrieSetCell(tCheckWeaponName, g_szWeaponNames[i], iWeaponIds[i]);
  98.    
  99.     new bSection, menudata[weapinfo];
  100.    
  101.     while(!feof(pFile)) {
  102.         fgets(pFile, sBuffer, charsmax(sBuffer)); trim(sBuffer);
  103.         if(!sBuffer[0] || sBuffer[0] == ';' || sBuffer[0] == '#') continue;
  104.        
  105.         if(sBuffer[0] == '[') {
  106.             if(equali(sBuffer, "[weapons]")) bSection = 1;
  107.             else if(equali(sBuffer, "[pistols]")) bSection = 2;
  108.             else bSection = 0;
  109.            
  110.             continue;
  111.         }
  112.  
  113.         if(parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]))) {
  114.             format(sData[0], charsmax(sData[]), "weapon_%s", sData[0]);
  115.             strtolower(sData[0]);
  116.            
  117.             if(!sData[0][0] || !TrieGetCell(tCheckWeaponName, sData[0], iId)) {
  118.                 server_print("WARNING: Invalid weapon name ^"%s^" will be skipped!", sData[0]);
  119.                 continue;
  120.             }
  121.             if(TrieKeyExists(tCheckAddedItems, sData[0])) {
  122.                 server_print("WARNING: Item ^"%s^" is already added!", sData[0]);
  123.                 continue;
  124.             }
  125.            
  126.             copy(menudata[weap_name], charsmax(menudata[weap_name]), sData[0]);
  127.             menudata[bpammo] = str_to_num(sData[1]);
  128.             menudata[weap_id] = get_weaponid(sData[0]);
  129.             TrieSetCell(tCheckAddedItems, sData[0], menudata[weap_id]);
  130.            
  131.             if(bSection == 1) {
  132.                 ArrayPushArray(g_Primary_MenuItems, menudata);
  133.                 g_iPrim_TotalItems++
  134.             }
  135.             else if(bSection == 2) {
  136.                 ArrayPushArray(g_Secondary_MenuItems, menudata);
  137.                 g_iSec_TotalItems++
  138.             }
  139.         }
  140.     }
  141.    
  142.     fclose(pFile);
  143.     TrieDestroy(tCheckWeaponName);
  144.     TrieDestroy(tCheckAddedItems);
  145.    
  146.     if(!g_iPrim_TotalItems || !g_iSec_TotalItems) set_fail_state("Error! The menu doesn't contain any weapons.");
  147.    
  148.     build_menu();
  149. }
  150.  
  151. build_menu() {
  152.     g_iPrim_EquipMenuID = menu_create(PLUGIN, "Prim_WeaponMenuHandler")
  153.     g_iSec_EquipMenuID = menu_create(PLUGIN, "Sec_WeaponMenuHandler")
  154.     // menu_setprop(g_iPrim_EquipMenuID, MPROP_NUMBER_COLOR, "\r")
  155.  
  156.     new szMenuText[64], menudata[weapinfo], szNum[3], i;
  157.    
  158.     for(i = 0; i < g_iPrim_TotalItems; i++) {
  159.         ArrayGetArray(g_Primary_MenuItems, i, menudata)
  160.         strtoupper(menudata[weap_name]);
  161.         formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  162.         num_to_str(i, szNum, charsmax(szNum))
  163.         menu_additem(g_iPrim_EquipMenuID, szMenuText, szNum, 0)
  164.     }
  165.    
  166.     for(i = 0; i < g_iSec_TotalItems; i++) {
  167.         ArrayGetArray(g_Secondary_MenuItems, i, menudata)
  168.         strtoupper(menudata[weap_name]);
  169.         formatex(szMenuText, charsmax(szMenuText), "%s", menudata[weap_name][7]);
  170.         num_to_str(i, szNum, charsmax(szNum))
  171.         menu_additem(g_iSec_EquipMenuID, szMenuText, szNum, 0)
  172.     }
  173.    
  174.     menu_setprop(g_iPrim_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  175.     menu_setprop(g_iSec_EquipMenuID, MPROP_EXIT, MEXIT_ALL);
  176.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_BACK");
  177.     menu_setprop(g_iPrim_EquipMenuID, MPROP_BACKNAME, szMenuText);
  178.     menu_setprop(g_iSec_EquipMenuID, MPROP_BACKNAME, szMenuText);
  179.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_NEXT");
  180.     menu_setprop(g_iPrim_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  181.     menu_setprop(g_iSec_EquipMenuID, MPROP_NEXTNAME, szMenuText);
  182.     formatex(szMenuText, charsmax(szMenuText), "%L", LANG_SERVER, "EWM_MENU_EXIT");
  183.     menu_setprop(g_iPrim_EquipMenuID, MPROP_EXITNAME, szMenuText);
  184.     menu_setprop(g_iSec_EquipMenuID, MPROP_EXITNAME, szMenuText);
  185. }
  186.  
  187. public Prim_WeaponMenuHandler(id, iMenu, iItem) {
  188.     if(iItem == MENU_EXIT) return PLUGIN_HANDLED;
  189.  
  190.     new szNum[3], iAccess, cb;
  191.     menu_item_getinfo(iMenu, iItem, iAccess, szNum, charsmax(szNum), _, _, cb);
  192.  
  193.     new iItemIndex = str_to_num(szNum);
  194.     new menudata[weapinfo];
  195.    
  196.     ArrayGetArray(g_Primary_MenuItems, iItemIndex, menudata);
  197.    
  198.     if(equal(menudata[weap_name], "weapon_awp")) {
  199.         if(!g_AllowAWP) {
  200.             client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_ALLOWFROM", g_AWPCvarHook[MinPlayers], g_AWPCvarHook[MinPlayers]);
  201.             weapmenu(id);
  202.             return PLUGIN_HANDLED;
  203.         }
  204.         else if(g_AWPCvarHook[MaxAwp]) {
  205.             switch(cs_get_user_team(id)) {
  206.                 case CS_TEAM_T: {
  207.                     if(g_Awps[TE] < g_AWPCvarHook[MaxAwp]) g_Awps[TE]++;
  208.                     else {
  209.                         client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  210.                         weapmenu(id);
  211.                         return PLUGIN_HANDLED;
  212.                     }
  213.                 }
  214.                 case CS_TEAM_CT: {
  215.                     if(g_Awps[CT] < g_AWPCvarHook[MaxAwp]) g_Awps[CT]++;
  216.                     else {
  217.                         client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_AWP_TOOMANY", g_AWPCvarHook[MaxAwp]);
  218.                         weapmenu(id);
  219.                         return PLUGIN_HANDLED;
  220.                     }
  221.                 }
  222.             }
  223.         }
  224.     }
  225.    
  226.     if(get_pcvar_num(g_Cvars[PistolMenu]) == 1) {
  227.         menu_display(id, g_iSec_EquipMenuID, 0);
  228.     }
  229.     else {
  230.         GiveWeapon(id, "weapon_deagle", CSW_DEAGLE, 35);
  231.     }
  232.    
  233.     GiveWeapon(id, menudata[weap_name], menudata[weap_id], menudata[bpammo]);
  234.     cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
  235.     give_grenades(id);
  236.     strtoupper(menudata[weap_name]);
  237.     client_print_color(id, print_team_default, "%s^1 %L", PREFIX, LANG_SERVER, "EWM_CHOOSED", menudata[weap_name][7]);
  238.     g_Used[id] = true;
  239.  
  240.     return PLUGIN_HANDLED;
  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.     GiveWeapon(id, menudata[weap_name], menudata[weap_id], 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 = (GetPlayers(1) >= g_AWPCvarHook[MinPlayers] && GetPlayers(2) >= 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]) return;
  272.    
  273.     menu_display(id, g_iPrim_EquipMenuID, 0);
  274. }
  275.  
  276. give_grenades(id) {
  277.     if(g_Grenades[HE])
  278.         GiveWeapon(id, "weapon_hegrenade", CSW_HEGRENADE, g_Grenades[HE]);
  279.  
  280.     if(g_Grenades[FLASH])
  281.         GiveWeapon(id, "weapon_flashbang", CSW_FLASHBANG, g_Grenades[FLASH]);
  282.  
  283.     if(g_Grenades[SMOKE])
  284.         GiveWeapon(id, "weapon_smokegrenade", CSW_SMOKEGRENADE, g_Grenades[SMOKE]);
  285. }
  286.  
  287. GetPlayers(team) {
  288.     new players[32], num;
  289.     get_players(players, num, "ce", team == 1 ? "TERRORIST":"CT")
  290.  
  291.     return num;
  292. }
  293.  
  294. public Event_ResetHUD(id) {
  295.     set_pdata_int(id, m_iClientHideHUD, 0)
  296.     set_pdata_int(id, m_iHideHUD, HUD_HIDE_MONEY)
  297. }
  298.  
  299. public Event_HideWeapon(id) {
  300.     // for compatibility with other plugins using that message; ZP for example
  301.     new iFlags = read_data(1)
  302.     if(~iFlags & HUD_HIDE_MONEY) {
  303.         set_pdata_int(id, m_iClientHideHUD, 0)
  304.         set_pdata_int(id, m_iHideHUD, iFlags|HUD_HIDE_MONEY)
  305.     }
  306. }
  307.  
  308. public Message_StatusIcon(iMsgId, iMsgDest, id) {
  309.     static szIcon[8];
  310.     get_msg_arg_string(2, szIcon, charsmax(szIcon));
  311.     if(equal(szIcon, "buyzone")) {
  312.         if(get_msg_arg_int(1)) {
  313.             set_pdata_int(id, m_iMapZone, get_pdata_int(id, m_iMapZone) & ~(1<<0));
  314.             return PLUGIN_HANDLED;
  315.         }
  316.     }
  317.     return PLUGIN_CONTINUE;
  318. }
  319.  
  320. public plugin_end() {
  321.     ArrayDestroy(g_Primary_MenuItems);
  322.     ArrayDestroy(g_Secondary_MenuItems);
  323. }
  324.  
  325. // ============================
  326. #define CSW_SHIELD  2
  327.  
  328. const PRIMARY_WEAPONS_BIT_SUM = 1<<CSW_SCOUT|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_AUG|1<<CSW_UMP45
  329.     |1<<CSW_SG550|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AWP|1<<CSW_MP5NAVY|1<<CSW_M249|1<<CSW_M3
  330.     |1<<CSW_M4A1|1<<CSW_TMP|1<<CSW_G3SG1|1<<CSW_SG552|1<<CSW_AK47|1<<CSW_P90;
  331.    
  332. const SECONDARY_WEAPONS_BIT_SUM = 1<<CSW_P228|1<<CSW_ELITE|1<<CSW_FIVESEVEN|1<<CSW_USP|1<<CSW_GLOCK18|1<<CSW_DEAGLE;
  333. const EXCP_WEAPONS_BIT_SUM = 1<<CSW_HEGRENADE|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG|1<<CSW_KNIFE;
  334.  
  335. stock GiveWeapon(id, const szWeapon[], iId, bp_ammo) {
  336.     if(1<<iId & SECONDARY_WEAPONS_BIT_SUM)
  337.         DropWeapon(id, SECONDARY_WEAPONS_BIT_SUM);
  338.  
  339.     else if(1<<iId & PRIMARY_WEAPONS_BIT_SUM) {
  340.         if(cs_get_user_shield(id))
  341.             engclient_cmd( id, "drop", g_szWeaponNames[CSW_SHIELD]);
  342.         else DropWeapon(id, PRIMARY_WEAPONS_BIT_SUM);
  343.     }
  344.  
  345.     give_item(id, szWeapon);
  346.     cs_set_user_bpammo(id, iId, bp_ammo);
  347. }
  348.  
  349. stock DropWeapon(id, weapons_bitsum) {
  350.     new iWeapons[32], iNum, iId;
  351.     get_user_weapons(id, iWeapons, iNum);
  352.  
  353.     for(new i = 0; i < iNum; i++) {
  354.         iId = iWeapons[i];
  355.         if(!(EXCP_WEAPONS_BIT_SUM & (1<<iId)) && 1<<iId & weapons_bitsum)
  356.             engclient_cmd(id, "drop", g_szWeaponNames[iId]);
  357.     }
  358. }


AMX Mod X Compiler 1.10.0.5406
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team

Header size: 1912 bytes
Code size: 11536 bytes
Data size: 6052 bytes
Stack/heap size: 16384 bytes
Total requirements: 35884 bytes
Done.

_________________
Saját munkák, közreműködések:
NextLvL Mód - SKA 2.1
Sebesség korlát
kovakovi2000 @ cs 1.6 - gyenge/terhelt szerver hitbox javítás

Kép


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  [2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 4 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