←  Modyfikacje pluginów

AMXX.pl: Support AMX Mod X i SourceMod

»

[Poradnik] Jak naprawić menu z generatora...

  • +
  • -
Drago36 - zdjęcie Drago36 02.08.2014

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.

Spoiler

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:

Spoiler

 

 

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.

Spoiler

 

4. Teraz należy skompilować i podmienić naszego vip'a na serwer.

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 02.08.2014

Drago36 cieszę się że się starasz ale proszę cię... Najpierw się pośmiejmy ze mnie (by nie było że po sobie tez nie jade) haha.gif
 

Co robimy pierwsze? No pewnie , że otwieramy naszego vip'a.sma w programie typu : amxx-studio

Nie mam amxx stidio... Co to w ogóle? W tym się pisze? Nie wszyscy lubią takie bAdZiEwIa. Już prędzej "dowolny edytor tekstowy".

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ą haha.gif). 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:
Spoiler
w ogóle to funkcja find_ent_by_owner jest niepotrzebna gdyż funkcja give_item zwraca id stworzonego bytu...

• 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_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ś)


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
Odpowiedz

  • +
  • -
Drago36 - zdjęcie 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 :X

 


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


Drago36 (02.08.2014 15:58):
P.S Wieczorem poprawie kod z menu_handler, aby nie pobierać str_to_num, skoro mamy item ;)

I warunki ct/tt, po ilu rundzie itp.
Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 02.08.2014

Nie do tematu.. opisałem jak naprawić menu, nie jak "lepiej" dodać broń - nie ja pisałem vip'a generatora.

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).
 

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

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:
Załączony plik  Vip.sma   2,19 KB   217 Ilość pobrań
 

Chodziło tylko o menu , a ty robisz z igły widły aby robić niby tutki na naprawę całego generatora eh

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ł:

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

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'em
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie 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 xD) 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ć

 

 

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 02.08.2014

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ł

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'em

co jest w parametrze item?

1,2,3,...,97,98,99 itd

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)

W menu graczy nie przesyłał by sztywnych cyfer a serial id danego gracza a to jest duża różnica

(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 rób z siebie gwiazdy

Wtf? Sory ale nie świecę :(

nie obrazaj

gdzie ja tu go obraziłem?
sharkowy (03.08.2014 12:34):
"gdzie ja tu go obraziłem?"

Swoją arogancją obrażasz inteligencje ludzi :D
BlackPerfum (03.08.2014 15:27):
Bardzo mi przykro że byłem arogancki, a dokładnie za to że to zabrzmiało arogancko. Niczego takiego na myśli nie miałem. Jedynie nie potrafię poprawnie przekazywac tego o co mi chodzi
Odpowiedz

  • +
  • -
MonsterLevel - zdjęcie MonsterLevel 05.08.2014

Działać działa ale menu daje już w 1 rundzie, ktoś wie jak to zmienić?


Drago36 (05.08.2014 20:53):
Sory miałem zrobić to opisać ostatnio, ale błędy na forum. ;)

Do jutra opisze.
Odpowiedz

  • +
  • -
MonsterLevel - zdjęcie MonsterLevel 07.08.2014

Eh wiem, że masz swoje życie ale to dla Ciebie kilka minut pisania a dla mnie kolejny dzień głowienia się nad tym :/
Odpowiedz

  • +
  • -
PowstaniecGanru - zdjęcie PowstaniecGanru 12.08.2014

Mógłby ktoś napisać jak zrobić,żeby menu wyświetlało się po np 3 rundzie.

Odpowiedz

  • +
  • -
jaro3376 - zdjęcie jaro3376 15.08.2014

jak koledzy wyżej wszystko działa ale wiecie jeszcze jak zrobić menu od 3 rundy?


Drago36 (15.08.2014 19:36):
Dodam jak wrócę z wakacji.
Chyba, że znajdę kawiarenkę to uzupełnię.
Odpowiedz

  • +
  • -
radim - zdjęcie 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ę ; )
Odpowiedz

  • +
  • -
n-ty dzien - zdjęcie n-ty dzien 26.09.2014

Niepotrzebnie tyle grzebania. Tutaj prosto i przyjemnie: http://amxx.pl/topic...a-z-generatora/

Odpowiedz

  • +
  • -
#3Skille Grease'M - zdjęcie #3Skille Grease'M 28.09.2014

Je też wole Generator VIP ;P

Odpowiedz