Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 40

Thema: [WIP] Land of the Dead

  1. #1

    [WIP] Land of the Dead

    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???

  2. #2
    Die Idee find ich an und für sich ganz gut, aber die Umsetzung!

    Mal ein paar Vorschläge für das PI:

    -Sollte ausserhalb von Cyrodiil sein
    -Vlt. ein paar NPC-Rettungs-Quests


    Aber das umzustzen wird schwer. Ich weiss ja nicht wie gut du modden kannst.
    Also ich kanns überhaupt nicht

  3. #3
    cool das wird bestimmt lustig

  4. #4
    ich find die idee toll

    auch die 'toten leichen' liebe ich
    Zitat Zitat von Lexius
    eine tote Leiche

  5. #5
    also mein NPC verschwindet jetzt wenn ich ihn töte, jetzt soll an seiner Stelle ein Zombie auftauchen. Wie krieg ich das am besten hin?

    Wenn ich schreib:

    short a == 0

    Begin OnDeath
    disable
    set a to 1
    end

    Begin GameMode
    if a == 1
    Enable AAAZombie <--(hier liegt das Problem) *
    else
    endif
    end

    * das enable bezieht sich auf den NPC, dieser taucht wieder auf, anstelle des Zombies

    Wie kann ich das ändern?

  6. #6
    ok hab jetzt einiges ausprobiert und es sieht so aus, als müsste ich 2 scripts
    mit einander verbinden. Also ein Script soll den anderen aktivieren.

    weiß jemand wie man sowas machen kann?

  7. #7
    Wozu 2 Skripte?

    Code:
    Begin OnDeath
    
    PlaceAtMe AAAZombie 1 128 0
    disable
    
    End
    Läßt sich bestimmt verfeinern.
    PlaceAtMe:
    http://cs.elderscrolls.com/constwiki....php/PlaceAtMe

  8. #8
    Cool hat funktioniert, danke für deine Hilfe

    Was genau bedeuten denn die Zahlen "1 128 0" ??

  9. #9
    Click the f***ing link
    Zitat Zitat
    PlaceAtMe ItemID, count, distance, direction
    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

  10. #10
    Hey danke für den Tipp, den Befehl habe ich noch garnicht gesehen. Jetzt kann ich was in meinem Mod realisieren. 8)

  11. #11
    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...

  12. #12

    Users Awaiting Email Confirmation

    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.

  13. #13
    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.

    Kann es mir jemand erklären?

  14. #14
    Zitat Zitat von Asgard
    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

  15. #15
    Zitat Zitat von don_wasweisich
    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!

  16. #16
    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.

    Code:
    ; timer-Variable wird jedesmal erhöht
    float timer
    ; doOnce ist 0 und wird auf 1 gesetzt, wenn wir fertig sind
    short doOnce
    
    Begin GameMode
    
    set timer to ( timer + GetSecondsPassed )
    
    ; mach wat nach 10.5 Sekunden
    if ( timer > 10.5 ) 
    	; aber nur, wenn doOnce noch 0 ist!
    	if ( doOnce = 0 )
    
    		<Hier Zombie-Terror einfügen>
    
    		set doOnce to 1
    	endif
    endif
    
    End
    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:

    Code:
    float timer
    short stage
    ref zombieRef
    
    
    Begin OnDeath
    
    ; NPC-Tod setzt stage auf 1 und löst so unser Skript im GameMode aus
    set stage to 1
    
    End
    
    
    
    Begin GameMode
    
    ; zähle den Timer erst hoch, wenn der NPC gestorben ist!
    if (stage > 0)
    	set timer to ( timer + GetSecondsPassed )
    endif
    
    ; laß den NPC nach 30 Sekunden verschwinden, plaziere toten (sterbenden?) Zombie
    if (timer > 30)
    	if (stage == 1)
    		disable
    		zombieRef = PlaceAtMe AAAZombie 1 0 0
    		zombieRef.setAV Health 0
    
    		; stage hochzählen, damit das alles nur ein Mal passiert
    		set stage to 2
    	endif
    endif
    
    ; nach insgesamt 60 Sekunden ändere Zombie von tot tot nach lebendig tot ;)
    if (timer > 60)
    	if (stage == 2)
    		zombieRef.setAV Health 200
    		zombieRef.resurrect 1
    
    		; wir sind durch, also wieder stage neu setzen
    		; am besten auf 0, das stoppt gleichzeitg den Timer
    		set stage to 0
    	endif
    endif
    
    End
    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.

  17. #17
    Danke für deine Hilfe Gorkon
    was würd ich ohne dich machen?

    Ok dann werd ichs mal ausprobieren.

  18. #18
    schade klappt nicht so wie ichs mir erhofft hatte...

    bei der ersten Möglichkeit
    Zitat Zitat
    disable
    zombieRef = PlaceAtMe AAAZombie 1 0 0
    zombieRef.setAV Health 0
    taucht der Zombie "lebendig" auf
    Health wird also nicht auf 0 gesetzt

    bei der 2 Möglichkeit
    Zitat 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

    MFG Lexius

  19. #19
    Grad nochmal was nachgekuckt habe.

    zombieRef = PlaceAtMe AAAZombie 1 0 0

    ist Blödsinn, das müßte heißen:

    set zombieRef to PlaceAtMe AAAZombie 1 0 0

    Dann klappts hoffentlich auch mit dem nachträglichen manipulieren.

  20. #20
    Jetzt läuft es!!!

    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 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 Zitat
    begin OnHit BaurusRef
    was hat dieses Ref zu bedeuten? Müsste ich also "begin OnHit AAAZombieRef schreiben?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •