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.


Dodatki SourceMod







Vip.amxx








