[Preview] LiveScript

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey,
    ich habe vor kurzem ein neues Projekt begonnen: LiveScript.


    LiveScript ist ein Filterscript, welches Script während der Laufzeit ausführen kann.
    Dazu habe ich mir eine eigene kleine Syntax-Regelung zusammengestellt, auf welche LiveScript basiert.
    Ich weiß nicht ob es sowas in der Art schonmal gegeben hat, aber ich kenne so ein System nur von "Second Life", bei dem man auch Ingame alles selbst scripted.


    LiveScript hat derzeit lediglich 429 Zeilen und ist sehr performant gehalten.
    Es können dynamisch Callbacks und Funktionen hinzugefügt werden.


    Die Definition von Callbacks und Funktionen sieht wiefolgt aus:



    new LSCallback[][CallbackInformation] =
    {
    {"__onscriptexecute_start", "__onscriptexecute_end"}
    };


    new LSFunction[][FunctionInformation] =
    {
    {"alert", "is"},
    {"die", "is"}
    };


    Ein Callback ist derzeit so aufgebaut:


    Code
    __[callbackname]_start
    .. // Code
    __[callbackname]_end


    Das Script hat einen Handler, der Callbacks bei bestimmten Bedingungen aufruft.
    Bspw. kann der Spieler den Callback "__onplayerspawn" verwenden. Sobald dieser im Script verwendet wird, wird er immer dann mit den jeweiligen Parametern aufgerufen, wenn ein Spieler gespawnt wird.


    Funktionen sind so änlich aufgebaut.


    In der LSFunction-Variable wird zuerst der Function-Name mitgegeben (bspw. "alert") und anschließend die Parameter(-typen). "is" - "integer (playerid), string (text)".
    Der Script-Interpreter geht dann jeden Callback durch und ruft die Script Function mit den jeweiligen Parametern auf.



    LSFunction_alert(playerid, text[])
    {
    ShowPlayerDialog(playerid, DIALOG_LS_ALERT, DIALOG_STYLE_MSGBOX, "Achtung", text, "OK", "");
    }


    Diese Funktion wird dann vom Script-Interpreter bei vorliegendem Aufruf durch CallLocalFunction aufgerufen.


    Bspw. würde so ein kleines Spieler-Script aussehen:


    Code
    #LIVESCRIPT_SCRIPT
    
    
    __onplayerspawn_start($playerid)
    alert("$playerid", "Hallo!")
    __onplayerspawn_end


    Die groben Syntax-Regeln sind derzeit:

    • Variablen müssen immer mit einem $ beginnen.
    • Parameter (auch Variablen) müssen immer in Anführungszeichen geschrieben werden.
    • Es werden keine Semikolons benötigt.

    Der Source Code wird vorerst nicht herausgegeben.
    Ich würde mich sehr über Vorschläge, bzw. Syntax-Vorschläge freuen.
    Natürlich auch über sonstiges Lob oder Kritik.


    Edit: Text erweitert.


    Lg.


    #Brotfischbaron


    In schā'a llāh

    Einmal editiert, zuletzt von namespace ()

  • Hört sich sehr gut an das System ich habe vorher auch noch nicht von so einen system gehört


    Allerdings nur 9/10 Punkten Denn, Wofür soll ich Ingame scripten? :D

  • Hört sich sehr gut an das System ich habe vorher auch noch nicht von so einen system gehört


    Allerdings nur 9/10 Punkten Denn, Wofür soll ich Ingame scripten? :D


    Mir würden jetzt mehrere Implementations-Möglichkeiten einfallen.
    Bspw, also "Not-Absicherung". Du hast gerade 200 Spieler Online, beim letzten Update aber vergessen, einen Command bei OnPlayerSpawn zu schreiben.
    Damit könnte das dann eben erledigt werden.


    Noch ein Weg wäre, für Spieler noch manche Funktionen und Callbacks zugänglich zu machen, und sie so ihr eigenes Haus mit eigenen Gates etc. scripten zu lassen.


    #Brotfischbaron


    In schā'a llāh

  • Hay,
    sry wenn ich frage, aber ich hab immernoch nicht verstanden, was das bringt???

    __________________________________________


    Scripter & Programmierer im Ruhestand

    Derzeitiges Projekt:
    __________________________________________

  • Du machst zum beispiel ein Update und vergiss eine befehl mit reinzuscripten und dadurch funktionieren einige funktionen nicht, du scriptest dan mit diesen
    Filterscript schnell den befehl dazu


    Das war jetzt nur ein Beispiel, man kann es auch anders einsetzen.
    Bspw. gleich wie bei "Second Life".


    #Brotfischbaron


    In schā'a llāh

  • Projekt wieder verworfen?
    Finde die Idee nämlich echt gut, hatte das Ganze mal selber für Commands gemacht, also das man sich Befehle inGame erstellen konnte, mit Bedingungen (Admin, Beruf, etc.), und jeder dem ich das gezeigt habe, war davon fasziniert, bis auf DMA-Pupsi. :|

  • Hm, ich hab das Script noch irgendwo rumliegen, jedoch nicht wirklich viel weitergearbeitet.
    Im Prinzip ist es auch fertig.


    Bspw. könnte man in einem WebInterface den User Scripts erstellen lassen, um bspw. ein Garagentor bei seinem Haus automatisch öffnen zu lassen, wenn jemand in die Nähe kommt.
    Für solche Zwecke war es eigentlich auch gedacht.


    Vielleicht arbeite ich bei Zeiten mal daran weiter.


    #Brotfischbaron


    In schā'a llāh

  • Genau das ist ja das Problem.
    Im Prinzip könnte man mit Dialogen (wenn auch umständlichen) das selbe wie bei "Second Life" machen - Sodass man sich komplett eigene Sachen und eventuell sogar Bots mittels Script selbst programmiert und sagt, was passieren soll.
    Per Web-Interface wäre es natürlich komfortabler.


    #Brotfischbaron


    In schā'a llāh

  • Zusätzlich dazu müsste man auch nicht jedem Honk, der am Script mitarbeiten soll "vertrauen" :)
    Also ich persönlich kann es zwar nicht gebrauchen, aber ich denke mal, dass sich der ein oder andere bestimmt über ein Release freut, vorallem evtl. mit einem HowTo für das Webinterface.

  • Gute Idee namespace ;)


    Das System gefällt mir auch sehr gut, habe es so noch nirgends gesehen :)


    Zusätzlich dazu müsste man auch nicht jedem Honk, der am Script mitarbeiten soll "vertrauen"


    Das ist auf jeden Fall einer der wichtigsten Vorteile :D


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S