Neueste Themen
» Was denkt ihr gerade?
von Sabbo Heute um 13:54

» Hallo erstmal ^^
von Ayron Jenkins Di 14 Mai 2024, 21:49

» Wie schützt ihr eure Pokemon Karten?
von Richard026 Sa 11 Mai 2024, 16:16

» Auf welche Spiele freut ihr euch?
von Ayron Jenkins Do 09 Mai 2024, 13:33

» Switch 2
von Dana So 31 März 2024, 13:06

» Gewinnspiel zu Pokémon Karmesin und Purpur
von Sabbo Fr 02 Feb 2024, 14:43

» Van Gogh Pikachu Promotion
von Sabbo Mo 22 Jan 2024, 18:39

» Preise Japanischer Modern Karten explodieren
von Bahamut Sa 06 Jan 2024, 18:58

» Zeigt her eure Pokemonkarten!
von Sabbo Mi 03 Jan 2024, 21:21

» Freundescodes für die Freundessafari in X/Y
von Ayron Jenkins Do 31 Aug 2023, 18:28

Mitgliederstatistik
Mitglieder1918
Besucherrekord323
Neuestes Mitglied
Forengründung07. Juli 2009
Wer ist online?
Insgesamt sind 26 Benutzer online: 0 Angemeldete, kein Unsichtbarer und 26 Gäste

Keine

[ Die ganze Liste sehen ]


Der Rekord liegt bei 323 Benutzern am Di 22 Nov 2011, 17:54
Random

Some Client Scripts

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten

Some Client Scripts Empty Some Client Scripts

Beitrag von Garma. Mo 24 Jun 2013, 22:35

Guten Abend,

Ja manchen dürfte mein Benutzername wohl was sagen, den meisten eher negativ. Aber deshalb bin ich nicht hier.

Wie ihr vielleicht wisst gibt es einige Features die für PO schon oft gewünscht wurden aber von den Devs nicht umgesetzt werden. Dazu zählt z.B. ein Freundesystem. Seit PO Client Scripting integriert hat, kann man da aber schön sich einiges zusammenbauen. Ich habe vor einiger Zeit mich mal an's Client Scripting gesetzt und mir mal Gedanken gemacht was man eigentlich gut gebrauchen könnte. Ich poste das deshalb mal hier weil hier wohl die meisten PO Spieler sind und ich immer wieder mitkriege dass das Ignoresystem von PO nicht klappt und wieso man keine Freunde adden kann und und und. Mit den Client Scripts will ich dem etwas entgegenwirken.

Um meine Client Scripts zu nutzen benötigt ihr das Script Window Plugin von PO (Plugins -> Plugin Manager -> Add Plugin -> Dann irgendne Datei hinzufügen die clientscripting im Namen hat).

https://github.com/Garma/Garmas-PO-Client-Scripts
Das ist mein Repository bei Github - der Master Branch und meine aktuelle Version. 

Die 2 wichtigen Dateien sind:
https://github.com/Garma/Garmas-PO-Client-Scripts/blob/master/scripts.js
Das ist der Hauptcode der alles enthält. Den Inhalt der Datei müsst ihr in's Script Window einfügen. Danach "Safe Scripts" deaktivieren weil sonst die File I/O Funktionen deaktiviert werden (die braucht ihr).
https://github.com/Garma/Garmas-PO-Client-Scripts/blob/master/client_config.json
Die Konfigurationsdatei. Die heißt client_config.json und kommt in den Ordner wo PO drinliegt. Die Datei ist wichtig weil sie die Konfiguration enthält.

Habt ihr das braucht ihr noch 3 Dateien:
ignores.txt
friends.txt
stalkwords.txt

Diese kommen ebenfalls in den PO Ordner. Wichtig: Der Client muss die Dateien lesen beschreiben können, sonst bekommt ihr einen Haufen Errors! Es empfiehlt sich deshalb nicht PO im Programmordner zu haben :]

Und nun das wichtigste: Was können die Scripts denn?

- "Stalkwords", das heißt man kann Wörter einer Liste hinzufügen und sobald sie in einer Chatnachricht auftauchen, wird der Client geflasht. Wer also quasi keine Turniere verpassen will setzt "Turnier" auf seine Liste. Die Benachrichtigung reagiert auch auf Botnachrichten die per Serverscript generiert werden.

- Freundesliste. Direkt nachdem man sich auf einem Server einloggt, bekommt man angezeigt wer von den Freunden auf diesem Server online ist. Freunde kann man hinzufügen und löschen, die Liste von Freunden ist sortiert nach online/offline Status. Außerdem kann man Kampfanfragen und private Nachrichten auf Freunde begrenzen. Man bekommt zusätzlich eine Meldung wenn ein Freund online kommt bzw. offline geht (Meldung ist deaktivierbar).

- Ignoriersystem. Jetzt denkt sich der ein oder andere: Das gibt es doch schon! Das stimmt, allerdings geht das immer nur auf einem einzigen Server (wenn es denn überhaupt funktioniert). Das clientseitige Ignoriersystem funktioniert serverübergreifend. Ignorierte Benutzer können einen nicht herausfordern und einem keine PN senden, zusätzlich werden alle Chatnachrichten dieses Benutzers ausgeblendet (konfigurierbar). Man bekommt in diesem Fällen aber eine Benachrichtigung.

- Automatisches Update. Ich habe einen Autoupdater eingebaut, der automatisch die Scripte aktuell hält. Der ist deaktivierbar, in dem Falle gibt es ein Kommando mit dem man ein Update selbst starten kann. Das Update verläuft vollkommen automatisch. Heißt also: Ich aktualisiere mein Repo auf Github und ihr gebt ~update ein und schon ist alles auf dem neuesten Stand.

Das ganze ist natürlich alles auf deutsch, klar. Bringt keinem was wenn das englisch wäre. Es gibt übrigens keine Backdoors, keine Sicherheitslücken oder irgendwas was mir Zugriff auf euer Zeug gibt. Das könnt ich mir nicht leisten. Gibt ja eh schon einige die meine Client Scripts benutzen.

Bei Fragen, fragt ruhig. Ich bin zwar ein Troll, Buguser, Spammer, Flamer whatever aber ich werd' nicht beißen. Ich hab's gebaut also unterstütze ich es auch.

 

Garma.
Anfänger
Anfänger

Status :
Online
Offline

Anzahl der Beiträge : 8

Nach oben Nach unten

Some Client Scripts Empty Re: Some Client Scripts

Beitrag von Garma. Sa 13 Jul 2013, 22:47

Da die aktuelle Version meiner Client Scripts ja auch schon von Anfang April dieses Jahres ist, wurde mal wieder ein Update nötig. Ich habe in der neuen Version 2.1 einige Sachen mir überlegt gehabt und bin mal gespannt wie sie ankommen. Was sich geändert hat:

- Verschiedene nützliche Sachen
Aktuell ist es so, dass man gerade auf großen Servern mit vielen Spielern Usernamen suchen geht. Das Problem macht sich dann bemerkbar wenn man z.B. die Trainerinfo von jemandem sehen will (um ihn z.B. herauszufordern) oder als Moderator das CP öffnen will. Da durchsucht man die Liste, in der Zwischenzeit hat sich der Spieler vielleicht schon ausgeloggt und dann gibt man genervt auf. Aus dem Grund gibt es neue Shortcuts:
- ~info [Spieler] - Öffnet die Trainerinfo eines Spielers
- ~ranking [Spieler] - Öffnet das Ranking Window von PO und selektiert den Spieler vor
- ~PM [Spieler] - Öffnet das PM Fenster
- ~spectate [Spieler1] - Lässt einen dem Kampf von Spieler1 zuschauen (sofern Rechte vorhanden sind)

All diese Kommandos werden euch auch mitteilen wenn derjenige schon nicht mehr online ist. Ansonsten aber sind sie ein Äquivalent zu den bestehenden Funktionen; so entspricht ~info dem Doppelklick auf einen Benutzernamen.

- ~restrictchallenges und ~restrictpms wurden entfernt um die Config einheitlich zu halten; die entsprechenden Optionen können in der client_config.json getätigt werden (die beiden Optionen stehen ganz oben in der Datei).

- Einige Modfunktionen
Fast alle Moderatoren wird es wohl schon einmal passiert sein dass sie statt das Control Panel zu öffnen sich verklickt haben und dann einen Spieler versehentlich gekickt oder sogar gebannt haben. Zusätzlich zu #1 können Mods das Control Panel nun direkt über ~cp [Spieler] öffnen. Der angegebene Spieler muss online sein und wird vorselektiert.
Des Weiteren kann über ~k [Spieler] der Kick-Befehl ausgelöst werden.
Die letzte Modoption betrifft das Bannen. Standardmäßig können Moderatoren nur maximal 1 Tag bannen. Nicht alle Server unterstützen die Option zeitlich zu bannen, daher gibt es das als Client Script: ~b [Spieler]:[Dauer] bannt einen Spieler, optional zeitlich begrenzt. Die zeitliche Begrenzung kann beliebig hoch sein.

- Autogreet (automatisches Begrüßen)
In der client_config.json kann eingestellt werden ob die anderen Spieler auf einem Server automatisch begrüßt werden sollen sobald man den Server betritt (auto_greet). Ist das eingestellt (true) kann auch die Nachricht die gesendet wird, eingestellt werden (auto_greet_message).

- Behandlung von Kampfanfragen
Es gibt 2 neue Optionen in der client_config.json mit der sich Challenges automatisch akzeptieren lassen (auto_accept_challenges) und automatisch ablehnen lassen (auto_decline_challenges). Während das automatische Ablehnen grundsätzlich immer greift, wird das automatische Akzeptieren von Kampfanfrage erst dann ausgeführt nachdem geprüft wurde ob der andere Benutzer ignoriert wird und ob man nur Anfragen von Freunden erlaubt, aber der andere Spieler kein Freund ist.

- Neu einloggen ohne den Server zu verlassen
Falls man denkt man wurde disconnectet kann man sich über ~relog ganz einfach neu verbinden. Dabei braucht man den Server nicht zu verlassen. Das hat zum Vorteil, dass alle Chatnachrichten erhalten bleiben, genau wie die Nachrichtenhistory im Texteingabefeld. Die Session-ID bleibt dabei ebenfalls erhalten.

- Aktualisieren der Config
Bisher ist es so, dass wenn man in der Konfiguration was geändert hat, man sich neu einloggen muss. Zukünftig kann man ganz einfach ~reload benutzen und dann aktualisiert sich die Config direkt live. Ändert also z.B. den Namen des Bots tippt ihr ~reload ein und schon geht die Änderung live.

Die aktualisierte Datei findet ihr hier: Garmas-PO-Client-Scripts/scripts.js at master · Garma/Garmas-PO-Client-Scripts · GitHub
Zusätzlich muss die client_config.json aktualisiert werden: Garmas-PO-Client-Scripts/client_config.json at master · Garma/Garmas-PO-Client-Scripts · GitHub

Ein Update über ~update funktioniert leider nicht, da sich etwas am Quellcode geändert hat.

Garma.
Anfänger
Anfänger

Status :
Online
Offline

Anzahl der Beiträge : 8

Nach oben Nach unten

Some Client Scripts Empty Re: Some Client Scripts

Beitrag von Garma. Mi 11 Sep 2013, 21:27

2 Monate ist es her, seit das letzte Update kam. Ich habe in der Zeit natürlich die Entwicklung nicht gestoppt und ich kann heute die neue Version 2.2 ankündigen. 

Was hat sich geändert?

- Freunde hinzufügen. 
Das Kommando ~add wurde mit einem 2. Parameter ausgestattet, der das Geschlecht festlegt. Will ich also Rivas als Freund adden geht das nicht mehr wie bisher nur mit ~add Rivas sondern mit der Angabe des Geschlechtes ~add Rivas:f. f sagt meinem Script: "Aha der Benutzer ist weiblich". Betritt sie dann den Chat passt sich das ganze auch an: "Deine Freundin Rivas hat den Chat betreten.". Der Buchstabe für männlich ist entsprechend "m".

- ~pokeinfo zeigt ein paar mehr Daten an, wie etwa das Gewicht und die Größe des Pokemons.

- ~moveinfo wurde hinzugefügt. 
Das Kommando gibt Informationen über den angegebenen Move aus (Name, Stärke, Genauigkeit, Nebeneffekte etc.) und funktioniert im Prinzip identisch zum eingebauten Serverkommando auf dem Main Server. Als Client Script hat es den Vorteil, dass man es eben überall nutzen kann. Beachetet allerdings, dass die PO interne Datenbank nur bedingt vollständig ist und manchmal Daten einfach nicht zur Verfügung stehen.

- Mit ~players kann man sich anzeigen lassen, wie viele Spieler gerade online sind.

- Zählung der Onlinezeit pro Server
Meine Client Scripts zählen nun für euch eure Gesamtonlinezeit pro Server. Die Zählung beginnt natürlich erst ab dem Moment, wo ihr die Scripts einsetzt. Das ganze Kommando ist dann ~onlinetime [Servername]. Will ich also sehen, wie lange ich auf dem Server "Shuckle Empire" online war, gebe ich ~onlinetime Shuckle Empire ein.

- Automatisches "afk" Management
Meine Client Scripts können wahlweise automatisch euren afk Status verwalten. Dazu gibt es die Option "enable_auto_afk". Nur solange die aktiviert ist, funktioniert das. Wenn aktiviert, setzen meine Client Scripts euch automatisch auf afk, wenn ihr eine vorgegebene Zeit lang nichts mehr im Chat geschrieben habt (ich wollte da noch den Zeitpunkt des letzten Kampfes oder so mit einbeziehen, aber das ist technisch aktuell nicht möglich). Den Zeitraum könnt ihr mit "interaction_timeout" festlegen. Wurdet ihr auf afk gesetzt und schreibt wieder was, wechselt euer Status sofort zu nicht afk.

- Der Updater wurde verbessert, sehr viel.
~update hat bisher nur bedingt funktioniert und war eigentlich auch nur für Bugfixes gedacht. Funktionsupdates konnte ich damit nicht einführen weil ich sonst immer hätte eure angepasste Konfiguration plattmachen und das ist aus meiner Sicht nicht Benutzerfreundlich. Außerdem hat der Updater einfach immer die Datei aktualisiert weil es nichts gab woran er festmachen konnte, ob es ein Update gibt. Für beide Probleme habe ich eine Lösung gefunden.

1) Es gibt nun 2 Konfigurationsdateien. default_config.json und custom_config.json. Die default_config enthält alle Optionen, die zur Konfiguration der Client Scripts zur Verfügung stehen. Die custom_config dient dazu, die Einträge aus der default_config zu überschreiben. Auf die Art können Benutzer ihre eigene Konfiguration erstellen und ich kann gleichzeitig neue Optionen hinzufügen (die dann einfach mit dem Standardwert übernommen werden) und muss nicht die angepasste Konfiguration plattmachen.

Da das ganze etwas verwirrend ist, geb ich mal ein Beispiel: Angenommen ich will nur den Kommandobot bearbeiten. Dann schaue ich mir die default_config an und bilde einfach die gleiche Struktur ab.

Spoiler:
Hier sieht man auch gleich einen weiteren Vorteil: In der eigenen Datei steht nur das "was einen interessiert" und was man nicht braucht, lässt man einfach weg. Das macht das ganze übersichtlicher.

2) In meinem Repository liegt eine Datei, die die Versionsnummer enthält. Erst wenn diese Versionsnummer sich von der internen Scriptversion unterscheidet, wird der Updater aktualisieren. ~update wird euch dann ebenfalls melden, dass kein Update verfügbar ist.

- Shortcuts und Makros
Das ist die wohl Größte Neuerung. Ich entwickle inzwischen seit 2 Jahren die Serverscripts von SE und immer wenn ich ein Kommando umbenannt habe damit es für Neulinge intuitiver wird, hab ich mich selbst bei alten Gewohnheiten erwischt. Ich als Admin hab dann zwar die Möglichkeit mir einfach einen Alias da reinzucoden aber auf anderen Servern steht mir die Möglichkeit nicht offnen. Aus dem Grund kann man in der neuen Version Shortcuts und Makros anlegen. Ich geb euch Beispiele:

Interne Alias
~shortcutadd ~r:~reload
~r ist ein Shortcut und linkt zum internen Kommando ~reload. Gebt man also ~r in den Chat ein, wird es in ~reload umgewandelt. Natürlich kann man auch für ~shortcutadd einen Shortcut anlegen:

~shortcutadd ~sca:~shortcutadd
~sca erbt dabei die Parameter von ~shortcutadd und kann daher als Ersatz benutzt werden.

Shortcuts für Serverkommandos
Das Spielchen funktioniert übrigens auch für Serverkommandos. Angenommen wir haben ein Kommando /tour und ich will es über /t benutzen können, dann geht das problemlos:

~shortcutadd /t:/tour
/t erbt dann ebenfalls alle Parameter von /tour und kann genau so verwendet werden.

Es ist auch mögliche ganze Kommandos da reinzustecken:

~shortcutadd /defaulttour:/tour Wifi OU:8:Singles:Pizza
/defaulttour startet dann immer gleich ein Turnier im Tier Wifi OU mit 8 Spielern und Modus Singles mit dem Preis "Pizza".

Es ist außerdem möglich normale Wörter als Kommandoalias zu benutzen.

~shortcutadd asdf:/players
Gibt man in den Chat "asdf" ein, wird dann eben /players ausgeführt.

Makros
Last and least, sind auch Makros möglich.

~shortcutadd wer:ich bin cool
Gebe ich in den Chat dann "Wer ist das?" ein, dann steht da am Ende: "ich bin cool ist das?". Ich rate euch Makros mit einem Spezialzeichen davor wie $ oder % anzulegen da ihr sonst normale Wörter ersetzt. Ihr könnt das alles beliebig kombinieren. Beachtet aber, dass Makros auf Wortgrenzen hören und nicht einzelne Buchstaben oder Zeichen innerhalb einer anderen Zeichenkette ersetzen können.

- Spaßoptionen
Es gibt 2 neue Konfigurationsparameter: shuffle_messages und revert_messages. Wenn aktiviert, dann lässt shuffle_messages alle Chatnachrichten wild durchgewürfelt ankommen und revert_messages dreht alle Zeichen aller Nachrichten um. Ein praktischer Nutzen steckt nicht dahinter.

- Einige Kommandos wurden umbenannt.

Download

Im Downloadarchiv sind die Dateien roadmap.txt und version. Die könnt ihr rauslöschen. Das gleiche gilt für den Ordner "plugins".

Garma.
Anfänger
Anfänger

Status :
Online
Offline

Anzahl der Beiträge : 8

Nach oben Nach unten

Some Client Scripts Empty Re: Some Client Scripts

Beitrag von Garma. So 29 Sep 2013, 23:06

Freut euch schonmal auf die nächste Version (die kommt wenn sie fertig ist). Mit der führe ich ein Feature ein, dass schon meiner Meinung nach schon lange fehlt.

Jeder hat so seine eigenen Stile wie er spielt. Die einen benutzen grundsätzlich immer die Wifi Clause, die anderen benutzen sie grundsätzlich nicht. Manche wollen mindestens die Sleep Clause, anderen ist es egal. Serveradministratoren können Clauses erzwingen, aber das macht die Tiers letztendlich irgendwo unflexibel. Mit der nächsten Version meiner Client Scripts (Version 2.3.0) wird man für sich selbst pro Tier (oder global für alle Tiers) festlegen können, welche Clauses man mindestens aktiviert haben will. Das ganze sieht z.B. so aus:

~forceclauses Sleep Clause, Freeze Clause, Wifi Clause:Smogon Uber
Das legt einen Eintrag an, dass ihr eben genau diese 3 Clauses aktiviert haben wollt, wenn euch jemand in dem Tier herausfordert. Es ist auch einstellbar ob ihr nur genau diese Clauses aktiviert haben wollt, oder ob diese mindestens aktiviert sein müssen und zusätzlich auch sowas wie Item Clause aktiviert sein kann. Jedes Mal bevor ihr dann eine Kampfanfrage empfangt wird dann geprüft ob die Clauses stimmen. Wenn nicht, wird die Anfrage direkt geblockt. Es ist außerdem einstellbar ob ihr dann benachrichtigt werden wollt (da steht dann auch dabei welche Clauses euer Gegner aktiviert hatte).

Wenn ich mir eure ewige Diskussion um die Wifi Clause im No Legies anschaue, denke ich ist die Funktion der ultimative Kompromiss. Lasst euch nichts vorschreiben; entscheidet selbst was ihr wollt.

Garma.
Anfänger
Anfänger

Status :
Online
Offline

Anzahl der Beiträge : 8

Nach oben Nach unten

Some Client Scripts Empty Re: Some Client Scripts

Beitrag von Gesponserte Inhalte


Gesponserte Inhalte


Nach oben Nach unten

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben


Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten