Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 10 von 10

Thema: Scripting: Whaaaa! Wie rechnet der denn?! 16 mal 1.3 plus 1 = Millionenbetrag

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zum ursprünglichen Problem, weshalb da so eine Riesenzahl herauskommt, fällt mir leider auch nicht viel ein. Das kann eigentlich nicht sein und hat ziemlich sicher nichts mit den Variablentypen zu tun. Ist sichergestellt, dass der fragliche Skript-Block nur einmal ausgeführt wird? Also nicht, dass Du da versehentlich eine Art Endlosschleife gebaut hast und dieser Block evtl. in jedem Frame durchlaufen wird? Das gäbe dann ziemlich schnell sehr große Werte. Nur so eine vage Vermutung.

    Zitat Zitat von Lazarus Beitrag anzeigen
    Was das Spiel ausspuckt, wenn ein Integer-Wert eine Zahl mit Komma wiedergeben soll(die Chance liegt im Schnitt bei etwa 7,7%), will ich gar nicht wissen.
    Dabei passiert nichts schlimmes. Der Nachkommaanteil der Float wird einfach abgeschnitten. Von daher ist es auch nicht erforderlich, zu diesem Zweck extra ein Abfrage-Konstrukt zu erstellen.

    Sofern eine korrekte Rundung gewünscht ist, ginge noch folgendes:
    Code:
    float f
    short s
    
    begin Gamemode
    
    	set s to f
    	if s >= 0
    		set s to s + ( ( f - s ) >= 0.5)
    	else
    		set s to s - ( ( f - s ) <= -0.5)
    	endif
    end
    siehe auch die Beschreibung des SET-Befehls im Wiki:
    http://cs.elderscrolls.com/constwiki/index.php/Set


    Zitat Zitat von Lazarus Beitrag anzeigen
    Was sind das eigentlich für abstruse Bedingungen im Script? Normalerweise müsste es heißen 'Wenn Variable1 == X', bei dir steht aber quasi einfach nur 'Wenn Variable1'.
    Das geht in bestimmten Fällen schon. Der Vergleichsoperator muss nicht zwingend angegeben werden. Fehlt er, wird einfach geprüft, ob die Bedingung "Wahr" ist. Wobei "Wahr" durch den Integerwert 1 dargestellt wird und "Falsch" durch 0.

    Statt z.B.: if Player.IsSwimming == 1 kann man auch einfach nur: if Player.IsSwimming schreiben.

  2. #2
    Zitat Zitat von Brausebart Beitrag anzeigen
    Ist sichergestellt, dass der fragliche Skript-Block nur einmal ausgeführt wird? Also nicht, dass Du da versehentlich eine Art Endlosschleife gebaut hast und dieser Block evtl. in jedem Frame durchlaufen wird? Das gäbe dann ziemlich schnell sehr große Werte. Nur so eine vage Vermutung.
    Das ist es!
    Irgendwie komme ich mir gerade ziemlich dumm vor. Das Script sollte überhaupt nur bei jedem LevelUp laufen, läuft aber *ständig*. Seufz. Ich und Scripts. Danke!
    Geändert von bg2408 (13.08.2007 um 12:12 Uhr)

  3. #3
    Zitat Zitat von bg2408 Beitrag anzeigen
    Das Script sollte überhaupt nur bei jedem LevelUp laufen, läuft aber *ständig*. Seufz.
    Dann frage ich mich allerdings, warum im zweiten Teil 8 herauskam, das hätte dann ja eigentlich ein Wert gegen null sein müssen...

  4. #4
    Zitat Zitat von Lazarus Beitrag anzeigen
    Dann frage ich mich allerdings, warum im zweiten Teil 8 herauskam, das hätte dann ja eigentlich ein Wert gegen null sein müssen...
    Ging er am Ende auch, hatte mich vertan... wie ich nach einem weiteren Test herausfand.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •