Construction Set Skriptthread zum Construction Set

@peecee:
Ich würde für das Verhindern des Inventars den Befehl "disableControl 15" benutzen (nicht vergessen, "enableControl 15" zu benutzen). Das verhindert von vornherein, dass das Inventar überhaupt geöffnet werden kann. Um Abzufragen, ob der Spieler sein Inventar öffnen möchte, kannst du "onControlDown 15" benutzen. Zum Beispiel:
Code:
scn name

short doonce
float fQuestDelayTime

Begin GameMode

if onControlDown 15
 messagebox "Ihr könnt Euer Inventar jetzt nicht öffnen!"
endif

if doonce
 return
endif
set doonce to 1
set fQuestDelayTime to 0.01

end
 
  • Like
Reaktionen: peecee
Das Prinzip und die Funktionsweise der While-Schleifen sind mir klar, aber die Bedingung "Actor" ist mir noch nicht ganz klar geworden. "actor!=0" ok, aber einfach nur "actor"?
Und mein Prinzip ist Frameübergreifend, also schont die FPS, aber egal^^
 
Das Prinzip und die Funktionsweise der While-Schleifen sind mir klar, aber die Bedingung "Actor" ist mir noch nicht ganz klar geworden. "actor!=0" ok, aber einfach nur "actor"?
Und mein Prinzip ist Frameübergreifend, also schont die FPS, aber egal^^

Welches Prinzip denn bitte?

Übrigens: "While (actor)" ist das gleiche wie "While (actor != 0)".
 
Welches Prinzip denn bitte?

Übrigens: "While (actor)" ist das gleiche wie "While (actor != 0)".

Verdammte Abkürzungsfanatiker, da ist ja der ganze Sinn weg!

Code:
ref refVar 

Begin GameMode

if refVar == 0
     set refVar to getfirstref 69
else
     set refVar to getnextref 69
edif
;und hier was mit jedem passieren soll...

End
 
Dise Lösung ist allerdings nicht 100%ig sicher. Denn laut CS wiki:
CS-wiki schrieb:
The order of references as returned by GetFirst/NextRef is essentially undefined. It is not guaranteed that it will remain the same from one frame to the next. As stated above, a loop should be used each time. Usually, however, the first ref is the most recently placed one. It is altogether unwise to rely on this, however.

Somit ist dein Prinzip zwar performance-freundlicher, aber unsicherer. Und ein Script bringt im Prinzip recht wenig, wenn er zwar performance sparrt aber nicht funktioniert.
 
Ola,

Ich wieder...
Ich brächte einen sound script der meine im cs gemachte sound file abspielt.
Ich habe mir in Blender eine Stereo anlage gemodelt und will dass diese beim
raufdrücken(Leertaste bei Oblivion) meine sound file wiedergibt
 
Code:
scn Scriptname

float timer

Begin OnActivate
if timer <= 0
    set timer to [LängeDesSounds]
    playsound3d [SoundID]
endif
End

Begin GameMode
if timer <= 0
    return
else
    set timer to timer -getsecondspassed
endif
End

[LängeDesSounds] kannst du dann durch die Länge des Sounds in Sekunden ersetzen. [SoundID] ersetzt du durch die Sound ID unter Miscellaneous/sounds. Der Timer dient übrigens dazu, dass du die Stereobox öfters aktivieren kannst, eben nachdem der Sound zu Ende ist.

Edit: @ Schmelz: Wenn du dich mit mir streiten willst dann bitte per PN! :lol:
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Azoron
In einer einfachen Variante würde es so aussehen:
Code:
scn name

short activated
float timer

Begin onActivate

if activated
 return
endif
playSound3D <Sound-ID>
set activated to 1
set timer to <Länge-des-Sounds>

end


Begin GameMode

if activated
 set timer to (timer - getSecondsPassed)
 if timer < 0
  set activated to 0
 endif
endif

end

Zusätzliche Funktionen wie Pausieren oder Vorspulen oder so sind leider nicht möglich ;)
 
  • Like
Reaktionen: Azoron
Hmm...aslo funktioniert alles bei mir nicht ka warum aber muss man bei 3d sound nicht normal ein object aussuchen? Also habe time auf 441 also 4 Minuten und 41 sekunden
, muss ich da einen punt machen? 4.41 oder so?
 
@peecee:
Ich würde für das Verhindern des Inventars den Befehl "disableControl 15" benutzen (nicht vergessen, "enableControl 15" zu benutzen). Das verhindert von vornherein, dass das Inventar überhaupt geöffnet werden kann. Um Abzufragen, ob der Spieler sein Inventar öffnen möchte, kannst du "onControlDown 15" benutzen. Zum Beispiel:
Code:
scn name

short doonce
float fQuestDelayTime

Begin GameMode

if onControlDown 15
 messagebox "Ihr könnt Euer Inventar jetzt nicht öffnen!"
endif

if doonce
 return
endif
set doonce to 1
set fQuestDelayTime to 0.01

end

Danke!
Muss das "auf" die Quest gelegt werden?
Und wenn das Inventar auf einer anderen Taste als Tab liegt, dann funktioniert es ja nicht mehr. Gibt es (kein OBSE) einen Skript, mit dem man die Taste zum Öffnen des Inventars vorher auf Tab legen kann?

LG,

peecee
 
@ Azoron: Machs doch als Container, leg das Stück als Opening-Sound drauf und verhindere per Script das das Teil wirklich geöffnet wird!
 
  • Like
Reaktionen: Azoron
Ich habe vor, dass jede Wache einer Stadt einem bestimmten Ref zugeordnet wird, sodass ich sie später mithilfe dieses Ref's verschieben kann. Bevor ich aber jetzt jedemenge Scriptarbeit habe und es dann Probleme gibt, frage ich lieber mal nach, ob das Script dafür geeignet ist:

Code:
ref guard
ref guard1
ref guard2
ref guard3
ref guard4
ref guard5
ref guard6
ref guard7
ref guard8
ref guard9
ref guard10
ref guard11
ref guard12
ref guard13
ref guard14
ref guard15
ref guard16
ref guard17
ref guard18
ref guard19
ref guard20
ref guard21
ref guard22
ref guard23
ref guard24
ref guard25

Begin GameMode
If player.GetInWorldspace AnvilWorld == 1
  set guard to getfirstref 69 2
  while guard
    If guard.GetIsID AnvilGuardCastlePatrolDay01 == 1
      set guard1 to guard
    ElseIf guard.GetIsID AnvilGuardCastlePatrolNight01 == 1
      set guard2 to guard
    ElseIf guard.GetIsID AnvilGuardCastlePostDay01 == 1
      set guard3 to guard
    ElseIf guard.GetIsID AnvilGuardCastlePostDay02 == 1
      set guard4 to guard
    endif
    set guard to getnextref
  loop
endif
end
 
Danke!
Muss das "auf" die Quest gelegt werden?
Und wenn das Inventar auf einer anderen Taste als Tab liegt, dann funktioniert es ja nicht mehr. Gibt es (kein OBSE) einen Skript, mit dem man die Taste zum Öffnen des Inventars vorher auf Tab legen kann?

LG,

peecee

Das Skript von ihm benötigt schon OBSE.
 
Soweit alles klar aber wie schreibe ich das es beim aktivieren das inventar trotzdem schließt? geht das überhaupt weil ja beim schließen vom inv. ja der sound wieder weg ist ?