Ankündigung

Einklappen
Keine Ankündigung bisher.

[HowTo] Script entwickeln und testen (Script.Load)

Einklappen
Das ist ein wichtiges Thema.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [HowTo] Script entwickeln und testen (Script.Load)

    Ich sehe an den mittlerweile täglichen Zusendungen, dass immer noch die meisten ihre Maps ohne Script.Load entwickeln.

    Daher hier ein kurzer Abriss dessen, was notwendig dazu ist:
    (es soll noch ein Wiki Seite draus entstehen, aber das erfordert etwas mehr Zeit und Ruhe)

    Ihr, die ihr hier Skripte und Teile daraus kopiert und ausprobiert, arbeitet nach folgendem Muster (Je nach Leistungsfähigkeit des eigenen Rechners)

    In Notepad++ wird das Skript zusammengeklebt
    Der MapEditor wird geöffnet.
    Die Map wird geladen.
    Das Skript importiert.
    Die Map gespeichert.
    Der MapEditor beendet.
    Das Spiel gestartet
    Die Map geladen.
    Scheisse, kein Baumenü, (Scriptfehler) zurück zu Schritt eins.

    Das demotiviert, das nimmt die Lust.

    Wenn ihr Script.Load verwendet, sieht es so aus:

    Die Map läuft bereits im Spiel, ihr habt mit ALT-TAB zu Notepad gewechselt.
    Dort fügt ihr ein neues Script-stück ein, oder ändert einen Parameter.
    Script speichern.
    Zum Spiel WECHSELN (nicht starten)
    Map neustarten

    fertig. Das geht in Sekunden, auf eigentlich jedem Rechner auf dem das Spiel flüssig läuft.

    Es mag ein wenig Aufwand sein, dies vorzubereiten, aber erstens lohnt es die Mühen (fragt jeden, der es hingekriegt hat) und zweitens gewöhnt ihr euch dran und spätestens bei der zweiten Map ist es kein Problem mehr.

    Was ist also zu tun?

    Zuerst eine Empfehlung:
    Legt euch ein extra Verzeichnis (Ordner) mit einem leicht und sicher zu schreibenden Namen an, eventuell sogar im Hauptverzeichnis eurer Festplatte
    Beispiel: C:\Scripte
    dort legt ihr für eure Map noch ein neues Verzeichnis "Mapname" an
    In dieses Verzeichnis kopiert ihr BEIDE Scripte der Map. (lokal und global)

    Nun der notwendige Teil:
    erstellt eine neue Datei im Notepad++
    stellt oben im Menü die Sprache lua ein.
    Schreibt genau diese Zeile rein (mit angepasstem Scriptnamen und Pfad)
    Code:
    Script.Load("C:\\Scripte\\Mapname\\global.lua")
    Beachtet, dass die BackSlashes \\ doppelt stehen müssen. ZWINGEND
    Speichert die Datei im Verzeichnis für die Scripte der Map unter dem Namen "globalimport", denkt dran unten bei TYP auch wieder LUA anzugeben.
    Anschliessend seht ihr in der Titelleiste von Notepad++ den vollständigen Pfad und Namen der neuen Datei. Kontrolliert ihn.
    Er müsste nun lauten:
    C:\Scripte\Mapname\globalimport.lua
    Das war der erste Streich

    Nun die zweite Datei.
    Neue erstellen
    Sprache lua einstellen
    Code:
    Script.Load("C:\\Scripte\\Mapname\\lokal.lua")
    (Pfad und Namen anpassen nicht vergessen, doppelte Backslashes \\)
    Speicher im Verzeichnis für die Mapscripte, Name:
    lokalimport
    Als Typ lua einstellen.
    Anschliessend wieder den Namen in der Titelleiste von Notepad++ kontrollieren:
    C:\Scripte\Mapname\lokalimport.lua
    Das war der zweite Streich.

    Nun kopiert ihr bitte eure Map an einen sicheren Ort (Nach Belieben, aber TUT ES)
    Öffnet die Map im Mapeditor
    Importiert das Kartenscript:
    C:\Scripte\Mapname\globalimport.lua
    Importiert das lokale Script:
    C:\Scripte\Mapname\lokalimport.lua
    SPEICHERT DIE MAP

    Das war der dritte Streich. Wenn ihr bis hierhin ordentlich und konzentriert gearbeitet habt, seit ihr ein gutes Stück vorwärts gekommen.

    Nun öffnet ihr das eigentliche lokale Script eurer Map. (Nicht das Importscript, wo nur die eine Zeile drin steht.)

    Dort kopiert ihr an eine freie Stelle im Script bitte diese Funktion:

    Code:
    function DEBUGButtons()
        --ermöglicht schnellen Neustart der Map
        XGUIEng.SetText("/InGame/InGame/MainMenu/Container/QuickLoad","{@color:255,0,0,255}{center}Neu starten")
        function GUI_Window.MainMenuLoadClicked()
            GUI_Window.RestartMap()
        end
        XGUIEng.SetText("/InGame/InGame/MainMenu/Container/QuickSave","{@color:255,0,0,255}{center}Komplett beenden")
        function GUI_Window.MainMenuSaveClicked()
            Framework.ExitGameAndCurrentGame()
        end
    end
    Nun ruft ihr diese Funktion auch noch in der Mission_LocalOnMapStart auf
    Code:
    function Mission_LocalOnMapStart()
        DEBUGButtons()
    end
    Speichert das Script

    Lasst Notepad geöffnet
    Startet die Map
    Hier sollte das Baumenü und alle Quests laufen wie gewohnt, wenn nicht, von oben an noch mal genauestens kontrollieren.

    Klickt auf Menü
    Hier sollten nun zwei rote beschriftete Buttons zu sehen sein, wo sonst Quicksave und Quickload waren.
    Wenn nicht, von oben an nochmal kontrollieren.

    Klickt auf "Neu starten"
    Die Map wird erneut gestartet.

    Wechselt mit ALT-TAB zu Notepad++
    Öffnet dort das globale Script der Map. (Nicht die importversion mit nur einer Zeile)

    Schreibt in die Mission_FirstMapAction:
    Code:
    Logic.DEBUG_AddNote("Hey, ich kann nun schneller Scripte testen")
    Speichert das Script
    Wechselt zum Spiel
    "Neustart" der Map
    Spruch bewundern, oder, wenn er nicht auftaucht, nochmal von oben an alles kontrollieren.

    Wenn doch, war das der letzte Streich und ihr seid gerüstet für jegliche Schandtaten im Script.

    BEACHTET: (!*100)
    BEVOR ihr die Map weitergebt, müsst ihr abschliessend die EIGENTLICHEN Scripte wieder in die Map importieren. (Nicht die Import Versionen mit nur einer Zeile drin)



    Noch Fragen, Kienzle?
Lädt...
X