PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NPCs bewegen



flobby
29.08.2008, 14:47
Hi
Ich würde gerne in einem Script einbauen, dass sobald ich mit jemanden über ein Topic gesprochen hab, dieser NPC dann zu einem XMarkerläuft. Wie kann ich das machen?

Low Post
29.08.2008, 15:57
Über ein Package, wahrscheinlich ein Travel-Pagacke.

Dazu fügst du dem Script des NPCs eine Variable hinzu, die du in dem Dialog auf 1 setzt.
Wahrscheinlich musst du danach noch ein EVP abrufen.

Bei deinem Travel-Package machst du Haken bei Continue if PC near, Must Reach Location & Must Complete.
Zusätzlich fügst du noch in der Contidionsseite eine Abfrage nach GetScriptVariable [deine Referenz] == 1 hinzu.

Dann noch im Script des NPC einen OnPackageDone-Block, der die Variable nach beenden des Packages auf 2 setzt.


NPCScript:

scn NPCScript

short MyVar

Begin OnPackageDone [PackageID]
set MyVar to 2
End

ResultScript des Dialogs:

set [deine Referenz].MyVar to 1
[deine Referenz].EvaluatePackage


Wenn du dann noch beim Dialog als Condition GetScriptVariable [deine Referenz] == 0 hinzufügst erscheint der Dialog, wenn der NPC noch nicht seine Reise angetreten hat.
Bei GetScriptVariable [deine Referenz] != 1 immer wenn er gerade nicht reist und wenn du die Abfrage einfach weglässt kannst du ihn egal was er gerade tut auf die Reise schicken.

flobby
30.08.2008, 21:37
Muss man wenn man mehrere Personen irgendwo hin laufen lassen will, für jeden ein eigenes Package, Script Variable, ... machen?
Edit: Mir ist noch was eingefallen: Geht das vieleicht, wenn man allen NPCs den selben Script zuweist?

Low Post
30.08.2008, 22:29
Muss man wenn man mehrere Personen irgendwo hin laufen lassen will, für jeden ein eigenes Package, Script Variable, ... machen?
Edit: Mir ist noch was eingefallen: Geht das vieleicht, wenn man allen NPCs den selben Script zuweist?

Nö, da das Script für jede Referenz extra läuft.
Wenn du mehrere NPC wo hinlaufen lassen willst nimmst du besser eine Questvariable und dann die Abfrage GetQuestVariable (http://cs.elderscrolls.com/constwiki/index.php/GetQuestVariable).

Für die NPC würde ich dann folgendes Script empfehlen:

scn NPCScript

Begin OnPackageDone [PackageID]
set [QuestID].MyVar to 2
End

Das ResultScript im Dialog natürlich entsprechen:

set [QuestID].MyVar to 1
;Hier muss evtl. noch ein bisschen EvaluatePackage hin

Frage23
08.09.2008, 15:27
Ich hab noch ne Frage fast dazu.
Ich will das ein NPC einen anderen angreift und anschließend einen Ring anlegt.
Weiß aber leider nicht wie das mit Scripts umzusetzen ist!
Bitte um Hilfe!

mfg Frage23

Muecke49
08.09.2008, 17:31
Erstmal musst Du eine Bedingung festlegen unter der dieser Kampf gestartet werden soll....also entweder ein Queststage, oder wenn der Spieler nen Trigger erreicht, ein Gespräch......was auch immer. ;)

Davon hängt dann auch ab, in welchem Mode das Script startet. Also
on Gamemode, on Trigger Player.........usw.

Dann vergibst Du Deinen beiden NPCs eine Referenz und nimmst folgenden Befehl.

"1.NPC.REF".StartCombat "2Npc.REF"

endif

End.......

Dann einen Gamemode Block

If ( NPC1.REF.Death == 1 )

2NPCref.EquipItem ObjectID (kann sein, dass Du hier noch einen AddItem mit dem Ring voransetzen musst, damit er den Ring auch hat, falls er diesen nicht vorher schon im Inventar hat. :))

endif

End



Das CS Wiki ist da übrigens sehr hilfreich. :)

http://cs.elderscrolls.com/constwiki/index.php/StartCombat
http://cs.elderscrolls.com/constwiki/index.php/Make_character_disappear
http://cs.elderscrolls.com/constwiki/index.php/EquipItem:)

Frage23
08.09.2008, 18:42
danke das wird mir helfen!