Konzept für Strikesystem #18

Closed
opened 2023-12-06 18:32:11 +00:00 by MineTec · 3 comments
Owner

Wenn ein Report geschlossen wird, soll ausgewählt werden über ein Dropdown, welches vergehen begangen wurde. Jedes Vergehen hat ein Mapping zu einer Zahl (die Zahl kann auch im Dropdown in klammern dargestellt werden)

Tabellenbeispiel:

id | strikeWeight | displayName
1 1 Spamming
...
2 3 Klauen
...
9 5 Schweres Griefen

Die Nummer wird dann anschließend auf ein Konto addiert (strike-level, kann direkt auf der users datenbank als spalte hinzukommen, zu beginn haben alle user 0 strikes)

Wenn der Report jetzt geschlossen wird wird die Zahl von der neu gewählten bestrafung auf die bestehenden bestrafungen aufaddiert und in einer hilfstabelle wird geschaut, welche bestrafung angewendet werden soll.

Tabellenbeispiel für hilftabelle Bestrafungen:

id | strikeCount | banInSeconds
1 1 5000
...
5 5 9999999

Wenn für den Strike Count keine bestrafung gefunden wird, soll die bestrafung mit dem höchsten strikeCount genommen werden.

Die gefundene Bestrafung wird dann angewand (ebenfalls wahrscheinlich eine Tabelle nötig)

Ob du die Definition der Strikes und der Hilfstabelle für Bestrafungen zu SQL tabellen machst oder ob du sie in Form von Konfigurationsdateien ablegst ist dir überlassen...

Chat-Mutes sollen nicht mehr über das System gemanaged werden. Es geht nur um Banns

In der Login-API kann entsprechend auch einfach nur nen bool wert übergeben werden ob der Spieler gebannt ist oder nicht.

Wenn ein Report geschlossen wird, soll ausgewählt werden über ein Dropdown, welches vergehen begangen wurde. Jedes Vergehen hat ein Mapping zu einer Zahl (die Zahl kann auch im Dropdown in klammern dargestellt werden) Tabellenbeispiel: id | strikeWeight | displayName 1 1 Spamming ... 2 3 Klauen ... 9 5 Schweres Griefen Die Nummer wird dann anschließend auf ein Konto addiert (strike-level, kann direkt auf der users datenbank als spalte hinzukommen, zu beginn haben alle user 0 strikes) Wenn der Report jetzt geschlossen wird wird die Zahl von der neu gewählten bestrafung auf die bestehenden bestrafungen aufaddiert und in einer hilfstabelle wird geschaut, welche bestrafung angewendet werden soll. Tabellenbeispiel für hilftabelle Bestrafungen: id | strikeCount | banInSeconds 1 1 5000 ... 5 5 9999999 Wenn für den Strike Count keine bestrafung gefunden wird, soll die bestrafung mit dem höchsten strikeCount genommen werden. Die gefundene Bestrafung wird dann angewand (ebenfalls wahrscheinlich eine Tabelle nötig) Ob du die Definition der Strikes und der Hilfstabelle für Bestrafungen zu SQL tabellen machst oder ob du sie in Form von Konfigurationsdateien ablegst ist dir überlassen... Chat-Mutes sollen nicht mehr über das System gemanaged werden. Es geht nur um Banns In der Login-API kann entsprechend auch einfach nur nen bool wert übergeben werden ob der Spieler gebannt ist oder nicht.
MineTec added the due date 2023-12-20 2023-12-06 18:32:51 +00:00
bytedream referenced this issue from a commit 2023-12-10 18:19:58 +00:00
Member

Ich hab das jetzt mit zwei Datenbanken gelöst.

strike_reasons - Hier stehen alle Vergehen drin und wie sie gewichtet sind

| id | weight | name             |
| 0  | 1      | Spamming         |
| 1  | 3      | Klauen           |
| 2  | 5      | Schweres Griefen |
...

strike_punishments - Hier steht drin ab welcher Gewichtung welche Bannzeit gesetzt wird

| id | weight | ban_in_seconds |
| 1  | 1      | 5000           |
| 2  | 5      | 9999999        |
...

Beide table sind aktuell leer.

Ich hab das jetzt mit zwei Datenbanken gelöst. `strike_reasons` - Hier stehen alle Vergehen drin und wie sie gewichtet sind ``` | id | weight | name | | 0 | 1 | Spamming | | 1 | 3 | Klauen | | 2 | 5 | Schweres Griefen | ... ``` `strike_punishments` - Hier steht drin ab welcher Gewichtung welche Bannzeit gesetzt wird ``` | id | weight | ban_in_seconds | | 1 | 1 | 5000 | | 2 | 5 | 9999999 | ... ``` Beide table sind aktuell leer.
Member

Bitte ermöglichen, dass es auch möglich ist, neben der Strafe in Form eines Banns für eine gewisse Zeit, eine andere Strafe zu erhalten. Wir dachten da ja mal an das Konzept, dass man für eine gewisse Anzahl an Sekunden vogelfrei gestezt werden kann.

Vereinfacht gesagt dachte ich da einfach an eine weitere Spalte in der Tabelle, die neben "ban_in_seconds" dazukommt, wo drinsteht wie lange jemand vogelfrei sein soll.

Bitte ermöglichen, dass es auch möglich ist, neben der Strafe in Form eines Banns für eine gewisse Zeit, eine andere Strafe zu erhalten. Wir dachten da ja mal an das Konzept, dass man für eine gewisse Anzahl an Sekunden vogelfrei gestezt werden kann. Vereinfacht gesagt dachte ich da einfach an eine weitere Spalte in der Tabelle, die neben "ban_in_seconds" dazukommt, wo drinsteht wie lange jemand vogelfrei sein soll.
Member

Ich hab den strike_punishments Table jetzt etwas verändert

| id | weight | type       | punishment_in_seconds |
| 1  | 1      | "ban"      | 3600                  |
| 2  | 2      | "ban"      | 86400                 |
| 3  | 1      | "outlawed" | 1000                  |
...

Es gibt auch keinen separaten Strike Table mehr, wo Strikes gespeichert werden. Es wird zu jedem Report ja sowieso gespeichert welches Vergehen gesetzt wurde. Zusätzlich gibt es jetzt eine Spalte, die angibt wann (Datum + Uhrzeit), das Vergehen gesetzt wurde.
Wenn jetzt geprüft wird wie lang ein Spieler gebannt / vogelfrei ist, wird in der Datenbank nach allen Reports geguckt, die der Spieler hat, das weight der Vergehen wird zusammengerechnet und dann wird geguckt wann bei diesem Spieler zuletzt ein Vergehen bei einem Report gesetzt wurde. Dieser Zeitpunkt wird dann als Startpunkt zur Errechnung der Verbleibenden Ban/Vogelfrei Zeit genommen.

z.b. Spieler muelleel wurde 2 mal Reportet, und seine Vergehen haben insgesamt ein weight von 4. Ab einem weight von 4 wird man für eine Stunde gebannt. Der letzte Report wurde um 12:00 Uhr bearbeitet bzw. wurde dort das Vergehen gesetzt. Wenn jetzt überprüft wird, ob der Spieler gebannt ist sieht die DB mhmh zuletzt um 12 Uhr wurde da was geändert, also ist er bis 13 Uhr gebannt.

Ich hab den `strike_punishments` Table jetzt etwas verändert ``` | id | weight | type | punishment_in_seconds | | 1 | 1 | "ban" | 3600 | | 2 | 2 | "ban" | 86400 | | 3 | 1 | "outlawed" | 1000 | ... ``` Es gibt auch keinen separaten Strike Table mehr, wo Strikes gespeichert werden. Es wird zu jedem Report ja sowieso gespeichert welches Vergehen gesetzt wurde. Zusätzlich gibt es jetzt eine Spalte, die angibt wann (Datum + Uhrzeit), das Vergehen gesetzt wurde. Wenn jetzt geprüft wird wie lang ein Spieler gebannt / vogelfrei ist, wird in der Datenbank nach allen Reports geguckt, die der Spieler hat, das `weight` der Vergehen wird zusammengerechnet und dann wird geguckt wann bei diesem Spieler zuletzt ein Vergehen bei einem Report gesetzt wurde. Dieser Zeitpunkt wird dann als Startpunkt zur Errechnung der Verbleibenden Ban/Vogelfrei Zeit genommen. z.b. Spieler muelleel wurde 2 mal Reportet, und seine Vergehen haben insgesamt ein `weight` von 4. Ab einem `weight` von 4 wird man für eine Stunde gebannt. Der letzte Report wurde um 12:00 Uhr bearbeitet bzw. wurde dort das Vergehen gesetzt. Wenn jetzt überprüft wird, ob der Spieler gebannt ist sieht die DB mhmh zuletzt um 12 Uhr wurde da was geändert, also ist er bis 13 Uhr gebannt.
Sign in to join this conversation.
No description provided.