Construction Set Skriptthread zum Construction Set

Dafür ist "||" zuständig. Also:

Code:
if(x == y) || (y == z)
fragt ab, ob X gleich Y oder Y gleich Z ist. Sobald eines zutrifft, wird der If-Block ausgeführt.
 
  • Like
Reaktionen: samael
aha, dann siehts grob so aus:
scn test

begin on gamemode
if player getclass 0 || player getclass 1
player add...
endif
end

oder hab ichs falsch aufgegriffen?

Danke
 
Hi Leute,

ich möchte ein Static-Object, genauer gesagt eine magische Wand, die einen Weg versperrt, 3 mal mit einer Waffe treffen und diese unsichtbare Wand soll dann disabled werden, also einfach verschwinden. Wie würde das Skript dazu aussehen? Ich möchte als Waffe einen Magierstab mit Feuerschaden verwenden.
Bin ich mit diesem Skript auf dem richtigen Weg?

PHP:
scn Skriptname

short state

Begin OnMagicEffectHit
if state == 0
set state to 1
setstage [Questname Stage]
MagischeWand.disable
endif
end
 
Dann kannst du ja einen eigenen Skript-Effekt erstellen und diesem so ein Skript geben:
PHP:
scn name

Begin ScriptEffectStart

if getIsReference <Referenz-der-Mauer>
  disable
endif

end

Die Mauer muss dafür aber ein Activator sein...
 
Das verstehe ich jetzt nicht ganz. Dieses Skript kommt auf die Mauer, die ich als Activator erstellt habe?
Wie weiß das Spiel denn, dass ich die Mauer 3 mal treffen muss, damit die Mauer disabled wird?

Mein Magierstab hat übrigens einen normalen Feuerschaden, falls das eine Rolle spielt.
 
hoi,

mal ne allgemeine unnötige Scriptingbezogene Frage :-D

werden begin gamemode scripts/blöcke nicht immer ausgeführt und führt das dann bei der Masse von Scripts nicht zu ... "Rechenüberanstrengungen"? :-D
 
Das kommt drauf an. GameMode-Blöcke auf Objekten und NPC's werden jeden Frame ausgeführt, wenn man in derselben Zelle wie sie ist.
Quest-Skripte hingegen werden dauernd ausgeführt, sobald sie auf einer Quest liegen, bei der "Start Game Enabled" angehakt ist, aber normalerweise nur alle 5 Sekunden. Dies kann man mit der Variable "fQuestDelayTime" im Skript oder allgemein in der Oblivion.ini bei "fQuestScriptDelayTime" ändern.
 
  • Like
Reaktionen: Dar-Ma
also wenn ich jetzt ein skript erstelle das Variablen anhand von Tagebucheinträgen verändert, kann ich das getrost machen?
Weil ich mit der Variable die Questmarker verändern will.
 
Du kannst für die Marker auch einfach "GetStage" als Bedingung auswählen, dann brauchst Du nicht unnötig mit Variablen rumhantieren.
 
Ja, da stehe ich gerade aufm Schlauch..

Man soll 3 NPC's auf was abfragen, dann bekommt man jeweils eine unterschiedliche Stage für. Die NPC's können in beliebiger Reihenfolge aufgesucht werden, die Questmarker sollen dann halt nur auf diejenigen NPC's gezeigt werden, die noch offen sind.
Da aber die Stage von npc1 kleiner ist wie die von npc2, haut das nicht hin.
 
was soll den abgefragt werden? funktioniert es nicht, einfach drei Questpfeile mit den jeweiligen COnditions zu setzen?
 
ich habe für jeden npc den man abgefragt hab eine eigene queststage errichtet. "Ihr wart schon bei NPC1/2/3", und die können nicht die selbe Stage, also Nummer, haben.
Wenn ich jetzt als Condition == setze, dann beißt sich das doch irgendwann, weil man wenn man NPC2 besucht hat, NPC1 aber noch nicht, die Stage von NPC1 nicht mehr erreichen kann und es somit mit den Conditions nicht mehr hinhaut.
 
@Arielle: Nein, das Skript kommt auf den Magie-Effekt.
Aber wenn du die Wand dreimal treffen musst, musst du noch eine Variable erstellen, die bei jedem Treffer hochgesetzt wird. Das hatte ich vorhin wohl überlesen...
 
ich habe für jeden npc den man abgefragt hab eine eigene queststage errichtet. "Ihr wart schon bei NPC1/2/3", und die können nicht die selbe Stage, also Nummer, haben.
Wenn ich jetzt als Condition == setze, dann beißt sich das doch irgendwann, weil man wenn man NPC2 besucht hat, NPC1 aber noch nicht, die Stage von NPC1 nicht mehr erreichen kann und es somit mit den Conditions nicht mehr hinhaut.

Kannst ja in einen Questskript Variablen einbauen wie z.b. mit X geredet, mit Y geredet usw. und dann als Condition GetQuestVariable machen. ;)
 
  • Like
Reaktionen: Dacri
wenn man NPC2 besucht hat, NPC1 aber noch nicht, die Stage von NPC1 nicht mehr erreichen kann und es somit mit den Conditions nicht mehr hinhaut.
Also ich würde das ganze über eine Global lösen....Also eine Variable, die man Scriptrübergreifend verwenden kann. Ob das die sauberste Lösung ist weis ich nicht, aber ich würds so machen^^
Dazu musst du folgendes machen: Klicke im menü oben auf Gampelay/Globals... Dann öffnet sich ein Fenster. Hier machst du rechtsklick und new. Jetzt erstellst du drei Stück. Zum Beispiel: GesprochenMitNPC1
GesprochenMitNPC2
GesprochenMitNPC3
Bei Variable Type nimmst du Short und das Feld darunter sollte 0 bleiben. Dann auf apply Und die Globals sind fertig. Im Script schreibst du jetzt statt
Code:
SetStage
Code:
Set [I]GesprochenMitNPC1[/I]  to 1
Das machst du mit allen drei SetStage Befehlen. Jetzt änderst du die COnditions so um: Als Condition Function nimmst du GetGlobalValue dann unter den Function Parameters den Name deiner Variable und dann bei Comparison musst du == nehmen. Als Value gibst du 0 an. Jetzt wird der Questpfeil solange gezeigt, bis du einmal mit dem NPC gesprochen hast. Wenn du möchtest, dass das alles trotzdem in dem QUest sichtbar ist, kannst du auch statt die Befehle
Code:
SetStage
zu ersetzen das
Code:
Set [I]GesprochenMitNPC1[/I] to 1
einfach nur darunter schreiben. die Conditions müsstest du aber trotzdem ändern.
So, das wäre jetz meine Lösung :D Hoffentlich hilfts :)
EDIT: Wieso kenn ich für sowas nie die EINFACHEN Lösungen? -.-
 
  • Like
Reaktionen: Dar-Ma
ja, so wird es wohl gehen...aber kann man die variablen nicht lokaler machen, also als skript einfach beim quest deklarieren..wird das Skript bei Beendigung der Quest nicht einfach wieder...vermöbelt?