Wyświetlanie zawartości tablicy
Jak się nazwać
08.08.2011
Witam mam taką tablicę.
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
Użytkownik Jak się nazwać edytował ten post 08.08.2011 22:13
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; }
Użytkownik Jak się nazwać edytował ten post 08.08.2011 22:13
R3X
08.08.2011
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
- 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ę
po wybraniu opcji z menu jeśli będzie item >=0 to robisz item++ i masz indeks tablicy zadania[] wybranego questa
{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] 5wynikają 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
G[o]Q
08.08.2011
mogles inty i floaty zapisac sobie jako string i potem je parsowac odpowiednio
// albo napisac sobie plugin ktory udostepnial by tworzenie "vectorow" znanych min z C++
// albo napisac sobie plugin ktory udostepnial by tworzenie "vectorow" znanych min z C++
R3X
08.08.2011
coś na kształt vectora jest już dostępne w amxx, chodzi mi o api związane z typem Array
liczby jako tekst nadają się do plików, ale nie do tablicmogles inty i floaty zapisac sobie jako string i potem je parsowac odpowiednio
G[o]Q
09.08.2011
lepiej zrobic tablice stringow i parsowac niz sobie mieszac to pozatym konwersja w druga strone nie wchodzi w gre
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
//btw nie weim jak jest w javie ale c# jest tak ze np dane pobrane od usera sa jako string i trzeba je parsowac
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
//btw nie weim jak jest w javie ale c# jest tak ze np dane pobrane od usera sa jako string i trzeba je parsowac
Vertricus
09.08.2011
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ć.
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ć.
Dwdov 09.08.2011
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
http://amxx.pl/topic/42028-struktury/
Szkoda że PAWN taki zdeka ubogi jest np. klasy by się przydały ; d