hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 234 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 233 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: 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  [ 31 hozzászólás ]  Oldal 1 2 3 4 Következő
Szerző Üzenet
 Hozzászólás témája: Extended Weapon Menu
HozzászólásElküldve: 2016.06.20. 17:29 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Extended Weapon Menu
v1.4 by mforce


Leírás:
Agyon módosítható, de mégis egyszerű fegyvermenü. Támogat AWP limitet, pisztolymenüt vagy automata deaglet, gránátok száma megszabható.
Buyzone tiltás, pénzhud tiltás.

Parancsok:
Ha nem sikerült a menüben vásárolnod, akkor beírhatod:
/weap, /guns, /gun

Konfiguráció:
Prefix módosítható az .sma fájlban:
  1. new const PREFIX[] = "EWM"


A fegyverek és pisztolyok is módosíthatók az "ewm_weapons.ini" fájlban.
Kód:
; Weapon name and bpammo

[weapons]
m4a1 90
ak47 90
awp 30
m249 200
aug 90
famas 90
galil 90
mp5navy 120
xm1014 32
m3 32
scout 90
p90 100
tmp 120
ump45 100
mac10 100

[pistols]
glock18 120
usp 100
deagle 35
fiveseven 100
p228 52
elite 120


Cvarok:
0 érték mindenhol a kikapcsolás.
1 a bekapcsolás.

ewm_awpminplayers Alap: 4 - Hány v hánytól legyen engedélyezve az AWP vásárlás.
ewm_maxawp Alap: 3 - Mennyi legyen a max AWP egy csapatban.
ewm_pistolmenu Alap: 0 - Pisztolymenü használata vagy 0 értéken alap automatikus Deagle.
ewm_maxheg Alap: 1 - Robbanó gránátok száma.
ewm_maxflash Alap: 2 - Vakító gránátok száma.
ewm_maxsmoke Alap: 1 - Füst gránátok száma.

Fordítások:
[hu] - mforce
[en] - mforce
[ru] - gudaus
[bp] - addons_zz
[ro] - iNdio
[it] - iNdio
[sr] - SkazzY
[ua] - Borzalex

Változtatások:
v1.1 - Multilang hozzáadva, strip_user_weapons javítva, "hardcoded" dolgok javítva, szükségtelen cvar eltávolítva, ColorChat include hozzáadva.
Pénz hud blokkolás átdolgozva, köszönettel: Safety1st-nek.
v1.2 - AMXX 1.8.3 támogatás javítva, kevesebb cvar hook.
v1.21 - Multilang fix.
v1.3 - Plugin pause eltávolítva. Fájlok hozzáadva a fegyverek módosításához.
v1.4 - Fegyver adás, eldobás hozzáadva Safety1st pluginja alapján, menü szerkezeti felépítések Vaqtincha pluginja alapján.

_________________
GitHub - mforce

Ők köszönték meg mforce nek ezt a hozzászólást: [R]ó[M]e[Ó] (2016.06.21. 22:19)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.06.20. 18:56 
Offline
Tiszteletbeli
Avatar

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

_________________
GitHub - mforce

Ők köszönték meg mforce nek ezt a hozzászólást: Papi (2016.06.21. 18:17)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.06.21. 18:17 
Offline
Félisten
Avatar

Csatlakozott: 2013.03.12. 10:03
Hozzászólások: 859
Megköszönt másnak: 37 alkalommal
Megköszönték neki: 44 alkalommal
Szép! :)

_________________
Kép


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

Csatlakozott: 2016.06.20. 20:43
Hozzászólások: 14
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 11 alkalommal
Gratulállok.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.06.21. 20:11 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Még el se fogadták :D
De eredeti linken ott van.

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.06.21. 22:18 
Offline
Jómunkásember
Avatar

Csatlakozott: 2016.06.05. 20:55
Hozzászólások: 347
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 28 alkalommal
Nagyon szép, munkka.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.06.23. 11:05 
Offline
Fórum Moderátor
Avatar

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

Reapi verziónál csak füstöt ad, hiába van beállítva :)

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.07.02. 20:44 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Reapi verzió.
Tesztelve!
https://github.com/mforce95/Reapi_AMXX_ ... pon%20Menu

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.07.03. 02:39 
Offline
Tag
Avatar

Csatlakozott: 2015.10.04. 20:32
Hozzászólások: 51
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 1 alkalommal
Nem tudom átalakítani


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

Modified for http://www.Freakz.ro / amx.freakz.ro

amxmodx-25268-extended_weapon_menu.sma(200) : error 017: undefined symbol "client_print_color"
amxmodx-25268-extended_weapon_menu.sma(200) : warning 215: expression has no effect
amxmodx-25268-extended_weapon_menu.sma(200) : warning 215: expression has no effect
amxmodx-25268-extended_weapon_menu.sma(200) : warning 215: expression has no effect
amxmodx-25268-extended_weapon_menu.sma(200) : warning 215: expression has no effect
amxmodx-25268-extended_weapon_menu.sma(200) : warning 215: expression has no effect
amxmodx-25268-extended_weapon_menu.sma(200) : warning 215: expression has no effect
amxmodx-25268-extended_weapon_menu.sma(200) : error 001: expected token: ";", but found ")"
amxmodx-25268-extended_weapon_menu.sma(200) : error 029: invalid expression, assumed zero
amxmodx-25268-extended_weapon_menu.sma(200) : fatal error 107: too many error messages on one line

Compilation aborted.
4 Errors.
Done.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Extended Weapon Menu
HozzászólásElküldve: 2016.07.03. 07:35 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Hát online compilerrel nem is fogod :)

_________________
GitHub - mforce


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  [ 31 hozzászólás ]  Oldal 1 2 3 4 Következő


Ki van itt

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


Nem nyithatsz 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