Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] menu_create zawsze zwraca 0 (?) :O


  • Zamknięty Temat jest zamknięty
8 odpowiedzi w tym temacie

#1 Ossal

    Wszechwidzący

  • Użytkownik

Reputacja: 20
Życzliwy

  • Postów:273
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 08.05.2015 17:28

W dokumentacji czytamy, że menu_create Tworzy menu oraz zwraca jego uchwyt.

Ostatnio kombinowałem z menusami i doszedłem do wniosku, ze menu_create zawsze zwraca 0, czyli nie istnieje coś takiego jak uchwyt menu.
Wyszło to jak chciałem zrobić sobie 3 menu globalne (takie, które tworzy się tylko raz i nie ma menu_destroy(menu) w handlerze)
Jak się okazało próba wyświetlenia menu drugiego skutkowało wyświetleniem pierwszego, zdziwiłem się i poprosiłem plugin o wypisanie mi wartości wszystkich 3 "uchwytów" menu, okazało się, że są to trzy zera. Czyli menu globalne może być jedno i nie może być innych menu w tym pluginie, bo próba wyświetlenia jakiegokolwiek menu wyświetli pierwsze utworzone menu globalne.
Wniosek z tego taki, że nie potrzebne nam "uchwyt", który zawsze jest zerem, a funkcja budująca i wyświetlająca zamiast:

new menu=menu_create("tytul menu","handler_menu")
menu_additem(menu,"nazwa itemka")
menu_additem(menu,"nazwa itemka 2)
//i nie wiadomo ile tych itemów. itp + na przykład
menu_setprop(menu, MPROP_EXITNAME,"wyjdz")
menu_display(id,menu)

Mogłaby wyglądać tak:

menu_create("tytul menu","handler_menu")
menu_additem(0,"nazwa itemka")
menu_additem(0,"nazwa itemka 2)
//i nie wiadomo ile tych itemów. itp + na przykład
menu_setprop(0, MPROP_EXITNAME,"wyjdz")
menu_display(id,0)

Co oszczędza  trochę pisania i odwoływania się do zmiennej (przy rozbudowanym menu) nawet ze 20 razy.

Tak samo w handlerze

handler_menu(id,menu,item)

zmienna menu zawiera 0, więc zamiast menu_destroy(menu) może być menu_destroy(0)
Ja jestem nieco zdumiony, że to działa, co Wy na to?
Jeżeli to kompletna bzdura, to wyjaśnijcie czemu, a jeżeli nie to proszę o przerzucenie do "gotowe funkcje" i usunięcie tego zdania, pozdrawiam :)
 

 


Użytkownik Ossal edytował ten post 08.05.2015 17:30

  • +
  • -
  • 0

#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 08.05.2015 18:04

Pokaż te swoje globalne menu (nie wiem jak w liczbie mnogiej ma być), bo chyba musisz robić coś nie tak, bo sam wielokrotnie takich menu robiłem bardzo wiele i nigdy z takim czymś się nie spotkałem.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#3 Ossal

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 20
Życzliwy

  • Postów:273
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 08.05.2015 18:07

Też nie mam pojęcia jaka jest liczba mnoga od "menu", a tych menu Ci tu nie wkleję bo już je zamieniłem na lokalne :P


  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 09.05.2015 09:06

Pierwsze menu ma ID równe 0, więc nie dziwi to, że możesz wywołać menu bez podawania ID. Każde następne menu jednak ma ID większe, dlatego wywołuje Ci się tylko 1 "globalne" menu.

Wywołaj sobie kilka menu_create pod rząd i zobacz jakie wartości zwracają (po prostu wypisz je sobie np w czacie).
  • +
  • -
  • 2

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#5 Ossal

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 20
Życzliwy

  • Postów:273
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 09.05.2015 11:55

Tyle napisałem i przeglądarka off... Nie chce mi się od nowa.
Podsumowując oboje panowie macie rację, wysunąłem zbyt pochopne wnioski. Co nie zmienia faktu, że jak mamy jedno menu w pluginie i użyjemy menu_destroy, to możemy metody zerowej używać :)
 Pozdrawiam, dzięki, close :)

PS zajrzyjcie w nierozwiązany mój temat w pluginach :P


Użytkownik Ossal edytował ten post 09.05.2015 11:58

  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 09.05.2015 22:31

użyjemy menu_destroy, to możemy metody zerowej używać :)


Nie, nie możemy. ID menu nie są per plugin więc jeśli jakikolwiek inny plugin przed naszym menu zarejestruje (wbudowane w amxx pluginy nie używają nowego menu) to możemy z metodą zerową się pożegnać.

Jaki problem jest przechowywać handler? Po co tak kombinować?
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#7 Puchate

    Wszechobecny

  • Użytkownik

Reputacja: 204
Profesjonalista

  • Postów:433
  • Lokalizacja:Polska
Offline

Napisano 10.05.2015 15:44

*
Popularny

 

użyjemy menu_destroy, to możemy metody zerowej używać :)


Nie, nie możemy. ID menu nie są per plugin więc jeśli jakikolwiek inny plugin przed naszym menu zarejestruje (wbudowane w amxx pluginy nie używają nowego menu) to możemy z metodą zerową się pożegnać.

Jaki problem jest przechowywać handler? Po co tak kombinować?

 

 


 

 


Jaki problem jest przechowywać handler? Po co tak kombinować?
 

Pseudooptymalizacja, pamięć w serwerach liczymy w dziesiątkach GB a ludzie szukają optymalizacji w pamięci liczonej w dziesiątkach bitów ;) bo ktoś im wmówił że to zmienne są nieoptymalne, a nikt nie wspomniał że najwięcej CPU zużywają pluginy których logika działania jest źle wykonana  ;)


MAGNET (10.05.2015 22:20):
Polać mu

Użytkownik Puchate edytował ten post 10.05.2015 15:46

  • +
  • -
  • 5

#8 Ossal

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 20
Życzliwy

  • Postów:273
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 10.05.2015 20:58

O czym wy tu dyskutujecie, temat był do zamknięcia, czyż nie? Close :)


  • +
  • -
  • 0

#9 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 10.05.2015 21:02

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych