[Preview] [.PWN/.AMX] SoloSplit - create, share & play missions

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

  • SoloSplit - create, share & play missions



    .PWN/.AMX-Version


    • Was ist "SoloSplit"?

      • SoloSplit soll jedem die Möglichkeit bieten, selbst Aufträge bzw. Missionen zu erstellen, jene einem Projekt bzw. Community zur Verfügung zu stellen & von dessen Spielern getestet, bewertet und natürlich auch gespielt zu werden.
      • Ein einzelner Spieler kann vergleichsweise einfach (auch mit wenigen bis keinen Pawn-Kentnissen) einen Auftrag erstellen, der bestensfalls für eine große Menge an Projekten kompatibel ist ("Godfather"-Auftrag), diesen bei seiner Community einreichen oder veröffentlichen, um Feedback zu erhalten.
      • Im Gegensatz zu seinem Vorgänger basiert das jetzige SoloSplit auf einem Plugin.


    • Wie funktioniert das genau?

      • Wie gewohnt besteht der Sourcecode aus einer .pwn-Datei, die man in Pawno o.Ä. erstellen und bearbeiten kann (wie ein Filterscript).
      • Der Server lädt dann die kompilierte .amx-Datei aus dem "/scriptfiles/missions"-Ordner und startet den Auftrag für den Spieler.


    • Was kann man im Missions-Script alles verwenden?

      • Es können alle SA:MP-Natives verwendet werden, die auch im Gamemode verwendet werden .
      • Verwendet der Server an keiner Stelle z.B. "SendRconCommand", kann das Missions-Script nicht auf diese Funktion zugreifen.
      • Callbacks, die in einem Script verwendet werden sollen, müssen kenntlich gemacht werden (siehe Beispiel).
      • Zusätzlich können alle Callbacks verwendet werden, die der Gamemode bereitstellt:



    //Im Gamemode:
    public OnPlayerSpawn(playerid)
    {
    SP_Callback("OnPlayerSpawn", playerid);
    return 1;
    }


    forward SetFuel(vehicleid, fuel);
    public SetFuel(vehicleid, fuel)
    {
    Vehicles[vehicleid][tank]=fuel;
    return 1;
    }


    //Im Script:
    #define SetFuel(%0,%1) CallRemoteFunction("SetFuel","dd",%0,%1)
    //oder
    CallRemoteFunction("SetFuel", "dd", vehicleid, fuel);


    public OnPlayerSpawn(playerid)
    {
    print("Ich wurde vom Gamemode aufgerufen!");
    return 1;
    }

    • Gilt das Limit von maximal 16 Missionen gleichzeitig (Filterscript-Limit)?

      • Nein, da das Plugin unabhängig arbeitet. Es können beliebig viele Missionen gleichzeitig geladen werden.


    • Stürtzt der Server ab, wenn man eine fehlerhafte AMX-Datei laden möchte (z.B. nicht vorhandene Streamer-Natives benutzt)?

      • Nein, in diesem Fall wird die Mission nicht gestartet und eine Warnung gesendet.


    • Was gibt es noch Wissenswertes?

      • Es wird möglich sein für einen Spieler mehrere Missionen gleichzeit ablaufen zu lassen.
      • Man kann mit einer "Whitelist" arbeiten, die verhindert, dass ein Missions-Script z.B. "SendRconCommand" benutzen kann.





    Die erste Testversion sollte in einiger - nicht allzu ferner - Zeit testbereit sein. :thumbup:
    Verbesserungsvorschläge sind gerne gesehen.


    Dange für die Aufmerksamkeit & schönen Abend noch.


    //Update: 21.11.2016

    Berlin - Tel Aviv - Moskau

    Einmal editiert, zuletzt von NeRoTeX () aus folgendem Grund: Update

  • Momentan arbeite ich an der Plugin-Version, um den Missionsablauf variabler zu gestalten.
    Dabei wird es auch möglich sein "richtige" if-Abfragen zu verwenden.



    //Update: 21.11.2016

    Die Funktionsweise wurde geändert, um die .pwn- und .amx-Entwicklung in z.B. Pawno zu unterstützen.


    Damit steht Pawn als Scriptsprache im gleichen Umfang zur Verfügung, wie auch bei Filterscripts/Gamemodes (ausgenommen das Beispiel im Startpost),
    und man muss sich nicht mit dem "funktion:parameter"-Format begnügen.

    Berlin - Tel Aviv - Moskau

    Einmal editiert, zuletzt von NeRoTeX ()

  • Auch wenn ich nicht mit PAWN arbeite, interessante Idee! Habe sowas damals in Java umgesetzt (mit zusätzlich eigenen Callbacks für ein besseres Handling sowie ein Grundsystem für alle Missionen, damit man ne Basis hat. Aber in Java ist das viel einfacher ^^). Bin gespannt was es wird ;)