Autor |
|
RedDrago
Bard
  

Dabei seit: Juli 2004
Geschlecht: 
Herkunft: Kerpen
Beiträge: 37
 |
|
|
27.09.2004, 03:06 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
wenn mich nicht alles täuscht ist Hitonme ... nur für den eine Frame, in dem der treffer passiert true, und schon einen frame später stellst Du die gesundheit wieder her, daher ist die unverwundbarkeit an sich kein Wunder.
Was Du brauchst ist eine Zwischenspeicherung des gesundheitswertes: Schreibe am ende jedes scriptaufrufes den Healthwert in eine floatvariable, um dann beim nächsten durchlauf die aktuelle gesundheit mit der zwischengespeicherten zu vergleichen - sind die werte verschieden, kommt die Hitonme-Bedingung ins Spiel - ist sie erfüllt, kann der gesundheitsstand so bleiben, wenn nicht, stellst du den wert des frames davor wieder ein - und zwar am besten, indem Du die differenz feststellst und mit Modcurrenthealth wieder draufklatscht, den Sethealth würde den trefferbalken wieder voll erscheinen lassen, was ja unter umständen gar nicht wahr wäre.
__________________ 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 
|
|
27.09.2004, 05:57 |
|
RedDrago
Bard
  

Dabei seit: Juli 2004
Geschlecht: 
Herkunft: Kerpen
Beiträge: 37
 |
|
Ich habe was neues zusammen gebastelt mit hilfe deiner tipps und unter zu hilfe nahme des Tutorials Scripting für Dummies 5, dabei ist das hier raus gekommen:
begin DF_Blade
short DF_Blade
float DF_Leben
set DF_Blade to HitOnMe DF_DBlade
set DF_Leben to GetHealth
if ( CellChanged == 0 )
if ( DF_Blade == 0 )
ModCurrentHealth Health
else
set DF_Leben to GetHealth
endif
endif
end DF_Blade
Ich habe damit mehrere stunden rum experimentiert und komme einfach nicht drauf wo da nun der fehler ist.
Wie beim ersten script auch, ist der gegner auch mit der waffen ID DF_DBlade nicht zu besiegen...
EDIT: Ich habe noch etwas weiter gearbeitet und vermute langsam, das der schlag mit der richtigen waffe garnicht registriert wird, was ich aber noch weniger verstehe...
Dieser Beitrag wurde von RedDrago am 27.09.2004, 15:20 Uhr editiert.
|
|
27.09.2004, 12:00 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Deine Variable Health ist nicht deklariert. Sie sollte die Differenz von DF_Leben und GetHealth sein. (wenn sie identisch sind, wäre es bei 0 ). Aber evtl. ist ModCurrentHealth eine "lahme" Funktion...also erstmal abfragen, ob Health größer als 0 ist...
__________________
Abenteuer Mittel Erde
Please visit us!
|
|
27.09.2004, 16:47 |
|
RedDrago
Bard
  

Dabei seit: Juli 2004
Geschlecht: 
Herkunft: Kerpen
Beiträge: 37
 |
|
IM moment ist es ja so das es egal ist, welche waffe verwendet wird, selbst wenn man mit der waffe zu schlägt, bei der keine wiederherstellung des schadens erfolgen soll, wird die lebensenergie wieder hergestellt...
Zitat: Original von GreyWanderer
Deine Variable Health ist nicht deklariert. Sie sollte die Differenz von DF_Leben und GetHealth sein
In der Variablen DF_Leben wird am anfang der derzeitige Healthwert ermittelt, dieser wert soll dann wieder hergestellt werde, wenn man mit der falschen waffe zu schlägt.
Wenn man aber mit der richtigen zuhaut, soll stattdessen erneut der neue healthwert durch gethealth neu definiert werden.
vielleicht unterliege ich da einem denkfehler, aber selbst wenn HitOnMe nur für den einzelnen frame gild in dem zugeschlagen wird, dadurch das der healthwert direkt nach dem zuschlagen neu definiert wird, sollte eine wiederherstellung eigentlich verhindert werden
Neues script mal wieder...:
begin DF_Blade
short DF_Blade
float DF_Leben
if ( CellChanged == 0 )
set DF_Blade to HitOnMe DF_DBlade
if ( DF_Leben == 0 )
set DF_Leben to GetHealth
endif
if ( HitOnMe == 1 )
if ( DF_Blade == 0 )
ModCurrentHealth DF_Leben
MessageBox "Ha, damit werdet Ihr mich nie besiegen, NARR!!!"
else
Set DF_Leben to GetHealth
MessageBox "Wie kann das sein... Ihr habt meine schwachstelle entdeckt..."
endif
endif
endif
end DF_Blade
wobei der dick markierte teil einen Expression error erzeugt, der aber erst ingame auftaucht...
Next edit
ich habe es mal mit einem völlig anderem script versucht, was natürlich den selben effekt hervorrufen soll. Jedoch werde ich auch dabei von dem Syntax error geplagt....
begin DF_Blade
short DF_Blade2
float DF_Leben
set DF_Blade2 to Player -> OnPCEquip DF_DBlade
set DF_Leben to GetHealth
if ( CellChanged == 0 )
if ( DF_Blade2 == 1 )
if ( HitOnMe == 1 )
set DF_Leben to GetHealth
MessageBox "Wie kann das sein... Ihr habt meine schwachstelle entdeckt..."
endif
else
if ( HitOnMe == 1 )
ModCurrentHealth DF_Leben
MessageBox "Ha, damit werdet Ihr mich nie besiegen, NARR!!!"
endif
endif
endif
end DF_Blade
Langsam gehn mir die ideen aus...
Dieser Beitrag wurde von RedDrago am 27.09.2004, 18:30 Uhr editiert.
|
|
27.09.2004, 17:13 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
Zitat: HitOnMe, ObjectID returns true if calling Actor is hit by objectID in melee (such as hammer01)
hitonme ohne Objekt muss ja schief gehen... wenn Du nen beliebigen Treffer abfangen willst, brauchst Du Getsoundplaying "Health Damage"
__________________ 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 
|
|
27.09.2004, 20:26 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
code: begin DF_Blade
if ( MenuMode == 1 )
Return
endif
short DF_Blade
short DF_Leben
short LostHealth
short DoOnce
set DF_Blade to ( HitOnMe, DF_DBlade )
if ( DoOnce == 0 )
set DF_Leben to GetHealth
set DoOnce to 1
endif
if ( CellChanged == 0 )
if ( DF_Blade == 0 )
set LostHealth to ( GetHealth )
set LostHealth to ( DF_Leben - LostHealth )
ModCurrentHealth LostHealth
else
set DF_Leben to GetHealth
endif
endif
end DF_Blade
So sollte es gehen. Und Garak, es würde länger dauern, ihm zu erklä#ren, was er machen soll, als das Script mal eben abzutippen.
__________________
Abenteuer Mittel Erde
Please visit us!
|
|
27.09.2004, 21:02 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
Zitat: Original von GreyWanderer
So sollte es gehen. Und Garak, es würde länger dauern, ihm zu erklä#ren, was er machen soll, als das Script mal eben abzutippen.
Ansichtssache - für dieses eine script: ja, wahrscheinlich schon, nur bleibt kaum jemand bei einem einzigen script, und dann ist das Handwerkszeug nützlicher als die vorgekaute lösung - Übrigens scheinst Du meine Hinweise nicht gelesen zu haben, bei der health/Fatigue/magicka-Manipulation sollte man Floats verwenden, da das Spiel jene werte auch mit nachkommastellen auflöst. Und wenn mich nicht alles Täuscht, verlangt Modcurrenthealth explizit ne float.
__________________ 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 
|
|
27.09.2004, 21:30 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
Zitat: Original von GreyWanderer
code: begin DF_Blade
if ( MenuMode == 1 )
Return
endif
short DF_Blade
short DF_Leben
short LostHealth
short DoOnce
set DF_Blade to ( HitOnMe, DF_DBlade )
if ( DoOnce == 0 )
set DF_Leben to GetHealth
set DoOnce to 1
endif
if ( CellChanged == 0 )
if ( DF_Blade == 0 )
set LostHealth to ( GetHealth )
set LostHealth to ( DF_Leben - LostHealth )
ModCurrentHealth LostHealth
else
set DF_Leben to GetHealth
endif
endif
end DF_Blade
error^^
__________________
|
|
27.09.2004, 21:36 |
 |
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
Zitat: Original von F.I.M.
error^^
Zitat: Original von Garak
Und wenn mich nicht alles Täuscht, verlangt Modcurrenthealth explizit ne float.
__________________ 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 
|
|
27.09.2004, 21:44 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
Zitat: Original von Garak
Und wenn mich nicht alles Täuscht, verlangt Modcurrenthealth explizit ne float.
mit dem auch
__________________
|
|
27.09.2004, 21:55 |
 |
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
"error" ist ja auch ne sehr präzise Fehlerbeschreibung - gehts auch n tick exakter?
__________________ 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 
|
|
27.09.2004, 22:00 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
@F.I.M. : Weil der Gegenstand bei dir nicht vorhanden ist.
@Garak: Stimmt. Dass diese verdammten Entwickler immer so viel Speicherkapazität verschwenden...grml...wenn die Funktion GetHealth nur Short Werte ausgibt dann sollten auch nur Short Werte rein...man wie gern würde ich den Deppen vom Fach begegnen und ihnen die Meinung sagen
__________________
Abenteuer Mittel Erde
Please visit us!
|
|
27.09.2004, 22:01 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
gethealth liefert floats - und das ist auch gut so, die ganzen magieeffekte wirken ja per frame und nicht pro sekunde, und ne short health wäre ein einziger dauernder rundungsfehler... und mal ehrlich: verglichen mit den graphikdaten, dem Zbuffer etc machen die paar bits mehr für floats statt für vorzeichenbehaftete 16 Bit Shorts das Programm auch nicht mehr fett.
__________________ 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 
|
|
27.09.2004, 22:06 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
Zitat: Original von GreyWanderer
@F.I.M. : Weil der Gegenstand bei dir nicht vorhanden ist.
den gegenstand habe ich gemacht
Also error---> Expression Error: BadObiectPointer in DF_Blade Set expression returned an Error
__________________
Dieser Beitrag wurde von F.I.M. am 27.09.2004, 22:14 Uhr editiert.
|
|
27.09.2004, 22:09 |
 |
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
@Garak: Ich habe immer nur short zurückbekommen. Egal wie lange ich mit einem Gegner gekämpft habe. Und bisher dachte ich auch, dass die Health ein einziger Rundungsfehler ist, sowie eigentlich alles in der Engine [...] naja, woher weißt du denn, dass GetHealth floats zurückgibt? Also ich sehe zumindest keinen Beweis...
Was das dem Grafik-Schrott angeht: Klar. Bin trotzdem immer darauf bedacht, daran zu sparen. Siehe das MenuMode vor der Deklarierung.
@F.I.M. : Ich habe es bei mir versucht und es gibt keinen Fehler. Zumindest nicht, nachdem ich eine Waffe mit der ID erstellt habe.
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 27.09.2004, 22:17 Uhr editiert.
|
|
27.09.2004, 22:16 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
Es lebt^^
__________________
|
|
27.09.2004, 22:19 |
 |
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
Zitat: Original von GreyWanderer
@Garak: Ich habe immer nur short zurückbekommen. Egal wie lange ich mit einem Gegner gekämpft habe. Und bisher dachte ich auch, dass die Health ein einziger Rundungsfehler ist, sowie eigentlich alles in der Engine [...] naja, woher weißt du denn, dass GetHealth floats zurückgibt? Also ich sehe zumindest keinen Beweis...
Was das dem Grafik-Schrott angeht: Klar. Bin trotzdem immer darauf bedacht, daran zu sparen. Siehe das MenuMode vor der Deklarierung.
konsole auf, beliebigen (verwundeten) actor oder auch den Spieler anklicken, und Gethealth eintippen, und schon hast Du 2 Nachkommastellen in deiner Konsole stehen.
das mit dem menumode ist ne glaubensfrage - bei minniscripten dauert die if-abfrage (auch wenn es nur um die Auswertung einer Boolean-Variable des systems geht) eventuell länger, als das, was nachkommt.
__________________ 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 
|
|
27.09.2004, 22:21 |
|
RedDrago
Bard
  

Dabei seit: Juli 2004
Geschlecht: 
Herkunft: Kerpen
Beiträge: 37
 |
|
Thx für die hilfe, bei mir "lebt" es nun auch ^^
@GreyWanderer Ich hätte es auch bevorzugt, mit den richtigen hinweisen und nicht mit nem fertigen script zu arbeiten. Klar es hätte länger gedauert aber dann hätte man es sich selbst erarbeitet und noch wichtiger, man hat es auch verstanden 
|
|
28.09.2004, 08:34 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
@RedDrago: Ich hatte ziemlich wenig Zeit. War aber daran interessiert und wollte dir wenigstens ne annehmbare Lösung geben. Dass der andere Weg besser ist, glaub mir, hat Garak mir in den Monaten hier beigebracht, nicht, Garak
@Garak: Ähm...ja...war wohl wiedermal ein Flüchtigkeistfehler meinerseits... *sichschnelldavonschleich*
__________________
Abenteuer Mittel Erde
Please visit us!
|
|
28.09.2004, 16:07 |
|
|