Ich hab mir überlegt ein Zombie-PI zu erstellen.
Ich weiß es gibt bereits Zombies im Spiel, ich will das ganze nur etwas interessanter machen. Und zwar soll jeder der durch die Hand eines Zobies stirbt, selber zu einem Zombie werden (ausgenohmen der Spieler selber).
Ich will zuerst ein wenig rumexperimentieren, genauer gesagt ich wollte einen script schreiben der eine tote Leiche durch einen Zombie ersetzt.
Was haltet ihr von der Idee?
Und wie lautet der Befehl, mit dem man die Leiche verschwinden lässt? Muss irgendwas mit disable sein. Die ID des NPC und dann disable vielleicht???
ItemID: Was du plazieren willst, hier Zombies.
count: Wie viele davon. Deshalb die 1.
distance: Abstand vom rufenden Objekt (hier der sterbende NPC). Hmm, kann vermutlich auch auf 0 gesetzt werden, da der Zombie ja quasi den NPC ersetzt. 128 hatte ich von einem ähnlichen Skript abgeschrieben. (Sanguine Rose, ersetzt Menschen durch Monster.)
direction: Siehe Link. 0 steht für "vorne".
Optimiert für deinen Fall:
PlaceAtMe AAAZombie, 1, 0, 0
Es gibt schon ein Englisches PI mit dem Namen "DeadCanDance" das Zombies nach ihrem Ableben nach einer Prozentualchance wieder belebt...villeicht kannst Du da Script klauen...
Klauen? Das wäre aber ziemlich fies! Andere machen sich die Arbeit und dann kommt jemand, findet die Arbeit cool und klaut sie sich einfach. Nenene, das ist nicht die feine Art, zuerst um Erlaubnis fragen, alles andere wäre unhöflich.
Ich brauche für meinen Mod eine Zeitfunktion, z.B. soll die Leiche erst nach einer Zeit
durch einen Zombie ersetzt werden. Und der Zombie ist auch zuerst tot und steht nach einer Zeit wieder auf.
Ich hab den Befehl "Set Timer to" und "GetSecondsPassed" gefunden
weiß aber nicht wie er ganau funktioniert und was er bewirkt.
Klauen? Das wäre aber ziemlich fies! Andere machen sich die Arbeit und dann kommt jemand, findet die Arbeit cool und klaut sie sich einfach. Nenene, das ist nicht die feine Art, zuerst um Erlaubnis fragen, alles andere wäre unhöflich.
...
er hat aber nix neues erfunden, sondern etwas von bethesda benutzt, um seine sachen zu bauen. und genau so war das "klauen" auch gemeint. die meisten scriptbefehle etc. kenn ich auch nur aus pi´s oder dem hauptspiel
er hat aber nix neues erfunden, sondern etwas von bethesda benutzt, um seine sachen zu bauen. und genau so war das "klauen" auch gemeint. die meisten scriptbefehle etc. kenn ich auch nur aus pi´s oder dem hauptspiel
...
Du meintest wohl eher, das er sich eine Hilfestellung suchen sollte
Solang man nicht den ganzen Script oder einen großen Teil übernimmt ist es wirklich nur eine Hilfe!
Wenn die Menschheit nicht den Trick entwickelt hätte, sich neue Tricks von anderen abzukucken, säßen wir heute noch auf Bäumen.
OnTopic: Ein Timer läßt sich mittels GetSecondsPassed realisieren. Das gibt die Zeit zurück, die seit dem letzten Durchlauf des Skripts vergangen ist (üblicherweise ein Selkunden-Bruchteil). Man addiert dann einfach ständig den Wert auf, und ab einem bestimmten Grenzwert passiert halt was. Bei Abfargen auf keinen Fall if ( x == 10 ) benutzen, da die Zeit z.B. von 9.98 auf 10.02 springen kann! Deshalb immer ( x > 10 ) und eine DoOnce- oder Stage-Variable benutzen.
Zombie zuerst tot? Das ist ein bisserl schwerer. Man kann ausnutzen, daß PlaceAtMe eine Referenz zurückgibt, mit der man das erstellte Objekt manipulieren kann. (Eine Referenz ist genau das eine Vieh, das du gerade erschaffen hast. AAAZombie.<Befehl> würde den Befehl auf alle AAAZombie's abfeuern!) Statt des doOnce benutzen wir eine Stage-Variable, die aber in etwa dasselbe macht - jeder Schritt darf nur ein Mal ausgeführt werden. Aus der Hüfte geschossen so:
Ist nicht pefekt, so wie es jetzt ist, plaziert es nach 30 Sekunden wahrscheinlich einen stehenden Zombie, der sofort umkippt und später wieder aufsteht. Klappt vl besser, wenn du den Zombie mit 0 Lebenspunkten starten läßt. Aber selbst dann weiß ich nicht, ob der liegend startet.
taucht der Zombie "lebendig" auf
Health wird also nicht auf 0 gesetzt
bei der 2 Möglichkeit
Zitat
wenn du den Zombie mit 0 Lebenspunkten starten läßt
...
bleibt der Zombie mit 0 Lebenspunkten stehen und wird nach einer Zeit nicht "lebendig"
Hab auch schon ForceAV ausprobiert, klappt auch nicht so ganz.
Ich lass dann den Zombie zuerst "lebendig" auftauchen vielleicht fällt mir oder nem anderen später was ein, wie man das lösen könnte.
Stattdessen hab ich mir überlegt, dass die Verwandlung in einen Zombie nicht durch den
Tod, sondern durch einen Treffer ausgelöst wird.
Also ein Npc wird von einem Zombie getroffen,
Begin OnHit aaazombie <-- geht das überhaupt mit aaazombie?
Er flieht in Panik
ForceFlee
Ein timer wird aktiviert, sodass der Npc nach ner Minute stirbt und dann beginnt die Verwandlung (begin OnDeath)
Wenn dieser Script irgendwann richtig läuft, kann ich mich mit der Story beschäftigen.
Ihr könnt gerne Ideen für eine gute Story posten, oder mir beim Script helfen.
Bin für jede Hilfe und Anregung dankbar
mit dem SetActorValue Health 0
und später auf 300 hat das nicht geklappt.
Der Zombie bekam nach ein paar Sekunden zwar Lebensenergie hat sich aber trotzden nicht bewegt oder gar angegriffen.
Mir ist dann was anderes eingefallen, ich hab statt Health Paralysis genohmen.
Der Zombie ist dann gelähmt, wenn er auftaucht (zombieRef.setActorValue Paralysis 1),
er liegt also auf dem Boden und bewegt sich nicht!
Und nach 15sek wird Paralysis aufgehoben (zombieRef.setActorValue Paralysis 0),
und der Zombie steht auf!!! und greift an --> herrlich
jetzt zum Anfang, ich will ja, dass die Verwandlung durch einen Treffer (also begin OnHit)
ausgelöst wird. In der CS wiki stand:
Zitat
begin OnHit ActorID (optional)
Example:
begin OnHit BaurusRef
...
das heißt ich müsste begin OnHit AAAZombie schreiben,
damit das script startet wenn der Npc von AAAZombie geschlagen wird. Das klappt aber nicht, es kommt ne Fehlermeldung wenn ich das script speichern will. Ich glaube es liegt an dem Baurus"Ref"
Zitat
begin OnHit BaurusRef
...
was hat dieses Ref zu bedeuten? Müsste ich also "begin OnHit AAAZombieRef schreiben?