Brauche ein paar wichtige Details

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
  • Hallo Leute,


    ich habe mich nun nach langer Zeit entschieden zu Multi Theft Auto rüber zu siedeln da ich einfach mal Lust hab auf was neues & mit mehr Möglichkeiten,
    Lua ist kein Ding sprich lässt sich im Prinzip wie jede andere Sprache schreiben & bla ja also das Wissen hab ich schon, nun gibt es noch ein paar ungeklärte Dinge in diesem Bereich.


    Server Seitig & Client Seitig, nun ich habe gehört das alles was Client Seitig läuft vom Spieler runter gezogen wird, sprich er hat nachher mein Zeugs , stimmt das ?
    Noch eine Frage bezogen hierauf, Welche Nachteile & Vorteile bieten beide Seiten, wozu dient das Prinzip im Allgemeinen ?


    Rest der Frage...
    Worauf muss ich Speziell achten im Code sprich damit es dem Gamemode nicht schadet, meinem Server nicht schadet & letztendlich mir nicht schadet, jetzt Speziell bezogen auf
    Timer, Spezielle Funktionen & weiteres.


    So das war es auch schon, mehr Infos bräuchte ich derzeit nicht, den anderen Teil hat mir das MTA Wiki schon beantwortet, die Fragen dort oben konnte es mir leider nicht beantworten oder ich
    hab da was übersehen.


    Ich bedanke mich dann schon mal im voraus.


    ( Bitte nur Antworten wenn die Antwort Sinnvoll & Logisch ist sprich Leute sich mit MTA schon länger beschäftigen )

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ich glaube, clientseitige Scripts kann man auch schon vorher compilern, aber da wird es wohl auch einen decompiler geben. Trotzdem ist es sicherer.

  • Doch es wird compilert, spätestens wenn der Server die resource lädt...:S
    Glaube ich zumindest.
    Dem großen Meister zu widersprechen macht mir angst ;(

  • Bin kein großer Meister, übertreib nicht...
    Ne Lua interpretiert seinen Code, würde der Compiler zum Einsatz kommen müsste dieser vorher alles durchgehen damit
    nichts falsches in den Speicher geladen wird das kann Fatale Auswirkungen haben, der Interpreter lässt den Code in Echtzeit durchlaufen

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Könnte sein das er den Syntax Check meinte, Lua besitzt glaube ich nur einen Just In Time Compiler, könnte sein das er das gemeint hat


    ok jetzt aber zurück zu meiner Frage, Quellformat bleibt so oder immer da, der Compiler erzeugt den Code nur im Hintergrund für die Vm damit das ganze wiedergegeben werden kann.


    Meine Frage bezog sich darauf welche Skript Teile Speziell für Client & Server sein müssten

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Server- und Client-Scripts unterscheiden sich im wesentlichen,
    dass Server-Scripts auf dem Server "laufen"
    und Client-Scripts den Speicher des heimischen PC's belasten.
    Jedoch muss sich der Spieler erstmal diese Scripts holen (Download).


    Ja es stimmt, der Spieler kann dann in alle Client-Scripts schauen,
    aber man kann sie mit dem Programm "Luac" schützen.
    Dieses Programm macht das Script zum Teil für den Spieler unleserlich,
    jedoch gibt es eine Möglichkeit diese Luac-Datei wieder umzuformen (bekomm es selber aber nicht hin).


    Du musst also ein gutes Verhältnis machen:


    Viel Client u. wenig Server --> Viel Traffic beim Download, aber weniger Belastung für den Server
    Wenig Client u. viel Server --> Wenig Traffic, jedoch muss der Server viel arbeiten.


    Es gibt von MTA Server- und Client-Funktionen, wie du sicher weißt.
    Das hat folgende Gründe:
    Die Client-Scripts kann der Spieler beliebig verändern, falls er Glück wird dann diese Datei auch nicht neu gedownloadet.
    Dann kann er einige sogenannte "Hacks" anwenden. Zum Beispiel die Funktion "aclGroupAddObject " kann einen Spieler zum Admin machen (siehe auf der Seite das Beispiel).
    Nun kann man diese Funktion nicht als Client anbieten sondern darf nur auf dem Server ausgeführt werden.
    Auf dem Client-Script laufen eher Funktionen die die Welt verändern oder GUI's erstellen.


    Du musst selber also mal überlegen wie du deinen Server gestalten willst.


    Auf die zweite Frage weiß ich selber keine Antwort (wüsste ich selber gern).


    Hoffe konnte helfen und hoffentlich habe ich nicht zu viel Mist geschrieben (LUA-Anfänger ;) ).


  • Viel Client u. wenig Server --> Viel Traffic beim Download, aber weniger Belastung für den Server
    Wenig Client u. viel Server --> Wenig Traffic, jedoch muss der Server viel arbeiten.


    Script downloads sind in der regel vernachlässigbar klein. Das was später den traffic ausmacht sind bilder und sound datein.



    Die Client-Scripts kann der Spieler beliebig verändern, falls er Glück wird dann diese Datei auch nicht neu gedownloadet.
    Dann kann er einige sogenannte "Hacks" anwenden. Zum Beispiel die Funktion "aclGroupAddObject " kann einen Spieler zum Admin machen (siehe auf der Seite das Beispiel).
    Nun kann man diese Funktion nicht als Client anbieten sondern darf nur auf dem Server ausgeführt werden.
    Auf dem Client-Script laufen eher Funktionen die die Welt verändern oder GUI's erstellen.


    Stimmt eigentlich so nicht. Man kann nicht mal eben einfach die datein ändern und darauf hoffen, dass sie nicht aktualisiert werden. Dafür bedarf es mehr.


    Also Fox als Grundregel kannste dir einfach sagen, dass alles was den Server nicht zu interessieren hat (speed-o-meter, guis, sound etc.) clientseitig sein sollte.
    Allerdings ist es auch immer sicherer so viel wie möglich dem server zu überlassen damit hacker, die einen veränderten client haben nicht allzu leichtes spiel haben.

  • swordi Lass den Schmarn


    Hankey


    Die Clientseitigen Resourcen von Simbad sind zb. verschlüsselt kompiliert, aber trotzdem sind auf dem Server GUI´s benutzbar.
    Was für Callbacks braucht man, damit die Resourcen nicht über den Luacompiler nicht vom Luadecompiler wieder entschlüsselt werden ?
    Ich hatte Simbad mal im Gespräch aber i-wie hat er mich nicht ganz verstanden.
    Ich hab aber beim rumtesten mit dem Compiler Output rausgefunden das ein paar string Funktionen komische Resultate ausgeben.
    Wie zb. diesen hier...


    Lua = string.dump(function() print("Lua") end)
    print(Lua)


    Gibt zurück: LuaQ
    Byte-Result: 0x51 // Steht für das Q



    Wenn man versucht Simbads Resourcen zu decompilieren, stürzt die Dos ab und der Output gibt mir die
    Binären Output (sowas in der Richtung) aus mit LuaQ an erster Stelle.

    [align=center]
    Mta Script Editor - Work in Progress

    Einmal editiert, zuletzt von Jason_Gregory ()

  • Bin kein großer Meister, übertreib nicht...
    Ne Lua interpretiert seinen Code, würde der Compiler zum Einsatz kommen müsste dieser vorher alles durchgehen damit
    nichts falsches in den Speicher geladen wird das kann Fatale Auswirkungen haben, der Interpreter lässt den Code in Echtzeit durchlaufen


    Tschuldigung aber:


    1. Gibt es für Lua einen Compiler.
    und 2. kompiliert Lua jede SkriptDatei vor dem ausführen selber, da alles andere viel zu ineffektiv wäre


    das einzige was unverändert bleibt ist die Zeilenanzahl, was aber unter anderem fürs Skriptdebugging geil ist, da der Debugger die exakte Fehlerzeile bereitstellt.
    Der Compiler hat natürlich den Vorteil dass man client-side Skripts nicht einfach "klauen" und editieren kann, da sie wie ne .amx sind.

  • Zitat

    Der Compiler hat natürlich den Vorteil dass man client-side Skripts nicht einfach "klauen" und editieren kann, da sie wie ne .amx sind.


    Kann man trotzdem, Lua selbst stellt auch einen Decompiler zur Verfügung.
    Habs bisher nur begrenzt geschaft Teile vom Output undecompilierbar zu machen.

    [align=center]
    Mta Script Editor - Work in Progress

  • Kann man trotzdem, Lua selbst stellt auch einen Decompiler zur Verfügung.
    Habs bisher nur begrenzt geschaft Teile vom Output undecompilierbar zu machen.


    Sorry dass ich das alte Thema nochmal rauskram, aber "dekompilierbar" heißt auch nur, dass praktisch die Hard Lua Codes die Assembler ähneln dann vorhanden sind und wenn man es dann auch noch so gemacht hat dass mehrere Dateien in eine reinkompiliert wurden, will ich jemand sehen der mit dem dekompiliertem Rotz der rauskommt noch was anfangen kann :P