Construction Set Skriptthread zum Construction Set

Code:
scn name

begin scripteffectfinish
set target to getself
if target.isevil==1
target.startcombat player
end
Einfach bei "Visual Effects" "NONE" auswählen. Oder meinst du die Handbewegung? Die geht glaube ich nicht weg.

Die If-Abfrage wäre "if player.issneaking==1" ;)
 
  • Like
Reaktionen: FreshTheFallen
"IsActorEvil" würde auch nichts bringen. Der Befehl gibt 1 zurück, wenn der NPC in einer Fraktion ist, bei der ein Haken bei "Evil" gesetzt ist. Dieses "Evil" sagt allerdings nichts über die Aggression aus, oder ob der NPC dem Spieler feindlich gesinnt ist, sondern ob der Spieler den NPC töten kann ohne dass es als Mord gilt.
 
Das Script sieht jetzt so aus:

scn spot

Begin ScriptEffectFinish

set target to getself
getShouldAttack player
target.startcombat player


End




Edit: Etwas scheint mit der Zeile "set target to getself" nicht zu stimmen, ich kann wegen ihr das Script nicht speichern.
 
Zuletzt bearbeitet:
Code:
scn spot
ref target

Begin ScriptEffectFinish
set target to getself
if target.getShouldAttack player > 0
target.startcombat player
endif
End
@Diarrhoe: Aber die Actors in einer Evil-Faction greifen doch für gewöhnlich den Spieler an:huh: Denn die Evil-Factions senken ja die Disposition gegenüber dem Spieler...:? Aber naja "GetShouldAttack player" wird wohl sicherer sein^^"
 
  • Like
Reaktionen: FreshTheFallen
Dass Evil-Fraktionen einen angreifen hängt mit der zwischenfraktionellen Beziehung zwischen der Evilfraktion und der Spielerfraktion zusammen. Böse Gruppen (z.B. Banditen, Marodeure, Totenbeschwörer o.ä.) haben da ein dickes Minus.

Aggression trägt zusätzlich auch noch einen Teil bei, der v.a. dafür da ist, damit man sich nicht ergeben kann.
 
Ich bin heute im CS zufällig auf ein Script gestoßen, wo der Befehl player.scaonactor verwendet wird. Kann mir jemand sagen, wofür der gut ist?
 
Hallo nochmal!

Heute wird es ein bisschen komplizierter.. Glaube ich. Im Endeffekt geht es darum, einen Schiffsuntergang zu simulieren. Wäre es also möglich, nachdem eine Konversation abgeschlossen ist, stetig nach unten zu "verschieben"?

Auf der Konversation liegt nebenbei folgendes Script:

Code:
     [FONT=Verdana]SCN StuhlSkript
  
  [/FONT][FONT=Verdana]Short i
  [/FONT][FONT=Verdana]Float Timer
  
  [/FONT][FONT=Verdana]Begin OnActivate player
  
  [/FONT][FONT=Verdana]if(i == 0)
  [/FONT][FONT=Verdana]    set i to 1
  [/FONT][FONT=Verdana]    disableplayercontrols
  [/FONT][FONT=Verdana]    activate
  [/FONT][FONT=Verdana]endif
  
  [/FONT][FONT=Verdana]End
  
  [/FONT][FONT=Verdana]Begin GameMode
  
  [/FONT][FONT=Verdana]if(i == 0 || i == 3)
  [/FONT][FONT=Verdana]   return
  [/FONT][FONT=Verdana]else
  [/FONT][FONT=Verdana]    if(i == 1)
  [/FONT][FONT=Verdana]         <NPC-Ref>.sayTo player <Topic>
  [/FONT][FONT=Verdana]         set timer to <Länge des Topics in Sekunden>
  [/FONT][FONT=Verdana]         set i to 2
  [/FONT][FONT=Verdana]    elseif(i == 2)
  [/FONT][FONT=Verdana]        set timer to timer - getsecondspassed
  [/FONT][FONT=Verdana]      if(timer <= 0)
  [/FONT][FONT=Verdana]           enableplayercontrols
  [/FONT][FONT=Verdana]           set timer to 0
  [/FONT][FONT=Verdana]           set i to 3
  [/FONT][FONT=Verdana]         return
  [/FONT][FONT=Verdana]      endif
  [/FONT][FONT=Verdana]    endif
  [/FONT][FONT=Verdana]endif
  
  [/FONT][FONT=Verdana]End[/FONT]
(Das Script stammt natürlich nicht von mir :D) Könnte man das Sinken des Schiffes hier mit einbauen? Ansonsten: Sicherlich wird das ganze über die REF des Interiors geregelt. Ansonsten werde ich keine/wenige andere Static-Objects in dieses Interior stellen, da man diese ja sonst ebenfalls manuell sinken lassen müsste. Also, wäre es theoretisch möglich, das Interior "sinken", oder das Wasser steigen zu lassen? Und wenn ja.. Wie? ;)

Mit freundlichen Grüßen,

MadHatter :)
 
Zuletzt bearbeitet:
Es gibt den OBSE-Befehl "setCellWaterHeight". Allerdings erfordert der ein Neuladen des Interiors. Es funktioniert also nicht, wenn sich der Spieler in der Zelle befindet...
Ansonsten müsstest du jedes einzelne Objekt per Skript nach unten bewegen. Dafür hat Gildur schon mal ein Skript geschrieben: Bewegungsskript in der Skriptsammlung. Dabei wird jedoch nicht die Kollision der Objekte aktualisiert. Um das zu erreichen musst du entweder "enable" und "disable" benutzen, oder du veränderst die Kollision der entsprechenden Mesh mit NifSkope. Einen entsprechenden Guide hat Gildur hier beschrieben.
Ich habe eben kurz gesucht und nichts gefunden aber vielleicht findest du ja auch entsprechende Befehle bei NifSE. Dann könntest du die Kollisionsänderungen direkt Ingame durchführen.

Was mir in dem Skript noch auffällt ist, dass du beim "sayTo" direkt den Timer setzen könntest.
Code:
set timer to <NPC-Ref>.sayTo player <Topic-ID>
ist das gleiche wie
Code:
<NPC-Ref>.sayTo player <Topic-ID>
set timer to <Länge-des-Topics>

Außerdem gibt es "onActivate player" nicht. Dafür gibt es extra den Befehl "isActionRef player".
 
  • Like
Reaktionen: MadHatter16
Außerdem gibt es "onActivate player" nicht. Dafür gibt es extra den Befehl "isActionRef player".

Und ob es das gibt:
CS-Wiki schrieb:
OnActivate player will compile but act as OnActivate - meaning when an NPC activates the object its normal activation will be prevented. A common mistake.

Wobei ich gerade nicht sicher bin, was die mit der Verhinderung der "normalen" Aktivierung meinen.
 
Beginn eines Scrpts das auf ein Buch gelegt wird

Guten Tag,

ich möchte ein Buch mit einem Script belegen, das erst anfängt zu arbeiten wenn das Buch wieder geschloßen wird.

Also nicht direkt nach dem öffnen, sondern erst wenn man es gelesen hat und dann 'beendet'.

In etwa so:

PHP:
scn buch1

begin onclose

setstage quest1 to 10

end
Das Script soll also eine Quest um eine Stage voranbringen.

Gruss rojep