Da mir der Skriptthread auf Scharesoft so gut gefallen hat, bringe ich in mal auch auf SureAI.
Hier könnt ihr nützliche Skripts posten oder Fragen wenn ihr ein Skript benötigt.
Hier der orginal Thread: http://www.scharesoft.de/joomla/forum/s ... php?t=6136
Hier könnt ihr nützliche Skripts posten oder Fragen wenn ihr ein Skript benötigt.
Hier der orginal Thread: http://www.scharesoft.de/joomla/forum/s ... php?t=6136
Last edited by Todeskeks on 01.10.2010 17:48, edited 1 time in total.
Scheinen ja recht wenige Probleme beim Scripten zu haben^^
Naja ich hab auch erst wieder eins nach langer Zeit... Also dann:
Ich wollte einem Licht ein ganz 'simples' Bewegungs-Script, mit Hilfe der X-Position(und deren Veränderung), verpassen.
Zurzeit schaut das Ding so aus:
Das Licht soll sich also auch um die Ecke bewegen, aber das ist bei meinem Problem nebensächlich, denn es kommt gar nicht erst bis zum gesetzten Punkt.
Bei genau "PosX == 0" stoppt es einfach und ich hab keinen Plan wieso.
Also sobald das Licht die 0-Grenze der X-Achse berührt ist Ende mit meinem Script. Habe auch schon versucht eine extra Bedingung für einzubauen, dass sobald es diese Grenze passiert wieder der Befehl aktiviert wird. Wie man sich denken kann aber erfolglos.
Ideen woran es liegen könnte? Bzw. wie es zu lösen wäre ohne das ganze Interior um die paar Koordinaten zu verschieben?
Naja ich hab auch erst wieder eins nach langer Zeit... Also dann:
Ich wollte einem Licht ein ganz 'simples' Bewegungs-Script, mit Hilfe der X-Position(und deren Veränderung), verpassen.
Zurzeit schaut das Ding so aus:
Code Select all
short MoveMode
short PosX
short PosY
short PosXMoved
short PosYMoved
Begin GameMode
Set PosX to GetPos X
Set PosY to GetPos Y
if PosX == 1024.0000 && PosY == 512.0000
Set MoveMode to 1
endif
if PosX == -407.0000 && PosY == 512.0000
Set MoveMode to 2
endif
if MoveMode == 1
Set PosXMoved to PosX - 0.5
SetPos X PosXMoved
endif
if MoveMode == 2
Set PosYMoved to PosY - 0.5
SetPos Y PosYMoved
endif
EndBei genau "PosX == 0" stoppt es einfach und ich hab keinen Plan wieso.
Also sobald das Licht die 0-Grenze der X-Achse berührt ist Ende mit meinem Script. Habe auch schon versucht eine extra Bedingung für
Code Select all
if PosX == 0 && PosY == 512Ideen woran es liegen könnte? Bzw. wie es zu lösen wäre ohne das ganze Interior um die paar Koordinaten zu verschieben?
Vermutlich weil 0 - 0.5 auf 0 auf- und nicht auf -1 abgerundet wird. Vergiss nicht, daß PosX eine Short-Variable ist; es wird deshalb dauernd gerundet.
Und mach solche Dinge wie "PosX == 1024.0000" raus. Für Oblivion ist 1024.0000 ein Float, und Floats kann man nicht auf exakte Gleichheit testen, denn Floats sind Näherungswerte. Auf Gleichheit kann man nur zwei diskrete Größen (Short, Long u. Ä.) vergleichen.
Stattdessen würde ich PosX, PosY, PosXMoved und PosYMoved als Floats deklarieren (nicht als Short), und statt exakter Gleichheit (wie "PosX == 1024.0000") immer auf Intervalle der Länge 1 (also PosX < 1025 && PosX > 1024) prüfen.
Und mach solche Dinge wie "PosX == 1024.0000" raus. Für Oblivion ist 1024.0000 ein Float, und Floats kann man nicht auf exakte Gleichheit testen, denn Floats sind Näherungswerte. Auf Gleichheit kann man nur zwei diskrete Größen (Short, Long u. Ä.) vergleichen.
Stattdessen würde ich PosX, PosY, PosXMoved und PosYMoved als Floats deklarieren (nicht als Short), und statt exakter Gleichheit (wie "PosX == 1024.0000") immer auf Intervalle der Länge 1 (also PosX < 1025 && PosX > 1024) prüfen.
Ok, also ein reiner Dummheitsfehler meinerseits... Hat sogar schon funktioniert als ich die 0.5 Werte auf 1 gesetzt habe. Hab die shorts aber dennoch zu floats geändert. Denke du hast da etwas mehr Erfahrung ich^^
Funktioniert jetzt auch prima. Danke arvisrend!
Funktioniert jetzt auch prima. Danke arvisrend!



