Powiązanie callback Menu i pliku cfg.
METALOWIEC
18.10.2018
Chciałbym dodać nową funkcję do menu CSDM, mianowicie odblokowanie broni w ramach konkretnej rangi z pluginu cs_rank_system.
Wszystkie callbacki korzystają z: IsRestricted[weaptype] do restrykcji broni z danych w pliku cfg. Chciałbym tam zaimplementować zmienną która na tej samej zasadzie sprawdzałaby rangę gracza przy spawnie i blokowała elementy które są wyższych rang (ew. ominięcie rang za pomocą blokady od lvlu).
Czy ktoś mógłby wykonać opisaną modyfikację albo wskazać w jaki sposób powinienem to wykonać (tylko bez odesłania linkiem, a przykładem z opisem - aby nie robić kopiuj wklej, a rzeczywiście nauczyć)?
Załączone pliki
Toldi
18.10.2018
Tworzysz natyw w rangach przesyłający index aktualnej rangi gracza.
public plugin_natives() { register_native("get_user_rank", "_zwroc_id_rangi_gracza", 1); } public _zwroc_id_rangi_gracza(index) // index - id gracza { return rank[index]; }
Następnie w csdm_equip dajesz sprawdzenie
if(get_user_rank(id)> X) { ...kod }
W pluginie od rang w linii 333 masz ustawianie odpowiedniego id rangi gracza.
METALOWIEC
18.10.2018
Ok, ta część jest jasna, pytanie tylko o zastosowanie get_user_rank w csdmie.
Plugin pobiera dane z pliku cfg więc i każdy element jest pobierany z pliku cfg. Gdyby było to normalne menu to tego ifa można wrzucić bezpośrednio w callback, tylko jak to zastosowac w tym wypadku?
Toldi
18.10.2018
Hmm... Nie wiem czy coś z tego wyjdzie ale próbuj. Na początku najważniejsze nad public plugin_init dodaj
native get_user_rank(index);
Dobrze było by też, aby plugin od rang był wyżej w plugins.ini od csdm_equip.
Następnie przechodzimy do linii 649 public c_Secondary(id, menu, item) // menu broni drugorzednej (pistolety) i podmieniamy ten public na
//Secondary Weapon Callback public c_Secondary(id, menu, item) { if( item < 0 ) return PLUGIN_CONTINUE new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new dis = str_to_num(cmd) new team = get_user_team(id) new weaptype = get_weaponid(g_Secondary[dis]) //Check to see if item is disabled if (g_DisabledSec[dis]) { return ITEM_DISABLED } else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X) { return ITEM_ENABLED } else { return ITEM_DISABLED } return PLUGIN_HANDLED }
No i analogicznie zrob w lini 684. Przyjrzyj się a zauważysz że dopisuje tylko do ifa właśnie warunek czy id rangi gracza jest wieksz od X.
Tak jak mówię może być źle bo trochę mi ciężko było się w tym kodzie odnaleźć.
METALOWIEC
18.10.2018
Taki zapis powoduje włączenie wszystkich elementów menu od konkretnej rangi (konieczne jest to aby każdy z elementów można było przydzielić do rangi osobno).
(w tym miejscu mogę pleść głupoty, ze względu na brak pojęć związanych z programowaniem):
else if (!IsRestricted[weaptype] && get_user_rank(id) > X)
Gdyby utworzyć tablicę do rang i postawić za X zmienną odpowiedzialną za zczytanie rangi to raczej by się udało. Pozostaje tylko kwestia działania pliku .cfg i połączenia tego ze zmienną tak aby można byłą ją edytować z poziomu pliku.
Do cfg odwołanie idzie z:
public cfgPrimary(readAction, line[], section[]) {
Sama budowa menu i pobranie wartości jest realizowane przez:
//Copy weapon into array format(g_Primary[g_iNumPrim], 17, "weapon_%s", wep) g_DisabledPrim[g_iNumPrim] = disabled ? false : true format(cmd, 5, "%d", g_iNumPrim) g_iNumPrim++ if (disabled > 0) g_iNumUsedPrim++ //TODO: Add menu_destroy_items to remake menu on cfg reload menu_additem(g_PrimMenuID, display, cmd, 0, g_cPrimary) } else if (readAction == CFG_RELOAD) { g_PrimMenuID = menu_create(g_PrimMenu, "m_PrimHandler", 0) g_iNumPrim = 0 g_iNumUsedPrim = 0 } else if (readAction == CFG_DONE) {
Ale też dość ciężko mi się z tym połapać
Toldi
18.10.2018
Spróbuj tego. Może, może...
//Secondary Weapon Callback public c_Secondary(id, menu, item) { if( item < 0 ) return PLUGIN_CONTINUE new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new dis = str_to_num(cmd) new team = get_user_team(id) new weaptype = get_weaponid(g_Secondary[dis]) //Check to see if item is disabled if (g_DisabledSec[dis]) { return ITEM_DISABLED } switch(cs_get_weapon_id(weaptype)) { case CSW_USP: { if (!IsRestricted[CSW_USP] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_CT)get_user_rank(id) > X) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_GLOCK18: { if (!IsRestricted[CSW_GLOCK18] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_CT)get_user_rank(id) > X) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_DEAGLE: { //to samo co wyzej z kazda bronia CSW_BRON jaka jest dostepna w menu secondary } default: return ITEM_DISABLED; } /*else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X) { return ITEM_ENABLED } else { return ITEM_DISABLED }*/ return PLUGIN_HANDLED }
METALOWIEC
18.10.2018
Niestety nie kompiluje,
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team Error: Invalid subscript (not an array or too many subscripts): "get_user_rank" on line 682 Error: Expected token: "}", but found "return" on line 683 Error: Only a single statement (or expression) can follow each "case" on line 685 Warning: Loose indentation on line 690 Error: Invalid statement; not in switch on line 690 Warning: Expression has no effect on line 690 Error: Expected token: ";", but found ":" on line 690 Error: Invalid expression, assumed zero on line 690 Error: Too many error messages on one line on line 690 Compilation aborted. 7 Errors. Could not locate output file C:\Users\Mateusz\Desktop\sprites\csdm_equip\csdm_equip.amx (compile failed).
Robiin
18.10.2018
Dobrze było by też, aby plugin od rang był wyżej w plugins.ini od csdm_equip.
Natyw pluginu A wysyła i odbiera natywy z pluginu B i na odwrót. Kolejność nie jest ważna.
@METALOWIEC jeśli dobrze rozumiem, to masz problem z odczytywaniem wartości (poziomów?) z configa? I'm a simple man
Toldi
18.10.2018
Spróbuj teraz. Jeżeli nadal nie będziesz mógł skompilować podaj mi bibliotekę csdm bo tą co mam z neta coś nie gra.
@edit: Dodałeś do kodu np. nad plugin_init to?
native get_user_rank(index);
//Secondary Weapon Callback public c_Secondary(id, menu, item) { if( item < 0 ) return PLUGIN_CONTINUE new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new dis = str_to_num(cmd) new team = get_user_team(id) new weaptype = get_weaponid(g_Secondary[dis]) //Check to see if item is disabled if (g_DisabledSec[dis]) { return ITEM_DISABLED } cs_get_weapon_id(weaptype); switch(cs_get_weapon_id(weaptype)) { case CSW_USP: { if (!IsRestricted[CSW_USP] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_CT) && (get_user_rank(id) > X)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_GLOCK18: { if (!IsRestricted[CSW_GLOCK18] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_CT) && (get_user_rank(id) > X)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_DEAGLE: { //to samo co wyzej z kazda bronia CSW_BRON jaka jest dostepna w menu secondary } default: return ITEM_DISABLED; } /*else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X) { return ITEM_ENABLED } else { return ITEM_DISABLED }*/ return PLUGIN_HANDLED }
METALOWIEC
18.10.2018
Problem polega na tym że chcę połączyć działanie tych 2 pluginów, tak aby można było zarządzać bronią i ograniczeniem dla rangi, najlepiej z poziomu tego cfg (chyba to najprostsza droga). Niestety jak widać nie wychodzi dość dobrze w ostateczności będę musiał chyba zrezygnować z csdm_equip i zrobić całe menu w sma od rang
utrudni to trochę trzymanie balansu w grze
METALOWIEC
18.10.2018
new RANKS_Noobest ,
w csdm_equip.
Dzięki, wielki Teraz tylko do przerobienia cały plugin, kompilacja i dalsze testy ^ ^.
METALOWIEC
18.10.2018
Pozostał 1 bug:
Toldi
19.10.2018
Pozostał 1 bug:
L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 17 out of rangeL 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 16 out of rangeL 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 11 out of rangeL 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).L 10/18/2018 - 22:19:01: [CSTRIKE] Non-player entity 1 out of rangeL 10/18/2018 - 22:19:01: [AMXX] Run time error 10 (plugin "csdm_equip.amxx") (native "cs_get_weapon_id") - debug not enabled!L 10/18/2018 - 22:19:01: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
Dopisz debug tj. csdm_equip.amxx debug. Dodatkowo w kodzie, który Ci podałem tuż na switch(cs_get_weapon_id(weaptype)) usuń lub zakomentuj (//) cs_get_weapon_id(weaptype); bo zapomniałem usunąć a jest już to w switchu.
@edit: Czy kod, który ci podałem blokuję opcję w menu tak jak chcesz (od danej rangi)??
METALOWIEC
19.10.2018
L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx") L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id") L 10/19/2018 - 13:39:23: [AMXX] [0] csdm_equip.sma::c_Primary (line 804) L 10/19/2018 - 13:39:23: [CSTRIKE] Non-player entity 20 out of range L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx") L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id") L 10/19/2018 - 13:39:23: [AMXX] [0] csdm_equip.sma::c_Primary (line 804) L 10/19/2018 - 13:39:23: [CSTRIKE] Non-player entity 3 out of range L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx") L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id") L 10/19/2018 - 13:39:23: [AMXX] [0] csdm_equip.sma::c_Primary (line 804) L 10/19/2018 - 13:39:23: [CSTRIKE] Non-player entity 14 out of range L 10/19/2018 - 13:39:23: [AMXX] Displaying debug trace (plugin "csdm_equip.amxx") L 10/19/2018 - 13:39:23: [AMXX] Run time error 10: native error (native "cs_get_weapon_id") L 10/19/2018 - 13:39:23: [AMXX] [0] csdm_equip.sma::c_Primary (line 804)
Z blokowaniem jest pewien problem, mianowicie obecnie nie blokuje, ale w pierwszej wersji (niestety nie zapisałem kodu, pomimo ustawień blokowało tylko ostatni item na danej stronie menu).
@edit blokowanie było wtedy kiedy nie dodałem case do danego itemu
Użytkownik METALOWIEC edytował ten post 19.10.2018 12:46
METALOWIEC
19.10.2018
if (g_DisabledSec[dis]) { return ITEM_DISABLED } switch(cs_get_weapon_id(weaptype)) { case CSW_GLOCK18: { if (!IsRestricted[CSW_GLOCK18] && get_user_rank(id) >= 14)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_T) && (get_user_rank(id) >= 0) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_GLOCK18] < RestrictWps[CSW_GLOCK18]) && (team == _TEAM_CT) && (get_user_rank(id) >= 0)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_USP: { if (!IsRestricted[CSW_USP] && get_user_rank(id) >= 2 )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_T) && (get_user_rank(id) >= 2 ) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_USP] < RestrictWps[CSW_USP]) && (team == _TEAM_CT) && (get_user_rank(id) >= 2 )) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_FIVESEVEN: { if (!IsRestricted[CSW_FIVESEVEN] && get_user_rank(id) >= RANKS_Normal )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_T) && (get_user_rank(id) >= RANKS_Normal) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_CT) && (get_user_rank(id) >= RANKS_Normal)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_P228: { if (!IsRestricted[CSW_P228] && get_user_rank(id) > RANKS_SuperExpert)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_T) && (get_user_rank(id) >= RANKS_SuperExpert) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_CT) && (get_user_rank(id) >= RANKS_SuperExpert)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_DEAGLE: { if (!IsRestricted[CSW_DEAGLE] && get_user_rank(id) >= 11)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_T) && (get_user_rank(id) >= 11) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_CT) && (get_user_rank(id) >= 11)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } default: return ITEM_DISABLED; } /*else if (!IsRestricted[weaptype] && get_user_rank(id) > X)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) && (get_user_rank(id) > X) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)get_user_rank(id) > X) { return ITEM_ENABLED } else { return ITEM_DISABLED }*/ return PLUGIN_HANDLED } //Primary Weapon Callback public c_Primary(id, menu, item) { if (item < 0) return PLUGIN_CONTINUE // Get item info new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new dis = str_to_num(cmd) new team = get_user_team(id) new weaptype = get_weaponid(g_Primary[dis]) //Check to see if item is disabled if (g_DisabledPrim[dis]) { return ITEM_DISABLED } switch(cs_get_weapon_id(weaptype)) { case CSW_TMP: { if (!IsRestricted[CSW_TMP] && get_user_rank(id) >= 11)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_TMP] < RestrictWps[CSW_TMP]) && (team == _TEAM_T) && (get_user_rank(id) >= 0) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_TMP] < RestrictWps[CSW_TMP]) && (team == _TEAM_CT) && (get_user_rank(id) >= 0)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_M3: { if (!IsRestricted[CSW_M3] && get_user_rank(id) >= 2 )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_M3] < RestrictWps[CSW_M3]) && (team == _TEAM_T) && (get_user_rank(id) >= 2 ) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_M3] < RestrictWps[CSW_M3]) && (team == _TEAM_CT) && (get_user_rank(id) >= 2 )) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_FIVESEVEN: { if (!IsRestricted[CSW_FIVESEVEN] && get_user_rank(id) >= 5 )// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_T) && (get_user_rank(id) >= 5) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_FIVESEVEN] < RestrictWps[CSW_FIVESEVEN]) && (team == _TEAM_CT) && (get_user_rank(id) >= 5)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_P228: { if (!IsRestricted[CSW_P228] && get_user_rank(id) >= 8)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_T) && (get_user_rank(id) >= 8) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_P228] < RestrictWps[CSW_P228]) && (team == _TEAM_CT) && (get_user_rank(id) >= 8)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } case CSW_DEAGLE: { if (!IsRestricted[CSW_DEAGLE] && get_user_rank(id) >= 11)// jezeli index rangi gracza jest wiekszy od np. 3 tzn ma range wieksza niz RANKS_Easy { return ITEM_ENABLED } else if ((UsedWpsT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_T) && (get_user_rank(id) >= 11) // tu chyba sprawdza czy na mapie danej broni nie ma zbyt duzo osob (np. max 3 osoby z AK na mapce. Jezeli ma mniej niz 3 to odblokuj opcje) || (UsedWpsCT[CSW_DEAGLE] < RestrictWps[CSW_DEAGLE]) && (team == _TEAM_CT) && (get_user_rank(id) >= 11)) { return ITEM_ENABLED } else { return ITEM_DISABLED } } default: return ITEM_DISABLED; } /*else if (!IsRestricted[weaptype]) { return ITEM_ENABLED } else if ((UsedWpsT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_T) || (UsedWpsCT[weaptype] < RestrictWps[weaptype]) && (team == _TEAM_CT)) { return ITEM_ENABLED } else { return ITEM_DISABLED }*/ return PLUGIN_HANDLED }
Przy takim kodzie roboczym zablokowany jest dgl, p90, sg522 i ak. Nie mam pojęcia co tu się wyrabia
Toldi
19.10.2018
Przecież w PRIMARY nie ma pistoletów (slot 2) tylko wszystko to co jest w slocie 1 w takim razie czemu wpisałeś tam fiveseven, dgl, p228? AK blokuję dlatego (chyba) że nie podałeś go w case.
default: return ITEM_DISABLED;
blokuje wszystkie opcję w menu, które w nim są a nie są podane wyżej w case czyli między innymi AK. Może podaj .sma + .inc csdm
METALOWIEC
19.10.2018
Przecież w PRIMARY nie ma pistoletów (slot 2) tylko wszystko to co jest w slocie 1 w takim razie czemu wpisałeś tam fiveseven, dgl, p228? AK blokuję dlatego (chyba) że nie podałeś go w case.
default: return ITEM_DISABLED;blokuje wszystkie opcję w menu, które w nim są a nie są podane wyżej w case czyli między innymi AK. Może podaj .sma + .inc csdm
to tylko kod roboczy bez uzupełnienia wszystkich opcji, w przypadku użycia case i braku broni w menu nie powinno mieć to żadnego efektu na skrypt (po prostu nie da sie wywołać danego case i powinno korzystać właśnie z default: - ale tak się nie dzieje, bardziej martwi mnie kwesta że np. glock w secondary pomimo nadania limitu nie został zablokowany.
Główny + inc w złączniku.
@edit
Pozostałych primary też nie ma w case a jednak nie są blokowane w żaden sposób.
Załączone pliki
Użytkownik METALOWIEC edytował ten post 19.10.2018 19:40
METALOWIEC
19.10.2018
@update, niestety logi dalej wywalają ten sam błąd, ale po zmianie silnika na rehlds blokowanie wygląda na poprawnie, dam pełne info jak zrobie całe menu