Autor |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Wie rundet man in Scripten? |  |
Situation: Ich will mit Additem dem Spieler Dinge ins Inventar packen. Aber das anhand einer Variable, die nicht immer gerade ist. Was passiert dann? Ich kann es im Moment nicht ausprobieren, da falls mein Morrowind crashen sollte mein PC bis morgen nicht mehr hochzufahren ist. Und außerdem ist das Script noch alleinstehend und bräuchte erstmal ein "Gerüst" damit ich es als sinnvolles Script bezeichnen könnte. Aber egal. Falls Morrowind das von alleine rundet, wie rundet es? Automatisch 1 mehr oder weniger oder ab ,5 eins mehr und drunter eins weniger? Also man kann es ja im Einzelnen so machen:code: if ( Var < 1)
if ( Var > 0,5 )
player->Additem "item" 1
endif
endif
code: if ( Var < 1 )
if ( Var <= 0,5 )
endif
endif
Aber bei 30, 40 Werten ist das nicht nur umständlich sondern saugt auch Speicher. Frage also: Wie kann man runden?Also ich stell mir das so ähnlich vor:code: if ( DoOnce == 0 )
"runden"-> Var
Additem "item" Var
endif
Ok ich weiß, dass es nicht SOOO einfach sein wird aber irgendwie muss es doch gehen, oder? Sagt mir nicht ich muss das da oben 30-40 (eigentlich sogar 40-50) mal machen!(Ok ich kann den zweiten Teil weglassen weil da nix gemacht wird aber ist trotzdem viel)
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 10.02.2004, 22:04 Uhr editiert.
|
|
10.02.2004, 22:03 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
ist im prinzip tatsächlich nicht schwer: weis den wert einfach kurz ner short-Variable zu, da rundet die engine - nun, entweder das, oder sie schneidet ab, dann musst du halt vorher 0,5 dazuzählen. in code:
float rundmich
short zwischenvar
set zwischenvar to rundmich
set rundmich zu zwischenvar
aber das ist für deinen zweck sowieso nicht zu gebrauchen, da additem gar keine Variablen annimmt - Du brauchst ne Whileschleife dafür:
while (anzahl > 0)
player-> additem ItemID 1
set anzahl to anzahl - 1
endwhile
und dafür gehennatürlich auch floats...
__________________ 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 
|
|
10.02.2004, 22:12 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
ähm...bei SfD hab ich folgendes gefunden:Zitat: Kurze (Short) -32,768 to 32,767
Weshalb haben dann short's diese Entwerte wenn sie gerundet werden? Also welche Art von Variablen bräucht ich damit die Engine das nicht rundet?Float? Wenn AddItem keine Variablen annimmt, kann ich das ganze aber vergessen, weil ich das dann auch 40-50mal machen müsste mit der Schleife. Also ich will eine Variable, die erstmal die Anzahl bestimmter Ereignisse zählt (und das tut sie) und sich danach noch verwenden lässt um sie bei AddItem einzubringen. z.B. wenn der Spieler sagen wir eine Höhle voller Monster hat und für jedes getötete nimmt die Variable an 1 zu...und dann am Ende wird abgefragt wie viele er von welcher Sorte getötet hat und wird dementsprechend belohnt. Aber die Zahlen werden geteilt...und manchmal wär es halt wichtig wenn die Werte erst unverändert bleiben damit man die Rechnung umkehren kann oder mit anderen Zahlen zu addieren. Dann noch DIE Frage hinterher: Wie soll ich das mit dem Additem machen wenn ich nicht immer die While-Schleifen benutzen will weil das zu langwierig ist? Und was unterscheidet if von while?
__________________
Abenteuer Mittel Erde
Please visit us!
|
|
10.02.2004, 22:27 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
shorts sind ganze zahlen, floats haben nachkommastellen - das ist ein übersetzungsfehler im zahlenformat - die angelsachsen benutzen ein "," als tausenderpunkt - und zwar deutlich häufiger, als 10.000 (sprich: Zehntausend) im deutschen verwendet wird.
das mit der whileschleife ist aber bei 40 - 50 kein grosses problem, wenn du die performance noch etwas aufbessern willst, versuch es mit
while (anzahl > 9)
player -> additem itemID 10
set anzahl to anzahl -10
endwhile
while (anzahl > 0)
player -> additem itemID 1
set anzahl to anzahl -1
endwhile
ich hab durchaus schon removeitem-whiles bis ca 80 eingesetzt, es ist erträglich...
zum unterschied: bei if wird der block ein mal ausgeführt, wenn die bedingung erfüllt ist, bei while wird er immer wieder ausgeführt (im selben frame), solange die bedingung erfüllt ist - bis zum sankt nimmerleinstag, wenn man die bedingung nie bricht.
__________________ 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 
|
|
10.02.2004, 23:06 |
|
Xen-Arien
Healer
   

Dabei seit: April 2003
Geschlecht: 
Herkunft: Xen Pellegrin
Beiträge: 71
 |
|
Ich weiß nicht, ob das eventuell hilft, weil ich dass genaue Ziel aus der Beschreibung nicht herleiten konnte, aber kannst du nicht per Additem auch einfach ein Leveled Item adden?
__________________
Release: ER Landscape Trailer V.1.0

|
|
11.02.2004, 03:26 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Ähm...trete mich wenn ich mich irre aber ist das Leveled Item nicht dem Zufall erlegen? Wenn ja, dann geht des nicht. Weil ich NICHTS dem Zufall überlassen will. Jetzt mach ich eine if Abfrage für jeden Wert der Variable. sind etwa...naja also ich hab mich verschätzt sind etwa 100 wenn ich's zusammenfasse (ein ganz kleines bisschen).
@Garak: Ja, aber ich will Möglichst jedem Wert (oder jedem 2.) genau EINEN Wert zuordnen (der liegt manchmal bei 1/2 und manchmal bei 3/5, je nach Situation. Ok das hat sich erstmal erledigt.
Nochwas: Kann mir jemand sagen, wie ich die Engine verändern muss (kann), damit AddItem Variablen zulässt? Also ich weiß das ist hardcore...aber wenn's jemand weiß->sagts mir bitte...denn das würde mir ne Menge arbeit ersparen dann nochwas: Wenn ich das mache ist MW dann damit kompatibel (also wenn jemand anders das PI bekommt)? Also normalerweise brauch man ja bei den AddOns immer das AddOn, um die Sachen zu nutzen...OK, danke für den Hilfsversuch...
__________________
Abenteuer Mittel Erde
Please visit us!
|
|
12.02.2004, 19:35 |
|
|