Construction Set Skriptthread zum Construction Set

So jetz kommt hoffentlich mein letztes Problem.
Es klappt zwar jetzt alles mit dem Sprechen und so vom Boss, aber wenn er zuendegesprochen hat, fängt er schonwieder von vorne an und hört mal wieder nicht auf. :?
Ausserdem möchte ich Nach dem Sprechen noch ein Questlog einbauen.

kann mir noch jemand helfen? :D

mfg
Shadow-King
 
Wie wird den der Anfang vom Sprechen gesteuert? Über einen Trigger?

Wenn ja, solltest du dort noch eine doonce abfrage reinmachen.

Zum Questlog, schreib einfach in das ResultScript Feld beim Dialogue "SetStage Questname Queststage"
 
Hi,
jetzt habe ich mal eine etwas längere Frage.
Ich habe mir für eine neue Rasse einige Scripts gemacht, die dieser, wenn die ein bestimmtes Level erreicht, ihre alten Zauber wegnehmen und durch stärkere ersetzen soll.
Zuerst habe ich zwei Quests erstellt. Bei beiden die Priority auf 100, bei Conditions "GetPlayerinSEWorld" und "IsRace" mit meiner Rasse. Dann habe ich der ersten Quest dieses Script hier
Code:
scn PlayerBoundStuffScript

Begin GameMode
           if ( Player.GetLevel >= 10 )
             Player.AddSpell PlayerBoundArmorHeavy02
             Player.RemoveSpell PlayerBoundArmorHeavy01
             Player.AddSpell PlayerBoundWeap02
             Player.RemoveSpell PlayerBoundWeap01
             Player.AddSpell PlayerBoundWeap12
             Player.RemoveSpell PlayerBoundWeap11
           endif
             
           elseif ( Player.GetLevel >= 20 )
             Player.AddSpell PlayerBoundArmorHeavy03
             Player.RemoveSpell PlayerBoundArmorHeavy02
             Player.AddSpell PlayerBoundWeap03
             Player.RemoveSpell PlayerBoundWeap02
             Player.AddSpell PlayerBoundWeap13
             Player.RemoveSpell PlayerBoundWeap12
           endif

           elseif ( Player.GetLevel >= 30 )
             Player.AddSpell PlayerBoundArmorHeavy04
             Player.RemoveSpell PlayerBoundArmorHeavy03
             Player.AddSpell PlayerBoundWeap04
             Player.RemoveSpell PlayerBoundWeap03
             Player.AddSpell PlayerBoundWeap14
             Player.RemoveSpell PlayerBoundWeap13
           endif
             
           elseif ( Player.GetLevel >= 40 )
             Player.AddSpell PlayerBoundArmorHeavy05
             Player.RemoveSpell PlayerBoundArmorHeavy04
             Player.AddSpell PlayerBoundWeap05
             Player.RemoveSpell PlayerBoundWeap04
             Player.AddSpell PlayerBoundWeap15
             Player.RemoveSpell PlayerBoundWeap14
           endif

           elseif ( Player.GetLevel >= 45 )
             Player.AddSpell PlayerBoundArmorALL
           endif
End
erstellt und es der einen Quest zugeordnet und dann das Script hier
Code:
scn PlayerSummonCreasScript

Begin GameMode
           if ( Player.GetLevel >= 10 )
             Player.AddSpell PlayerSummonCrea02
             Player.RemoveSpell PlayerSummonCrea01
             Player.AddSpell PlayerSummonCrea12
             Player.RemoveSpell PlayerSummonCrea11
           endif
             
           if ( Player.GetLevel >= 20 )
             Player.AddSpell PlayerSummonCrea03
             Player.RemoveSpell PlayerSummonCrea02
             Player.AddSpell PlayerSummonCrea13
             Player.RemoveSpell PlayerSummonCrea12
           endif


           elseif ( Player.GetLevel >= 45 )
             Player.AddSpell PlayerSummonCreaALL
           endif
End
erstellt und der zweiten Quest zugeordnet.
Leider klappt das nicht ganz, da das Spiel abstürzt, sobald ich ein eneus SPiel mit der gewählten Rasse beginne.
Ich glaube, der Fehler liegt irgendwo bei den ganzen "GetLevel"s oder bei den Zeichen (>=). Oder bildet sich da vielleicht irgendwo eine Endlosschleife, die sich mit "doonce" oder "once" (Unterschied?) beheben lässt?
 
Also erstmal: Wenn du GetPlayerInSEWorld benutzt, klappt das nur, wenn er auf den Shivering Isles ist, wenn ich das gerade richtig weiß.

Weiter hast du da n kleinen Fehler mit den endifs.
Das darf nicht so aussehen:

if
endif
elseif
endif
elseif

So sieht es bei dir aus. Du lässt die endifs hinter den einzelnen Blöcken weg, da in den Blöcken keine weiteren ifs stehen.
Also das erste Script so:
scn PlayerBoundStuffScript

Begin GameMode
if ( Player.GetLevel >= 10 )
Player.AddSpell PlayerBoundArmorHeavy02
Player.RemoveSpell PlayerBoundArmorHeavy01
Player.AddSpell PlayerBoundWeap02
Player.RemoveSpell PlayerBoundWeap01
Player.AddSpell PlayerBoundWeap12
Player.RemoveSpell PlayerBoundWeap11

elseif ( Player.GetLevel >= 20 )
Player.AddSpell PlayerBoundArmorHeavy03
Player.RemoveSpell PlayerBoundArmorHeavy02
Player.AddSpell PlayerBoundWeap03
Player.RemoveSpell PlayerBoundWeap02
Player.AddSpell PlayerBoundWeap13
Player.RemoveSpell PlayerBoundWeap12

elseif ( Player.GetLevel >= 30 )
Player.AddSpell PlayerBoundArmorHeavy04
Player.RemoveSpell PlayerBoundArmorHeavy03
Player.AddSpell PlayerBoundWeap04
Player.RemoveSpell PlayerBoundWeap03
Player.AddSpell PlayerBoundWeap14
Player.RemoveSpell PlayerBoundWeap13

elseif ( Player.GetLevel >= 40 )
Player.AddSpell PlayerBoundArmorHeavy05
Player.RemoveSpell PlayerBoundArmorHeavy04
Player.AddSpell PlayerBoundWeap05
Player.RemoveSpell PlayerBoundWeap04
Player.AddSpell PlayerBoundWeap15
Player.RemoveSpell PlayerBoundWeap14

elseif ( Player.GetLevel >= 45 )
Player.AddSpell PlayerBoundArmorALL
endif
End

Bei zweiten genau so, wobei ich mich frage, wieso du zwei Scripts gemacht hast. Das geht doch auch mit einem.

Was das once/doonce angeht, da ist kein unterschied. Du kannst auch Hugo schreiben, käme auf das gleich raus. Man nimmt einfach das, weil durch den Namen klar wird, was gemeint ist.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Blacklands
Also erstmal: Wenn du GetPlayerInSEWorld benutzt, klappt das nur, wenn er auf den Shivering Isles ist, wenn ich das gerade richtig weiß.

Bist du dir sicher? Diese Condition steht bei fast allen Quests, auch bei welchen die gar nix mit SI zu tun haben. :?

Weiter hast du da n kleinen Fehler mit den endifs.
Das darf nicht so aussehen:

if
endif
elseif
endif
elseif

So sieht es bei dir aus. Du lässt die endifs hinter den einzelnen Blöcken weg, da in den Blöcken keine weiteren ifs stehen.

Uppsala, das wusste ich nicht. Aber gut, wird gemacht.

Bei zweiten genau so, wobei ich mich frage, wieso du zwei Scripts gemacht hast. Das geht doch auch mit einem.

Für die Übersicht. Bei so schrecklich langen Scripts vertue ich mich immer.

Was das once/doonce angeht, da ist kein unterschied. Du kannst auch Hugo schreiben, käme auf das gleich raus. Man nimmt einfach das, weil durch den Namen klar wird, was gemeint ist.

Achso das macht gar keinen Unterschied? Lol, ich dachte bisher das wäre was wichtiges. :lol:


So jetzt wieder Ernst: Leider geht es noch nicht. Ich habe die endifs rausgelöscht und nur eines ganz am Ende gesetzt, aber das Problem bleibt bestehehn. Ich kann ja mal eine once-Abfrage mit einbauen und sehen ob das was bringt.
Oder hast du (oder jemand anderes ;)) noch eine andere Idee?
 
Hmm, das nicht, aber ich frage mich, wieso das für dich ein langes Script ist:lol:
Mein längstes ist bisher knapp 450 Zeilen lang, das sind (hab ich in Word gezählt) über 11000 Schriftzeichen, mit Leerzeichen über 19000.
 
Du dürfest ein Problem kriegen, weil er immer nur die Abfrage für das erste Level macht, also >= 10 (?) alle anderen Nachfolgenden Abfragen sind dort ja schon enthalten und werden deshalb ignoriert. Du solltest hier mit
Code:
If GetLevel Player >= 10 && Step (Variabel) == 0
....
Set Step to 1
arbeiten

Zum anderen, hast du bei den Scripts auch als Typ Questscript eingestellt?
 
  • Like
Reaktionen: Blacklands
Hmm, das nicht, aber ich frage mich, wieso das für dich ein langes Script ist:lol:
Mein längstes ist bisher knapp 450 Zeilen lang, das sind (hab ich in Word gezählt) über 11000 Schriftzeichen, mit Leerzeichen über 19000.

Ich bin halt noch ein Noob. :oops:


Du dürfest ein Problem kriegen, weil er immer nur die Abfrage für das erste Level macht, also >= 10 (?) alle anderen Nachfolgenden Abfragen sind dort ja schon enthalten und werden deshalb ignoriert. Du solltest hier mit
Code:
If GetLevel Player >= 10 && Step (Variabel) == 0
....
Set Step to 1
arbeiten

Oha das habe ich noch nie gemacht. Aber gut, ich versuche es einfach mal. Es kann ja nur besser werden.

Zum anderen, hast du bei den Scripts auch als Typ Questscript eingestellt?

Na klar, SO doof bin ich auch wieder nicht. 8)
 
Wie wird den der Anfang vom Sprechen gesteuert? Über einen Trigger?

Wenn ja, solltest du dort noch eine doonce abfrage reinmachen.

Zum Questlog, schreib einfach in das ResultScript Feld beim Dialogue "SetStage Questname Queststage"

Nein es wird (wie du es vorgeschlagen hast) über ein script auf dem Sprcher selbst gesteuert.
Aber das mit dem Doonce abfragen is keine Schlechte idee, werd das mal ausprobieren.

Und dann kommen gleich nochmla 2 Fragen.

1. Kann man einen Gegenstand (z.B. ein Feuer) erst ausgeschaltet lassen, und dann per activator anschalten? Ich kann den nähmlich nur eingeschaltet einsetzen. :cry:

2. Kann man das Wasser per Script in einer bestimmten celle ändern?
Also von Wasser zu Brackwasser oder Lava?
Wie man das im CS macht weis ich ja, aber geht das auch InGame nach einen bestimmten ereignis?

mfg
Shadow-King
 
Mit dem Feuer meinte ich das eigentlich so wie die Leuchtfeuer aus Herr der Ringe. :D
Da liegt Halt so ein grosser Haufen Holz, und man sieht kein Feuer, wenn man den jetzt aber aktivirt geht das Feuer an. :D

Ich bekomme das mit dem an und ausmachen ja hin, aber das Feuer Ist ingame immer erst an, es soll aber erst aus sein, um es dann anmachen zu können.
 
Dann mach doch ein Questskript. Du überprüfst zu einem bestimmten Zeitpunkt, ob das Feuer an ist(ist es ja von Anfang an) und deaktivierst es autmatisch über das Questskript. Der Spieler kommt hin und es ist aus. Nun kann er es anmachen.

Da Du ja weißt, wie Du das Feuer an-/ausmachen kannst, sollte so ein "Startup"-Skript absolut kein Problem sein.
 
Du dürfest ein Problem kriegen, weil er immer nur die Abfrage für das erste Level macht, also >= 10 (?) alle anderen Nachfolgenden Abfragen sind dort ja schon enthalten und werden deshalb ignoriert. Du solltest hier mit
Code:
If GetLevel Player >= 10 && Step (Variabel) == 0
....
Set Step to 1
arbeiten

Zum anderen, hast du bei den Scripts auch als Typ Questscript eingestellt?

So ich hab's geschafft. Die Steps waren die Lösung. Danke an euch AjAeXx und Knochen. (endlich wieder zocken!!!) ;)
 
Also du meinst so:

Code:
Scn ...

Begin Onload
If RefId-des-Feurs.enabel
RefID-des-Feuers.disable
..........
Endif 
End

Edit:
Nein es wird (wie du es vorgeschlagen hast) über ein script auf dem Sprcher selbst gesteuert.
Aber das mit dem Doonce abfragen is keine Schlechte idee, werd das mal ausprobieren.

mfg
Shadow-King

Hat funktionirt. Klappt jetzt mit dem Showdown ^^

Kommen wir nun wieder zu Frage 2.
2. Kann man das Wasser per Script in einer bestimmten celle ändern,
Also von Wasser zu Brackwasser oder Lava?
Wie man das im CS macht weis ich ja, aber geht das auch InGame nach einen bestimmten ereignis?

mfg
Shadow-King
 
Zuletzt bearbeitet:
Mit normal Oblivion: Nein!

Mit OBSE weiß ich nicht, ich bezweifel es aber. Geht es um einen Interitor oder um ein Exteritor?

Beim Interitor könntest du den Spieler ja einfach in eine Baugleiche Variante des ersten mit anderem Wasser verfrachten. Bei Exteritor sehe ich schwarz.
 
Schade, is zwar ein interor, ich wollte da nämlich Lava gefriren lassen. Aber einen Teleport einzubauen ist dumm wegen der Ladezeit. Wenns nicht geht dann gehts halt nicht.
Trotzdem Thx.
 
So jetzt hab ich noch eine Letzte frage.

Ich brauche ein Scriptdas kann:
der Spieler redet mit einer Person er hat erst eine Topic zum auswählen, wenn er sich diese angehört hat, soll die auswahlmöglicht für die erste Topic verschwinden, und eine Wahlmöglichkeit für die 2. Topic erscheinen. usw.
das ganze dan 4 mal. Dann soll eine Queststage verändert werden, und die Person, mit der man gesprochen hat, soll verschwinden.

Das wars dann auch schon.

mfg
Shadow-King
 
Das ganze ist ein Dialog und kein Script (zumindest kaum). Du musst die Topics einzeln erstellen und dann beim letzten noch einstellen, dass die Quest-Stage raufgesetzt wird.
Glaub ich zumindest, Dialoge hab ich noch nicht so wirklich gemacht.