Archiv verlassen und diese Seite im Standarddesign anzeigen : 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
Auch wenns dir nicht hilft, aber was bitte ist das für ein monster script :D
Wofür issn das gut (ich mein wozu braucht man 888 gegenstände)
Low Post
07.04.2008, 17:42
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 (http://cs.elderscrolls.com/constwiki/index.php/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 (http://cs.elderscrolls.com/constwiki/index.php/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.
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!
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.
Low Post
08.04.2008, 13:51
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:
set Variable1 to MeineQuest.Variable1
set Variable2 to MeineQuest.Variable2
;etc.
Und am Ende dann natürlich:
set MeineQuest.Variable1 to Variable1
set MeineQuest.Variable2 to Variable2
;etc.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.