Construction Set Skriptthread zum Construction Set

Code:
If ( GameHour > 22) && ( GameHour < 6 )
Funktioninert nicht.
Wie soll GameHour gleichzeitig größer 22 und kleiner 6 sein?
Das hier funktioniert:
Code:
If ( GameHour > 22 ) || ( GameHour < 6 )
Allerdings währe das 23-6 Uhr. Für 22-6 Uhr wäre es:
Code:
If ( GameHour >= 22 ) || ( GameHour < 6 )

Das GameHour > 22 ist allerdings nicht ab 23 Uhr, sondern nur minimal und kaum spürbar später als >= 22, da GameHour eine float-Variable ist.

@Saurons Auge:

Code:
short doOnce

begin OnActivate player
if (doOnce == 0)
   [TargetRef].disable
   set doOnce to 1
endif
end
 
Tag,
Ist es möglich eine Waffe nur wenn man damit kämpft brennen oder anderes zu lassen. Also nicht shadereffekte der atronachen wo der ganze typ brennt sondern nur die waffe??
 
Combat Script mit Verzögerung

Hallo,

ich habe mal vorab erst eine Frage zur Machbarkeit.

Folgende Situation:

Der Spieler befindet sich in einer Umgebung mit mehreren Gegnern, die ihn alle angreifen.

Einer dieser Gegner allerdings hat dem Spieler noch wichtige Mitteilungen zu machen.
Es ist so geplant das dieser Gegner für die Zeit bis zur Abgabe der Mitteilung nicht angreift und auch nicht versehentlich getötet werden kann.

Erst wenn er die Mitteilung abgegeben hat soll ein Angriff auf den Spieler erfolgen und die Gegnerfigur muss getötet werden können, also nicht mehr essential geflagt.

Läßt sich so etwas ohne sehr großen Scriptaufwand realisieren?

Danke im Voraus
 
Ok,

Code:
scn Name

Begin GameMode
If ( RefIdMob1.GetDeath == 1 ) && ( RefIdMob2.GetDeath == 1 )....
RefIddesMobderSichRaushält.SetUnconscious 0
RefIddesMobderSichRaushält.SetGhost 0
DisablePlayerControls        ; Hier würde sich irgenein Effekt gutmachen, der klarmacht, dass der Spieler sich nicth bewegen kann, eine Mauer oder ein Lähmzauber
RefIddesMobderSichRaushält.StartConversation Player IddesTopics
else
RefIddesMobderSichRaushält.SetUnconscious 1
RefIddesMobderSichRaushält.SetGhost 1

An das letzte Topic über das der Npc redet, muss noch der Befehl:

Code:
SetEssential BaseIddesNpcdersichRaushält 0

Außerdem solltest du den Npc für die dauer des Kampfes mit den anderen irgendwie unzugänglich machen, durch den ScriptBefehl reagiert er zwar nicht auf die Schläge, kann aber trotzdem getroffen werden und bewusstlos werden.
 
  • Like
Reaktionen: 1 Person
monster spawn

also hey ;)

bräuchte kurz die hilfe von einem für ein script ... nichts schweres nur ka wie dei befehle hier in TES IV sind :p




also.... " ich bräuchte ein script das beim aktivieren ein Monster o. NPC spawnen lässt " - danke




(ich glaub sowas hat shcon mal wer gefragt, aber da das suchsystem mir immer nur dreck ausgespuckt hat, blieb mir nichts anderes übrig als hier zu fragen ;) )

-aja wär auch mal toll wenn es ein thread geben würde der die wichtigsten scripts per link verlinken könnte, wie es auch bei mods hier im forum ist =)



danke

grüße Flo


ps: toll wäre es auch wenn mir einer einen link geben könnte für befehle in scripts für TES IV
 
am besten beide versionen, da ich beide brauch ... eins soll in der art bossmonster werden und andere sollen trainmonster werden =) danke

:)
 
Version 1, wo ein Monster einmal spawnt:

Code:
scn irgendwas

short doonce

Begin OnActivate

if doonce ==0
[IDdesdisabletenMonsters].enable
set doonce to 1
endif

end

2. Variante, bei jedem Aktivieren spawnt ein Monster

Code:
scn irgendwas2

Begin OnActivate
[IDdeszuspawnendenMonster] moveto [IDzueinemvorhergesetztenXmarker]
end
 
  • Like
Reaktionen: RockX
Das wird so nicht klappen Meister. MoveTo funktioniert nur mit bereits in der Welt befindlichen Monstern, und deshalb auch nur mit der Ref-Id.

Ich würde:
Code:
scn Blubb

Begin OnActivate
RefIDdesMonster.Resurrect
RefIddesMonsters.MoveTo Player
end

Oder:

Code:
scn Blubb

Begin OnActivate
Player.PlaceAtMe BaseMobId, 1             ; Hierfür muss das Monster als PC-Level OffSet markiert werden.
end
 
danke euch beiden, werd ich gleich probieren wenn ich mit meinem interior fertig bin :) ....

;)



edit:

jo danke hat geklappt mit dem code =)
 
Zuletzt bearbeitet:
Was ist an dem Script falsch

Ich brauche einfach mal die Scriptkönige und Königinnen natürlich. Tüftel nun schon seit 3 Tagen und es klappt nicht.

Folgende Situation:
- Voraussetzung == Begleiter folgt dir
-Der Begleiter wird angesprochen
-Über Dialog - Brau mir einen Trank
-Der erste Timer startet, Animation Trank brauen, nach 15sec bekommt der Spieler den Trank.

-Nun darf man aber nur alle 10 Tage einen Trank bekommen können. Dafür der zweite Timer, der leider nicht gewünscht funktioniert.
(Timer sind der blanke Horror für mich. Bekomme die einfach nicht zum laufen)


PHP:
Scriptname MeinBegleiterMod ;Typ QuestScript

short SaphiriaMakePotion
float SaphiriaPotionMakingTimer
short SaphiriaHasGotAPotionInProgress
short SaphiriaShouldMakeAPotion
float TrankTimer
short TrankTimerStart
short TrankStart


begin GameMode

if SaphiriaMakePotion == 1 ; Wir vom Dialog Brau mir einen Trank ausgeworfen.
	if SaphiriaHasGotAPotionInProgress != 1 && SaphiriaShouldMakeAPotion != 1
		set SaphiriaPotionMakingTimer to 15
		set SaphiriaHasGotAPotionInProgress to 1
		set SaphiriaShouldMakeAPotion to 1
		SaphiriaRef.AddItem MortarPestle 1
		SaphiriaRef.AddScriptPackage SaphiriaAlchemy
	else
		if SaphiriaPotionMakingTimer >= 0
			set SaphiriaPotionMakingTimer to SaphiriaPotionMakingTimer - GetSecondsPassed
		else
			set SaphiriaHasGotAPotionInProgress to 0
			set SaphiriaShouldMakeAPotion to 0
			SaphiriaRef.StartConversation Player, SaphiriaTrankFertig ;Wirft "set TrankTimerStart to 1 aus"
			SaphiriaRef.removeItem MortarPestle 1
		endif
	endif
endif
else
endif

; Bis hier funktioniert das Script einwandfrei.

if TrankTimerStart == 1
	set TrankTimerStart to 2
	set TrankTimer to 10
	Message "In 10 Tagen kann Saphiria wieder einen Trank brauen"
elseif TrankTimerStart == 2
	if TrankTimer > 0
		set TrankTimer to ( TrankTimer - GameDaysPassed )
	endif
	if TrankTimer <= 9 
		Message "In 8 Tagen kann Saphiria wieder einen Trank brauen"			
	elseif TrankTimer <= 6 
		Message " In 6 Tagen kann Saphiria wieder einen Trank brauen"			
	elseif TrankTimer <= 4
		Message "In 4 Tagen kann Saphiria wieder einen Trank brauen"		
	elseif TrankTimer <= 2 
		Message "In 2 Tagen kann Saphiria wieder einen Trank brauen"			
	elseif TrankTimer <= 0 
		Message "Saphiria kann wieder einen Trank brauen"
		set TrankTimerStart to 0
	endif
endif
 
Code:
[COLOR=#000000][COLOR=#007700]if [/COLOR][COLOR=#0000bb]TrankTimer [/COLOR][COLOR=#007700]<= [/COLOR][COLOR=#0000bb]9  
        Message [/COLOR][COLOR=#dd0000]"In 8 Tagen kann Saphiria wieder einen Trank brauen"             
[/COLOR][COLOR=#007700]elseif [/COLOR][COLOR=#0000bb]TrankTimer [/COLOR][COLOR=#007700]<= [/COLOR][COLOR=#0000bb]6  
        Message [/COLOR][COLOR=#dd0000]" In 6 Tagen kann Saphiria wieder einen Trank brauen"             
[/COLOR][COLOR=#007700]elseif [/COLOR][COLOR=#0000bb]TrankTimer [/COLOR][COLOR=#007700]<= [/COLOR][COLOR=#0000bb]4[/COLOR][/COLOR]

Bei der Scriptauswertung wird dir immer die erste Message erscheinen. Da z.B. die Zahl 5 <= 9 ist und dann die erste Message geworfen wird und alles darunter ignoriert wird.
 
  • Like
Reaktionen: Eddy Kaschinski
Code:
if TrankTimerStart == 1  && TrankTimer <= 0
    set TrankTimer to 10 
    Message "In 10 Tagen kann Saphiria wieder einen Trank brauen" 
endif

if TrankTimer > 0 
        set TrankTimer to ( TrankTimer - GameDaysPassed ) 
    elseif TrankTimer == 9  
        Message "In 8 Tagen kann Saphiria wieder einen Trank brauen"             
    elseif TrankTimer == 6  
        Message " In 6 Tagen kann Saphiria wieder einen Trank brauen"             
    elseif TrankTimer == 4 
        Message "In 4 Tagen kann Saphiria wieder einen Trank brauen"         
    elseif TrankTimer == 2  
        Message "In 2 Tagen kann Saphiria wieder einen Trank brauen"             
    elseif TrankTimer == 0  && TrankTimerStart == 1
        Message "Saphiria kann wieder einen Trank brauen" 
        set TrankTimerStart to 0 
    endif 
end

Außerdem muss TrankTimer eine Short-Variabel sein.

edit: Kain war schneller^^
 
Zuletzt bearbeitet:
@LordKain

Genau so ist es. Es blinkt permanent die Message "In 8 Tagen usw."

@AjAeXx

Habe den Scriptteil geändert, wie du es gepostet hast. Habe TrankTimer auch in eine short Variable geändert. (Dachte Timer müsse man immer als float deklarieren:huh: Aber viel lernen ich noch muss)

Nun blinkt immer die Message "In 10 Tagen usw" auf. Also die erste.
 
@LordKain

Genau so ist es. Es blinkt permanent die Message "In 8 Tagen usw."

@AjAeXx

Habe den Scriptteil geändert, wie du es gepostet hast. Habe TrankTimer auch in eine short Variable geändert. (Dachte Timer müsse man immer als float deklarieren:huh: Aber viel lernen ich noch muss)

Nun blinkt immer die Message "In 10 Tagen usw" auf. Also die erste.

Oh ups, hab glas eine Condition vergessen, ich wollte eigentlich noch dazu schreiben :
Code:
 && TrankTimer <= 0

Und timer müssen nur als float geschrieben werden, wenn der Wert der rauskommt, Nachkommastellen hat. Da GameDaysPassed aber keine krummen Werte ausgibt, sollte das so gehen.

Ich werd alt da vergisst man sowas mal :D
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Eddy Kaschinski
@AjAeXx

Werde es sofort im Game testen. Ich probier mal aus ob die erste Message "Noch 9 Tage usw" ausgeworfen wird.

Hat jemand eine Idee, wie ich das Topic "Brau mir einen Trank" für diese 10 Tage aus der Liste entferne? RemoveTopic klappt irgendwie nicht.