[Poradnik] Jak naprawić menu z generatora...
Drago36
02.08.2014
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.
BlackPerfum
02.08.2014
Nie mam amxx stidio... Co to w ogóle? W tym się pisze? Nie wszyscy lubią takie bAdZiEwIa. Już prędzej "dowolny edytor tekstowy".Co robimy pierwsze? No pewnie , że otwieramy naszego vip'a.sma w programie typu : amxx-studio
Teraz spróbuję ci wpoić do twojego mUzgÓ że ten temat nie sprawi iż ilość tematów zmaleje gdyż twój poradnik "Jak naprawić menu z generatora Vip'a?" ma parę błędów a że ja z lupą chodze po tym forum to ci je pokażę byś się samodoskonalił (z moją małą pomocą ). No to lecimy:
• co z tego że menu zadziała jak w połowie przypadków broń zostanie błędnie dodana (głównie chodzi o to że bez ammo) chodzi o to iż funkcja find_ent_by_owner zazwyczaj nie działa gdy dopiero co stworzyliśmy byt chodzi mi o to:
• jaki nie mądry człek (bardzo bardzo ... bardzo ładnie mówiąc) nauczył cię by poprzez 3 argument funkcji menu_additem przekazywać nr. przycisku?? To jest mega, mega błąd. Mogłeś również zrobić globalną tablicę gdyż to wygląda identycznie... Po to w uchwycie menu (public menu_handler(id, menu, item)) ma się zmienną item by można było szybko się dowiedzieć który był przycisk naciśnięty a ty to robisz tak: wpakowujesz do każdego przycisku jego liczbę, następnie w uchwycie pobierasz z wciśniętego przycisku tą liczbę... Po co? Przecież wiesz który przycisk został naciśnięty
• nawet nie opisałeś sposobu by jedne zestawy były dla CT a inne dla TT (a to jest w generatorze vip'a), tak samo brak licznika rund (a on jest wbudowany w generatorze wystarczy warunek zrobić), wszystko jest za free w menu super!! Gracze się ucieszą (ale tylko vip'y) tzn. nie będzie zabierać kasy jak w generatorze ustawisz by zabierało
Twój cały tut można zamienić na coś takiego:
1. Zamienić to:
public menu_callback(id, menu, item){ return ITEM_DISABLED; }Na to:
public menu_callback(id, menu, item) return ITEM_ENABLED2. Zamienić to:
public menu_handler(id, menu, item){ menu_destroy(menu); return PLUGIN_HANDLED; }Na to:
public menu_handler(id, menu, item) { if(item != MENU_EXIT) { new func[20] formatex(func,charsmax(func),"menu_%i_handler",item+1) callfunc_begin_i(get_func_id(func)) callfunc_push_int(id) callfunc_end() } menu_destroy(menu) }I osoba czytająca nie musi już robić niczego inteligentnego, wystarczy że będzie kopiowac i wklejać a uzyska taki sam efekt jak u ciebie tylko że tu sie nie namęczy, a co ważniejsze nie pomyli... (można by było też callbacki wyrzucić bo nic nie robią ale to pikuś)
Rozumiem że CheQ to wymusił (hahahaha) ale bez przesady, jeśli miał by ktoś napisać tuta jak naprawić wszystkie błędy w generatorze to napisał by conajmniej książkę (jak nie całą sagę). Mogły by osoby mające dostęp do kodu generatora to sprawnie naprawić lub chociaż umieścić to na git'cie amxx'a / w dziale dla supporta, zajeli byśmy się nim i to odpowiednio
Drago36
02.08.2014
• co z tego że menu zadziała jak w połowie przypadków broń zostanie błędnie dodana (głównie chodzi o to że bez ammo) chodzi o to iż funkcja find_ent_by_owner zazwyczaj nie działa gdy dopiero co stworzyliśmy byt chodzi mi o to:
Spoiler
w ogóle to funkcja find_ent_by_owner jest niepotrzebna gdyż funkcja give_item zwraca id stworzonego bytu...
Nie do tematu.. opisałem jak naprawić menu, nie jak "lepiej" dodać broń - nie ja pisałem vip'a generatora.
• jaki nie mądry człek (bardzo bardzo ... bardzo ładnie mówiąc) nauczył cię by poprzez 3 argument funkcji menu_additem przekazywać nr. przycisku?? To jest mega, mega błąd. Mogłeś również zrobić globalną tablicę gdyż to wygląda identycznie... Po to w uchwycie menu (public menu_handler(id, menu, item)) ma się zmienną item by można było szybko się dowiedzieć który był przycisk naciśnięty a ty to robisz tak: wpakowujesz do każdego przycisku jego liczbę, następnie w uchwycie pobierasz z wciśniętego przycisku tą liczbę... Po co? Przecież wiesz który przycisk został naciśnięty
No tu masz rację. Zara poprawie.
• nawet nie opisałeś sposobu by jedne zestawy były dla CT a inne dla TT (a to jest w generatorze vip'a), tak samo brak licznika rund (a on jest wbudowany w generatorze wystarczy warunek zrobić), wszystko jest za free w menu super!! Gracze się ucieszą (ale tylko vip'y) tzn. nie będzie zabierać kasy jak w generatorze ustawisz by zabierało
Wcześniej te warunki się generowały w menu_%i_handler, dlatego nie opisywałem tego. No cóż teraz nie. Oczywiście dodam.
Twój cały tut można zamienić na coś takiego:
1. Zamienić to:
public menu_callback(id, menu, item){
return ITEM_DISABLED;
}
Na to:
public menu_callback(id, menu, item) return ITEM_ENABLED
2. Zamienić to:
public menu_handler(id, menu, item){
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Na to:
public menu_handler(id, menu, item)
{
if(item != MENU_EXIT)
{
new func[20]
formatex(func,charsmax(func),"menu_%i_handler",item+1)
callfunc_begin_i(get_func_id(func))
callfunc_push_int(id)
callfunc_end()
}
menu_destroy(menu)
}
I osoba czytająca nie musi już robić niczego inteligentnego, wystarczy że będzie kopiowac i wklejać a uzyska taki sam efekt jak u ciebie tylko że tu sie nie namęczy, a co ważniejsze nie pomyli... (można by było też callbacki wyrzucić bo nic nie robią ale to pikuś)
No i Benio miał rację. Nie sprawdzasz co dodajesz i wskazujesz ludziom błędy. Tak niech kopiują twoją opcję i narzekają , że nadal nie działa
Rozumiem że CheQ to wymusił (hahahaha) ale bez przesady, jeśli miał by ktoś napisać tuta jak naprawić wszystkie błędy w generatorze to napisał by conajmniej książkę (jak nie całą sagę). Mogły by osoby mające dostęp do kodu generatora to sprawnie naprawić lub chociaż umieścić to na git'cie amxx'a / w dziale dla supporta, zajeli byśmy się nim i to odpowiednio
Chodziło tylko o menu , a ty robisz z igły widły aby robić niby tutki na naprawę całego generatora eh
BlackPerfum
02.08.2014
Nie "lepiej"! Przeczytaj jeszcze raz mój post! Chodziło mi o to iż ludzie nadal będą się czepiać iż im coś z menu nie działa (a dokładnie ammo do broni czasem nie bedzie dodawane).Nie do tematu.. opisałem jak naprawić menu, nie jak "lepiej" dodać broń - nie ja pisałem vip'a generatora.
To nie był błąd, a jedynie szybszy sposób twojego tut'a. Poza tym to działa!!! Sprawdź jak nie wierzysz. Przykładowy kod vip'a:No i Benio miał rację. Nie sprawdzasz co dodajesz i wskazujesz ludziom błędy. Tak niech kopiują twoją opcję i narzekają , że nadal nie działa
Vip.sma 2,19 KB 217 Ilość pobrań
Nie rozumiesz czegoś, jeśli zrobisz tut'a o menu który nie będzie w pełni sprawiał iż menu bedzie poprawnie działać to ludzie nadal bedą robić tematy zwiazane z vip'em bo coś im tam nie działa. Dlatego wniosłem pomysł:Chodziło tylko o menu , a ty robisz z igły widły aby robić niby tutki na naprawę całego generatora eh
Mówiąc to miałem na myśli by nie robić żadnego tut'a!!! W dziale support'u lub na git'cie to raz zrobić by działało i bedzie spokój z tematami związanymi z vip'emMogły by osoby mające dostęp do kodu generatora to sprawnie naprawić lub chociaż umieścić to na git'cie amxx'a / w dziale dla supporta, zajeli byśmy się nim i to odpowiednio
G[o]Q
02.08.2014
@up czepiasz sie i Ci nie wychodzi
on napisał jak naprawić to co nie dziala w generatorze (po cholere w ogóle ten generator?) a ty go obwiniasz o to że generator generuje wg ciebie slaby kod jakby to Drago go pisał
a co do przekazywania paremetru przy dodawaniu opcji to czy jesli mamy kilka stron menu to co jest w parametrze item? (pytam bo nie pamietam ) no albo jak by chcial zrobic menu graczy czy cos to ta praktyka jest odpowiednia (nie wiem co mial na mysli autor kodu ale piszesz tak jakby to zawsze byl blad)
programik typu amxx-studio to wg mnie jaki kolwiek edytor który będzie kolorować skladnie w pliku sma wiec to lepsze okreslenie niż dowolny edytor textu
Nie rób z siebie gwiazdy i nie obrazaj (dodatkowo uzywajac jakiegos poke-jezyka) bo gwiazdy maja to do siebie ze lubią spadać
BlackPerfum
02.08.2014
Nie obwiniam i tez jestem za tym żeby go wogóle nie bylo ale jeśli już jest to wypadałoby by działał. Twierdzę jedynie iż ten temat nie zakończy serii tematów o problemach z vip'emon napisał jak naprawić to co nie dziala w generatorze (po cholere w ogóle ten generator?) a ty go obwiniasz o to że generator generuje wg ciebie slaby kod jakby to Drago go pisał
1,2,3,...,97,98,99 itdco jest w parametrze item?
W menu graczy nie przesyłał by sztywnych cyfer a serial id danego gracza a to jest duża różnicajak by chcial zrobic menu graczy czy cos to ta praktyka jest odpowiednia (nie wiem co mial na mysli autor kodu ale piszesz tak jakby to zawsze byl blad)
Ten sposób działania nad przekazywaniem i odbieraniem numeru przycisku jest błędny ale nikt nie mówi że inne sposoby są złe(nie wiem co mial na mysli autor kodu ale piszesz tak jakby to zawsze byl blad)
Wtf? Sory ale nie świecęNie rób z siebie gwiazdy
gdzie ja tu go obraziłem?nie obrazaj
MonsterLevel
07.08.2014
PowstaniecGanru
12.08.2014
Mógłby ktoś napisać jak zrobić,żeby menu wyświetlało się po np 3 rundzie.
jaro3376
15.08.2014
jak koledzy wyżej wszystko działa ale wiecie jeszcze jak zrobić menu od 3 rundy?
radim
19.08.2014
Twierdzę jedynie iż ten temat nie zakończy serii tematów o problemach z vip'em
Może z całym vipem nie, ale z samym menu tak, bo to tego owy temat dotyczy jak sama nazwa na to wskazuje. To że jest innych niepotrzebnych kodów i według Ciebie błędów, które trzeba naprawić to zrób poradnik (Jest już jeden temat Gwynka "Dobre i złe nawyki tworzenia menu" więc nie wiem po co tutaj te niepotrzebne spiny do Draga).
A co do samego generatora, po co wydawać coś co nawet 'nie działa' poprawnie i nikt się tym nie zajmie?
+ za fatygę ; )
n-ty dzien
26.09.2014
Niepotrzebnie tyle grzebania. Tutaj prosto i przyjemnie: http://amxx.pl/topic...a-z-generatora/