Skriptthread zum Creation Kit

jaaa, das hab ich bereits versucht. nur eben mit akTarget und es funzt nich...

Wenn du willst, dass dir geholfen wird, dann solltest du vielleicht erwähnen was genau du gemacht hast. Beispielsweise könntest du eine Darstellung deiner Idee schildern, was dein Ziel ist oder ähnliches.
Wenn du nur mit halb garen Sätzen um dich wirfst, deren Informationsgehalt zu bezweifeln ist, dann wird das auf Dauer nichts.

MfG Master of Worlds
 
tut mir leid, ich bin ziemlich gefrustet. Da vergreift man sich schnell im ton.
Es geht mir um folgendes. Ich möchte einen Zauberstab erstellen, mit dem man einen toten Begleiter (als beispiel nehmen wir mal Lydia) zu einem bestimmten ort teleportiert. an den entsprechenden koordinaten bzw. beim entsprechenden objekt soll der NPC eine bestimmte Idle Animation ausführen (wofür der wahrscheinlich wieder leben muss, also auf unconscious gesetzt wird). Ich hatte bereits einige entwürfe, die ich im gnatz wieder gelöscht hab. Ich häng da schon seit gesternabend dran ohne auch nur einen teilerfolg..
 
Ich will ja nicht nerven, aber ich fühl mich etwas ignoriert. Kann mir Jemand bei meinem Script helfen, oder habt ihr auch keine Ahnung, wie das umzusetzen ist?

mfg
 
tut mir leid, ich bin ziemlich gefrustet. Da vergreift man sich schnell im ton.
Es geht mir um folgendes. Ich möchte einen Zauberstab erstellen, mit dem man einen toten Begleiter (als beispiel nehmen wir mal Lydia) zu einem bestimmten ort teleportiert. an den entsprechenden koordinaten bzw. beim entsprechenden objekt soll der NPC eine bestimmte Idle Animation ausführen (wofür der wahrscheinlich wieder leben muss, also auf unconscious gesetzt wird). Ich hatte bereits einige entwürfe, die ich im gnatz wieder gelöscht hab. Ich häng da schon seit gesternabend dran ohne auch nur einen teilerfolg..

Papyrus wird dich noch oft frusten, ist aber kein Grund dein "Empören", hier in anderer Form rauszulassen. ;)
Da du nun alles gelöscht hast, kann man schlecht an was weiterarbeiten. Wie weit bist du denn gekommen? Was von deiner geplanten Sache konntest du umsetzen, bevor du es wieder gelöscht hast?
Damit ein NPC eine bestimme Animation macht, wäre es wahrscheinlich wirklich notwendig, dass er lebt. Darf er leben oder soll er nur geportet werden?


Ich will ja nicht nerven, aber ich fühl mich etwas ignoriert.

Erst mal denk daran, dass hier lediglich auf freiwilliger Basis geholfen wird und nichts anderes. Daher solltest du auch nicht den Anspruch erheben, dass hier überhaupt jemand auf deine Bitte reagiert.


Kann mir Jemand bei meinem Script helfen, oder habt ihr auch keine Ahnung, wie das umzusetzen ist?

Kann man schon, aber du könntest dein Skript auch selbst schreiben. Habe mal einen Moment nachgedacht und schon eine grobe Idee erhalten, wie man es machen müsste, um etwa dein Ergebnis zu erhalten.
Was du dafür brauchst, findest du im CK beziehungsweise im Wiki für das CK selbst.

MfG Master of Worlds
 
@Master of Worlds
Umsetzen konnte ich garnichts. Denn in dem seltenen Fall, dass das Compilieren funktioniert hat, trat überhaupt kein effekt im spiel auf.
Der NPC darf leben, sperren kann man ja alles weitere mit setdestroyed.

Papyrus wird dich noch oft frusten, ist aber kein Grund dein "Empören", hier in anderer Form rauszulassen.
ich hab mich ja schon entschuldigt. :sorry:

ich schau mal, ob ich das noch irgendwie zusammenkrieg, dann poste ichs.
 
Zuletzt bearbeitet:
Umsetzen konnte ich garnichts. Denn in dem seltenen Fall, dass das Compilieren funktioniert hat, trat überhaupt kein effekt im spiel auf.

Aber was hast du versucht, also was für eine Art Skript hast du versucht zu schreiben? Aber ok, wenn du es noch mal versucht, bringt es vielleicht mehr.

MfG Master of Worlds
 
Code:
Scriptname AABurial extends ActiveMagicEffect
{Beisetzung}

import game
import debug

Faction property PlayerFaction auto
Faction property CurrentFollowerFaction Auto

event OnEffectStart(Actor akTarget, Actor akCaster)
	if akTarget[...]
           if akTarget == IsDead(true)
		debug.messagebox ("Der ist tot")
           endif
	endif
endevent

das is das, was ich jetz ausm gedächtnis noch zusammenkriege. Ich hatte als If-Then abfrage noch drin, ob das Ziel den entsprechenden Fraktionen angehört, aber das krieg ich irgendwie nicht mehr sinnvoll zusammen, deswegen das "[...]". ich hatte über dem eventstart noch irgendwas zu stehen, aber das find ich nicht mehr.
 
@ Master of Worlds:

Natürlich ist mir klar, dass hier auf freiwilliger Basis geholfen wird.
Es ist ja nicht so, als wenn ich einfach nur zu faul wäre, das Script selbst zu schreiben.

Ich frage hier nach, weil ich davon ausgegangen bin, dass ich Hilfe von erfahreneren Moddern kriegen könnte und selber keine Idee habe, wie ich sowas umsetzen kann. Aber so wie das von dir rüberkommt klingt das eher so, als wenn ich froh sein könnte, wenn mich überhaupt jemand wahrnimmt.
Ich finde nicht, dass das Sinn eines Threads sein sollte, der angeblich Hilfe anbietet.

Nichts für ungut, aber da muss ich mir wohl mal ein anderes Forum suchen, in dem Hilfe auch wirklich Hilfe bedeutet und einem unerfahrenem Modder, wie mir, der gerne eine Idee umsetzen würde, nicht nur gesagt wird, dass er ja an sich alles hat, was er braucht, sondern auch mal unter die Arme gegriffen wird, anstatt ihn vor den Kopf zu stoßen.

Denn die Antwort: "Was du brauchst findest du im Wiki bzw. CK" könnte man hier auch einfach generell geben, anstatt auch nur zu versuchen, einen hilfreichen oder konstruktiven Kommentar zu geben.

Dennoch bin ich dir auch dankbar, dass du überhaupt auf meine Frage eingegangen bist und mir klargemacht hast, dass ich mich nur auf mich selbst verlassen kann, anstatt so naiv, wie ich offenbar war, zu hoffen, dass mir HIER jemand helfen würde.

Ich hoffe, dass das jetzt nicht zu schlimm aufgefasst wird, aber genau so sehe ich das leider gerade.:shock:

mfg
 
Ich will ja nicht nerven, aber ich fühl mich etwas ignoriert. Kann mir Jemand bei meinem Script helfen, oder habt ihr auch keine Ahnung, wie das umzusetzen ist?

mfg
Ein vom Prinzip her sehr ähnliches Problem wurde ein paar Seiten zuvor schon einmal gelöst: Klick
Du musst quasi nur die 24h auf 168h erhöhen und dann halt im OnUpdateGameTime das Gold in die Truhe legen. Das dürftest du alleine hinbekommen :)

@Shor:
IsDead ist eine Memberfunktion von Actor. Das heißt also, du musst das Programm anweisen, dass es die Funktion "IsDead()" des Targets aufruft. Die Funktion selbst gibt dann ein bool (true oder false) zurück, das du dann abfragen kannst. Sowas ist ohne Programmierkenntnisse vielleicht etwas schwer zu verstehen, aber die Papyrus Tutorials im CK-Wiki sind relativ gut, sofern du Englisch kannst. Die richtige Zeile würde lauten:
Code:
if akTarget.IsDead()==true
 
Zuletzt bearbeitet:
  • Like
Reaktionen: alien_seth und Shor
okay, soweit hatte ich das schon verstanden (ich butter mich bereits seit einiger zeit durch diverse tutorials auf der seite). nur dass das so aussehen muss, wusste ich nicht. Ich gehe davon aus, dass das mit PlayIdle ähnlich ist? Oder ist der Befehl ein anderer?
 
@Royal_Flush: Danke, das hatte ich ganz übersehen.
Eine derartige Regleung hatte ich mir auch erst überlegt.
Ich dachte nur, dass man vielleicht, wie im CK Wiki mit dem Beispielscript der Mondphasen irgendwie nen festen Tag verwenden könnte. Da ich das allerdings nicht hinbekommen habe, hatte ich die Frage hier gestellt.
Aber das reicht ja dem Grunde nach auch völlig.

mfg
 
okay, soweit hatte ich das schon verstanden (ich butter mich bereits seit einiger zeit durch diverse tutorials auf der seite). nur dass das so aussehen muss, wusste ich nicht. Ich gehe davon aus, dass das mit PlayIdle ähnlich ist? Oder ist der Befehl ein anderer?
Im CK-Wiki hat jeder Befehl seine eigene Seite. Da sind auch meistens kleine Beispielskripts gegeben. Hier der zu PlayIdle: Link (Anmerkung: das "==true" bei if-Abfragen kann man sich auch sparen. Das hängt damit zusammen, dass der "==" Operator "true" zurückgibt, wenn auf beiden Seiten das gleiche steht. Da der Rückgabewert dann aber schon "true" ist, reicht das aus. Dem "if" ist es egal, woher sein "true" oder "false" kommt.)

@alien_seth:
GetCurrentGameTime() gibt dir die Tage zurück, die seit dem Spielstart vergangen sind. Ich habe mich noch nicht mit der math.* Funktionegruppe beschäftigt,a ber vielleicht kann man daraus etwas basteln?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Shor
Im CK-Wiki hat jeder Befehl seine eigene Seite. Da sind auch meistens kleine Beispielskripts gegeben. Hier der zu PlayIdle: Link (Anmerkung: das "==true" bei if-Abfragen kann man sich auch sparen. Das hängt damit zusammen, dass der "==" Operator "true" zurückgibt, wenn auf beiden Seiten das gleiche steht. Da der Rückgabewert dann aber schon "true" ist, reicht das aus. Dem "if" ist es egal, woher sein "true" oder "false" kommt.)
wie gesagt, ich stöber im CS Wiki herum, nur aus vielen Beispielen werd ich einfach nicht schlau. Wie zum beispiel der PlayIdle Befehl. Als beispiel ist dort nur eine if abfrage. Nützt mir persönlich überhaupt nichts und wenn ich das nach dem Syntax Schema eingebe, funktioniert es nicht. Wo wir gerade bei Idles sind, sind das die Anim Events, wenn man bei "Animations..." die kategorien bzw. Pfade ausklappt? Wenns das nicht ist, kanns ja auch nicht funktionieren.

inzwischen sieht das teil so aus
Code:
Scriptname AABurial extends ActiveMagicEffect
{Beisetzung}

import game
import debug

Keyword Property ActorTypeNPC auto

event OnEffectStart(Actor akTarget, Actor akCaster)
	if (akTarget.HasKeyword(ActorTypeNPC))
		if akTarget.IsDead() == true
			;aktarget.moveto CreatureAlcoveBGMarker
			aktarget.SetUnconscious()
                        ;aktarget.playIdle()
			;aktarget.SetDestroyed()
		endif
	endif
endevent
bei moveto wird mir "no viable input 'moveto'" gesagt, was ich so verstehe, dass da was fehlt. Allerdings hats bislang auch mit Klammern nich wirklich hingehauen (egal, wo der Marker stand).
Setdestroyed wird anscheinend komplett ignoriert. Sobald ich was in die klammern schreibe, kommt eine fehlermeldung.
die semikolons könnt ihr übrigens ignorieren, die sind nur deshalb da, damit ich auch mal was ohne fehlermeldung compilieren kann.
 
Zuletzt bearbeitet:
@ Shor: Ich wollte grade darauf eingehen... ;)

Hatte mich schon gewundert, warum du da die Semikolons gesetzt hattest.
 
Für den Marker wirst du eine ObjectReference Property anlegen müssen und dort deinen Marker eintragen. Außerdem musst du das MoveTo() richtig nutzen, du musst akTarget.MoveTo(ZielMarker) angeben.
SetDestroyed() erwartet in seiner Klammer den Wert eines Booleans, also true oder false. True für ist zerstört und einfach false für ist nicht zerstört. Steht auch in dem verlinkten Artikel.
PlayIdle() erwartet in der Klammer die ID einer Idle-Animation, wie in dem Beispiel angeben z.B. die FluteIdle. Die Funktion PlayIdle() kann auch als Condition genutzt werden, da sie verbunden mit dem Actor einen Rückgabewert hat, denn man entsprechend abfragen kann. Daher dieses If. ;)

MfG Master of Worlds
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Shor
okay, also funktioniert moveto im endeffekt deshalb nicht, weil ich keine objectreference habe. Die klammern bei moveto hatte ich gelöscht, weil ich wie gesagt, ständig fehlermeldungen bekommen hatte, aber das lag dann wohl eher an der reference. Bei SetDestroyed wars egal, ob ich true eingebe oder nicht, denn das wurde trotzdem ignoriert. Aber gut, ich werds dann so nochmal versuchen.

Edit: SetDestroyed wird weiterhin ignoriert, MoveTo und PlayIdle funktionieren weiterhin nicht, wobei ich bei PlayIdle immernoch eine fehlermeldung bekomme, FluteIdle sei eine unbekannte Variable. Demzufolge müsste ich die mit int einfügen. Ich denke aber nicht, dass das überhaupt eine Variable sein soll 0ô. Bei MoveTo hab ich auch den "Wert" mit Pick Reference in Render Window bestimmt, also soweit sollte das richtig sein.
 
Zuletzt bearbeitet:
Edit: SetDestroyed wird weiterhin ignoriert, MoveTo und PlayIdle funktionieren weiterhin nicht, wobei ich bei PlayIdle immernoch eine fehlermeldung bekomme, FluteIdle sei eine unbekannte Variable. Demzufolge müsste ich die mit int einfügen. Ich denke aber nicht, dass das überhaupt eine Variable sein soll 0ô. Bei MoveTo hab ich auch den "Wert" mit Pick Reference in Render Window bestimmt, also soweit sollte das richtig sein.

Was erwartest du dir vom Befehl SetDestroyed() eigentlich?
FluteIdle darfst du wohl noch als eine Property hinzufügen, es gibt nämlich auch den Propertytyp Idle. Bevor du nun weiter gleichzeitig mit 4 Befehlen hantieren möchtest, erstmal wäre es gut z.B. MoveTo hinzubekommen. Für MoveTo hast du nun Proptertys angelegt? Wenn du das getan hast, dann sollte das Skript zumindest umgewandelt werden. Inwiefern werden die Sachen jetzt bei dir ignoriert beziehungsweise funktionieren nicht? Geht es Ingame nicht, geht es nicht das Skript richtig umzuwandeln oder was sonst?

Wie sieht es denn jetzt aus? Wenn ich das Skript nehme, die entsprechenden Propertys anlege und es umwandle, bekomme ich jedenfalls keine Fehlermeldung.


Demzufolge müsste ich die mit int einfügen.

Was meinst du eigentlich damit?


MfG Master of Worlds
 
Ich hätte da noch ein Problem...
Gibt es eine möglichkeit ein Event OnActivate nur auf Game.GetPlayer() zu beschränken?
Also Sprich der Script wird nur aktiviert wenn der spieler das Objekt aktiviert.
Das selbe problem habe ich mit der blockactivation funktion, also das die sich auch nur auf den Spieler bezieht soll.
Im Spoiler befinden sich weitere Information + den Script.
Code:
Scriptname XY extends ObjectReference  

ObjectReference Reference
FormList Property Doors Auto 

Event OnActivate(ObjectReference ActionRef)
int locklevel = getlocklevel()
if IsLocked()
    while getlocklevel() < 255
        if(game.getplayer().getactorvalue("Lockpicking") < locklevel)
            debug.Notification("You need lockpick skill " + locklevel + " to open!")
            blockactivation(true)
            return
        else
            blockactivation(false)
        endif
    endWhile
else
    blockactivation(false)    
endif
EndEvent

Ich möchte den Script halt auf eine Tür anwenden und so wie er momentan ist Wird die Notification gesendet auch wenn ein NPC die Tür aktiviert und blockactivation blockt auch die möglichkeiten für NPC's sprich sie stehen dumm vor der Tür rum.
 
Zuletzt bearbeitet: