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

Łączenie warunków "if"


Najlepsza odpowiedź dasiek, 12.10.2021 07:23

Lecimy gumową kaczuszką!

Twój warunek wygląda tak - 
 

Jeśli użytkownik NIE JEST 
- hltv 
  ORAZ
- Użytkownikiem steam
  ORAZ
- Botem
  ORAZ
- Nie ma flagi ADMIN_LEVEL_G

Użytkownik musi spełnić te wszystkie warunki i na nim negujesz. 

Szybki test ze sprawdzania (js ale logiczne operatory są te same)

let isHltv = false;
let isSteam = false;
let isBot = false;
let hasFlag = false;


if(!isHltv && !isSteam && !isBot && !hasFlag) {
    console.log('dupa');
}
// 'dupa'

Wszystkie flagi są ustawione na false (czyli użytkownik nie jest botem, nie jest steamem, nie jest hltv i nie ma flagi). Teraz jest, jak użytkownik spełnia wszystkie te warunki


let isHltv = true;
let isSteam = true;
let isBot = true;
let hasFlag = true;


if(!(isHltv && isSteam && isBot && hasFlag)) {
    console.log('dupa');
}
// undefined - nic nie wypisało

zakładając, że zamieniamy console.log z dupą na uruchomienie taska, task się nie uruchomi. Ale jeśli przynajmniej jeden z tych warunków będzie true, task się uruchomi

let isHltv = true;
let isSteam = false;
let isBot = false;
let hasFlag = false;


if(!(isHltv && isSteam && isBot && hasFlag)) {
    console.log('dupa');
}
// 'dupa'

W tej sytuacji, proponuję każdą flagę sprawdzać oddzielnie, nie grupować w nawiasach. 

Przykładowo - Twój task ma się uruchomić dla użytkowników którzy
- Nie są botami

- nie są steam

- Nie są botem

- Nie mają fagi

Korzystając z tego samego kodu, tylko dodając sprawdzenie na każdym warunku 

let isHltv = true;
let isSteam = false;
let isBot = false;
let hasFlag = false;


if(!isHltv && !isSteam && !isBot && !hasFlag) {
    console.log('dupa');
}

// undefined - nie wyświetla się


let isHltv = false;
let isSteam = false;
let isBot = false;
let hasFlag = true;


if(!isHltv && !isSteam && !isBot && !hasFlag) {
    console.log('dupa');
}
// undefined - nie wyświetla się

Więc, jeśli chcesz, aby task nie wykonywał się, dla osób, które są botem albo hltv albo steamem albo nie maja flagi (słowo klucz, w Twoim przypadku było na głos Sobie przeczytaj to zdanie raz ze słowem albo a raz ze słowem "i") nie mają tej flagi warunek powinien wyglądać tak :

if(!is_user_hltv(id) && !is_steam(id) && !is_user_bot(id) && !(get_user_flags(id) & ADMIN_LEVEL_G))

PS - kod który podałem śmiało możesz wrzucić np w konsole js w przeglądarce i pobawić się tym sam.

Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 PANDA_2zl

    Guru

  • Power User

Reputacja: 173
Profesjonalista

  • Postów:716
  • Imię:Michał
  • Lokalizacja:Kraków
Online

Napisano 11.10.2021 16:25

Stworzyłem coś takiego

if(!(is_user_hltv(id) && is_steam(id) && is_user_bot(id) && get_user_flags(id) & ADMIN_LEVEL_G))

wszystko ma byc zanegowane, czy to jest poprawnie?

 

I pytanko nr. 2, czy można łączyć zanegowane warunki z tymi nie negowanymi, czy trzeba osobno pisac?

 

przykład:

if(is_steam(id)){
if(!(get_user_flags(id) & ADMIN_LEVEL_G)){

Użytkownik SezonowyGracz edytował ten post 11.10.2021 16:27

  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 11.10.2021 17:30

A jaki dokładnie efekt tym warunkiem chcesz osiągnąć ?


  • +
  • -
  • 0

#3 PANDA_2zl

    Guru

  • Autor tematu
  • Power User

Reputacja: 173
Profesjonalista

  • Postów:716
  • Imię:Michał
  • Lokalizacja:Kraków
Online

Napisano 11.10.2021 18:49

By task nie uruchamiał się przy tych użytkownikach, chodzi tylko o to że chce to złączyć razem, by nie był if pod if'em

Użytkownik SezonowyGracz edytował ten post 11.10.2021 18:49

  • +
  • -
  • 0

#4 N1K1Cz

    Zaawansowany

  • Użytkownik

Reputacja: 44
Pomocny

  • Postów:138
  • GG:
  • Steam:steam
  • Imię:/\^-^/\
Offline

Napisano 12.10.2021 05:43

Jeżeli chcesz aby to był jeden if i oba warunki musza być spełnione to zrób tak:
if(is_steam(id) && !(get_user_flags(id) & ADMIN_LEVEL_G))
  • +
  • -
  • 0

Potrzebujesz pomocy z serwerem/paczką? Napisz do mnie! Chętnie pomogę  ^D^ 

- Discord: N1K1Cz#0751

- GG: 70679564

- Steam: https://steamcommunity.com/id/N1K1Cz/

 


#5 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Online

Napisano 12.10.2021 07:23   Najlepsza odpowiedź

Lecimy gumową kaczuszką!

Twój warunek wygląda tak - 
 

Jeśli użytkownik NIE JEST 
- hltv 
  ORAZ
- Użytkownikiem steam
  ORAZ
- Botem
  ORAZ
- Nie ma flagi ADMIN_LEVEL_G

Użytkownik musi spełnić te wszystkie warunki i na nim negujesz. 

Szybki test ze sprawdzania (js ale logiczne operatory są te same)

let isHltv = false;
let isSteam = false;
let isBot = false;
let hasFlag = false;


if(!isHltv && !isSteam && !isBot && !hasFlag) {
    console.log('dupa');
}
// 'dupa'

Wszystkie flagi są ustawione na false (czyli użytkownik nie jest botem, nie jest steamem, nie jest hltv i nie ma flagi). Teraz jest, jak użytkownik spełnia wszystkie te warunki


let isHltv = true;
let isSteam = true;
let isBot = true;
let hasFlag = true;


if(!(isHltv && isSteam && isBot && hasFlag)) {
    console.log('dupa');
}
// undefined - nic nie wypisało

zakładając, że zamieniamy console.log z dupą na uruchomienie taska, task się nie uruchomi. Ale jeśli przynajmniej jeden z tych warunków będzie true, task się uruchomi

let isHltv = true;
let isSteam = false;
let isBot = false;
let hasFlag = false;


if(!(isHltv && isSteam && isBot && hasFlag)) {
    console.log('dupa');
}
// 'dupa'

W tej sytuacji, proponuję każdą flagę sprawdzać oddzielnie, nie grupować w nawiasach. 

Przykładowo - Twój task ma się uruchomić dla użytkowników którzy
- Nie są botami

- nie są steam

- Nie są botem

- Nie mają fagi

Korzystając z tego samego kodu, tylko dodając sprawdzenie na każdym warunku 

let isHltv = true;
let isSteam = false;
let isBot = false;
let hasFlag = false;


if(!isHltv && !isSteam && !isBot && !hasFlag) {
    console.log('dupa');
}

// undefined - nie wyświetla się


let isHltv = false;
let isSteam = false;
let isBot = false;
let hasFlag = true;


if(!isHltv && !isSteam && !isBot && !hasFlag) {
    console.log('dupa');
}
// undefined - nie wyświetla się

Więc, jeśli chcesz, aby task nie wykonywał się, dla osób, które są botem albo hltv albo steamem albo nie maja flagi (słowo klucz, w Twoim przypadku było na głos Sobie przeczytaj to zdanie raz ze słowem albo a raz ze słowem "i") nie mają tej flagi warunek powinien wyglądać tak :

if(!is_user_hltv(id) && !is_steam(id) && !is_user_bot(id) && !(get_user_flags(id) & ADMIN_LEVEL_G))

PS - kod który podałem śmiało możesz wrzucić np w konsole js w przeglądarce i pobawić się tym sam.


  • +
  • -
  • 3




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

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