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.
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.
|
Napisano 29.05.2014 18:05
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.
Napisano 29.05.2014 18:09
new zmienna; for(new i = 0;i<32;i++) { if(get_user_flags(i) & ADMIN_LEVEL_G) ++zmienna; if(!zmienna) { //// } else { /// } }
Napisano 29.05.2014 19:14
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?
Napisano 29.05.2014 19:16
To ponownie uruchamiasz funkcję i liczy ci od nowa.
Napisano 29.05.2014 19:25
To ponownie uruchamiasz funkcję i liczy ci od nowa.
Masz na myśli for?
Napisano 29.05.2014 19:30
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.
Napisano 29.05.2014 19:41
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
Napisano 29.05.2014 19:59
Spójrz na pętlę w moim kodzie i na tą w swoim.
Napisano 29.05.2014 20:14
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
Napisano 31.05.2014 22:02
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; }
Napisano 31.05.2014 22:40
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; }
Napisano 31.05.2014 23:24
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ś??
Napisano 01.06.2014 18:56
Nie no kolego ja tak nie zrobiłem, ja zrobiłem z tym czasem przegranym wtedy gdy nie ma żadnego gracza z flagą "s".
Napisano 01.06.2014 19:26
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".
0 użytkowników, 0 gości, 0 anonimowych