WITAM
Ostatnio wzrastającą liczbą tematów są problemy nie działającego menu vip'a!
Jak temu zaradzić? Tu z pomocą wchodzi CheQ ( bo mnie zmusił )
Krok po kroku aż do celu
Co robimy pierwsze? No pewnie , że otwieramy naszego vip'a.sma w programie typu : amxx-studio
1. Najpierw zacznijmy od usunięcia niepotrzebnych rzeczy w kodzie.
Zmienna menu_callback_handler nie posłuży nam niczym - wyrzucamy.
Także usuwamy dwa poniższe funkcje.
public menu_callback(id, menu, item){ return ITEM_DISABLED; } public menu_handler(id, menu, item){ menu_destroy(menu); return PLUGIN_HANDLED; }
Szukamy w naszym kodzie, zaznaczamy i usuwamy.
2. A teraz musimy się skupić (if you know what i mean).
Cały public show_vip_menu(id) podmieniamy na ten poniższy.
Czyli z tego:
public show_vip_menu(id){ menu=menu_create("\rMenu VIPa","menu_handler"); menu_callback_handler=menu_makecallback("menu_callback"); new bool:active=false, num=-1; menu_additem(menu,"\w","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } if(active){ menu_setprop(menu,MPROP_EXITNAME,"Wyjscie"); menu_setprop(menu,MPROP_TITLE,"\yMenu Vipa"); menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); menu_display(id, menu); } else { menu_destroy(menu); } }
Zmieniamy na:
public show_vip_menu(id) { menu = menu_create("\rMenu Vip'a:", "menu_handler"); menu_additem(menu, "\wDodatki nr 1", "1", 0); menu_additem(menu, "\wDodatki nr 2", "2", 0); menu_additem(menu, "\wDodatki nr 3", "3", 0); menu_additem(menu, "\wDodatki nr 4", "4", 0); menu_additem(menu, "\wDodatki nr 5", "5", 0); menu_additem(menu, "\wDodatki nr 6", "6", 0); menu_additem(menu, "\wDodatki nr 7", "7", 0); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); }
W miejsca "Dodatki nr (...)" zmieniamy na dokładny opis co ustawiliśmy w menu, a nie potrzebne usuwamy. Jeśli w pierwszej opcji menu ustawiliśmy graczowi dostawanie ak47 to musimy to wpisać, a gdy nie pamiętamy co ustawiliśmy to szukamy w naszym kodzie:
public menu_numer_handler(id) - w miejsce "numer" będzie od 1 do 7.
,a w tej funkcji będą linijki typu "weapon_deagle"/"weapon_ak47" - na chłopski rozum się domyślamy, że slot nr. 1 da nam dgl i ak.
Ja na przykład wygenerowałem sobie takiego vipa, że w menu może wybrać jedną z trzech opcji: AK+DGL, M4+DGL lub M3+DGL.
A więc wychodzi na to, że u mnie public show_vip_menu(id) będzie wyglądał tak:
3. Połowa rzeczy już za nami.
Teraz należy dodać tę funkcję, gdzieś na samym dole kodu.
public menu_handler(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[8], iName[64]; new zaccess, callback; menu_item_getinfo(menu, item, zaccess, data,7, iName, 64, callback); new key = str_to_num(data) switch(key) { case 1: menu_1_handler(id) case 2: menu_2_handler(id) case 3: menu_3_handler(id) case 4: menu_4_handler(id) case 5: menu_5_handler(id) case 6: menu_6_handler(id) case 7: menu_7_handler(id) } menu_destroy(menu); return PLUGIN_HANDLED; }
I oczywiście nie potrzebne usuwamy
W moim menu są tylko trzy opcje, więc je zostawiłem.
4. Teraz należy skompilować i podmienić naszego vip'a na serwer.