Skriptthread zum Creation Kit

Ich versuche gerade eine Modidee meinerseits umzusetzen, dabei benötige ich jedoch Hilfe von euch. Und zwar brauche ich ein Script, welches dauerhaft die Lebenspunkte, das Magicka und die Ausdauer überprüft, wie viel Prozent davon noch zur Verfügung stehen. Je nachdem wie viel Prozent Lebenspunkte der Spieler z.B. hat soll ein Imagespace Modifier mit der entsprechenden Stärke angwendet werden (diese Befehl habe ich auch schon hier gefunden).

Von der Syntax hatte ich mir das so vorgestellt (mir fehlen halt nur die speziellen Anweisungen ^^):

Code:
Imagespace Modifier als property deklarieren;

Event (das mit dem dauerhaften Überprüfen, wenn es sowas gibt)
{
Prozent der Lebenspunkte = Prozent der Stärke des Imagespace Modifiers;
}

Das ganze halt auch noch mal für Magicka und Ausdauer.
 
Zuletzt bearbeitet:
Des weiteren sollte man die Kommunikation mit dem Spiel stets über Properties machen, die du dann dem Skript später im CK zuweist. So musst du auch nicht für jede Teleportation ein neues Skript machen, sondern kannst einfach deinem schon vorhandenen Skript einen anderen Marker zuweisen.

Wie weise ich dann dem Skript einen Marker zu?
 
1) Ich bin mir nicht sicher, ob du akActionRef so einfach in ref umbenennen darfst, oder ob er da meckert. Ich habe bisher immer die Standardbezeichnungen dringelassen.

Das ist möglich, es muss nur der Type stimmen.

Ich versuche gerade eine Modidee meinerseits umzusetzen, dabei benötige ich jedoch Hilfe von euch. Und zwar brauche ich ein Script, welches dauerhaft die Lebenspunkte, das Magicka und die Ausdauer überprüft, wie viel Prozent davon noch zur Verfügung stehen. Je nachdem wie viel Prozent Lebenspunkte der Spieler z.B. hat soll ein Imagespace Modifier mit der entsprechenden Stärke angwendet werden (diese Befehl habe ich auch schon hier gefunden).

Von der Syntax hatte ich mir das so vorgestellt (mir fehlen halt nur die speziellen Anweisungen ^^):

Code:
Imagespace Modifier als property deklarieren;

Event (das mit dem dauerhaften Überprüfen, wenn es sowas gibt)
{
Prozent der Lebenspunkte = Prozent der Stärke des Imagespace Modifiers;
}

Das ganze halt auch noch mal für Magicka und Ausdauer.

Was meinst Du mit dauerhaft, also wie oft soll es geprüft werden? Ein oft laufender OnUpdate-Block ist ziemlich unvorteilhaft, aber ich würde es dennoch so machen, als Quest-Skript:

Code:
Scriptname <Scriptname> extends Quest

ImageSpaceModifier Property imgMod auto
Actor Property playerRef auto


Event OnInit()

registerforsingleupdate(1)

EndEvent


Event OnUpdate()

imgMod.apply(playerRef.getactorvaluepercentage("Health"))

registerforsingleupdate(1)

EndEvent

Ich gehe mal davon aus, dass Du verschiedene ImageSpaceModifier für die 3 Attribute hast. Dann müsstest Du es einfach so wie oben machen.


Wie weise ich dann dem Skript einen Marker zu?

Über das Property-Fenster, das Du per Rechtsklick/Doppelklick auf das Script öffnen kannst.
 
@Kahmul: Mit dauerhaft meinte ich, dass das Script dauerhaft ausgeführt wird und nicht nur durch eine bestimmte Aktion, also denke ich, dass das mit der Quest klappen müsste.
 
Ok, das Property-Fenster hab ich gefunden. Und was genau muss ich da jetzt eingeben? :huh:
Du hast links die Liste aller in deinem Skript vorhanden Properties (sollte bei dir dann {Name: ChosenMarker; Type: ObjectReference} sein). Du markierst die gewünschte, klickst dann auf "Edit Value" und kannst dann entweder dein Objekt im Renderwindow auswählen oder aus der Liste auswählen. Gegebenenfalls dann einfach mit weiteren Properties fortfahren oder zum Schluss dann halt mit OK bestätigen.
 
  • Like
Reaktionen: Eldarie
Ok, das Property-Fenster hab ich gefunden. Und was genau muss ich da jetzt eingeben? :huh:

Wenn Du eine Property im Script deklariert hast, siehst Du sie im Property-Fenster. Dort wählst Du sie nun aus und weist ihr den Marker zu, der bereits am besten in einer Dummy-Cell ist. Dort kannst Du ihn dann auswählen. Somit weiß das Script, auf was es zugreifen soll.

EDIT: Zu spät.
 
  • Like
Reaktionen: Eldarie
So ich habe das Script jetzt noch entsprechend meinen Bedürfnissen angepasst:

Code:
Scriptname Exhausted Extends Quest  

 ImageSpaceModifier Property HealthModifier Auto
 ImageSpaceModifier Property StaminaModifier Auto
 ImageSpaceModifier Property MagickaModifier Auto
 Actor Property playerRef auto


Event OnInit()


registerforsingleupdate(1)


EndEvent




Event OnUpdate()


HealthModifier.Apply(playerRef.GetActorValuePercentage("Health"))
StaminaModifier.Apply(playerRef.GetActorValuePercentage("Stamina"))
MagickaModifier.Apply(playerRef.GetActorValuePercentage("Magicka"))


registerforsingleupdate(1)


EndEvent

Jetzt bräuchte ich jedoch noch einmal Hilfe beim Zuweisen der Properties. Bei Objekten die man im Render Window auswählen kann, weiß ich wie das geht, aber wie mach ich das mit ImageSpace Modifier?
 
Im Property-Fenster musst Du einfach nur die entsprechende Property auswählen und den gewollten ISM aus der Liste auswählen. Oder, wenn Du die Property genauso genannt hast wie die Editor-ID/Ref-ID, einfach auto-fill auswählen. Dies kannst Du bereits bei der playerRef-Property machen, es sucht dann einfach die playerRef aus der (any)-Cell heraus.
 
Ok, vielleicht habe ich mich etwas undeutlich ausgedrückt. Mein Problem ist es das Property-Fenster zu finden, wo öffne ich das?
 
Wenn Du das Script der Quest zugewiesen hast, einfach das Skript rechtsklicken -> edit properties auswählen. Standartmäßig ist auch der Doppelklick eingestellt.
 
  • Like
Reaktionen: Tywele
Ich versuche momentan ein menschliches Herz zu erstellen, sodass bei dem verzehr dieser Zutat man mit der Vampirkrankheit infiziert wird.Ich habe bereits einige Scripts in das Herz übernommen die etwas mit der Krankheit/Infizierung zu tun haben könnten jedoch geschah beim verzehr keinerlei Effekt...auch nach 3Tagen ergab sich kein Resultat.Nun wollte ich euch fragen ob jmd von euch den Script kennt der diese Vampirinfizierung in Gang setzt?
 
Zuletzt bearbeitet:
Ich habe mir mal die Vampire-Tracking-Quest angeschaut. Alles scheint von einer Function im PlayerVampireQuestScript abzuhängen. Du erstellst am besten einen MagicEffect mit folgendem Script, den Du dann auf das Herz legst:

Code:
Scriptname HeartVampireScript extends ActiveMagicEffect

Quest Property PlayerVampireQuest auto
Actor Property playerRef auto

Event OnEffectStart(Actor Target, Actor Caster)

if(target == playerRef)
    (PlayerVampireQuest as PlayerVampireQuestScript).VampireChange(playerRef)
endif

EndEvent

Die Properties sind so geschrieben, dass Du nur noch Auto-fill All im Property-Fenster auswählen musst.
 
Also , wie bereits gesagt habe ich noch nie einen Script erstellt.Ich habe einen MagicEffect erstellt jedoch weiss ich nicht wie ich den Script erstellen soll.Ich gehe auf "add script" und anschließend auf "New Script" Von da an wusste ich nicht mehr was ich eingeben sollte...Ich habe halt bissl versucht und zwar das Script VampireHeart genannt , und ganz unten im Script Fenster habe ich den genannten Code eingegeben...Jedoch konnte ich kein Auto-Fill aktivieren da ich keine Propertys hatte...Könntest du mir bitte dabei helfen, sitz schon den ganzen Tag dran :headwall:
 
1. Beim MagicEffect auf addScript gehen.
2. [New Script] in der Liste auswählen.
3. Unter Name den Namen des Scripts angeben (am besten einfach so wie ich es oben genannt habe, HeartVampireScript)
4. Auf OK klicken.
5. Rechtsklick auf das Script im MagicEffect-Fenster -> Edit source.
6. Kopiere das Script von oben hinein (wenn Du das Script anders als ich genannt hast darfst Du nicht die erste Zeile mitkopieren, da dann der Name nicht passt).
7. File -> Save.
8. Fenster schließen.
9. Doppelklick auf das Script im MagicEffect-Fenster.
10. Auto-Fill All drücken.
11. Meldung bestätigen.
12. OK klicken.
13. Im MagicEffect-Fenster OK klicken.
14. Speichern.

Fertig.
 
Ich habe deine Anleitung befolgt und bin zum Vampir geworden.Jedoch bin ich ein vollausgereifter Vampir geworden.Gibt es nicht die Möglichkeit bei der Einnahme des Herzes von der Vampirkrankheit infiziert zu werden? Wäre besser weil der Spieler dann noch die Wahl hätte sich von der Krankheit heilen zu lassen oder nicht.Bin dir für deine Antworten und Hilfsbereitschaft sehr dankbar, wäre aber noch supiii wenn du mir bei meinem kleinen Problem helfen könntest.

Freue mich auf jede Antwort.Danke im vorraus :)


MfG


Freakmodder
 
Code:
Scriptname HeartVampireScript extends ActiveMagicEffect

Spell Property DiseaseSanguinareVampiris auto
Actor Property playerRef auto

Event OnEffectStart(Actor Target, Actor Caster)

if(target == playerRef)
    playerRef.addspell(DiseaseSanguinareVampiris)
endif

EndEvent

Das sollte so klappen.
 
  • Like
Reaktionen: Freakmodder
Resultat:Script geändert und alles abgespreichert.Beim Verzehr des Herzes wurde mir oben links im Bildschirm angezeigt ,dass ich mit der Krankheit infiziert wurde.Jedoch habe ich zur Überprüfung ingame bei Aktive Effekte nachgeschaut und mir wurde keine Krankheit angezeigt.3Tage schlafen und ich war immernoch kein Vampir...Ich glaube es fehlt noch etwas im Script dass das ganze ins rollen bringt.Es muss doch ein Script geben der diese Infektion startet,schließlich kann man sich ja ingame auch in Kämpfen infizieren lassen und die Krankheit entwickelt sich... Noch eine Idee?


EDIT: Ich hab jetzt nochmal den Script DiseaseVampireEffectScript zum Herzen hinzugefügt und tada, die Infizierung war erfolgreich!
Vielen Dank für deine Hilfe Kahmul :)



MfG

Freakmodder
 
Zuletzt bearbeitet:
@Kahmul: Wie genau mache ich das, dass ich die Quest nur für das Script erstelle? Unter welcher Kategorie sollte ich die Quest am besten erstellen?
Jedes mal, wenn ich eine Quest neu erzeugen will stürzt das CK ab. Was genau muss bei der Quest in den Tabs ausgefüllt werden? Ich habe immer nur versucht eine ID zu vergeben, den Haken bei Start Game Enabled und Run Once gemacht und dann das Script drangehängt und die Properties verteilt. Aber das funktioniert nicht. Eine sehr genaue Anleitung wäre wirklich schön (Schritt für Schritt). :)

Edit: Ok, das erstellen der Quest hat jetzt funktioniert. Scheinbar muss man erst einmal auf OK klicken sobald man das Quest Data Tab ausgefüllt hat und erst dann beim Editieren dieser Quest kann man das Script hinzufügen.
 
Zuletzt bearbeitet: