MAGNET 12 1 Napisano 7 Sierpnia 2019 Trochę się rozkręciłęm 🙂. Stworzyłem plugin, którego idea jest bardzo prosta - podobnie jak przy użyciu [email protected], możemy składać raporty u admina przy użyciu przedrostka '$' Zasadę działania obrazuje poniższy film: Plugin napisałem z multilangiem, bo będę wrzucał go na alliedy. Dostępny w wersji anglo- i polskojęzycznej. Bierzcie z tego wszyscy! ConVary cvCapacity = CreateConVar("rg_capacity", "25", "Capacity of available reports"); cvReportDelay = CreateConVar("rg_report_delay", "180", "The interval in which player can send reports (in seconds)"); Download ReportGO.zipHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
BinaR 2 Napisano 7 Sierpnia 2019 (edytowane) Dobry wieczór, postanowiłem przetestować plugin na serwerze, znalazłem kilka błędów. Zacznijmy od tego, że wchodząc w menu (!report) oraz opcje, mimo uprawnień do moderacji zgłoszeń, wyświetla się komunikat na czacie, że nie posiadam do tego dostępu. Druga kwestia; nie posiadając flag admina, mogę bez problemu moderować zgłoszenia od innych graczy i blokować im wysyłanie zgłoszeń (innymi słowy; mogę robić to samo co admin. Trzecia rzecz - przy kompilacji pluginu, występuję pokazany błąd:. Dodatkowo myślę, że warto wstawić plik z polskimi tłumaczeniami w formacie UTF-8 bez BOM. Pozdrawiam. Edytowane 7 Sierpnia 2019 przez BinaR Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET 2 Napisano 7 Sierpnia 2019 @BinaR wielkie dzięki za przetestowanie pluginu. Faktycznie, wszystkie problemy o których wspominałeś występowały w kodzie. Zostały one poprawione. Sprawdź proszę czy teraz nie występują żadne problemy - zaktualizowałem już załącznik Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
NeQ ҳ̸Ҳ̸ҳ 2 Napisano 7 Sierpnia 2019 (edytowane) @MAGNET jutro sprawdzimy wszystko jeszcze raz z BinaRem. Odpowiedź pojawi się poprzez edycję tego posta :) Edytowane 7 Sierpnia 2019 przez NeQ ҳ̸Ҳ̸ҳ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Angel Napisano 7 Sierpnia 2019 Równie dobrze możesz dodać pobieranie STEAM ID gracza reportowanego, czyli robimy menu #Zgłoś gracza 1. nick 1 2. nick 2 3. nick 3 # Podaj powód 1. cheatowanie 2. obrażanie 3. etc # Potwierdź zgłoszenie I wtedy można łatwo przedstawić te zgłoszenia w formie tabelki na WWW i pobierać STEAM ID podejrzanego 😉 Pomysł dobry, lecz wymaga dopracowania Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Mesharsky Napisano 7 Sierpnia 2019 Godzinę temu, Angel napisał: Równie dobrze możesz dodać pobieranie STEAM ID gracza reportowanego, czyli robimy menu #Zgłoś gracza 1. nick 1 2. nick 2 3. nick 3 # Podaj powód 1. cheatowanie 2. obrażanie 3. etc # Potwierdź zgłoszenie I wtedy można łatwo przedstawić te zgłoszenia w formie tabelki na WWW i pobierać STEAM ID podejrzanego 😉 Pomysł dobry, lecz wymaga dopracowania Jeżeli chodzi o "WWW" to musiałby być to MySQL nie SQLITE Wtedy dane z tabel byłyby pokazywane na stronie "WWW" w sumie wszędzie, łatwe jest to do przerobienia, ale po co? To jest plugin na serwer nie na WWW. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET Napisano 8 Sierpnia 2019 @Angel to docelowo miała być lepsza wersja [email protected] - wystawianie tych informacji na www zapewne spowodowało by że byłby tam straszny bałagan i mało kto by tam zaglądał Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
NeQ ҳ̸Ҳ̸ҳ 2 Napisano 8 Sierpnia 2019 (edytowane) Jako, że nie mogę edytować tamtego posta, napiszę kolejny. Sprawdziliśmy plugin i znaleźliśmy błędy: będąc normalnym graczem, nadal mogę zarządzać wysłanymi zgłoszeniami, mogę je przeglądać lub usuwać: Natomiast w opcji blokowania wysyłania zgłoszeń graczom, admin nie może nikogo zablokować (gracze się tam nie pojawiają): Do tego również mam dostęp jako gracz, i gracze się nie wyświetlają. Natomiast komendę sm_report można ustawić na flagę "z" lub "b" i będzie ok. Będąc graczem, po wysłaniu zgłoszenia otrzymuję komunikat, który raczej tylko admin powinien dostać: a dokładniej, że pojawiło się nowe zgłoszenie. Zniknęły również komunikaty o braku dostępu. @MAGNET Pozdrawiam. Edytowane 8 Sierpnia 2019 przez NeQ ҳ̸Ҳ̸ҳ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET Napisano 8 Sierpnia 2019 Wszedłem na serwer i również zrobiłem testy - wynik był z goła inny 1. Czy na pewno podczas sprawdzania mieliście usunięte flagi? Może edytowaliście uprawnienia w admins_simple, podczas kiedy serwer korzysta z Sourcebans? 2. W menu do blokowania plugin nie uwzględnia adminów, HLTV i botów. Jeśli powyższy punkt był spełniony, to z tego powodu nikt nie pokazuje się na liście Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
BinaR 1 Napisano 8 Sierpnia 2019 To tak - Na pewno mieliśmy usunięte flagi (na screenie widać, że @NeQ ҳ̸Ҳ̸ҳ nie miał flag, to on wysłał zgłoszenie. Ja sam flagi miałem, na screenie też to widać), a serwer nie jest podpięty pod Sourcebans. Co do menu blokowania - tak jak wcześniej pisałem, NeQ nie posiadał żadnych flag. Dodatkowo, gdy NeQ wysłał zgłoszenie, pojawiła mu się również informacja o nowym zgłoszeniu (to chyba powinno się pojawiać tylko adminom) Pozdrawiam. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET 1 Napisano 8 Sierpnia 2019 kurde, w ogóle nie trzyma się mi to kupy. Masz menu główne: public Action MainMenu(int client, int args) { if (!IsUserAdmin(client)) { CPrintToChat(client, "%T", "no access", client, TAG); return Plugin_Handled; } Menu menu = new Menu(MainMenu_Handler); ........... I funkcja od sprawdzania czy jesteś adminem: bool IsUserAdmin(int client) { if (GetUserFlagBits(client) & FLAG|ADMFLAG_ROOT) return true; return false; } Czyli: jeśli NIE jesteś adminem (nie masz ani flagi ADMFLAG_BAN ani ADMFLAG_ROOT), to funkcja jest przerywana. Już w tym miejscu jest niezgodność Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
MAGNET 3 Napisano 8 Sierpnia 2019 bool IsUserAdmin(int client) { if (GetUserFlagBits(client) & FLAG|ADMFLAG_ROOT) return true; return false; } Gdzie tu może być błąd? Na pozór wszystko wygląda dobrze, ale popełniłem zasadniczy błąd: zarówno bitowy AND jak i OR (& i |) mają taki sam priorytet - oznacza to, że warunek wykonywał się po kolei: Najpierw flagi gracza były ANDowane z ADMFLAG_BAN, co mogło dać 0 lub jakąś inną wartość, zależnie od zestawu przywilejów. Niestety, nie miało to ŻADNEGO znaczenia, ponieważ kolejną operacją było ORowanie z flagą ROOT, co w efekcie zawsze dawało wynik większy od 0 (ponieważ 0|1 = 1 oraz 1|1 = 1) Po więcej na temat operacji bitowych zapraszam tutaj: Załącznik zaktualizowany Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach