Wo ist der kleine Fehler? :D

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Wo ist der kleine Fehler? :D

Post: # 76337Post parkiii
03 Nov 2010, 22:29

Stehe grade (auf Grund einer Java-Learning bedingten Pause) ein bisschen auf der Leitung mit der PaCDK Enginge...

Loop1 im Menü zur Änderung der Spielzeit-Ausgabe. Bei weniger als 10 Minuten soll halt eine 0 davor stehen, um alles schön symmetrisch zu haben.
(zB.: 13:25 ist gleich formatiert wie 13:05)

Code: Select all

on (loop1)
{
if_num (Minuten ; <10)
textout (153 ; Spielzeit: [Stunden]:0[Minuten] ; 90 ; 230 ; 7 ; 0 ; 0 ; 0)
if_num (Minuten ; >9)
textout (153 ; Spielzeit: [Stunden]:[Minuten] ; 90 ; 230 ; 7 ; 0 ; 0 ; 0)
}
Danke im Voraus, ich denke es scheitert nur an einem kleinen Denkfehler ^^

HeXoR
Foren Raubein
Posts: 433
Joined: 27 Mar 2006, 01:23

Post: # 76338Post HeXoR
03 Nov 2010, 22:44

Was tut sich den mit deinem Script bzw. was nicht?
MfG
HeXoR
[img]http://www.hexorarts.de/gifs/Gifs/smily629.gif[/img][img]http://www.hexorarts.de/gifs/Gifs/smily630.gif[/img]

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 76339Post parkiii
03 Nov 2010, 23:43

hehe, grad noch vorm einschlafen gemerkt dass ich in meiner verwirrung vergessen hab, den fehler an sich anzugeben ^^

es steht einfach immer die ausgabevariante mit der null da..

also zB.:
Spielzeit: 0:010
Spielzeit: 0:06
Spielzeit: 0:037

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Post: # 76340Post japanhonk
04 Nov 2010, 06:47

Versuch mal so:

on (loop1)
{
texthide (153)
textout (153 ; Spielzeit: [Stunden]:[Minuten] ; 90 ; 230 ; 7 ; 0 ; 0 ; 0)
if_num (Minuten ; <10)
{
texthide (153)
textout (153 ; Spielzeit: [Stunden]:0[Minuten] ; 90 ; 230 ; 7 ; 0 ; 0 ; 0)
}}

Jetzt sollte zuerst die Anzeige kommen : 0:8 (z.B ), in der nächsten Zeile
wird, wenn die Bedingung zutrifft, das wieder überschrieben mit 0:08.

Aber ich werd mich nachher mal dransetzen, einen echten Fehler sehe ich so auch noch nicht, weiss aber, dass bei ähnlichen Abfragen bei mir gerne
mal diese doppelte Bedingung hakt, warum auch immer. Also versuche ich, nur einen Zustand abzufragen.
:P
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 76408Post parkiii
06 Nov 2010, 13:15

klappt auch nicht mit deiner lösungsvariante..

hab versucht, das ganze im loop2-skript ablaufen zu lassen, statt nummernabfragen bools zu verwenden, break einzubauen... nichts von alldem hat wirkung gezeigt.

beim umschalten von 0:09 auf die 10. minute wird immer noch 0:010 ausgegeben...

EDIT: auch mit verschiedenen textout-nagaben wird es nicht genommen (hab versucht die variante ohne 0 mit nummer 153 und die mit 0 als 154 auszugeben...)

EDIT#2: grad gemerkt, dass der loopskript gar keine auswirkung auf den textout hat... es wird nur der textout-befehl beim öffnen des menüs angenommen. also wenn ich den wegnehme erscheint gar kein textout (obwohl laut loop1-skript andauernd der befehl kommen müsste)

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Post: # 76422Post japanhonk
06 Nov 2010, 16:53

Hi,

Folgendes Skript habe ich zum Testen mal in einen meiner Räume eingebaut.

Funktioniert einwandfrei, natürlich habe ich das hier nicht mit den Frames
gekoppelt, so lange wollte ich nicht warten, es läuft also sehr viel schneller.

Vom Prinzip her aber sieht man, dass ( von den Sekunden mal angesehen, das habe ich nicht weiter unterteilt ) die Anzeige immer 4 Stellig + die Sekunden ist.

Vielleicht gibst du die Werte am Anfang nicht richtig vor ? Ich habe im Startskript alles auf 0 gesetzt...

Viel Erfolg

on (loop1)
{
setnum (seconds;+1)
if_num (seconds;40)
{
setnum (seconds;0)
setnum (minutes;+1)
}
if_num (minutes;60)
{
setnum (hours;+1)
setnum (minutes;0)
}

if_num (hours;<10)
{
if_num (minutes ; <10)
textout (153 ;Spielzeit:0[hours]:0[minutes]:[seconds] ; 210 ; 230 ; 1 ;200;200;200)
if_num (minutes ; >9)
textout (153 ;Spielzeit:0[hours]:[minutes]:[seconds] ; 210 ; 230 ; 1 ;200;200;200)
}

if_num (hours;>9)
{
if_num (minutes ; <10)
textout (153 ;Spielzeit:[hours]:0[minutes]:[seconds] ; 210 ; 230 ; 1 ;200;200;200)
if_num (minutes ; >9)
textout (153 ;Spielzeit:[hours]:[minutes]:[seconds] ; 210 ; 230 ; 1 ;200;200;200)
} }

:D
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 76427Post parkiii
06 Nov 2010, 17:47

du hast die zeittählung im selben skript... ich hab den counter für die zeitmessung im main-skript und nicht im loop1 eines raumes... probier mal ob es dann immer noch geht :/

außerdem ist bei mir ein subroom das menü (muss nichts bedeuten, allerdings gibts ja immer wieder probleme mit subrooms)

desweiteren öffne ich das menü mit einer kleinen function, in der bereits der text ausgegeben wird und der loop1-befehl sollte nur dazu dienen, dass sich die textout-ausgabe beim wechseln von 09 auf 10 aktualisiert. allerdings wird wie gesagt der loop1 befehl gar nicht beachtet..

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Post: # 76431Post japanhonk
06 Nov 2010, 18:05

Wenn der Subroom das Problem sein sollte, was ich nicht glaube, dann
kannst du im Mainscript schreiben : if_room (...) (oder bei dessen Aufruf ) und dann diese Skriptzeilen in einer function (...;infinit) laufen lassen.

In meinem Spiel läuft die Zeitmessung auch so ab und ich hab da keine Probleme mit. Eine Trennung der Skripte ist nicht das Problem, weil sich die Werte - egal, wo sie gesetzt werden, jederzeit auslesen lassen können.

bei Bedarf kann man diese Funktion dann einfach wieder stoppen oder starten.

Also wie folgt :

-Timer im Mainscript laufen lassen
-beim Aufruf des Subrooms die Anzeigefunktion als Schleife starten und
die Werte des Mainscripts auslesen und anzeigen lassen
-beim Verlassen des Subrooms die Textzeilen löschen und die Anzeigefunktion mittels stopfunction(...) beenden
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Post Reply