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

Wyświetlanie zawartości tablicy


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

#1 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 08.08.2011 21:50

Witam mam taką tablicę.
new const zadania[][] =
{
	{1,"Brak",0,0,0,0},
	{1,"Zabij 5 osób w 1 rundzie",300,5,ZABIJ+PRZEZ_RUNDE+ZAPISZ,5}, //1
	{1,"Zabij 3 osoby Hs w 1 rundzie",330,4,ZABIJ+PRZEZ_RUNDE+ZAPISZ,3},//2
	{1,"Podłuż 5 Bomb w ciągu mapy",400,10,PODLOZ+PRZEZ_MAPE+ZAPISZ,5}, //3
	{1,"Uratuj 3 razy hosty w ciągu mapy",350,8,URATUJ+PRZEZ_MAPE+ZAPISZ,3}, //4
	{1,"Zabij 20 Snajperów Hs",250,7,ZABIJ+ZAPISZ,20}, //5
	{1,"Przeżyj 1 runde bez zgona",500,11,NIE_MOZE_ZGINAC+ZAPISZ,1}, //6
	{1,"Zabij 100 osób Hs",1500,30,ZABIJ+ZAPISZ,100}, //7
	{1,"Rozbrój 20 Bomb",600,14,ROZBROJ+ZAPISZ,20}, //8
	{1,"Zabij 15 Vipów",420,12,ZABIJ+ZAPISZ,15}, //9
	{1,"Zabij 2 Premium w ciągu rundy",200,6,ZABIJ+PRZEZ_RUNDE+ZAPISZ,2}, //10
	{1,"Zabij 50 osób",600,23,ZABIJ+ZAPISZ,50}, //11
	{1,"Zabij 20 osób z AK47 lub M4A1 (Broń można kupić w sklepie)",300,14,ZABIJ+ZAPISZ,20}, //12
	{1,"Zabij 2 Osoby Hs z Kosy",150,5,ZABIJ+ZAPISZ,2}, //13
	{1,"Zabij 2 razy osobę rozbrajającą pakę",340,8,ZABIJ+ZAPISZ,2}, //14
	{1,"Zabij 3 razy osobę niosącą pakę",350,9,ZABIJ+ZAPISZ,3} //15
};

a tu wyświetlanie
	format(menuitem, 159, "\w%s \r[\yNagroda: %i XP i %i Monet\r] [\yPostep: %i/%i\r]", zadania[i][1], zadania[i][2], zadania[i][3], postep[id][i], zadania[i][5]);

I opis się wyświetla lecz nie wyświeltlają się nagrody, postęp co jest źle ? Oraz możecie mi powiedzieć jak zrobić żeby zadania[i][0] przydzielało do poszczególnych menu tzn chcę zrobić jak w tych questach od darkgl od poziomów oczywiście mam tablicę z przedziałem
zresztą tu macie całe menu
public PokazZadania(id)
{
	new menu = menu_create("Zadania:", "Zadanie_Handle");
	new cb = menu_makecallback("Zadanie_CallBack");
	
	new menuitem[160]
	for(new i=1; i < sizeof zadania; i++)
	{
		format(menuitem, 159, "\w%s \r[\yNagroda: %i XP i %i Monet\r] [\yPostep: %i/%i\r]", zadania[i][1], zadania[i][2], zadania[i][3], postep[id][i], zadania[i][5]);
		menu_additem(menu, menuitem, _, _, cb);
	}
	
	menu_setprop(menu, MPROP_PERPAGE, 5);
	menu_display(id, menu);
}

public Zadanie_Handle(id, menu, item)
{
	if(item++ == MENU_EXIT)
	{
		menu_destroy(menu);
		return;
	}
	
	zadanie_gracza[id] = item;
}

public Zadanie_CallBack(id, menu, item)
{
	item++;
	if(postep[id][item] >= zadania[item][5])
		return ITEM_DISABLED;
		
	return ITEM_ENABLED;
}

Dołączona grafika

Użytkownik Jak się nazwać edytował ten post 08.08.2011 22:13

  • +
  • -
  • 0
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 08.08.2011 22:11

to nie PHP, że każdy element tablicy może być czymś innym ; co prawda to się kompiluje, ale dostęp do danych jest o wiele bardziej skomplikowany niż myślisz

{1,"Zabij 5 osób w 1 rundzie",300,5,ZABIJ+PRZEZ_RUNDE+ZAPISZ,5}
w pamięci wygląda tak
[0] 1
[1] 'Z'
[2] 'a'
[3] 'b'
[4] 'i'
[5] ''j
...
[23] 'z'
[24] 'i'
[25] 'e'
[26] 300
[27] 5
[28] ZABIJ+PRZEZ_RUNDE+ZAPISZ
[29] 5
wynikają z tego 2 problemy:
- napisu nie kończy znak zero (śmieci na końcu stringa)
- dostęp do reszty danych wymaga znajomości długości napisu


Jak to można poprawić?
Wstaw dane na początek tablicy, a napis niech idzie na końcu. Jego długość nie będzie miała znaczenia, wszystkie dane będą miały stałe indeksy w tablicy i string będzie mógł się skończyć na 0



Co do menu to wybierz nowy styl i walnij pętle przez całą tablicę
for(new i=1;i < sizeof(zadania); i++)
i tam menu_additem()

po wybraniu opcji z menu jeśli będzie item >=0 to robisz item++ i masz indeks tablicy zadania[] wybranego questa
  • +
  • -
  • 0

#3 Jak się nazwać

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 08.08.2011 23:13

ok spróbuje trochę to ogarnąć. dzięki
  • +
  • -
  • 0
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#4 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 08.08.2011 23:23

mogles inty i floaty zapisac sobie jako string i potem je parsowac odpowiednio :D

// albo napisac sobie plugin ktory udostepnial by tworzenie "vectorow" znanych min z C++
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#5 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 08.08.2011 23:54

coś na kształt vectora jest już dostępne w amxx, chodzi mi o api związane z typem Array

mogles inty i floaty zapisac sobie jako string i potem je parsowac odpowiednio

liczby jako tekst nadają się do plików, ale nie do tablic :wstyd:
  • +
  • -
  • 0

#6 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 09.08.2011 00:44

lepiej zrobic tablice stringow i parsowac niz sobie mieszac to pozatym konwersja w druga strone nie wchodzi w gre :D

chodzilo mi o plugin ktory by wlasnie uzywal dynamicznych tablic zeby symulowac vector czyli po 1 typie tablicy na typ danych i jedna tablica intow do przechowywania kolejnosci danych :D

//btw nie weim jak jest w javie ale c# jest tak ze np dane pobrane od usera sa jako string i trzeba je parsowac :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#7 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 09.08.2011 02:21

O ile dobrze pamiętam używajać enum można przechowywać różne typy danych w jednej tablicy,
enum costam { a, b[10], Float:c }
tablica[3][costam] = { {1,"a", 1.0},{2,"b", 3.0},{3,"c", 3.0}}

Nie wiem czy jest to poprawnie ale niestety o tej porze nie mam gdzie przestesować.
  • +
  • -
  • 0

#8 Dwdov

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:172
  • Imię:Dawid
  • Lokalizacja:Jawor
Offline

Napisano 09.08.2011 09:40

Tutaj jest tutorial robienia struktur przy użyciu enum
http://amxx.pl/topic/42028-struktury/
Szkoda że PAWN taki zdeka ubogi jest np. klasy by się przydały ; d

Nie pomagam na PW, tylko na forum.





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

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