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

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


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

#1 Itachi

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:41
  • Imię:Lukasz
  • Lokalizacja:Warszawa
Offline

Napisano 25.06.2012 11:14

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

  • +
  • -
  • 0

#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 12:03

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.

#3 Itachi

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:41
  • Imię:Lukasz
  • Lokalizacja:Warszawa
Offline

Napisano 25.06.2012 12:12

@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

  • +
  • -
  • 0

#4 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 12:25

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.

#5 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 26.06.2012 13:04

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
  • +
  • -
  • 0

marwit-0.png





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

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