Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 6 von 6

Thema: Problem mit der skriptlänge

  1. #1

    Problem mit der skriptlänge

    hallo erstmal,

    ich habe ein Problem mit einem PlugIn den ich mir vorgenommen habe. Bis jetzt habe ich alle Probleme, die aufgetreten selbst lösen können doch jetzt brauche ich Hilfe.

    Das Problem ist folgendes:
    In meinem Skript werden 888 Gegenstände dem Spieler zugewiesen, welche in if-Anweisungen verschachteltet sind. Damit würde es grob geschätzt 2200 Zeilen haben. Das sind jedoch deutlich zu viel, da der Construction Set das Limit bei 1000 setzt.

    Hier also meine Frage:

    Gibt es eine Möglichkeit das Zeilenlimit zu verändern, auf andere Scripts zu verlinken und die Variablen zu übernehmen oder habt ihr andere Vorschläge?

    Bin für jede Hilfe Dankbar

  2. #2
    Auch wenns dir nicht hilft, aber was bitte ist das für ein monster script
    Wofür issn das gut (ich mein wozu braucht man 888 gegenstände)

  3. #3
    Du könntest OBSE verwenden, dass entfernt afaik die Zeilenbegrenzung für Scripts. Dann müsstest du allerdings noch unter der max. Größe von 32 kB bleiben.


    Alternativ kannst du noch Nested If-Blocks ausprobieren um die Scriptlänge zu reduzieren.
    Hier gibt es allerdings das Problem, dass die Obergrenze vom CS fest bei 10 liegt (würde ich trotzdem machen, wenn möglich).


    Oder um auf ein anderes Script zu verlinken hast du folgende Möglichkeiten:
    • SetStage [QuestID] [Stage]
      Dazu musst du eine Quest erstellen, bei dem du ein Häckchen bei Allow repeated stages setzt. Danach erstellst du neue Queststages (ohne Text, der würde in einer MessageBox enden), bei denen der auszuführende Scriptabschnitt in das Fenster Result Script kommt (Achtung: es können keine Lokalen Variablen definiert werden; auf die aus der Quest muss via [QuestID].Variablenname zugegriffen werden, womit die meisten Funktionen nicht klarkommen)
      Wenn das Script dann aufgerufen werden soll schreibst du dann in dein (Haupt)Script SetStage QuestID Stage:short
      Unter Conditions kannst du noch einige Bedingungen stellen, damit das Script ausgeführt wird. So kann bei der gleichen Queststage ein Unterschiedliches Script ausgeführt werden.
    • Activate [ActionRef] 1
      Du erstellst einen Activator, dem du ein Script zuweist und von dem du eine Persistent Reference irgentwo in der Welt plazierst (am besten in einer Dummyzelle, in die der Spieler nie kommt). Der Block der ausgeführt werden soll kommt in einen OnActivate-Block.
      Wenn du den Block aufrufen willst schreibst du in dein (Haupt)Script [Ref-ID des Activators].Activate Player 1 (es kann auch eine andere Ref als ActionRef genommen werden, solange keine Abfrage nach GetActionRef im Script vorkommt spielt das keine Rolle).


    Nachteil der beiden Methoden ist, dass beide max. 4-5 mal ineinander ausgeführt werden können. Danach wird der Befehl einfach ignoriert (Queststages weiß ich nicht, allerdings hab ich davon bei Activate 1 schon öfter gelesen).
    Der Befehl wirkt so, als ob die Zeilen aus dem Block direkt im Script stehen (mit Ausnahme der Variablen), sie werden nach Aufruf direkt ausgeführt.




    Alternativ kannst du auch eine Variable auf 1 setzten, die ein anderes Script abfragt (das andere Script wird am besten erst mit dem 1-setzten der Variable mittels StartQuest gestartet und nach getaner mittels StopQuest beendet) und sobalt die auf 1 Steht den zweiten Teil des Scripts ausführt. Nachteil ist, dass das Script frühestens im nächsten Frame wirkt.




    Ich würde dir die Methode mit dem SetStage/Activate 1 empfehlen, da es genauso wirkt, wie wenn alles im gleichen Script steht. Und wenn keine OBSE-Befehle verwendet werden halte ich es für "etwas" sinnfrei das vorrauszusetzten.

  4. #4
    ich hätte ne idee: Mann könnte das ja auf mehrere skripts aufteilen, zum beispiel wenn man beim erreichen des maximums einen neuen, anfangs disableten quest startet in dessen script die sache weitergeht, und wenn dann die länge wieder erreicht ist, ein folgequest startet und dannach die erste quest stoppt.

    edit: Nein, zu langsam!

  5. #5
    Danke für die Hilfe

    Die Idee mit dem Activator werd ich warscheinlich verwenden.
    Dazu aber noch eine Frage:
    Werden die Variablen übernommen, muss ich das i-wie einstellen oder geht das gar nicht?

    Für die, die sich wundern warum das Skript so lang ist:
    Ich arbeite an einem Pfeilverzauberungsmod, und bei diesem möchte ich dem Spieler so viele Freiheiten wi möglich geben, d. h. Viele Zauber, drei Stärken und das für alle 8 Pfeilarten. Das multipliziert sich dann zu einer riesigen Anzahl.

  6. #6
    Variablen werden nicht übernommen. Dazu musst du die Varibalen, die du für den entsprechenden Abschnitt brauchst in dem ActivatorScript definieren und dann am Anfang hinschreiben:

    Code:
    set Variable1 to MeineQuest.Variable1
    set Variable2 to MeineQuest.Variable2
    ;etc.

    Und am Ende dann natürlich:
    Code:
    set MeineQuest.Variable1 to Variable1
    set MeineQuest.Variable2 to Variable2
    ;etc.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •