Construction Set [Mod-Problem] Absturz bei Betreten einer Cell wegen Skript?!

O?t3rfrat23

Neuankömmling
Hallo.
Ich will mir um ein selbst designtes Schwert eine etwas umfangreichere Quest bauen, welche ich auch gerne mal später veröffentlichen würde. Leider bin ich auf arge Schwierigkeiten gestossen.
Nachdem ich endlich das BuchSkript hinbekommen hatte, wie ich dachte, bin ich ins Spiel. Bedauerlicherweise stürzt das Spiel in Cheydinhal bei Betreten eines Innenraumes ab, oder wenn man wartet. Dabei habe ich aber nur dden Buchhändler verändert (Buch mit Skript rein). Dasselbe passiert in Chorrol. Da habe ich aber eine Person in die Graue Stute gestellt, auch mit Skript.
Was habe ich an den Skripts falsch gemacht?!

Buchskript:
scn 00Drachenbuch

short doonce
short controlvar
short button
short do
short doo
short gez

Begin Gamemode
If getstage 000Dragonquest < 30
Disable "000Drachenbuch"
Else
Enable "000Drachenbuch"
Endif
End

begin onactivate
if ( gez == 0 )
set doo to 0
set do to 0
set controlvar to 0
Endif
if ( controlvar == 0 )
messagebox "Willst du das Buch für 450 Goldstücke kaufen?", "Ja", "Nein"
Set controlvar to 1
elseif ( Controlvar > 1 )
Activate
Endif
End

Begin Gamemode
if ( controlvar == 1 )
set button to getbuttonpressed
If ( button == -1 )
Return
ElseIf ( button == 0 )
if player.getitemcount 0000000f >449
player.removeitem 0000000f 450
set controlvar to 2
set gez to 1
Elseif ( player.getitemcount 0000000f <= 449 )
if do == 0
Messagebox "Du hast nicht genug Geld"
set do to 1
set doo to 1
Endif
Endif
Elseif ( button == 1 )
if doo == 0
Messagebox "Dann halt nicht"
set doo to 1
set do to 1
Endif
EndIf
ElseIf ( controlvar == 2 )
Activate
Set controlvar to 3
EndIf
End

begin onadd
if ( doonce == 0 )
setstage 000DragonQuest 40
set doonce to 1
Endif
End

PersonenSkript:
Scn 000DeaderRed

Begin GameMode
if getstage 000DragonQuest < 50
Disable "000Rotwardone"
Else
Enable "000Rotwardone"
Endif
End

Begin OnDeath
setstage 000dragonquest 60
End

Bezieht sich das OnDeath eigentlich auf den Rotwardoen (Träger des Skripts, oder auf den PC?)

Ich hoffe ihr könnt mir helfen.
Schon mal Danke
 
Zuletzt bearbeitet:
Dieses OnDeath bezieht sich auf den Träger des Scripts. Dass das Spiel abstürzt könnte daran liegen, dass du zwei GameMode-Blöcke hast, ich weiss nicht, ob man das darf - also probier mal das zusammenzulegen.
 
Du hast überall "enable XXX" oder "diasable XXX" stehen.
Das ist nicht richtig. Versuch es mal mit "xxx.enable" oder "xxx.disable".

Wenn du willst das ich mir das erste Script genauer anschau musst den Quellcode schon einrücken. Das kann ja so keiner lesen ;)


Grüsse Zerlix
 
Zuletzt bearbeitet:
Danke für den Hinweis, von wegen GameMode-Blöcken.
Apropos einrücken: In dem Quelltext ist sowohl der Text im ersten sowie auch im zweiten Spoiler eingerückt. Keine Ahnung warum es das hier nicht zeigt.
Selbst wenn ich den einen GameMode Block in den anderen schreibe, geht es nicht. Die Schreibweise xxx.enable bzw. enable.xxx nimmt er gar nicht an (Auch mit " " nicht)
Wenn ich den Disable/Enable Teil rausnehme klappt es immer noch nicht. : ABer nur wenn der Quest bei Betreten der Stadt schon bei dem Wert ist, wo das Buch dann da sein sollte. Wenn ich ohne den Quest zu kennen in die Stadt gehe, und dann über Konsole den Quest auf diesen Punkt bringe, geht es.
 
Zuletzt bearbeitet:
"Code" benutzen beim "Spoiler" werden bestimmt doppelte leerzeichem entfernt

HTML:
[code]
scn 00Drachenbuch

short doonce
short controlvar
short button
short do
short doo
short gez

Begin Gamemode
If getstage 000Dragonquest < 30
Disable "000Drachenbuch" ;
Else
Enable "000Drachenbuch"
Endif
End

begin onactivate
if ( gez == 0 )
set doo to 0
set do to 0
set controlvar to 0
Endif

if ( controlvar == 0 )
messagebox "Willst du das Buch für 450 Goldstücke kaufen?", "Ja", "Nein"
Set controlvar to 1
elseif ( Controlvar > 1 )
Activate
Endif
End

Begin Gamemode
if ( controlvar == 1 )
set button to getbuttonpressed
If ( button == -1 )
Return
ElseIf ( button == 0 )
if player.getitemcount 0000000f >449
player.removeitem 0000000f 450
set controlvar to 2
set gez to 1
Elseif ( player.getitemcount 0000000f <= 449 )
if do == 0
Messagebox "Du hast nicht genug Geld"
set do to 1
set doo to 1
Endif
Endif
Elseif ( button == 1 )
if doo == 0
Messagebox "Dann halt nicht"
set doo to 1
set do to 1
Endif
EndIf
ElseIf ( controlvar == 2 )
Activate
Set controlvar to 3
EndIf
End

begin onadd
if ( doonce == 0 )
setstage 000DragonQuest 40
set doonce to 1
Endif
End

HTML:
[/code]


Dann ist mir folgendes aufgefallen. Hier wird das Buch entweder "andauernd" ausgeschaltet bzw eingeschaltet. Ich weis nicht ob das so gut ist andauernd "disable" auf ein ausgeschaltetes Buch laufen zu lassen.
Warum schaltest du das Buch nicht von anfang an aus. Das geht im Renderfenster "Disable by Default" heist der Punkt glaub ich.
Und in bei der Stage 30 trägst du im Feld "Result-Script" 000Drachenbuch.enable ein. Dann kannst du diesen Block schonmal weglassen.

Code:
Begin Gamemode
	If getstage 000Dragonquest < 30
    	        Disable "000Drachenbuch" ; 
	Else
		Enable "000Drachenbuch"
	Endif
End


Grüsse Zerlix

Edit : Edtier dein Post nicht wenn ich am schreiben bin ;) - "xxx.enable" was gibt das für einen Fehler ?
 
Zuletzt bearbeitet:
Ich habe jetzt das Buch, wie geraten, auf Disable gestellt.
Aber: Im QuestStage-Menü kann man das nicht mit diesem Befehl "enablen", aber auch mit den anderen nicht.
Fehlermeldung: (kommen 3 auf einmal bei Enable.XXX)
1. Fehlermeldung: Unknown variable or function "XXX"
2. - : Syntax Error
Enable.XXX
Could not parse this line
3. : unknown referenced object "Enable"
Ich habe auch die anderen Möglichkeiten ausprobiert, aber bei allen kommen Fehlermeldungen.
Bei XXX.enable kommt: script command "XXX.enable" not found
 
Hallo,

falls Du das Buch einem Händler einfach untergejubelt hast, könnte das Probleme verursachen. Die oblivionschen Kaufleute reagieren oft ungehalten, wenn man ihnen selbsterstelltes Zeugs in ihre Kisten legt. Besser eine neue Truhe erstellen und die dann dem Händler zuweisen.

Warum verwendest Du im Skript die FormID (getitemcount 0000000f >449)? Meckert da der Compiler nicht?

Gruß, Gert
 
Beolo schrieb:
Warum verwendest Du im Skript die FormID (getitemcount 0000000f >449)? Meckert da der Compiler nicht?
Dieses Skrip kontrolliert ob der Spieler genügend Geld hat (450) um das Buch zu kaufen(klappt einwandfrei), und dieses 0000000f ist die wie ich denke Haupt-ID des Goldes.
Das Buch steht nur auf dem Tisch des Buchhändlers, deswegen der Dialoig von wegen kaufen.
 
Zuletzt bearbeitet:
O?t3rfrat23 schrieb:
Ich habe jetzt das Buch, wie geraten, auf Disable gestellt.
Aber: Im QuestStage-Menü kann man das nicht mit diesem Befehl "enablen", aber auch mit den anderen nicht.
Fehlermeldung: (kommen 3 auf einmal bei Enable.XXX)
1. Fehlermeldung: Unknown variable or function "XXX"
2. - : Syntax Error
Enable.XXX
Could not parse this line
3. : unknown referenced object "Enable"
Ich habe auch die anderen Möglichkeiten ausprobiert, aber bei allen kommen Fehlermeldungen.
Bei XXX.enable kommt: script command "XXX.enable" not found

Öhm du hast doch da jetzt nicht "xxx.enable" geschrieben oder ? :roll:

Statt xxx muss natürlich der "Referenzname" hin.
Den kannst du auch im "Renderfenster" angeben, ganz oben das Feld (Reference Editor ID). Und vergesse nicht den Haken bei "Persistent Reference" zu machen.
Und so ist dann die "Schreibweise" der 2 Befehle.
Code:
[I]ReferenzName[/I].enable
[I]ReferenzName[/I].disable

Grüsse Zerlix
 
Ntürlich habe ich nicht XXX sondern die ID geschrieben.
Aber wen ich ID.enable in einem Skript verwende gibt es mir eine fehlermeldung.
was macht eigentlich dieses persistent reference?
Und wenn ich jetzt im objekt-menü das von anfang an ge"disable"t habe, wie kann ich das durch einen Skript wieder "enable"n?
Ich habe das ausprobiert was ich weiß (auch wenn es nicht viel ist) und bekomme das nicht hin.:cry:
 
Das "Persistent Reference" sorgt dafür das du dein Buch mit dem "Referenznamen" (Reference Editor ID) in einem Script auch ansprechen kannst.

Dein Buch enablest du indem du bei deinem "Queststage 30" in das Feld "Resultscript" folgendes einträgst.
Code:
ReferenzName.enable


Wenn du da garnicht weiterkommst, dann schick mir eine PN. Dann bekommst du meine Emailadresse und kannst mir das Plugin mal schicken.
Ich schau mir das dann mal in ruhe an.

Grüsse Zerlix
 
  • Like
Reaktionen: O?t3rfrat23
Vielen Dank für Eure Hilfe und besonders an dich Zerlix, denn es scheint jetzt ztu funzen.
Spiel stürzt nicht ab und erst ist das Buch nicht da, und dann erscheint es. Wunderbar :lol: (Endlich)

Viele Grüße O?t3rfrat23

Ps1: Ich hoffe, dass die die mir geholfen haben, dass mal runterladen wenn es draußen ist, um zu sehen, was ich draus geamcht habe :D
Aber ist mein erstes PlugIn:roll: