zustand berechnen

Hier könnt ihr Unterstützung holen für euere Script Probleme, und Fragen rund um das Scripten.
Antworten
Nachricht
Autor
Levithas

zustand berechnen

#1 Beitrag von Levithas » 01 Dez 2006 14:30

Guten Tag,
Ich habe folgendes Problem eine Double-Variable liefert mir kein anständigen Wert zurück, sprich er schneidet alle Nachkommastellen einfach ab. Ich brauch diese Double-Variable um die prozentsatz der Hits zu berechnen und um dann später eine String Variable ( je nach dem wie hoch der Prozentsatz ist ) anzugleichen.
string zustand;
double berechnen;
public void berechnezustand( object objects ) {
if ( objects is PlayerMobile ) {
PlayerMobile opm = objects as PlayerMobile;
berechnen = opm.Hits / opm.HitsMax;
if ( berechnen < 0.1) { zustand = "Dem Tode nah"; }
if ( berechnen >= 0.1) { zustand = "schwer verletzt"; }
if ( berechnen >= 0.35) { zustand = "mittelschwer verletzt"; }
if ( berechnen >= 0.7) { zustand = "leicht verletzt"; }
if ( berechnen >= 1 ) { zustand = "unversehrt"; }
}
if ( objects is BaseCreature ) {
BaseCreature obc = objects as BaseCreature;
berechnen = obc.Hits / obc.HitsMax ;
if ( berechnen < 0.1 ) { zustand = "Dem Tode nah"; }
if ( berechnen >= 0.1 ) { zustand = "schwer verletzt"; }
if ( berechnen >= 0.35 ) { zustand = "mittelschwer verletzt"; }
if ( berechnen >= 0.7 ) { zustand = "leicht verletzt"; }
if ( berechnen >= 1 ) { zustand = "unversehrt"; }
}
Im Spiel lass ich mir die variable zustand durch ne Command wieder ausgeben. Das Problem is dann nur, wenn er mehr oder gleich viel Hits hat wie seine MaxHits sein können zeigt er "unversehrt" an. Soweit richtig. Aber wenn der wert von berechnen unter 1 ist zeigt er nur noch "Dem Tode nah " an.
Beispiel:
MaxHits des Players = 100
aktuelle Hits des Players = 89;
das is die Variable berechnen = 0,89 bzw. 0.89
rein theoretisch hieße das zustand hätte als inhalt "leicht verletzt" aber praktisch hat zustand den inhalt "Dem Tode nah".
Wo liegt der Fehler?????

Gruss lev

VD
Administrator
Beiträge: 370
Registriert: 13 Jan 2004 18:19

#2 Beitrag von VD » 01 Dez 2006 14:58

Hits und HitsMax sind integers, im moment berechnet er erst die division der integers und castet dann auf double. abhilfe schafft:

Code: Alles auswählen

berechnen = (double)opm.Hits / (double)opm.HitsMax; 
Varan

Antworten