[ROZWIĄZANE] Awaryjne wyjście ze switch'a
Nakupenda.
02.03.2012
mam taki kod i potrzebuje w pewnym momencie wyjść z całego switcha i zrobiłem coś takiego:
ja poprawnie w pewnym momencie opuścić tą pętle? i nie chodzi mi o zwrócenie wartości
switch(item)
{
case 0:
{
if(is_user_alive(id))
{
if(!ciche[id] && limit[id] < MAX_ITEMS)
{
ciche[id]=true;
limit[id]++
break; // ale jak dam tutaj break to wywala blad: vip_naku.sma(232) : error 024: "break" or "continue" is out of context
}
ja poprawnie w pewnym momencie opuścić tą pętle? i nie chodzi mi o zwrócenie wartości
Nakupenda.
03.03.2012
i nie chodzi mi o zwrócenie wartości
return jak rozumiem w ogóle wyjdzie z funkcji, a ja potrzebuje tylko opuścić switcha
sebul
03.03.2012
Hmm, ale po co wychodzić? Jeśli "item" ma wartość 0, to wejdzie tylko do "case 0:", a resztę pominie.
grzesiu131
03.03.2012
Za pauzuj go ?
/*switch(item)
{
case 0:
{
if(is_user_alive(id))
{
if(!ciche[id] && limit[id] < MAX_ITEMS)
{
ciche[id]=true;
limit[id]++
break; // ale jak dam tutaj break to wywala blad: vip_naku.sma(232) : error 024: "break" or "continue" is out of context
}*/
Nakupenda.
03.03.2012
po to że po switchu mam jeszcze troche kodu do wykonaniaHmm, ale po co wychodzić? Jeśli "item" ma wartość 0, to wejdzie tylko do "case 0:", a resztę pominie.
@edit: nie szukajcie sposobów na ominięcie tego od tyłu, tylko po prostu jakaś komenda albo cóś.
Użytkownik Nakupenda. edytował ten post 03.03.2012 14:54
sebul
03.03.2012
Po switchu? No to przecież napisałem, że innych cache nie będzie sprawdzać.po to że po switchu mam jeszcze troche kodu do wykonania
Switch
switch(item) {
case 0: // kod
case 1: // kod
case 2: // kod
}
a w "ifach" będzie to wyglądać tak
if(item == 0) // kod
else if(item == 1) // kod
else if(item == 2) // kod
więc dalej nie rozumiem co masz na myśli pisząc "opuścić switcha".
Nakupenda.
03.03.2012
bo nie podałem całego kodu, a wygląda on tak:
@edit: znalazłem rozwiązanie goto, ale nie powinno się go stosować. Ma ktoś lepszy pomysł niż to:
Użytkownik Nakupenda. edytował ten post 03.03.2012 15:20
switch(item)
{
case 0:
{
if(is_user_alive(id))
{
if(!kolejny_warunek)
{
jakis_bool=true;
zmienna++
}
else if(!costam_sie_nie_zgadza)
{
ColorChat(id, GREEN, "Wyjscie ze switch'a!");
// TU potrzebuje wyjsc ze switcha
}
else
{
ciche[id]=false;
limit[id]--
}
// dalsze operacje w case, ktorych nie chce w jednym z przypadkow
}
else
show_hudmessage(id, "Zupelnie co innego !")
}
case 1:
//nastepne kejs'y
}
//tu jest koniec switcha i tu chce sie znalezc
// dalszy kod
@edit: znalazłem rozwiązanie goto, ale nie powinno się go stosować. Ma ktoś lepszy pomysł niż to:
switch(item)
{
case 0:
{
if(is_user_alive(id))
{
if(!kolejny_warunek)
{
jakis_bool=true;
zmienna++
}
else if(!costam_sie_nie_zgadza)
{
ColorChat(id, GREEN, "Wyjscie ze switch'a!");
goto koniec_switcha;
}
else
{
ciche[id]=false;
limit[id]--
}
// dalsze operacje w case, ktorych nie chce w jednym z przypadkow
}
else
show_hudmessage(id, "Zupelnie co innego !")
}
case 1:
//nastepne kejs'y
}
koniec_switcha:
// dalszy kod
Użytkownik Nakupenda. edytował ten post 03.03.2012 15:20
G[o]Q
03.03.2012
sebul czytaj czasem on ma kod w stylu
i nie chce np po wybraniu opcji 1 zeby sie napis pojawial
jest takie cos jak
switch(item) { case 0: cos=0 // kod case 1: cos=1// kod case 2: cos=2// kod } client_print(id,print_chat,"%d",cos);
i nie chce np po wybraniu opcji 1 zeby sie napis pojawial
jest takie cos jak
exit
sebul
03.03.2012
A to czemu? Ja bym raczej powiedział, że należy unikać "goto", a nie, że nie powinno się go w ogóle stosować.@edit: znalazłem rozwiązanie goto, ale nie powinno się go stosować.
No raczej chyba on tak nie napisał ;]sebul czytaj czasem on ma kod w stylu
switch(item) { case 0: cos=0 // kod case 1: cos=1// kod case 2: cos=2// kod } client_print(id,print_chat,"%d",cos);
i nie chce np po wybraniu opcji 1 zeby sie napis pojawial
Jeśli exit się nie sprawdzi, to ja bym to zrobił tak
switch(item) {
case 0: {
new bool:costam;
if(warunek) {
// kod
costam = true;
}
else if(warunek) {
// kod
}
else {
// kod
}
if(!costam) {
// kod
}
}
case 1: {
// kod
}
case 2: {
// kod
}
}
G[o]Q
03.03.2012
bosko, dzięki GoQ. exit przenosi tuż za ostatnią klamrę switcha?
nie wiem sprawdz w amxx studio podkresla sie na zielono wiec moze dzialać
Nakupenda.
03.03.2012
nie wiem sprawdz w amxx studio podkresla sie na zielono wiec moze dzialać
hahah, zawsze spoko
A to czemu? Ja bym raczej powiedział, że należy unikać "goto", a nie, że nie powinno się go w ogóle stosować.
jeden pies. Prawie zawsze można to czymś zastąpić
no to też wpadłem ale chciałem po ludzku, bo mam w ifie kilka warunków do sprawdzeniaJeśli exit się nie sprawdzi, to ja bym to zrobił tak
Dobra, dzięki CLOSE, jak coś to zawsze można otworzyć
Użytkownik Nakupenda. edytował ten post 03.03.2012 16:05
sebul
03.03.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL