←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Warukni IF - Filozofia ...

Zablokowany

  • +
  • -
Itachi - zdjęcie Itachi 25.06.2012

Troche siedze nad czym si mysle, jak zrobic takie cos:


Jak jestem poza respem, a ma admin level B, to leci dalej, a jak jestem poza respem to nic sie nie robi?

Ja tak to widze:

If admin_level_b{
return plugin_continue
}else if (!g_bresp || !admin_level_b ){
return plugin_handle
}

client_print(id, print_center, "Masz dostepne opcje dla admina z flaga n, niedostepne na respie")

Zadziala takie cos?

Czy wystarczy tak:
If admin_level_b{
return plugin_continue
}else if (!g_bresp){
return plugin_handle
}
?


Czytalem troche o petlach, ale srednio rozumiem, wiec sie pytam czy tak to dziala mniejwiecejze jestem adminem, i poza respe mi to wyswietla, a jak jestem normalnym userem to na respie mi wyswietla, ale poza respem juz nie??
Użytkownik Itachi edytował ten post 25.06.2012 11:44
Odpowiedz

Gość_21977_* 25.06.2012

Pętle to np. while(), for()
if() jest jedynie funkcją, zwracającą true lub false.

return przerywa wykonanie kodu, zwracając pewną wartość.
Jeśli wykonane zostanie polecenie return, to nic dalej za nim nie zostanie już wykonane w danej np. funkcji.

Jak jestem poza respem, a ma admin level B, to leci dalej, a jak jestem poza respem to nic sie nie robi?

Napisz jeszcze raz, jaki rezultat chcesz uzyskać, bo nie bardzo zrozumiałem.
Odpowiedz

  • +
  • -
Itachi - zdjęcie Itachi 25.06.2012

@up
Mi chodzilo o return plugin_handle i continue, gdzies czytalem ze sa one do zawracania petli jakos tak.

Jestem na respie, mam admin_level_b, wyswietla mi sietekst , wychodze z respa - dalej pokazuje mi tekst
jestem normalnym graczem, jestem na respie pokazuje mi sie tekst, wychodze z respa - tekstu juz nie widze

Myslalem ze da sie jakos tak to zrobic


if (!(get_user_flags(id) & ADMIN_LEVEL_B ))
{
if(!g_resp[id])
{
if(!(get_user_flags(id) & ADMIN_LEVEL_B))
{
//tutaj przestaje pokazywac opcji poza respem bo to zwykly gracz
return PLUGIN_HANDLED
}else
if (get_user_flags(id) & ADMIN_LEVEL_B && !g_resp[id])
{
client_print(id, print_center, "Jestes adminem, masz takie same opcje dostepne takze poza respem")
return PLUGIN_CONTINUE
}
}
}

//opcje dostepne na respem dla admina, i opcje dostepne na respie dla admina i gracza


Ale zapewne nadpisalem troche za duzo, i pare jest bezsensu dopisana
Użytkownik Itachi edytował ten post 25.06.2012 12:25
Odpowiedz

Gość_21977_* 25.06.2012

OK, już rozumiem, jaki efekt chcesz uzyskać.

Tutaj masz opisane użycie returnów, nie będę powielał tematu.

if(!g_resp[id]){
if(get_user_flags(id) & ADMIN_LEVEL_B){
client_print(id, print_center, "Jestes adminem, masz opcje dostepne poza respem")
return PLUGIN_CONTINUE;
} else {
return PLUGIN_HANDLED;
}
}
Taki kod w zupełności wystarczy.

Jeśli pierwszy warunek sprawdził, że gracz nie jest na respie, to ponowne sprawdzanie go wewnątrz tego ifa jest zbędne.
Jeśli warunek
!(get_user_flags(id) & ADMIN_LEVEL_B)
nie został spełniony, to nie musisz na nowo sprawdzać
if (get_user_flags(id) & ADMIN_LEVEL_B
bo wynika to z niespełnienia poprzedniego warunku, zatem z całego
else if (get_user_flags(id) & ADMIN_LEVEL_B && !g_resp[id])
wystarczy samo if.
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 26.06.2012

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany