Construction Set Skriptthread zum Construction Set

Hi,

Ich hab mal wieder ein Script-Problem:

Code:
scn XYZDaranScript

short once
float timer
short choice

Begin OnActivate
if once == 0
MessageBox "Hallo", "Seid gegrüßt"
Set once to 1
endif
end

Begin GameMode
If once == 1
Set choice to GetButtonPressed
endif

If choice == 0 && once == 1
Playsound XYZDaran1
DisablePlayerControls
Set once to 2
set timer to 8
endif

If timer > 0
Set timer to timer - GetSecondsPassed

elseif timer <= 0 && once == 2
EnablePlayerControls
endif
XYZDunklerMagier1.StartCombat Player

Der Sinn: Der Spieler aktiviert eine Tür (Sie öffnet sich nur, keine Teleportation), es erscheint eine Messagebox, der Spieler klickt die Antwort an und kann sich für 8 Sek nicht bewegen (DisablePlayerControls). Bis dahin funktioniert auch noch alles.
Die Soundfile wird aber nicht abgespielt. Außerdem greift der NPC schon vorher an, seine Aggression ist auf 5.

Was mache ich falsch in den beiden Punkten?

Danke im Voraus.
 
1. Ist der Sound im richtigen Format vorhanden (ich glaube, es muss ne *.wma sein) und ist es auch keine zu hohe/geringe Qualität (das ist glaube ich 128kbit/s)?
Ich gehe mal davon aus, dass du den Sound auch ins CS eingebunden hast und dass "XYZDaran1" die Sound-ID ist.
Wenn der Sound vom NPC kommen soll musst du den Befehl "PlaySound3D" kommen.

2. Versuch mal, "XYZDunklerMagier1.StartCombat Player" vor den "EndIF"-Befehl zu stellen.
Außerdem fehlt dort noch das "End".

MfG
 
Der StartCombat-Befehl funktioniert jetzt, aber der Sound wird nicht abgespielt.
Die Datei hat eine Bitrate von 64 kBit/s und ist im .wav-Format, wie alle anderen Soundfiles. Wenn ich im CS auf "Play" drücke, wird die Datei aber korrekt abgespielt.
 
Vielleicht hast du sie zu leise eingestellt oder die Hörweite ist zu niedrig, sodass du sie einfach nicht hörst, obwohl sie da ist und auch abgespielt wird...
 
Hast du den Sound ins Render-Window gezogen?
(Dann ist da so ein rotes kleines Teil.)

Daran könnte es vielleicht liegen bzw vielleicht klappt es so.
 
An und für sich sind die roten Dinger auch nur für permanente Sounds gedacht, also für Sounds die z. B. zu einem Objekt gehören.

Aber man weiß ja nie...
 
Die genannten Vorschläge haben leider nichts gebracht.
Lautstärke? Ich hab mal ein Haken bei "2D" gemacht, dann ist die Entfernung egal, es ist aber auch nichts passiert.

EDIT(12:49): Ich hab das ganze mal mit Sounds aus Oblivion selbst probiert, sogar aus anderen Mods, die auch 64 kBits/s hatten und es hat einwandfrei funktioniert, warum nur nicht bei meinen Dateien?
 
Zuletzt bearbeitet:
Hiho!

Ich suche ein Script, mit dem man eine beliebige Tür in einen Activator umwandeln kann, quasi ein universelles Script...
Klar, den Activator muss man natürlich schon vorher erstellen.
Mein Problem hierbei ist vor allem, dass ich mit den REF-Variablen nichts anzufangen weiß, also weiß ich nicht, wie ich diesen Activator mittels Trigger auslösen kann, oder über ihn eine Kettenreaktion laufen lassen kann...

Ich hoffe, jemand kann mir hierbei helfen. :)

MfG
 
Mein Script für den Sound geht jetzt. Die Datei war ursprünglich eine mp3-Datei, ich hatte sie natürlich schon zu .wav konvertiert, aber ich habe den Audio-Codec auf mp3 gelassen.

Ich habe ein neues Problem:

Code:
scn XYZSwitchOnlyInfravisionScript

short busy
ref target
ref mySelf


Begin Gamemode
if Player.HasMagicEffect NEYE == 1
XYZSwitchOnlyInfravisionRef1.enable
else XYZSwitchOnlyInfravisionRef1.disable
endif
end

begin onActivate
	
	if busy == 0
		set target to getParentRef
		set mySelf to getSelf
		target.activate mySelf 1
		playgroup forward 0
		set busy to 1
	endif


end

begin gameMode

	if isAnimPlaying == 0 && busy == 1
		set busy to 0
	endif

end

Der Spieler kann den Schalter nur sehen, wenn er einmal einen Infravisionszauber gewirkt, einen Infravisionstrank getrunken , was auch immer, hat. Dann öffnet der Schalter eine Tür.
Das Problem ist: Man kann den Schalter von Anfang an sehen. Was mache ich falsch?

Danke im Voraus.
 
Hiho,
hab noch mal ne Frage, und zwar:
Kann man in einem Script auch auf Variablen aus anderen Scripts zurückgreifen und diese z.b. abrufen (als Condition benutzen)?

Grüße
 
Auf normale Variablen nicht. Auf Globals jedoch kannst du per Condition zugreifen und auch in andern Scripts.

OBSE hab ich das gefunden:
GetVariable
Kannst ja mal schauen ob du damit was anfangen kannst ;)
 
@ Diarrhoe

Wie SirTroy schon gesagt hat, kannst du auf normale Variablen nicht zugreifen. Auf Variablen aus Quest Scripts jedoch schon.

z.B. so:

Code:
if [QuestID].[Variable aus Quest Script] == xy
 
Du kannst die Variablen aus Questscripts natürlich auch beliebig verändern
Code:
Set QuestID.QuestScriptVariable to X
Ich nutze das um z.B. neue Keys einzubinden welche bestimmte tätigkeiten ausführen soll.
 
Danke. Auf OBSE würde ich allerdings gerne verzichten, das ist mir zu umständlich.

@Eldarie: Wenn der so funktioniert, wie er aussieht, dann ist es genau das, wonach ich suche. Ist doch ohne OBSE, oder? Und muss das Kommata da wirklich hin?

MfG