Sun Tzu
Ein Chat-Überwacher, der passende Sprüche ausgibt, anstatt warns/kicks
A Chat monitor which reacts with appropriate sayings instead of warns/kicks
Anforderungen/Requirements
Version 0.10.1 oder neuer
Version 0.10.1 or newer
Beschreibung/Description
Dieses Plugin ist vom "badwords" Plugin abgeleitet, nur mit einem ganz anderen Ansatz. Ich halte nichts von warnen oder kicken wegen bestimmte Worte an sich. Ich wurde einmal von so einem teil für 10 minuten tempgebannt, weil ich sagte "damn, I'm such a noob". Aber ich mag nicht, wenn Leute, die ge-ownt wurden "noob" oder "gaymore" schreien.
Also, wie badwords, überwacht dieses Plugin das Chat für bestimmte Worte bzw. Regexes, aber when es ein solches Wort sieht, dann gibt ein dazugehörenden Satz aus. Dies wird zunächst für alle lesbar sein, und nach der konfigurierten pmthreshold als PM an den Spieler ausgegeben.
Zusätzlich fügt es den neuen Befehl !suntzu dazu. Wenn man !suntzu ohne parameter eingibt, kommt ein zufälliger Spruch von der gesamten Liste. Wenn man ein wort danach tippt, sucht das Plugin dieses wort in sowohl den "Trigger" Worten als auch den gesamten Text der Spruchliste und, sofern eine passende Zeile gefunden wird gibt es diese aus, ansonsten wird aus der ganzen Liste zufällig eine ausgegeben.
Für sowohl Chat-Überwacher als auch mit Parameter, findet das Plugin mehr als einen Treffer, wird zufällig von den Treffern ausgewählt. Also, hast du 2 verschiedene Sprüche mit dem Tiggerwort: "noob", wird von den 2 zufällig einen ausgegeben.
Alle Sprüche werden im Moment mit Unterschrift von Sun Tzu ausgegeben. Dies Entspricht meinem Gebrauch davon, aber man kann dies im Code trivial ändern. Allerdings, will ich das noch konfigurierbar machen.
This plugin is an alternative to the "badwords" plugin. But instead of kicking players it showers them with wisdom. This plugin has 2 modes:
1. Chat monitor: This monitors user chat, and if it sees one of the "trigger" words, it spits out one of the sayings associated with that trigger. This will be output for all to see on the console until the per-player pmthreshold is reached, after which it will output as a PM to the player in question.
2. Explicit call with !suntzu: If you type !suntzu without any parameters the pluging will choose a random saying from the whole list and output it. If you add a word, it will search through the trigger words and the text of the sayings and choose randomly from the list of sayings which match. If it doesn't find the word at all, it will fall back to randomly choosing from the whole list.
Currently, the plugin is hard-coded to add "- Sun Tzu " as a signature to each saying. This should be trivial to change in the code for those who want to. But I will also make that configurable in the near future.
Beispiel:
Example:
Orcrist: you stupid camper!
Console: He who is prudent and lies in wait for an enemy who is not, will be victorious. - Sun Tzu
Orcrist: !suntzu attack
Console: Thus, what is of supreme importance in war is to attack the enemy's strategy. - Sun Tzu
Installation
Erst, die angehängte Datei runterladen, entpacken und "suntzu.php" in das "plugins"-Verzeichnis schieben. Dann "suntzu.lst" ggf. anpassen (s. Konfiguration unten) und in das "config/plugins" Verzeichnis reintun. Anschliessend, [suntzu] block in die config.cfg Datei von ManuAdminMod einfügen und anpassen. Abspeichern und danach den Mod neustarten.
Download the attached file, unpack, and copy "suntzu.php" in the "plugins" folder. Then edit "suntzu.lst" as needed (see Configuration below) and place it in the "config/plugins" folder. Finally add [suntzu] section to the config.cfg and change as needed. Restart the Mod.
Konfiguration/Configuration
config.cfg:
[suntzu]
enabled = 1 ; Enable plugin
chattrigger = 1 ; Automatically react to player chat
pmthreshold = 3 ; number of chat reactions before further sun tzu messages are sent privately
debug = 0 ; Add extra debugging to mod_log
suntzu.lst:
Diese Datei enthält einen Spruch pro Zeile. Optional, kann man am Anfang der Zeile einen Regex reintun, der als "Trigger" dient. Nur die Zeilen mit "Trigger" Regexes werden beim Chat-Bewacher berücksichtigt. Der Regex wird markiert mit ":" vorne und hinten. Wenn du kein Regexes kennst, kannst du einfach "normale" Worte reinschreiben, und "|" benutzen um mehrere Triggers für einen Spruch zu haben. Siehe Beispiel unten und auch im beiliegenden "suntzu.lst" Datei.
This file contains one saying per line. Optionally, you can add a regex at the beginning marked by opening and closing ":". If you are not familiar with Regexes, you can just type literal words you want to match, using "|" to separate multiple triggers for one saying.
Beispiel/Example suntzu.lst:
All men can see these tactics whereby I conquer, but what none can see is the strategy out of which victory is evolved.
:totenstille\s+[nb][o0]{2,}[bn]|deadsilence\s+[nb][o0]{2,}[bn]|ds\s+[nb][o0]{2,}[bn]:Be extremely subtle, even to the point of formlessness. Be extremely mysterious, even to the point of soundlessness. Thereby you can be the director of the opponent's fate.
:gaymore|claynoob|gay.*clay|clay.*gay|claybob:For to win one hundred victories in one hundred battles is not the acme of skill. To subdue the enemy without fighting is the acme of skill.
:camping|camper:He who is prudent and lies in wait for an enemy who is not, will be victorious.
Hence that general is skillful in attack whose opponent does not know what to defend; and he is skilful in defense whose opponent does not know what to attack.
If you are far from the enemy, make him believe you are near.
:[nb][o0]{2,}[bn]:Pretend inferiority and encourage his arrogance.
Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat.
:gaymore|claynoob|gay.*clay|clay.*gay|:Supreme excellence consists in breaking the enemy's resistance without fighting.
Thus, what is of supreme importance in war is to attack the enemy's strategy.
:[nb][o0]{2,}[bn]:It is said that if you know your enemies and know yourself, you will not be imperiled in a hundred battles; if you do not know your enemies but do know yourself, you will win one and lose one; if you do not know your enemies nor yourself, you will be imperiled in every single battle
It is the rule in war, if ten times the enemy's strength, surround them; if five times, attack them; if double, engage them; if equal, be able to divide them; if fewer, be able to evade them; if weaker, be able to avoid them.
:[nb][o0]{2,}[bn]:A military operation involves deception. Even though you are competent, appear to be incompetent. Though effective, appear to be ineffective.
If your enemy is secure at all points, be prepared for him. If he is in superior strength, evade him. If your opponent is temperamental, seek to irritate him. Pretend to be weak, that he may grow arrogant. If he is taking his ease, give him no rest. If his forces are united, separate them. If sovereign and subject are in accord, put division between them. Attack him where he is unprepared, appear where you are not expected.
:lucker:When torrential water tosses boulders, it is because of its momentum. When the strike of a hawk breaks the body of its prey, it is because of timing.
Alles anzeigen
Notizen/Notes
Das Plugin ist noch in Beta Zustand. Bitte mit Vorsicht geniessen!
Dazu gibt es ein paar Dinge zu beachten:
- Wie schon erwähnt ist "- Sun Tzu" hard-codiert.
- Wenn ein Spruch zu lange ist, wird es in Console Ausgabe umgebrochen, was leider die Farbe wieder zurücksetzt. Das werde ich demnächst fixen.
- Sei sehr vorsichtig mit den Trigger Regexes. Wenn dein Regex für alles ein Match hat, werden alle zugespammt bei jedem chat überhaupt!!
- Das Code ist immer noch sehr unschön. Ich werde das demnächst aufräumen und umfaktorieren.
The Plugin is still in Beta condition. Use at your own risk!
A couple of things to note:
- As mentioned, the "- Sun Tzu" signature is hard-coded.
- If a saying is too long the console forces a line-break which causes the color on the new line to be "reset". I will fix this soon.
- Be very careful with the trigger regexes. If your regex matches everything every single chat event will trigger causing a bunch of console spam.
- And finally, the code is still a mess. I will be cleaning it up and refactoring soon.
Viel Spass!
Enjoy!