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

Problem z menu klas


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 GoldenKill

    Guru

  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 07.11.2013 23:12

Witam 

 

Ostatnio zauważyłem na serwerze problem który występuje w menu klasy. Zamiast lvl przy elfie znajduje się on w mordercy a tarantula nie ma w ogóle lvl ciągle piszę 1, a jak się wybierze klasę to pokazuje prawdziwy lvl oto kod

public ShowKlasy(id) 
{
	new text2[512]

        asked_klass[id]=0

	format(text2, 511,"\yWybierz klase - ^n\w1. Legionista \w[Level: %i]^n2. Merial \w[Level: %i]^n3. Baal \w[Level: %i]^n4. Bard \w[Level: %i]^n5. Elf \w[Level: %i]^n6. Morderca \w[Level: %i]^n7. Tarantula \w[Level: %i]^n8. Upadly \w[Level: %i]^n^n0.\yWroc^n^n", player_class_lvl[id][9],player_class_lvl[id][10],player_class_lvl[id][11],player_class_lvl[id][12],player_class_lvl[id][13],player_class_lvl[id][14],player_class_lvl[id][15],player_class_lvl[id][16])
	
	show_menu(id, klawisze,text2, -1, "ultardiablokalsy")
	
	
}
public PressedKlasy(id, key) 
{
	g_haskit[id] = 0
	c_jump[id] = 0
	g_piorun[id] = 0
	c_lecz[id] = 0
	c_redirect[id] = 0
	wczytalo[id] = 0
	c_antyarchy[id] = 0
	c_wampir[id] = 0
	player_b_silent[id] = 0
	player_b_explode[id] = 0
	anty_flesh[id]=0
	c_shake[id]=0
	c_blind[id] = 0
	
	switch (key) {
		case 0:
		{
			player_class[id] = Legionista
			c_jump[id] = 2
			LoadXP(id, player_class[id])
		}
		case 1:
		{
			player_class[id] = Merial
			g_piorun[id] = 1
			c_lecz[id] = 10
			LoadXP(id, player_class[id])
			set_task(4.0, "dajuzdrow", id)
		}
		case 2:
		{
			player_class[id] = Baal
			c_redirect[id] = 5
			LoadXP(id, player_class[id])
		}
		case 3:
		{
			player_class[id] = Bard
			g_piorun[id] = 1
			c_lecz[id] = 10
			LoadXP(id, player_class[id])
			set_task(4.0, "dajuzdrow", id)
		}
		case 4:
		{
			player_class[id] = Elf
                        c_jump[id] = 1
			LoadXP(id, player_class[id])
		}
		case 5: 
		{	
			player_class[id] = Morderca
			LoadXP(id, player_class[id])
		}
		case 6:
		{	
			player_class[id] = Tarantula
                        c_wampir[id] = 10
			LoadXP(id, player_class[id])
		} 
		case 7: 
		{	
			player_class[id] = Upadly
			anty_flesh[id]=1
			c_blind[id] = 15
			c_shake[id]=5
			LoadXP(id, player_class[id])
		}
		case 9:
		{
			select_class(id)
		}
	}
	LoadXP(id, player_class[id])
	otwarte_menu[id] = false
	CurWeapon(id)
	give_knife(id)
	
	return PLUGIN_HANDLED
} 

  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 07.11.2013 23:43

Pomieszałeś 2 style menu, stare i nowe... Przez co przy wyborze klasy 1 użytkownik dostanie klasę 2, przy wyborze 2 dostanie 3 i tak dalej... ale z tego, co napisałeś to masz problem z wyświetlaniem levelu...

 

No i właśnie chyba nie do końca... Levele wyświetlane w menu moim zdaniem się pokrywają, jednak po wyborze klasy wybierasz tak naprawdę inną...

 

Polecam użyć systemu nowych menu...

public ShowKlasy(id) 
{
    new menu = menu_create("Wybierz klasę", "PressedKlasy");
    asked_klass[id]=0
 
    new item[64], info[6];
    formatex(item, 63, "Legionista [Level: %i]", player_class_lvl[id][Legionista]);
    num_to_str(Legionista, info, 5);
    menu_additem(menu, item, info);
 
    formatex(item, 63, "Merial [Level: %i]", player_class_lvl[id][Merial]);
    num_to_str(Merial, info, 5);
    menu_additem(menu, item, info);
 
    // Tutaj dodaj dalsze klasy w ten sposób, jak powyższe.
   
    menu_display(id, menu);
}
 
public PressedKlasy(id, menu, item) 
{
    if(item == MENU_EXIT) {
        menu_destroy(menu)
        return PLUGIN_HANDLED;
    }
 
    new access, info[6], callback;
    menu_item_getinfo(menu, item, &access, info, 5, _, _, &callback);
    new class = str_to_num(info);
       
    player_class[id] = class
    LoadXP(id, player_class[id])
 
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

2 zalecenia: umiejętności klas nie powinny być przyznawane w handlerze menu, powinny być raczej odpowiednie umiejętności rozpoznane na podstawie klasy gracza, a nie poprzez coś takiego:

anty_flesh[id]=1
c_blind[id] = 15
c_shake[id]=5

Tego w moim kodzie nie ma z 2ch przyczyn: po pierwsze, jest nieładne, po drugie, przy tak napisanym kodzie, jak teraz, aby dodać klasę do menu, wystarczy edytować w 1 miejscu. Można też zrobić pętlę po nazwach klas i tworzyć menu całkowicie automatycznie. zwróć uwagę na tworzenie zmiennej info i jej użycie :) Tak się jej używa, a nie do późniejszego użycia zamiast "item"

 

co do Twojego kodu: błędem jest to, że numerowanie w starych menu (key) zaczyna się od 1, w nowych (item) od 0, Ty użyłeś od 0, a powinieneś o 1 (o switch mi chodzi oczywiście).


  • +
  • -
  • 1

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


#3 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 07.11.2013 23:58

Wzorowałem się na menu z diablo moda by stachuu. Mam użyte od 0 w każdym switch tylko akurat w tym mi źle lvl wyświetlają (patrząc na inne diablo switch zaczynał się od 0) 


  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 08.11.2013 07:58

W starym typie menu do handlera otrzymujesz numer klawisza, który gracz wcisnął i może ta wartość być od 0 do 9. W nowym typie menu otrzymujesz ID pozycji z menu_additem, które może mieć wartość nawet i 1000 ze względu na automatyczne tworzenie stron w menu. Popraw to, a zobaczysz, że zacznie działać ;) Inne menu też pewnie źle Ci działają, ale tego nie widzisz... no chyba, że nie pomieszałeś tam 2ch typów menu.


  • +
  • -
  • 1

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 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 08.11.2013 15:24

Nic nie pomogło :(


  • +
  • -
  • 0

#6 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 09.11.2013 10:32

Poradziłem sobie do zamknięcia 


  • +
  • -
  • 0




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

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