Sprawdzenie czy jakiś gracz z ADMIN_LEVEL_...
Jadek
29.05.2014
Witam. Jak mam sprawdzić czy jakiś gracz z ADMIN_LEVEL_G jest na serwerze? Bo chodzi o to, że jeśli jest jakikolwiek gracz z tą flagą to wykonuję 1.IF a jeśli nie ma nikogo z taką flagą to 2.IF.
Dziękuję z góry.
MAGNET
29.05.2014
new zmienna; for(new i = 0;i<32;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) ++zmienna; if(!zmienna) { //// } else { /// } }
Jadek
29.05.2014
new zmienna; for(new i = 0;i<32;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) ++zmienna; if(!zmienna) { //// } else { /// } }
No dobrze, ale z tego co widzę to nie będzie zerować np gdy dany gracz wyjdzie. Racja?
szelbi
29.05.2014
Masz taki kod:
public funkcja2() { new zmienna = 0; // tworzysz zmienna, gdzie bedzie zapisywana liczba adminow for(new i=1;i<33;i++) // liczysz adminow { if(get_user_flags(i) & ADMIN_LEVEL_G) ++zmienna; } if(!zmienna) // nie ma adminow { // co ma sie stac jesli nie ma adminow } else // sa admini { // co ma sie stac jesi sa admini } }
I za każdym razem, kiedy chcesz wykonać coś, jeśli są admini lub ich nie ma to musisz uruchomić tę funkcję, więc zawsze ci liczy tych adminów od nowa.
Możesz tez liczyć inaczej, np. w client_authorized i client_disconnect, ale wtedy będzie to wyglądało inaczej.
Jadek
29.05.2014
Masz taki kod:
public funkcja2() { new zmienna = 0; // tworzysz zmienna, gdzie bedzie zapisywana liczba adminow for(new i=1;i<33;i++) // liczysz adminow { if(get_user_flags(i) & ADMIN_LEVEL_G) ++zmienna; } if(!zmienna) // nie ma adminow { // co ma sie stac jesli nie ma adminow } else // sa admini { // co ma sie stac jesi sa admini } }I za każdym razem, kiedy chcesz wykonać coś, jeśli są admini lub ich nie ma to musisz uruchomić tę funkcję, więc zawsze ci liczy tych adminów od nowa.
Możesz tez liczyć inaczej, np. w client_authorized i client_disconnect, ale wtedy będzie to wyglądało inaczej.
Niestety to co podałeś nie działa. Nie wykonuje ani jednego warunku.
Ogólnie u mnie wygląda to tak:
new users_with_flag = 0; for(new i = 0;i<32;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) ++users_with_flag; } if(!users_with_flag) { if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id)) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60); return JAIL_FORCE_TT; } else { ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga"); return JAIL_CONTINUE; } } else { if(get_user_flags(id) & ADMIN_LEVEL_G) { ColorChat(id, GREEN, "Dolaczyles do straznikow."); return JAIL_CONTINUE; } else { ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms"); return JAIL_FORCE_TT; } }
Użytkownik Jadek edytował ten post 29.05.2014 19:45
Jadek
29.05.2014
Spójrz na pętlę w moim kodzie i na tą w swoim.
Teraz mam taką jak ty czyli:
for(new i=1;i<33;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) ++users_with_flag; }
I to samo. Omija ify
Znowu robiąc tak:
new users_with_flag = 0; for(new i=1;i<33;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) ++users_with_flag; if(!users_with_flag) { if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id)) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60); return JAIL_FORCE_TT; } else { ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga"); return JAIL_CONTINUE; } } else { if(get_user_flags(id) & ADMIN_LEVEL_G) { ColorChat(id, GREEN, "Dolaczyles do straznikow."); return JAIL_CONTINUE; } else { ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms"); return JAIL_FORCE_TT; } } }
Niby pokazuje informacje ale jest osoba która ma flage "s" a mi pokazuje, ten colorchat:
ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga");
Użytkownik Jadek edytował ten post 29.05.2014 20:21
BlackPerfum
31.05.2014
Ja bym to tak zrobił:
for(new i=1;i<33;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) { if(get_user_flags(id) & ADMIN_LEVEL_G) { ColorChat(id, GREEN, "Dolaczyles do straznikow."); return JAIL_CONTINUE; } else { ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms"); return JAIL_FORCE_TT; } } } if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id)) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60); return JAIL_FORCE_TT; } else { ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga"); return JAIL_CONTINUE; }
Jadek
31.05.2014
W twoim przypadku gdy gracz ma powyzej x minut/na serwerze to go wpuści do CT z info ze dolaczyles bo nie ma innego strażnika.
Ja bym to tak zrobił:for(new i=1;i<33;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) { if(get_user_flags(id) & ADMIN_LEVEL_G) { ColorChat(id, GREEN, "Dolaczyles do straznikow."); return JAIL_CONTINUE; } else { ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms"); return JAIL_FORCE_TT; } } } if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id)) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60); return JAIL_FORCE_TT; } else { ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga"); return JAIL_CONTINUE; }
BlackPerfum
31.05.2014
W twoim przypadku gdy gracz ma powyzej x minut/na serwerze to go wpuści do CT z info ze dolaczyles bo nie ma innego strażnika.
nie ma innego strażnika z flagą*
Tak zgadzam się lecz to ty tak zrobiłeś ja jedynie pozbyłem sie zmiennej "users_with_flag" i paru instrukcji. Jeśli nie tego chciałeś to napisz czego oczekujesz bo nie jestem jasnowidzem. Sam przecież tak zrobiłeś??
Jadek
01.06.2014
Nie no kolego ja tak nie zrobiłem, ja zrobiłem z tym czasem przegranym wtedy gdy nie ma żadnego gracza z flagą "s".
BlackPerfum
01.06.2014
No u mnie jest tak jak u ciebie. Przyjrzyj sieNie no kolego ja tak nie zrobiłem, ja zrobiłem z tym czasem przegranym wtedy gdy nie ma żadnego gracza z flagą "s".