Łączenie warunków "if"
Best Answer 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 i 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.
Go to the full post
PANDA_2zl
11.10.2021
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)){
Edited by SezonowyGracz, 11.10.2021 16:27.
PANDA_2zl
11.10.2021
Edited by SezonowyGracz, 11.10.2021 18:49.
N1K1Cz
12.10.2021
if(is_steam(id) && !(get_user_flags(id) & ADMIN_LEVEL_G))
Best Answer
dasiek
12.10.2021
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 i 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.