SureAI

Forums covering SureAI game titles.

https://sureai.net/forum/

Topic title - Skriptthread

https://sureai.net/forum/viewtopic.php?t=3415

Page 1 of 1
Skriptthread - by Todeskeks
Posted: 29.09.2010 17:16
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
Re: Skriptthread - by Ayonbird
Posted: 11.10.2010 17:22
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:
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

End
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
if PosX == 0 && PosY == 512
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?
Re: Skriptthread - by arvisrend
Posted: 13.10.2010 11:55
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.
Re: Skriptthread - by Ayonbird
Posted: 13.10.2010 20:56
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! :D
All times are UTC
Page 1 of 1
Powered by phpBB® Forum Software © phpBB Limited