Skocz do zawartości
MAGNET

ReportGO - narzędzie do reportowania

Rekomendowane odpowiedzi

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.zip
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 2

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:Screenshot_1.thumb.png.6e8f190c23566058c64e51d8de3563b7.png.

Dodatkowo myślę, że warto wstawić plik z polskimi tłumaczeniami w formacie UTF-8 bez BOM.

Pozdrawiam.

 

Edytowane przez BinaR

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@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ł

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 2

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ć:

manage.thumb.jpg.eb0adff48337f074ad8c7f67a2137264.jpg

 

Natomiast w opcji blokowania wysyłania zgłoszeń graczom, admin nie może nikogo zablokować (gracze się tam nie pojawiają):

3766730.374999999_image.thumb.png.35f7f79517e793519fc86c8ec5a74b15.png

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ć:

wiad.thumb.jpg.aeaeadad3b2c29d67b36a581734c1526.jpg

a dokładniej, że pojawiło się nowe zgłoszenie.

Zniknęły również komunikaty o braku dostępu.

@MAGNET

 

Pozdrawiam.

 

 

Edytowane przez NeQ ҳ̸Ҳ̸ҳ

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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ść

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...