Autor |
|
hochbass
Vampire


Dabei seit: November 2002
Geschlecht: 
Herkunft:
Beiträge: 1037
 |
|
1. Hat mittlerweile jemand einen Weg gefunden den aktuellen Rüstungsfaktor eines NPC zu ermitteln?
2. Ich möchte die Zeit zählen, in der ein NPC mit wenigsten zu 90% seiner Tragfähigkeit gefüllten Inventar rumläuft.
3. Ich möchte die Zeit zählen, in der der NPC Angriffe durchführt.
4. Ich möchte unabhängig von NPC-ID arbeiten
Jeder NPC hat ein Skript, in dem seine Normalen Stats in Variablen gespeichert sind.
z.B. Slave_script: MaxHP
Dialog gesteuert - wird einen Skript gestartet, der vom Caller die Stats abfragt und in lokale Variablen ( dieses Abfragescripts) speichert.
z. B. Status_Script: set currentHP to gethealth
Jetzt möchte ich innerhalb meines Dialogs eine Ausgabe (Messagebox in einem Script) das mir folgende Zeile ausgibt:
messagebox" Lebenspunkte: %.0f /%.0f " [currentHP aus Status_script] [maxHP aus Slavescript (des Callers)]
Wie krieg ich die lokalen variablen eines Scriptes in eine M-Box eines anderen Scriptes addressiert, wenn der Caller variabel sein muß. Damit man im Dialog eine ganze Gruppe gleich behandeln kann?
__________________ "The White Wolf of Lokken Mountain"
Releasetreath
|
|
03.06.2004, 12:01 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
zu4: Also ich hab mal in einem anderen PI was gesehen...in dem PI wurde das Resultfenster wie ein Scriptfenster behandelt...d.h. ob man nun auch Variablen deklarieren (dämliches Wort) kann weiß ich nicht aber if-Schleifen sind möglich...also probier es mal aus...
Wenn es nicht klappt musst du es so machen (danke an Garak für targeted scripts^^): Als result startscript "Status_Script" und die Variablen liest du mit MessageBox: "%.0f/%.0f","Status_Script"."CurrentHP", "Status_script"."MaxHP"
In beiden Fällen kannst du das Sklavenscript von den NPCs wegnehmen, allerdings musst du bei der 2. Möglichkeit direkt nach der Auslese noch ein stopscript setzen.
edit:zu3: Wenn du nur die Zeit wählen willst, indem der NPC bestimmte Personen/Kreaturen angreift (d.h. du musst die IDs in die Scripte eintragen) dann kannst du mit GetTarget arbeiten...auch wenn es den Bug hat, dass es beim Zellenwechsel des Spielers (also einfrieren des NPCs) immernoch bei 1 bleibt...
noch'nedit: Nacheditiert um so viele Unklarheiten wie möglich zu beseitigen...also im Result- bzw. Scriptfenster müsste es dann so aussehen:
short CurrentHP
short MaxHP
set CurrentHP to GetHealth
set MaxHP to ( CurrentHP / GetHealthGetRatio )
(beim Dialog käme hier die Auslese)
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 24.06.2004, 22:12 Uhr editiert.
|
|
03.06.2004, 16:14 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
wozu die maxhp aus nem anderen script? die kannst du doch mit hilfe von gethealth und gethealthgetratio berechnen. Zur messagebox aus dialogen solltest Du nicht vergessen, dass der text dann im dialogfenster erscheint - zumindest bei buttonlosen messageboxes, k.a. wie es mit button-messageboxes aussieht.
__________________ drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen 
|
|
03.06.2004, 21:48 |
|
jsc
Crusader
  

Dabei seit: November 2003
Geschlecht: 
Herkunft: Zwickau/Sa.
Beiträge: 490
 |
|
Zitat: Original von Garak
Zur messagebox aus dialogen solltest Du nicht vergessen, dass der text dann im dialogfenster erscheint - zumindest bei buttonlosen messageboxes, k.a. wie es mit button-messageboxes aussieht.
Auch so, die Auswahl (Buttons) stehen dann rot untereinander.
__________________ Gruß jsc - Mein Morrowind-Kram
"Recht haben - oder glücklich sein?"
|
|
04.06.2004, 00:18 |
|
hochbass
Vampire


Dabei seit: November 2002
Geschlecht: 
Herkunft:
Beiträge: 1037
 |
|
Die Healtratio liefert falsche Werte für meinen Zweck.
Mir geht es darum die aktuellen Werte in Relation zu den Anfangsinitialisierung zu setzen.
Health war auch nur das Beispiel. Prinzip geht es darum irgendwelche Änderungen gegenüber einem früheren do-once-Status, der im NPC Script gespeichert ist, mit der Current-Abfrage zu vergleichen.
Die Dialogsteuerung ist dafür ideal um flexibel und unabhängig arbeiten zu können.
Innerhalb eines Dialogs mit einem NPC sind doch alle seine Variablen mit "lokal" abgreifbar aber nur im Bedingungs-Fenster.
läuft jetzt ein lokaler Script sind in diesem nur
- globale veriablen
- im script definierte Variablen
- und absolut addressierte Variablen anderer Scripte bekannt.
Der Scriptname meines Scripts ist immer gleich "Slavescript"
Der Statusabfrage-Script könnte jeder Zeit den Wert des Slavescripts holen:
z.B.
set temp to "NPC-ID"."Slavescript". MaxST
ich möchte diesen Teil "NPC-ID" aber variablel haben
dazu müßte man im Result-Fenster:
- die ID des angesprochenen NPC ermitteln und in eine globale Variable ablegen.
- Den Statusabfragescript starten und über die global die Variable direkt addressieren
z.B.:
set CurrentNPC to [NPC-ID]
startscript Statusabfrage
und darin :
set maxST to currentNPC.slavescript.MaxST
..
.
.
stopscript
dann hab ich alles im Statusabfragescript und kann beliebig auswerten.
Kann ich so was konstruieren, d.H. die NPC-ID ermitteln und einer global zuweisen.
__________________ "The White Wolf of Lokken Mountain"
Releasetreath
Dieser Beitrag wurde von hochbass am 05.06.2004, 00:06 Uhr editiert.
|
|
05.06.2004, 00:05 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Öhm...also ich glaube, weil das result-fenster sich immer auf den NPC bezieht lassen sich auch lokale Variablen im Script ändern. Mit Hilfe dieser wird dann eine globale gesetzt, die man dann wieder anzeigen kann. Damit man das jetzt auch verstehen kann hier wie ich mir das vorgestellt habe:
Begin SlaveScript
short MaxHP
short CurrentHP
short ControlVar
if ( controlVar == 1 )
set MaxHP_glob to MaxHP
set CurrentHP_glob to CurrentHP
set ControlVar to 0
endif
End
(wie du die currenthp und maxhp errechnest is ja deine Sache, wenn du nicht auf GetHealthGetRatio zurückgreifen willst)
dann im Dialog-Result:
set ControlVar to 1
MessageBox: "%0.f/%.0f", CurrentHP_glob, MaxHP_glob
set CurrentHP_glob to 0
set MaxHP_glob to 0
Also...nochmal zur Erklärung: Die Sachen im Dialog-Result beziehen sich immer auf die jeweilige Person (wenn man nicht "Obj->blubb" macht)...also müssten die lokalen Variablen der Person sich auch mit dem Dialog-Result setzen lassen. Das lokale Script setzt globale Variablen auf die errechneten maxhp und currenthp, die dann wieder ausgelesen werden können...
EDIT:
zu1(jetzt aber wirklich!): Ja es geht, es gibt einen Befehl, den man meines Wissens nach nicht in SfD nachlesen kann(edit nr.3?:oh, steht doch drin, ganz versteckt) GetArmorBonus...habe es in ferner Vergangenheit mal ausgetestet, allerdings kann ich mich nicht mehr an die Resultate erinnern.
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 24.06.2004, 22:20 Uhr editiert.
|
|
05.06.2004, 00:56 |
|
|