Registrierung Häufig gestellte Fragen Suche Mitgliederliste Portal - Planet Skyrim.de Kalender Moderatoren und Administratoren Startseite
Morrowind&OblivionForum.de - PMM-Projects Network » The Elder Scrolls III: Morrowind » Morrowind Editor Help » Wie rundet man in Scripten? » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
GreyWanderer
Crusader



Dabei seit: Januar 2004
Geschlecht:
Herkunft: Cuiviénen
Beiträge: 465

GreyWanderer ist offline
  Wie rundet man in Scripten?Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

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 Profil von Füge  deiner Freunde-Liste hinzu Email an GreyWanderer senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

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 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
GreyWanderer
Crusader



Dabei seit: Januar 2004
Geschlecht:
Herkunft: Cuiviénen
Beiträge: 465

GreyWanderer ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

ä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 Profil von Füge  deiner Freunde-Liste hinzu Email an GreyWanderer senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

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 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Xen-Arien
Healer




Dabei seit: April 2003
Geschlecht:
Herkunft: Xen Pellegrin
Beiträge: 71

Xen-Arien ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

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 Profil von Füge  deiner Freunde-Liste hinzu Email an Xen-Arien senden Homepage von Xen-Arien Füge Xen-Arien in deine Contact-Liste ein AIM Screenname: XenArien
GreyWanderer
Crusader



Dabei seit: Januar 2004
Geschlecht:
Herkunft: Cuiviénen
Beiträge: 465

GreyWanderer ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ä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 Profil von Füge  deiner Freunde-Liste hinzu Email an GreyWanderer senden
  « Vorheriges Thema Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu:

Design by: Garak - Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR