Construction Set Skriptthread zum Construction Set

Kraft speichern

Hallihallo, ich habe da eine Scriptfrage. Ich lese diese Tuts aber ich hab keine Ahnung, wie das gehen soll:

Ich möchte z.B. mit Taste "M" Lebensenergie, Magie und Ausdauer "in" ein Item übertragen und zwar so lange, wie ich gedrückt halte, d.h. es gehen pro Sekunde z. B. 20 von jeder Sorte in das Item, welches diese speichert.

Z.B. mit Taste "X" möchte ich LMA (nenn ich es jetzt mal^^) wieder im gleichen Takt auf meinen Char übertragen.

Während beider Vorgänge soll eine Meldung erscheinen (keine Messagebox!!!), wieviel Energie noch im Item steckt. (Diese Meldungen, die oben rechts dann immer stehen, z B. die, die kommt, wenn man nicht rasten kann, da Feinde in der Nähe sind)

Gut wäre auch noch, nein sau geil und eigentlich unverzichtbar :D, wenn die Kraft, die man auf sich überträgt, auch das eigentliche Maximum seiner eigentlichen LMA übersteigen kann, aber wenn es verbraucht ist, die normalen Werte wieder in Kraft treten (so, wie z. B. der Zauber "Magie festigen")

KURZ: Es geht um das Speichern von LMA in einem Item, was auch bei Eragon vorkommt (bitte fragt, jetzt nicht nach Eragon^^)

Ich hoffe, dass so etwas möglich ist.;)

Wäre euch sehr verbunden, wenn ihr rausfinden könntet, wie das Script geht. (Zur Not auch mit OBSE)

Lg OblivionBee:p
 
Zuletzt bearbeitet:
Ich würde das Ganze über ein Quest-Script laufen lassen:

(OBSE wird benötigt ;))

Code:
SCN ...


Long Health
Long Magicka
Long Fatigue

Long pHealth
Long pMagika
Long pFatigue

Float fQuestDelayTime


Begin GameMode

if(fquestdelaytime)
     set fquestdelaytime to 0.001
endif

label 10
 if(iskeypressed3 <key>)
     if(player.getav health <= 0 && player.getav magicka <= 0 && player.getav fatigue <= 0)
         Message "Ihr könnt keine weiteren Werte auf das Item übertragen!"
        Goto 10
     endif

     set phealth to player.getbaseactorvalue health
     player.modAV2 health -20
     if(player.getav health >= 0)
         set health to (health +20)
     endif

     set pMagicka to player.getbaseactorvalue magicka
     player.modAV2 magicka -20
     if(player.getav magicka >= 0)
         set magicka to (magicka +20)
     endif

     set pFatigue to player.getbaseactorvalue fatigue
     player.modav2 fatigue -20
     if(player.getav fatigue >= 0)
          set fatigue to (fatigue +20)
      endif

     Message "Im Item: Lebenspunkte: %.0f / Magicka: %.0f / Ausdauer: %.0f" health, magicka, fatigue

     Goto 10

Label 20
  elseif(iskeypressed3 <Key>)    ; zum Wiederherstellen der Werte
     if(player.getav health >= (player.getbaseactorvalue health) && player.getav magicka >= (player.getbaseactorvalue   magicka) && player.getav fatigue >=   (player.getbaseactorvalue fatigue))
         Message "Eure Werte können nicht weiter aufgefrischt werden!"
         Goto 20
     endif

     player.modAV2 health +20
     if(player.getav health < pHealth)
          set health to (health -20)
     endif

     player.modAV2 magicka +20
     if(player.getav magicka < pmagicka)
          set magicka to (magicka -20)
     endif

     player.modav2 fatigue +20
     if(player.getav fatigue < pfatigue)
           set fatigue to (fatigue -20)
      endif

     Message "Im Item: Lebenspunkte: %.0f / Magicka: %.0f / Ausdauer: %.0f" health, magicka, fatigue

     Goto 20
 else
          return
   endif

end
Ich weis jetzt nicht, ob alles stimmt. Test` das Script mal, dann wird man ja sehen. :-D
Für die "<keys>"`s musst Du übrigens hier die richtigen Zahlen raussuchen. (In der Tabelle die Zahlen bei "Dec")
 
Zuletzt bearbeitet:
  • Like
Reaktionen: SkyrimBee
Nein, kannst Du nicht. Ich weis auch gerade nicht, wie man das dann regeln könnte. :? Das Item liegt ja im Inventar, oder?

(Ich aktualisier das Script mal, hab ein paar Fehler gefunden. ;))
 
  • Like
Reaktionen: SkyrimBee
im forum gibt es ja eine anleitung, aber gibt es mehr von den anleitungen ?
Könnte bitte jemand noch solche anleitungen schreiben ??
wäre echt nett :D

(Die Anleitung im Forum war echt gut:good:)
 
@ Kahmul: Ja, der Ring liegt im Inventar. Ich weiß nämlich nicht, wie man das mit den Quests machen soll. Auf dem Ring das Script , wäre mir lieber:(

Also optimal wäre: Das Script mit den Bedingungen, die ich schin geschrieben habe auf einem Item, das angelegt ist.
 
Problem: Wie sag ich dem Spiel, dass es die Quest starten soll, wenn ich Notiz XY aus einem Container ins Inventar nehme, und dann lese? Bei meinem muss ich die Notiz auf den Boden werfen, und dann lesen, damit die Quest startet.:?
 
Leg das auf das Item:

Code:
SCN ...

Short State

Begin OnEquip

if(state == 0)
    setstage [quest] [stage]
    set state to 1
endif

end
 
ja, ich weis wie man jetzt so ein amulet macht, aber ich weis nicht welche befehele man für quest braucht. das ist mein problem. oder wie man npc dazubringt das sie einfach nur rumgehen. Also ihnene beibringt das ihnen ein haus gehört und das sie darin auch rumgehen
 
Hallihallo, ich habe da eine Scriptfrage. Ich lese diese Tuts aber ich hab keine Ahnung, wie das gehen soll:

Ich möchte z.B. mit Taste "M" Lebensenergie, Magie und Ausdauer "in" ein Item übertragen und zwar so lange, wie ich gedrückt halte, d.h. es gehen pro Sekunde z. B. 20 von jeder Sorte in das Item, welches diese speichert.

Z.B. mit Taste "X" möchte ich LMA (nenn ich es jetzt mal^^) wieder im gleichen Takt auf meinen Char übertragen.

Während beider Vorgänge soll eine Meldung erscheinen (keine Messagebox!!!), wieviel Energie noch im Item steckt. (Diese Meldungen, die oben rechts dann immer stehen, z B. die, die kommt, wenn man nicht rasten kann, da Feinde in der Nähe sind)

Gut wäre auch noch, nein sau geil und eigentlich unverzichtbar :D, wenn die Kraft, die man auf sich überträgt, auch das eigentliche Maximum seiner eigentlichen LMA übersteigen kann, aber wenn es verbraucht ist, die normalen Werte wieder in Kraft treten (so, wie z. B. der Zauber "Magie festigen")

KURZ: Es geht um das Speichern von LMA in einem Item, was auch bei Eragon vorkommt (bitte fragt, jetzt nicht nach Eragon^^)

Ich hoffe, dass so etwas möglich ist.;)

Wäre euch sehr verbunden, wenn ihr rausfinden könntet, wie das Script geht. (Zur Not auch mit OBSE)

Lg OblivionBee:p

Wie wäre es mit einer Verzauberung auf dem Ring? Dafür musst du zum einen ein Skript auf den Ring legen:
Code:
scn name

Begin onEquip player

player.addSpell <Eigenschaft-ID>

end

Begin onUnequip player

player.removeSpell <Eigenschaft-ID>

end

Dann erstellst du noch eine neue Eigenschaft mit einem neuen Skript-Effekt, dessen Skript ungefähr so aussieht (OBSE ist auch hier vonnöten):
Code:
scn name

short m
short x

long health
long magicka
long fatigue

long storedHealth
long storedMagicka
long storedFatigue

long playerHealth
long playerMagicka
long playerFatigue

long playerBaseHealth
long playerBaseMagicka
long playerBaseFatigue

long newHealth
long newMagicka
long newFatigue

float secondsPassed


Begin ScriptEffectUpdate

if onKeyDown 50
 set m to 1
 set x to 0
 return
endif

if onKeyDown 45
 set x to 1
 set m to 0
 return
endif

if m
 if isKeyPressed3 50
  set secondsPassed to scriptEffectElapsedSeconds
  set health to (20 * secondsPassed)
  set magicka to (20 * secondsPassed)
  set fatigue to (20 * secondsPassed)
  set playerHealth to getAV health
  set playerMagicka to getAV magicka
  set playerFatigue to getAV fatigue
  if playerHealth <= health
   set health to (playerHealth - 1)
  endif
  if playerMagicka <= magicka
   set magicka to (playerMagicka - 1)
  endif
  if playerFatigue <= fatigue
   set fatigue to (playerFatigue - 1)
  endif
  set storedHealth to (storedHealth + health)
  set storedMagicka to (storedMagicka + magicka)
  set storedFatigue to (storedFatigue + fatigue)
  set newHealth to (playerHealth - health)
  set newMagicka to (playerMagicka - magicka)
  set newFatigue to (playerFatigue - fatigue)
  setAV health newHealth
  setAV magicka newMagicka
  setAV fatigue newFatigue
  return
 else
  set m to 0
  return
 endif
endif

if x
 if isKeyPressed3 45
  set secondsPassed to scriptEffectElapsedSeconds
  set health to (20 * secondsPassed)
  set magicka to (20 * secondsPassed)
  set fatigue to (20 * secondsPassed)
  set playerHealth to getAV health
  set playerMagicka to getAV magicka
  set playerFatigue to getAV fatigue
  set playerBaseHealth to getBaseAV health
  set playerBaseMagicka to getBaseAV magicka
  set playerBaseFatigue to getBaseAV fatigue
  if (playerBaseHealth - playerHealth) < 0
   set health to 0
  elseif (playerBaseHealth - playerHealth) < health
   set health to (playerBaseHealth - playerHealth)
  endif
  if (playerBaseMagicka - playerMagicka) < 0
   set magicka to 0
  elseif (playerBaseMagicka - playerMagicka) < magicka
   set magicka to (playerBaseMagicka - playerMagicka)
  endif
  if (playerBaseFatigue - playerFatigue) < 0
   set fatigue to 0
  elseif (playerBaseFatigue - playerFatigue) < fatigue
   set fatigue to (playerBaseFatigue - playerFatigue)
  endif
  if storedHealth < health
   set health to storedHealth
  endif
  if storedMagicka < magicka
   set magicka to storedMagicka
  endif
  if storedFatigue < fatigue
   set fatigue to storedFatigue
  endif
  set storedHealth to (storedHealth - health)
  set storedMagicka to (storedMagicka - magicka)
  set storedFatigue to (storedFatigue - fatigue)
  set newHealth to (playerHealth + health)
  set newMagicka to (playerMagicka + magicka)
  set newFatigue to (playerFatigue + fatigue)
  setAV health newHealth
  setAV magicka newMagicka
  setAV fatigue newFatigue
  return
 else
  set x to 0
  return
 endif
endif

end

Ich hab das Skript jetzt nicht getestet und gebe somit auch keine Garantie auf die Funktionalität.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: SkyrimBee
Mal wieder ich.

Ich habe einen Wiederbelebungs-Zauber erstellt, der eine Leiche wiederbelebt und ihr ein geisterhaftes Aussehen verpasst (ghosteffect shader + saa 0.1).

Hat soweit geklappt. Das Problem: Ich habe den Spell ingame ausprobiert bei Antoinetta Marie. Sie wurde zu einem Geist, aber als ich einige Tage später wieder zurück in das Cheydinhal-Heiligtum kehrte, hatte sie den Shader nicht mehr und sah wieder ganz gewöhnlich aus.

Weiss einer woran das liegen könnte und wie ich das beheben kann?

Danke im Vorraus.

mfg
 
Also hier ist der Skript:

Code:
scriptname reanimationghost

begin ScriptEffectStart

if(getDead)
resurrect 1
pms ghosteffect
saa 0.1
endif

End
Mir ist gerade aufgefallen, dass nach ner Zeit auch der Shader den ich mir selbst gegeben habe weggeht, obwohl der Effekt eigentlich noch drauf ist.

IKch bin mir auch ziemlich sicher das sie nicht neu resurrected/gespawnt wurde.
 
Zuletzt bearbeitet:
also zumindest das saa 0.01 müsste bleiben.der shader kann sein dass der durch irgendwas weggeht...zb überlagerung mit nem andern shader oderso...
 
Ist das nicht normal? Nach einiger wird die Zelle doch resettet und alles in seinen Ursprungsstatus gesetzt/respawnt, sodass sie wieder normal aussieht.
Was du vielleicht machen könntest, wäre ihr eine Eigenschaft hinzuzufügen, die die gewünschten Effekte beinhaltet. Allerdings darfst du den Zauber dann nur auf einzigartige NPCs anwenden und nicht auf Wachen oder Banditen.
 
Das geht natürlich auch bei jedem anderen NPC

1. Eigenschaftszauber erstellen
2. Zauber erstellen

Code:
scn Scriptname

ref target

begin ScriptEffectStart

Set target to GetSelf

if target > 0
target.AddSpell NameDesEigenschaftszaubers
Set target to 0
endif

end
Ist zwar ungetestet. Sollte aber so funktionieren.