Construction Set Skriptthread zum Construction Set

1. Das sollte mit "SetScript" gehen.

2. Das wird wohl an sv_construct liegen. 1. braucht man die Funktion eigentlich nicht mehr, 2. lautet der Syntax wenn dann so so:

Code:
let <StringVar> := sv_construct "%z" <StringVar2>

Sowieso frage ich mich, woher das "String" bei Dir kommt.
 
  • Like
Reaktionen: Schmelz
1: ??? Es geht mir um das Ausrüsten des Zaubers und nicht um das verschieben irgenwelcher Scripte...

2: Sowohl weglassen, als auch ändern führt zu keiner Änderung.

also soll es so aussehen?:
PHP:
ScriptName OaMMarkSpell

string_var path

Begin ScriptEffectStart

if getbaseobject == OaMSaeule
    let path := sv_Construct "\Schmelz-OaM\Säule_01.dds"
    if gettexturepath == path
        settexturepath "\Schmelz-OaM\Säule_02.dds"
    else
        settexturepath "\Schmelz-OaM\Säule_01.dds"
    endif
endif

End
 
1. Dafür gibts "SelectPlayerSpell".

2. Falls das von Kahmul beschriebene noch nicht genug sein sollte, eventuell statt "if getTexturePath == path" "if eval ( getTexturePath == path )" oder gar "sv_Compare" benutzen.
 
  • Like
Reaktionen: Schmelz
Danke, mit eval gibt es keine Fehlermeldung mehr und auch die OBSE.log bleibt leer.

Nur die Textur ändert sich leider nicht...
 
Überprüfe mal, ob was in der Konsole wegen Fehlermeldungen steht. Ansonsten bau' mal Debugging-Messages (mit PrintC z.B.) ein, und schau', wie weit das Skript kommt.
 
  • Like
Reaktionen: Schmelz
keine Meldungen

hatte ich schon, seltsamer Weise geht er immer ins else, obwohl der Textur-Phad dem angegebenen entspricht. Ich habe auch mal die beiden Pfade beim Wechsel getaucht, aber das ändert nichts.

Für mich heißt das, dass an der Syntax was nicht passt, bzw der Phad an der fachen Stelle beginnt. Der Ordner "Schmelz-OaM" ist direkt in Textures.
 
Eine andere Idee:
getTexturePath im Wiki schrieb:
returns the texture path of an object. This command is identical to GetIconPath, but also works for other object types such as skills, classes, and miscellaneous objects..
Entweder ist der Artikel in der Hinsicht unzureichend, oder der Befehl funktioniert schlicht nicht für andere Objekte...
 
  • Like
Reaktionen: Schmelz
@Kahmul: Ich habs versucht, auch da leider keine Änderung. Das würde auch die Frage offen lassen, wieso der Befehl nicht läuft.

@Diarrhoe: Könnte das bedeuten, dass nur Objecte, nicht aber Referenzen geeignet sind?
 
Nein, ich meine eher damit, dass der Zaubereffekt wahrscheinlich auf einen Activator (Worldobject) ausgeführt wird und nicht auf ein Objekt aus der Kategorie Miscellaneous.
 
  • Like
Reaktionen: Schmelz
Das wäre überhaupt nicht gut. Das Object muss in jedem Fall ein Activater sein. Wie könnte man das denn umgehen? Ich kann ja nicht um den Activater ein anderes Object der richtigen Art bauen. Dann kommt mann ja nicht mehr an den Activater. Abgesehen davon, dass das extrem viel Extraarbeit.

Wie kann ich denn sichergehen, dass der Pfad passt?
 
Kennt irgendjemand eine Möglichkeit, eine Stringvariable auszugeben???
Ich glaube irgendwie schon dumm zu sein, aber bei MessageEX, MessageBoxEX, PrintC und SetName stehen nur die selben Kürzel für Zahlen und Referenzen...

Irgenwas muss ja an meinem Pfad nicht passen^^

Das Änadern der Textur ist auch das letzte Scriptproblem meinerseits für einen sehr langen Zeitraum. (vieleicht sogar das letzte zu Oblivion)
 
Danke, aber wieso steht sowas nicht im wiki??

WIe auch immer sollte es dann ja so funktionieren:
Code:
let path := gettexturepath
printc"%z" path
aber ich bekomme keine Ausgabe, nicht einmal eine lere Zeile.
 
Zuletzt bearbeitet:
Script für Quest(meldung)verzögerung gesucht

Hi!
Ich möchte bestimmte (bestehende) Quests nach z.B. 15 Tage starten lassen, ähnlich wie erst nach drei In-Game Tagen die SI-Meldung kommt.
Ich finde es wenig charmant, wenn man aus dem Knast kommt, und dann erstmal sechs Häuser geschenkt und zehn Quests aufgetragen bekommt. "Der Postbote ist da! Willkommen aus dem Knast, übrigens, dein Opa schenkt dir das, deine Oma dies und dein verstorbener Vetter hat dir nen Magierturm hinterlassen und acht andere Leute wollen genau von dir Level 1 Bauern Hilfe!"

Natürlich könnte ich die esp's deaktivieren und erst bei Bedarf aktivieren, aber das ist mir nicht Lore-freundlich genug :D
Ich suche also ein Script, mit dem man Questmeldungen beliebig verzögern lassen kann. Das könnte ich auch verwenden, um Quests, deren Voraussetzungs-Level höher (z.B. 15) ist, später (!!^^) starten zu lassen, z.B. nach zwei Monaten.

Grundkenntnisse mit dem CS sind vorhanden, aber eine genaue Beschreibung, was ich wo in der entsprechenden esp ändern muss, wäre hilfreich. Es würde mir reichen, die Textmeldung zu verzögern, bestimmte Personen/Portale, die Quests starten, brauchen nicht unbedingt erst später aufzutauchen, auch wenn das schön wäre.

Danke im Voraus :)
 
Zuletzt bearbeitet:
@ Bony: Das kann man wohl kaum allgemein sagen.

Suche doch mal in der esp. nach einem Script, dass dem hier ähnlich ist:
PHP:
Scn ...

short doonce

Begin GameMode

if doonce == 0
     setstage Quest Stage
endif

End
 
Nehmen wir mal z.B. DLCDeepscornscript, also den DLC Äonensenke.

begin gamemode

;kickoff block

if (GetStage DLCDeepscorn <=0) && (Player.IsInCombat == 0) && usw...
SetStage DLCDeepscorn 10
endif

Dieser Teil bestimmt, wann ich die Meldung bekomme, also wenn ich nicht kämpfe und gleichzeitig wenn ich aus dem Anfangdungeon raus bin usw.

Wenn ich hier mit
noch eine Bedingung einfügen würde, die bestimmt, dass ich z.B. erst Level 15 erreicht haben muss, dann müsste die Meldung ja auch dann erst kommen.

Die Frage ist, da ich mich mit Scripten nicht so auskenne, welche Bedingung würde sich denn da noch zusätzlich anbieten? Also welcher "Befehl"?
Sowas wie
... && (Player.IsLevel 15 == 1) ;frei erfunden ;)
Gibt es so eine Bedingung, und wenn ja, wie heißt sie?
Oder kann ich es in InGame-Tagen angeben, in Realer Spielzeit usw.?
Kenne halt die "Befehle" nicht.

Z.B.
... && (IsPlayerInJail == 1) && ...
würde doch bedeuten, dass ich die Nachricht erst bekommen, wenn ich in den Knast gesteckt werde. Aber irgendwie gibt es hier kaum Funktionen, die ich irgendwie für meine Zwecke gebrauchen kann.
 
Zuletzt bearbeitet:
PHP:
player.getlevel >= 15
Die Abhänigkeit von der Zeit geht wie folgt:
PHP:
...

float timer

Begin GameMode

if timer >= x
     ;... (Der Inhalt des Scripts bissher kommt hierhin)
else
     set timer to timer + getSecondsPassed
endif

End
x ist die Zeit in Sekunden.

Wenn du eine größere Zeitspanne haben willst kannst mit:
PHP:
GameDaysPassed >= x
eine Mindestzahl an verstrichenen Ingame-Tagen vorraussetzen.

Wenn du noch andere brauchst einfach fragen.