Construction Set Skriptthread zum Construction Set

xD
Bist du sicher, dass du "Begin OnDeath player" richtig geschrieben hast?
Wenn ja, dann möchte cih dir diesen, hoffentlich letzten und richtigen Script geben:
Code:
scn HoffentlichFunktioniertDerSCRIPT

float timer
short doonce

Begin GameMode
If ( player.getDead == 1 ) && ( doonce == 0 )
set timer to 10
set doonce to 1
Endif

if timer >= 0
set timer to timer - getsecondspassed
elseif timer <= 0
player.resurrect
set doonce to 0
endif
end
MfG Gildur
 
Ich hab alles gemacht, was du gesagt hast, im Spiel sind die Auswirkungen allerdings eher negativ.
Wenn man angegriffen wird, merkt man, dass sich die Lebensenergie aller 10 Sekunden wieder auflädt. Überhaupt gibts aller 10s 'nen Ruck, als ob mein Char da immer wieder neu spawnt. Von den Toten auferstehen tue ich auch nicht, habs mit dem Kill Befehl probiert.

MfG Gideon
 
:lol:
Haha eine Wiederbelebungs script ist nich sooo einfach wie ihr euch das vorstellt xD :p

GuidoBot101 hat eins geschrieben, und der hat schon lange gebraucht. Sowas is echt kompliziert.
Ein paar hundert Zeilen.
Hier ist es drinnen:
http://www.tesnexus.com/downloads/file.php?id=11070

Da ist auch ein Levitationsscript drinnen und ein paar andere Sachen. Wen es interessiert der kann da eine menge drinnen lernen

:)
 
hi, ich will, dass wenn ich einen Schalter aktiviere, das mehrere Feuerflammen weggehen und anderstrum,
Danke


Edit: Außerdem möchte ich einen Zauber, der mir ein Tor verschließt und andersrum, oder gibts so eine Mod schon?
MfG
bauer;)
 
Zuletzt bearbeitet:
Also: Zur ersten Frage brauchst du erst einmal die Flammen. Denen gibst du dann unterschiedliche RefIDs (doppelklick im Render-Fenster auf die Flamme, dann ganz oben im Fenster eine ReferenceID eingeben), z.B. Flamme1 und Flamme2. Dazu machst du bei jeder Flamme einen Haken bei "Persistent Reference". Dann schreibst du das folgende Script und legst es auf den Schalter:
Code:
scn 00FlammenScript

short isdisabled

Begin OnActivate
  If isdisabled == 0
    Flamme1.disable
    Flamme2.disable
    Set isdisabled to 1
  Elseif isenabled == 1
    Flamme1.enable
    Flamme2.enable
    Set isdisabled to 0
  endif
activate
end
Wenn du weitere Flammen hast, nenne sie einfach "Flamme3", "Flamme4", usw. und füge sie im Script nach dem gleichen Prinzip wie die ersten beiden an.

Zum Edit: Zum Öffnen eines Schlosses gibt es bereits einen Zauber im Spiel, das hat also wenig mit Scripten zu tun. Auch zum Verschliessen gibt's einen Zauber, der allerdings nie ins Spiel integriert wurde. Hier gibt's den zum Download ;)

Mfg
 
Zuletzt bearbeitet:
Stimmt, auf einem NPC wäre es viel einfacher, weil es da auch kein Menü gibt. Aber dank SinHHHans haben wir bzw. Gideon ja jetzt den fertigen Script. =)

@ bauer: Also ich benutze in meinem Beispiel mal 10 Flammen und einen Schalter. Nun wählst du eine bestimmte Flamme aus und klickst sie doppelt an. Im neuen Fenster setzt du ein Häckchen bei "Persistence Reference". Nun gehst du auf eine zweite Flamme und klickst sie doppelt. Du gehst auf den Tab "Enable Parent" und gehst auf den Button "Select Reference in Render Window" (oder so ähnlich heißt der). Dann wählst du die erste Flamme aus. Das wiederholst du bei den restlcihen 8 Flammen, sodass 9 Flammen die erste Flamme als "enable Parent" haben. Nun erstellst du einen Knopf mit folgendem Script:
Code:
scn KnopfSCRIPT

ref myparent
short doonce

Begin OnActivate
If doonce == 0
set myparent to getparentRef
set doonce to 1
Endif
If myparent.getdisabled == 0
myparent.disable
Else
myparent.enable
Endif
activate
End
Wenn ich nichts bersehen habe, müsste das jetzt so stimmen.
Jetz weist du ncoh dem Schalter einen "Enable Parent" zu. Und zwar die Flamme.

Bei deiner zweiten Frage weiß cih irgendwie nicht, was du willst ^^

Edit: @ Saurons Auge: Du hast ein activate vergessen ;)

MfG Gildur
 
Zuletzt bearbeitet:
  • Like
Reaktionen: bauer
Also: Zur ersten Frage brauchst du erst einmal die Flammen. Denen gibst du dann unterschiedliche RefIDs (doppelklick im Render-Fenster auf die Flamme, dann ganz oben im Fenster eine ReferenceID eingeben), z.B. Flamme1 und Flamme2. Dazu machst du bei jeder Flamme einen Haken bei "Persistent Reference". Dann schreibst du das folgende Script und legst es auf den Schalter:
Code:
scn 00FlammenScript

short isdisabled

Begin OnActivate
  If isdisabled == 0
    Flamme1.disable
    Flamme2.disable
    Set isdisabled to 1
  Elseif isenabled == 1
    Flamme1.enable
    Flamme2.enable
    Set isdisabled to 0
  endif
activate
end
Wenn du weitere Flammen hast, nenne sie einfach "Flamme3", "Flamme4", usw. und füge sie im Script nach dem gleichen Prinzip wie die ersten beiden an.

Zum Edit: Zum Öffnen eines Schlosses gibt es bereits einen Zauber im Spiel, das hat also wenig mit Scripten zu tun. Auch zum Verschliessen gibt's einen Zauber, der allerdings nie ins Spiel integriert wurde. Hier gibt's den zum Download ;)

Mfg

kann ich mit dem Zauber aufschließen und abschließen?

Edit: Danke Gildur, jetzt brauche ich noch ein script:
Ich will einen Zauber machen, der den NPC oder die Kreatur auf meinen Marker teleportiert

Und noch eine andere Frage:
brauch ich ein script, dass ich mit einem Hebel eine Tür öffnen kann oder muss bloß Enable Parent machen?
 
Zuletzt bearbeitet:
Nein, entweder das eine oder das andere, je nach Zauber.

Code:
scn 00LockUnlockSpellScript

Begin ScriptEffectStart
  If GetLockedLevel > 0
    unlock
  ElseIf GetLockedLevel = 0
    Lock [1-100]     ;100 = unmöglich, 0 = offen
  endif
end
So sähe ein einfaches Script für einen Zauber aus, mit dem man beides machen kann. Wenn die Tür zu ist, wird der Zauber sie öffnen, wenn sie offen ist, wird er sie verschliessen.
Es kann übrigens sein, dass bei einem solchen Script Probleme auftauchen, kam auch schon vor. Ich bin mir nicht 100%-ig sicher, ob es funktioniert, aber vom Script her müsste es.

Zum zweiten Problem:

Ich nehme mal an, du hast einen Marker erstellt und ihm die RefID "MarkerZiel" gegeben, dann müsste das Script so lauten:
Code:
scn 00TeleportZielScript

Begin ScriptEffectStart
  moveto MarkerZiel
end
Das wärs schon :)

Zum dritten: Gib der Tür die RefID "Tuer" o.ä., mach einen Haken bei "Persistent Reference" und lege folgendes Script auf den Hebel:

Code:
scn 00HebelTuerScript

short opened

Begin OnActivate
  If opened == 0
    Tuer.playgroup forward 1
    Set opened to 1
    Activate
  Elseif opened == 1
    Tuer.playgroup backward 1
    Set opened to 0
    Activate
  endif
end
Wenn du nun den Hebel betätigst und die Tür zu ist, wird sie sich öffnen (also die Animation abspielen), wenn sie schon geöffnet ist, wenn du den Hebel aktivierst, wird sie sich wieder schliessen.
Achtung: Wichtig ist, dass die Tür animiert ist, sonst geht das nicht!

Hoffe, ich konnte helfen.

Mfg
 
  • Like
Reaktionen: bauer
Hallo liebe Community,

ich bräuchte etwas Hilfe bei einem kleinen Skript im Rahmen der Blutnacht-Mod: Wir sind übereingekommen, das Untote und Vampire nicht durch "Lebensenergie wiederherstellen" geheilt werden können, weil sie nicht lebendig sind und durch einen speziellen Effekt geheilt werden sollen. Um gleichzeitig Heilern eine Waffe gegen Untote zu geben, wollte ich alle Heilzauber gegen Untote umkehren. Mit Zaubern klappt das auch. Problem: Die Tränke. Ich kann ihre individuelle Stärke nicht per Skript erfassen, noch kann ich feststellen, welchen Trank der Spieler eingenommen hat. Aus Kompatibilitätsgründen will ich auch nicht an jeden Trank ein Skript dranhängen - zumal der Spieler auch selbst welche brauen kann, ein weiteres Problem.
Alles oben gesagte gilt auch für vom Spieler erstellte Zauber.

Weiß jemand, ob und, wenn ja, wie ich dieses Problem beheben kann?

Mein bisheriger Ansatz sieht so aus:
Code:
scn BlutnachtUntotHeilungsumkehrSpieler

short ArenaBasinSpellMag
short TrapBloodFontainHeal01Mag
short TrapBloodFontainHeal02Mag
short TrapBloodFontainHeal03Mag
short TrapBloodFontainHeal04Mag
short TrapBloodFontainHeal05Mag
short StandardRestoreHealth1NoviceMag
short StandardRestoreHealth2ApprenticeMag
short StandardRestoreHealth3JourneymanMag
short StandardRestoreHealth4ExpertMag
short StandardRestoreHealth5MasterMag
short Trankmenge1
short Trankmenge2
short Trankmenge3

Begin ScriptEffectStart
set ArenaBasinSpellMag to - GetNthEffectItemMagnitude ArenaBasinSpell 'REHE'
set TrapBloodFontainHeal01Mag to - GetNthEffectItemMagnitude TRAPBloodFountainHeal01 'REHE'
set TrapBloodFontainHeal02Mag to - GetNthEffectItemMagnitude TRAPBloodFountainHeal02 'REHE'
set TrapBloodFontainHeal03Mag to - GetNthEffectItemMagnitude TRAPBloodFountainHeal03 'REHE'
set TrapBloodFontainHeal04Mag to - GetNthEffectItemMagnitude TRAPBloodFountainHeal04 'REHE'
set TrapBloodFontainHeal05Mag to - GetNthEffectItemMagnitude TRAPBloodFountainHeal05 'REHE'
set StandardRestoreHealth1NoviceMag to - GetNthEffectItemMagnitude StandardRestoreHealth1Novice 'REHE'
set StandardRestoreHealth2ApprenticeMag to - GetNthEffectItemMagnitude StandardRestoreHealth2Apprentice 'REHE'
set StandardRestoreHealth3JourneymanMag to - GetNthEffectItemMagnitude StandardRestoreHealth3Journeyman 'REHE'
set StandardRestoreHealth4ExpertMag to - GetNthEffectItemMagnitude StandardRestoreHealth4Expert 'REHE'
set StandardRestoreHealth5MasterMag to - GetNthEffectItemMagnitude StandardRestoreHealth5Master 'REHE'
set Trankmenge1 to Getitemcount PotionRestoreHealth
set Trankmenge2 to Getitemcount PotionRestoreHealthS
set Trankmenge3 to Getitemcount PotionRestoreHealthW
End


Begin ScriptEffectUpdate

If ( IsSpellTarget ArenaBasinSpell == 1 )
dispel ArenaBasinSpell
ModAV2 Health ArenaBasinSpellMag
elseif ( IsSpellTarget TrapBloodFountainHeal01 == 1 )
dispel TrapBloodFountainHeal01
ModAV2 Health TrapBloodFontainHeal01Mag
elseif ( IsSpellTarget TrapBloodFountainHeal02 == 1 )
dispel TrapBloodFountainHeal02
ModAV2 Health TrapBloodFontainHeal02Mag
elseif ( IsSpellTarget TrapBloodFountainHeal03 == 1 )
dispel TrapBloodFountainHeal03
ModAV2 Health TrapBloodFontainHeal03Mag
elseif ( IsSpellTarget TrapBloodFountainHeal04 == 1 )
dispel TrapBloodFountainHeal04
ModAV2 Health TrapBloodFontainHeal04Mag
elseif ( IsSpellTarget TrapBloodFountainHeal05 == 1 )
dispel TrapBloodFountainHeal05
ModAV2 Health TrapBloodFontainHeal05Mag
elseif ( IsSpellTarget StandardRestoreHealth1Novice == 1 )
dispel StandardRestoreHealth1Novice
ModAV2 Health StandardRestoreHealth1NoviceMag
elseif ( IsSpellTarget StandardRestoreHealth2Apprentice == 1 )
dispel StandardRestoreHealth2Apprentice
ModAV2 Health StandardRestoreHealth2ApprenticeMag
elseif ( IsSpellTarget StandardRestoreHealth3Journeyman == 1 )
dispel StandardRestoreHealth3Journeyman
ModAV2 Health StandardRestoreHealth3JourneymanMag
elseif ( IsSpellTarget StandardRestoreHealth4Expert == 1 )
dispel StandardRestoreHealth4Expert
ModAV2 Health StandardRestoreHealth4ExpertMag
elseif ( IsSpellTarget StandardRestoreHealth5Master == 1 )
dispel StandardRestoreHealth5Master
ModAV2 Health StandardRestoreHealth5MasterMag
endif
removeItem PotionRestoreHealth Trankmenge1
removeItem PotionRestoreHealthS Trankmenge2
removeItem PotionRestoreHealthW Trankmenge3
end
 
Ich hätte da eine Idee, die unabhängig von der Art der Wiederherstellung funktioniert. Es funktioniert dann im Prinzip so, dass eine Variable ständig den Gesundheitszustand berwacht. Wenn jetzt ein Heilzauber wirkt, wird eine zweite Variable festgestellt, die dann den nachherigen Gesundheitswert annimmt. Jetzt wird im Endeffekt nichts anderes gemacht, als eine dritte Variable auf die doppelte differenz der beiden anderenVariablen gebracht wird (und das wiederum von der Lebensenergie abgezogen wird. (doppelt logischerweise, weil ja zuerst das wiederhergestellte wieder abgezogen werden muss)

Um die Performance etwas zu schonen, versuche ich es, dass die erste Variable nur jede Sekunde aktualisiert wird, nicht jedes Frame^^

Code:
Begin Untotenvernichtungsscript

float HealthBefore
float HealthAfter
float HealthDifference
short inactive
ref self

Begin ScriptEffectStart
if inactive == 0
set HealthBefore to GetAV Health
endif
end

Begin ScriptEffectUpdate
if inactive == 0
set HealthBefore to GetAV Health
endif
end

Begin OnMagicEffectHit REHE
set inactive to 1
set HealthAfter to GetAV Health
set HealthDifference to ((HealthBefore - HealthAfter) * 2)
ModAV Health - HealthDifference
set inactive to 0
end

/Edit: Dieses Script müsste dann auf eine Egenschaft, die alle Untoten in der Mod bekommen.
 
  • Like
Reaktionen: Informatix
Hi ich brauch ein Ausrüst skript ich habe es selber probiert aber da kam immer so ne fehlermeldung

Also ganz einfach das Skript soll auf einem Buch liegen wenn man es öffnet kommt eine message box(soweit hab ichs geschaft)

da kann man nun auswählen möglichkeit
1[ID der rüstung]xgold
2[ID der rüstung]ygold
3[ID der rüstung]zgold
usw..

wählt man jetzt eine möglichkeit werden dem player je nach möglichkeit x,y,z Gold abgezogen und die NPCs
1[ID des NPCs]
2[ID des NPCs]
3[ID des NPCs]bekommen dan die ausrüstung

Hoffentlich hab ich das verständlich erklärt.
Danke im Voraus

LG
Dyras
 
Also du musst Referenzen für jeden NPC erstellen Dann diesen Script auf das Buch legen:
Code:
scn BookEquipSCRIPT

short button
short once

Begin OnActivate
Messagebox "Welchen eurer Männer wollt ihr mit einer Rüstung belohnen?" "NPC1" "NPC2" "NPC3"
[COLOR="Red"]Activate[/COLOR]
End

Begin GameMode
set button to getbuttonpressed
If butten == 0 && player.GetItemCount Gold001 >= [COLOR="mediumturquoise"]1000[/COLOR]
player.removeItem Gold001 [COLOR="mediumturquoise"]1000[/COLOR]
NPC1Referenz.EquipItem [COLOR="SeaGreen"]RüstungsteilID[/COLOR]
NPC1Referenz.EquipItem [COLOR="seagreen"]usw.[/COLOR]
Elseif butten == 0 && player.GetItemCount Gold001 < [COLOR="mediumturquoise"]1000[/COLOR]
Message "Leider habt ihr nicht genug Geld für eine solche Aufrüstung."
Elseif butten == 1 && player.GetItemCount Gold001 >= [COLOR="mediumturquoise"]2000[/COLOR]
player.removeItem Gold001 [COLOR="mediumturquoise"]2000[/COLOR]
NPC2Referenz.EquipItem [COLOR="seagreen"]RüstungsteilID[/COLOR]
NPC2Referenz.EquipItem [COLOR="seagreen"]usw.[/COLOR]
Elseif butten == 1 && player.GetItemCount Gold001 < [COLOR="mediumturquoise"]2000[/COLOR]
Message "Leider habt ihr nicht genug Geld für eine solche Aufrüstung."
Elseif butten == 2 && player.GetItemCount Gold001 >= [COLOR="mediumturquoise"]3000[/COLOR]
player.removeItem Gold001 [COLOR="mediumturquoise"]3000[/COLOR]
NPC3Referenz.EquipItem [COLOR="seagreen"]RüstungsteilID[/COLOR]
NPC3Referenz.EquipItem [COLOR="seagreen"]usw.[/COLOR]
Elseif butten == 2 && player.GetItemCount Gold001 < [COLOR="mediumturquoise"]3000[/COLOR]
Message "Leider habt ihr nicht genug Geld für eine solche Aufrüstung."
Endif
End
Wenn du nicht willst, dass das Buch beim Aktivieren geöffnet wird, lässt du einfach das Rote weg. Für die blauen Zahlen setzt du den Wert der jeweiligen Rüstungen ein, für die grünen Wörter die ID's der Rüstungsteile. 1000 Gold steht für den ersten NPC, 2000 für den zweiten NPC und 3000 für die Aufwertung des dritten NPC's.

MfG Gildur

MfG Gildur
 
  • Like
Reaktionen: Dyras
Kla kann man das. Einfach zwischen diesen Block schreiben:


Kannst theoretisch auch 100 NPC's gleichzeitig ausrüsten (würde ich aber nicht machen ^^).
Code:
[...]
NPC1Referenz.EquipItem RüstungsteilID
NPC1Referenz.EquipItem usw.
NPC11Referenz.EquipItem RüstungsteilID
NPC11Referenz.EquipItem usw.
Elseif [...]
Dort kannst du alles auflisten.

MfG Gildur
 
  • Like
Reaktionen: Dyras
ok danke da hab ich noch eine letzte frage ist es möglich die rüstung unzerstörbar machen oder wie bringt man einen NPC dazu seine rüssi zu reparieren

LG
Dyras
 
Ich bin mir jetzt nicht so sicher (habe Oblivion nämlcih seit ein paar Wochen nicht mehr gespielt, da ich nur modde), aber sind Waffen und Rüstungen von NPC's überhaupt zerstörbar? Also wenn ich mich Recht erinnere und die Rüstung eines toten NPC's nahm, war die dann nicht noch auf 100? Bin mir da jetzt nicht so sicher... wie gesagt, Oblivion spielen ist schon länger her...
 
  • Like
Reaktionen: Dyras
wirklich unzerstörbar ist mir nicht bekannt, dass es geht (auch NPC-Ausrüstung verschleißt), aber du kannst den Wert ja einfach auf das absolute Maximum setzen, dann hält es zumidnest mal extremst viel aus.
 
  • Like
Reaktionen: Dyras