anpera.net
http://anpera.homeip.net/phpbb3/

LoGD-Shell - Spielkontrolle aus Chatfenster
http://anpera.homeip.net/phpbb3/viewtopic.php?f=25&t=2628
Seite 1 von 1

Autor:  Eliwood [ Di 13 Jun, 2006 17:56 ]
Betreff des Beitrags:  LoGD-Shell - Spielkontrolle aus Chatfenster

Was ist eine Shell?
http://de.wikipedia.org/wiki/Kommandozeileninterpreter
Wikipedia hat geschrieben:
Ein Kommandozeileninterpreter (engl. command line interpreter - CLI), auch Kommandointerpreter oder Shell genannt, ist ein Computerprogramm, welches eine Zeile Text in der Kommandozeile einliest, diesen Text als Kommando interpretiert und ausführt, zum Beispiel durch Starten weiterer Programme.

Ihr kennt es sicher. Bei Windows nennt es sich MSDOS und verschwindet langsam aus dem Vordergrund, von Unixartigen ist es eigentlich das ganze Betriebssystem.

Meine Idee nun:
Warum nicht, wie bei einer Shell, einige Sachen in LoGD einfach wie Kommandozeile ausführen? Schnell mal das Wetter bequem ändern, wie man will? Irgendjemanden Gold wegnehmen weil er sich dumm aufführt?

Meine Lösung:
Die LoGD-Shell. Einfache Texteingaben, grosse Wirkung.
Beispiel?
$this->bbcode_second_pass_code('', 'System.settings.weather ="Sonnig" -ccomment "/me blickt in den Himmel und die Wolken verziehen sich ohne murren"
Player.Loginname.gold +3000
Player.Loginname.callfunc death -exp 40% -gold=0 -gems=0')
Und viel, viel mehr...

Kann funktionieren. Ich bin dran. Versuche es. Doch nun, meine Frage:

Besteht überhaupt Interesse an einer "LoGD-Shell"??
Wenn nein werde ich sie nicht veröffentlichen :P

Ideen??
Schreibt sie rein

Release??
Wenns fertig ist.

EDIT:
Ohne LoGD-Umgebung ist es immerhin schon möglich dieses Kommando zu verarbeiten:
System.settings.weather ="Sonnig" -comment "/me macht das Wetter Sonnig."
Macht:
Das Wetter sonnig und sendet einen Kommentar ab anstelle des Kommandos.

Autor:  Auric [ Di 13 Jun, 2006 19:01 ]
Betreff des Beitrags: 

Also ich wäre sher dafür.
Allgemein kann man dadurch sicher einige Umstellungen schnel machen, ohne erst ein dickes Plugin etc dafür zu coden, da mann die Befehle ja mehr oder weniger kennt.

Als empeflung würde ich spowas unter die Anfragen-Leiste setzten, also einfach ein <input>, der nur für Admins zugänglich ist und über den man dann befehle eingeben kann.

Zum System: Das dürfte sich an sich gar nicht mal so schwer gestalten. Man müsste nur aufpassen, das eben nur Admins diese Eingabe tätigen können.
aber in Prinzip müsste man die eingegebene Zeichenkette an den leerzeichen zwerlegen und dann die unterschiedlichen teilworte analysieren. Besonders sinnvoll fände ich allein schon die User-Kontrolle und etwas ähnlich dem Savesetting.

Was man auch machen könnte wäre eine reine php-Kommandozeile, die dann geparst wird - wäre dann aber recht fehleranfällig..

soviel von mir
Auric

Autor:  Eliwood [ Di 13 Jun, 2006 19:07 ]
Betreff des Beitrags: 

Auric hat geschrieben:
Also ich wäre sher dafür.
Allgemein kann man dadurch sicher einige Umstellungen schnel machen, ohne erst ein dickes Plugin etc dafür zu coden, da mann die Befehle ja mehr oder weniger kennt.

Als empeflung würde ich spowas unter die Anfragen-Leiste setzten, also einfach ein <input>, der nur für Admins zugänglich ist und über den man dann befehle eingeben kann.

Zum System: Das dürfte sich an sich gar nicht mal so schwer gestalten. Man müsste nur aufpassen, das eben nur Admins diese Eingabe tätigen können.
aber in Prinzip müsste man die eingegebene Zeichenkette an den leerzeichen zwerlegen und dann die unterschiedlichen teilworte analysieren. Besonders sinnvoll fände ich allein schon die User-Kontrolle und etwas ähnlich dem Savesetting.

Was man auch machen könnte wäre eine reine php-Kommandozeile, die dann geparst wird - wäre dann aber recht fehleranfällig..

soviel von mir
Auric


Kein Zusätzliches Feld. Gebraucht wird lediglich eine Chatumgebung wie auf dem Dorfplatz ;)
Accesskontrolle findet statt. Werde ein zusätzliches Feld in den Account machen damit Admins den "Shell"zugriff ein, bwz ausstellen können (Vielleicht noch mit Rechten).
Ebenso werd ich es so machen, dass man die shell zuerst per /openshell "anmachen" muss. Dann können keine normalen Chateingaben stattfinden, es sei denn man stellt es wieder ab mit /closeshell. Oder so.

Zum technischen: Der Parser ist ein Objekt (PHP4). Vielleicht etwas falsche Anwendung, aber nach parsen kann man im aus dem Objekt die verschiedensten Ergebnise extrahieren und auswerten. Zum Beispiel Fehlerausgabe irgendwo hin schicken. Oder Ergebnis anzeigen.

Geparst sieht es z.B. so aus, das Objekt:
$this->bbcode_second_pass_code('', 'object(logdshell)#1 (8) {
["str2parse"]=>
string(55) "System.settings.weather ="Sonnig" -comment "/me stirbt""
["parsestr"]=>
string(31) "="Sonnig" -comment "/me stirbt""
["level"]=>
array(3) {
[0]=>
string(6) "System"
[1]=>
string(8) "settings"
[2]=>
string(7) "weather"
}
["dot"]=>
array(3) {
[0]=>
int(6)
[1]=>
int(8)
[2]=>
int(7)
}
["error"]=>
bool(false)
["rpextension"]=>
bool(true)
["printcommentary"]=>
string(10) "/me stirbt"
["splitbydot"]=>
bool(false)
}')

EDIT: Nein, ich splitte nicht bei Leerzeichen. Ist ja doof. Ich mache es anders. Kann dir ja mal was über PN zukommen lassen wenn du willst ;)

Autor:  Montekar [ Di 13 Jun, 2006 20:12 ]
Betreff des Beitrags: 

Also, Eliwood: Super idee, aber dann mach es entweder so das es kurz ist, also das man es sich merken kann, oder das die Sachen irgendwo stehen z.B. für Admins n neues Fenster wo alles drin steht...

Autor:  -DoM [ Di 13 Jun, 2006 20:44 ]
Betreff des Beitrags: 

Du meinst das was Rikka von mir auf Silienta hat. Wetterkontrolle, Segnen/Verfluchen, Töten/Wiedebeleben....

Willst die ganze iDee ein wenig weiter ausbauen?

Autor:  Eliwood [ Di 13 Jun, 2006 21:11 ]
Betreff des Beitrags: 

-DoM hat geschrieben:
Du meinst das was Rikka von mir auf Silienta hat. Wetterkontrolle, Segnen/Verfluchen, Töten/Wiedebeleben....

Willst die ganze iDee ein wenig weiter ausbauen?


Jap. Das war Grundidee. Aber man kann mehr machen als nur das ;)
Wetterkontrolle, Töten, Wiederbeleben, Belohnen, Bestrafen... Prangeruntersützung muss ich noch überlegen (Sowas wie "Player.-DoM.callfunc AnDenPranger 5" ^^)

@ Montekar: Nein. Ich baue es logisch auf. Du kannst, wenn du nur DOS oder UNIX-Shell hättest, auch nicht sagen du willst "was leichteres". Bei SQL geht das genausowenig. Und ich hab n' Errorhandler in Planung. Deutsche Fehlermeldung :P

Autor:  Devilzimti [ Mi 14 Jun, 2006 09:48 ]
Betreff des Beitrags: 

*hhrrrhhrrr* shells rullern :D
Shell4tw!

Autor:  Eliwood [ Fr 06 Okt, 2006 16:03 ]
Betreff des Beitrags: 

So. Nachdem das Ding einzige Zeit flachgelegen ist setze ich mich nun ernsthaft dran.
Ich werde es etwas anders machen, als ursprünglich geplant - Das beginnt schon beim Interface. "suShI" - "superusershellinterface" - ist eine eigenständige Applikation die sich der dbconnect.php bedient. Und nur dieser Datei. Das hat den Vorteil, dass, falls die Tabellen defekt sind, einfach über suShI die Datenbank repariert werden kann. Einloggen und den Befehl formulieren, z.B. so:
$this->bbcode_second_pass_code('', 'db.repair -all').

Wer sich das ganze einmal anschauen möchte:
http://eliwood.dyndns.org/logd/sushi.php
Geht aber nicht immer. Ist ja mein HS... ;)

Das Backend, "sush", ist doch nicht objekt orientiert sondern wird prozedural sein. Passwort und Loginname für den rootuser müssen in der dbconnect.php hinterlegt werden ($SUSH_ROOTUSER, $SUSH_ROOTPASS), falls die Shell nicht gebraucht wird, kann sie durch "falschstellen" der Variable $SUSH_ROOTLOGIN unbrauchbar gamacht werden.

Vor habe ich unter anderem eine beqeme Userkontrolle (user.{acctid|username}.callfunc repairnavigation), Wetterkontrolle, Spielkontrolle allgemein. Dann werden einige sonstige Funktionen dazukommen, zum Beispiel, falls installiert, mysqldump (Pfad musss aber eingestellt werden), oder, falls ich Lust und Zeit habe, spezielle Dateien einlesen, die spezielle Anweisungen enthalten, um Dateien zu bearbeiten (Automatische Installation von einfachen Mods..?).[/code]

// Da das ganze keinen LoGD-Code braucht veröffentliche ich es unter der GNU LGPL und nicht unter der GNU GPL. Eine etwaige Dokumentation, die ich mitliefere, wird wahrscheinlich unter der GNU FDL stehen.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/