Konzept für Strikesystem #18
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.
Ich hab das jetzt mit zwei Datenbanken gelöst.
strike_reasons
- Hier stehen alle Vergehen drin und wie sie gewichtet sindstrike_punishments
- Hier steht drin ab welcher Gewichtung welche Bannzeit gesetzt wirdBeide table sind aktuell leer.
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.
Ich hab den
strike_punishments
Table jetzt etwas verändertEs 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 einemweight
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.