Jak wypisać, która zmienna jest używana?
GoldeN 21.03.2011
Witam, mam coś takiego:
Przypuśćmy, że gracz z menu wybierze Dwa to zmienna będzie wyglądać tak:
Jak mogę sprawdzić i wyświetlić nazwę którą liczbę wybrał? Czyli gracz wybrał trzy, to zamiast pisać trzy razy:
Zrobić raz z użyciem zmiennej nazwa[][] ?
Edited by GoldeN, 21.03.2011 19:08.
enum { zero = 0, jeden, dwa, trzy }
new const nazwa[][] = { "", "Jeden", "Dwa", "Trzy" }
new ktore[4][33];
Przypuśćmy, że gracz z menu wybierze Dwa to zmienna będzie wyglądać tak:
ktore[dwa][id] = 1
Jak mogę sprawdzić i wyświetlić nazwę którą liczbę wybrał? Czyli gracz wybrał trzy, to zamiast pisać trzy razy:
if(ktore[jeden][id] > 0) client_print(id, print_chat, "Jeden")
else if(ktore[dwa][id] > 0) client_print(id, print_chat, "Dwa")
else if(ktore[trzy][id] > 0) client_print(id, print_chat, "Trzy")
Zrobić raz z użyciem zmiennej nazwa[][] ?
Edited by GoldeN, 21.03.2011 19:08.
Knopers
21.03.2011
Za pomocą pętli ?
np:
for(new i = 0; i < sizeof(ktore); i++)
if(ktore[i] == 1) costam(ktore[i]);
np:
for(new i = 0; i < sizeof(ktore); i++)
if(ktore[i] == 1) costam(ktore[i]);
GoldeN 21.03.2011
Próbowałem:
Wyświetla zawsze "Jeden" mimo, że wybrałem np. Trzy. Umyślnie zacząłem pętlę od 1, bo po co ma wyświetlać spacje jak będzie 0.
Edited by GoldeN, 21.03.2011 19:27.
public look(id)
{
for(new i = 1; i < sizeof(nazwa); i++)
{
if(ktore[i][id] > 0)
{
client_print(id, print_chat, "%s", nazwa[ktore[i][id]])
}
}
}
Wyświetla zawsze "Jeden" mimo, że wybrałem np. Trzy. Umyślnie zacząłem pętlę od 1, bo po co ma wyświetlać spacje jak będzie 0.
Edited by GoldeN, 21.03.2011 19:27.
G[o]Q
21.03.2011
public look(id) { for(new i = 1; i < sizeof(nazwa); i++) { if(ktore[id][i] > 0) { client_print(id, print_chat, "%s", nazwa[ktore[id][i]]) } } }
DarkGL
21.03.2011
public look(id) { for(new i = 0; i < sizeof(nazwa); i++) { if(ktore[i][id] > 0) { client_print(id, print_chat, "%s", nazwa[ktore[i][id]]) } } }
zle ustawiasz graczowi ten kod na gorze jest poprawny
GoldeN 21.03.2011
Identycznie mam i zawsze pokazuje "Jeden" nie ważne czy wezmę "Dwa", czy "Trzy".
Cypis'
21.03.2011
a to czasem nie powinno być tak:
Edited by Cypis', 21.03.2011 19:50.
client_print(id, print_chat, "%s", nazwa[i])
Edited by Cypis', 21.03.2011 19:50.
GoldeN 21.03.2011
a to czasem nie powinno być tak:
client_print(id, print_chat, "%s", nazwa[i])
Nie, wtedy wypisze nazwę taką jaka jest w pętli.
R3X
21.03.2011
Cypis ma rację
public look(id) { for(new i = 0; i < sizeof(nazwa); i++) { if(ktore[i][id] > 0) { client_print(id, print_chat, "%s", nazwa[i]); break; } } }
Knopers
21.03.2011
yyy tylko czemu sizeof(nazwa) a nie sizeof(ktore) ?
chyba powinno być sizeof(ktore) chociaż i tak te tablice teoretycznie powinny być sobie równe jeśli nie chcemy jakiegoś seg fault'a
chyba powinno być sizeof(ktore) chociaż i tak te tablice teoretycznie powinny być sobie równe jeśli nie chcemy jakiegoś seg fault'a
R3X
21.03.2011
jak idziemy w te stronę to po co w ogóle tyle komórek pamięci?
new ktore[33]; ktore[id] = 1; //, 2, 3 lub 4;
if(ktore[id] >= 0 && ktore[id] < sizeof(nazwa)) client_print(id, print_chat, "%s", nazwa[ktore[id]])
GoldeN 21.03.2011
Racja. Udało się. ; D Dziękuję. ; >
Tyle komórek, ponieważ te zmienne mają swoje "poziomy" i np może być ktore[jeden][id] = lvl
Edited by GoldeN, 21.03.2011 20:49.
Tyle komórek, ponieważ te zmienne mają swoje "poziomy" i np może być ktore[jeden][id] = lvl
Edited by GoldeN, 21.03.2011 20:49.