millisecs ist ungenau [Nochmal neues problem xD^^]
Übersicht

![]() |
mas93Betreff: millisecs ist ungenau [Nochmal neues problem xD^^] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi leute,
Ich habe gerade Probleme mit dem Millisecs befehl. Ich hab das vor dem mainloop: Code: [AUSKLAPPEN] ms=millisecs() und dann das in dem mainloop: Code: [AUSKLAPPEN] DrawImage3D(miene_metall0,-500,200,0,0,150,100,1,0) If MouseHit3D Then If metall>100 And gold>100 Then If MilliSecs()-ms>5000 Then miene_metall=miene_metall+1 so, nun werden aber keine 5 secs gewaretet sondern das Bild erscheint glich wenn man drückt. Jetzt hab ich mal zum test 50 secs genommen und siehe da, es hat gewartet. Zwar nicht genau 50 aber es hat gewartet. Jetzt wollte ich wissen warum das nicht funktioniert. Ich hab den code in nem ganz neuen programm getestet, dass ganz leer war und da hat alles geklappt. Es liegt glaube ich daran, dass viel in der main drinn ist und passiert. mfg marius Wäre nett wenn ihr mir helfen würdet |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
- Zuletzt bearbeitet von mas93 am Mo, Jul 09, 2007 20:39, insgesamt einmal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich glaub du hast ms als global definiert und schreibst an verschiedenen Orten drüber was nur in der Katastrophe enden kann | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm darf es nich global sein?
was ist wenn es global is? |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es darf global sein, das ist kein Problem.
Aber du musst darauf achten, dass du nur an einem Ort ms = XXX setzt und nicht an verschiedenen sonst kann sein das du durchgehend frühere änderungen rückgängig oder gar "falsch" machst. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du gibst ms VOR deiner Mainloop den Wert. Dann statet dein Spiel hoch, du gehst auf die Option die du haben willst und klickst sie an. All das kostet Zeit. Zeit die von den 5 Sekunden abgeht.
Deswegen klappt es auch mit den 50 Sekunden... Selbes Procedere, aber Du wartest geduldig 50-x sekunden bis sie voll sind. Was Du aber willst ist das nach dem Klicken Zeit vergeht bis dein Bild auftaucht. Das bedeutet dass Du für dieses Bild erst in dem Moment den Timer setzen darfst indem Du es anklickst, und später an anderer Stelle überprüfst ob irgendwelche Timer ausgelaufen sind. Hier bietet sich ein Type an. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm ich habs dann mal so versucht.Es kommt aber nix.
Code: [AUSKLAPPEN] Type ms Field secs End Type Graphics 400,300,0,2 SetBuffer BackBuffer() While Not KeyHit(1) If KeyHit(2)Then m.ms =New ms m\secs=MilliSecs() For m.ms=Each ms If MilliSecs()-m\secs>4000 Then RuntimeError "4 Sekunden sind vorbei! Next EndIf Wend mfg marius |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beispiel für einen Timer:
Code: [AUSKLAPPEN] Type test
Field ms End Type Repeat If KeyHit(200) Then Print "Type erschafft" b.test = New test b\ms = MilliSecs() EndIf For abfrage.test = Each test If abfrage\ms + 4000 < MilliSecs() Then Print "dieser Type hat vier Sekunden gelebt und stirbt nun." Delete abfrage EndIf Next Until KeyHit(1) EDIT: Bitte mach deine Signatur kleiner , Mas |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok habs selber rausgefunden.
Hab aber ein neues Problem. Also wenn ich jetzt ein gebäude baue geht alles. Wenn ich jetzt aber danach nochmal eins bauen möchst und ich den gleichen typ verwende wird das Gebäude sofort gebaut. Da stimmt wieder etwas nich xD^^ Code: [AUSKLAPPEN] Select miene_metall ;Das bild für die dazugehörige Stufe zeichnen Case 0 DrawImage3D(miene_metall0,-530,200,0,0,150,100,1,0) If MouseHit3D Then If metall>100 And gold>100 Then ;Wenn mausgeklickt wird m.ms =New ms ;Neuer Typ wird erstellt m\secs=MilliSecs() ;millisecs werden gezählt EndIf For m.ms=Each ms If MilliSecs()-m\secs>4000 Then miene_metall=miene_metall+1 :gold=gold-100 :metall=metall-100 ;Typ wird abgefragt und millisecs berechnet Next Text3D(font,-450,230,"Gold:-100 Metall:-100 ",0,0) ;Kosten werden angezeigt Case 1 DrawImage3D(miene_metall1,-530,200,0,0,150,100,1,0) If MouseHit3D Then If metall>150 And gold>150 Then m.ms =New ms ;Neuer Typ wird erstellt m\secs=MilliSecs() ;millisecs werden gezählt EndIf For m.ms=Each ms If MilliSecs()-m\secs>4000 Then miene_metall=miene_metall+1 :gold=gold-150 :metall=metall-150 ;Typ wird abgefragt und millisecs berechnet Next Text3D(font,-450,230,"Gold:-150 Metall:-150 ",0,0) End Select wäre nett wenn ihr mich nocheinmal helfen könntet mfg marius |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach erstmal deine Sig. kleiner ....
Und dann überlege was Du mit den alten Timern machst... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ohh, klar^^
ELIMINIEREN^^ delete m^^ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group