Guten Tag
Also ich habe momentan folgendes Problem..
Ich möchte gerne ein Racetimer haben.. der so zählt: 00:00:000 (Minute:Sekunde:Millisekunden)
Da es per GetTime (oder wie das heißt) nicht klappt, da ich es per Textdraw angezeigt haben will (also der soll sich dauerthaft hochzählen und dann auch wenn z.b. 1000 Millisekundensind auf 1 Sekunde gehen.
Das Problem ist jetzt, dass wenn ich einen Timer mache, der 1 Millisekunde lang ist, dauert das ewig bis der hochzählt wenn ich printe!
Hoffe ihr versteht was ich meine
MfG.
Race Timer
- Blitz100
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Also ich habe es gerade so getestet:
new mn,sek,mil;
public OnGameModeInit()
{
SetTimer("Race_Timer", 1, 1);
return 1;
}forward Race_Timer();
public Race_Timer()
{
new string[128];
mil++;
if(mil==1000)sek++,mil=0;
if(sek==60)mn++,sek=0;
format(string, sizeof string,"%02d:%02d:%02d",mn,sek,mil);
printf("%s",string);
return 1;
}Ich weiß was du meinst, aber das liegt daran, dass eine gewisse Zeit verloren geht, das zu printen, aus diesem Grund dauert das etwas länger
Aus diesem Grund kannst du das nicht beheben mit den Millisekunden, du kannst sie höchstens streichen oder mit dieser kleinen Verzögerung leben
mfg.
-
Kann man das nicht anders lösen?
Denn für Spieler, denen es um Millisekunden geht, sind die Millisekunden wichtig!
Durch die if abfrage und hinterher durch das textdrawsetstring geht viel verloren.
Vllt. kannst du ja was zaubern..
OBWOHL!
Kann man nicht 2 Timer (was ssseeehhhrr resourcendfressen ist) laufen lassen?
Mit den einen einfach die variable (global) hochlaufen lassen und beim anderen die Zeit hochsetzen?MfG.
-
Vllt. kannst du ja was zaubern..
Ja, also es gibt 1ne Möglichkeit die du verwenden könntest, da musst du dich aber von deinem Timer lösen, funktioniert aber ähnlich, schau mal:new mn,sek,mil;
public OnGameModeInit()
{
Race_Timer();
return 1;
}forward Race_Timer();
public Race_Timer()
{
for(new i; i!=-1; i++) {
if(i < 20000) continue;
i = 0;
new string[128];
mil++;
if(mil==1000)sek++,mil=0;
if(sek==60)mn++,sek=0;
format(string, sizeof string,"%02d:%02d:%02d",mn,sek,mil);
printf("%s",string);
}
return 1;
}So sollte es gehen
mfg.
/edit: Blitz100 ...
-
-
nur ich glaube der zählt zu schhnell :b
Dann kannst du diesen Code erhöhen:
if(i < 20000) continue;
Zum Beispiel so:
if(i < 30000) continue;
Jetzt sollte er langsamer zählenWie stoppe ich den wieder?
Mit einer Globalen Variable sprich sowas://Oben im Script:
new Die_Pause;//In meiner for-Schleife
for(new i; i!=-1; i++)
{
if(Die_Pause) break;
//mein Code
}//Irgendein Cmd
if(!Die_Pause) {
//Die Schleife wird gestoppt
Die_Pause = 1;
}
else {
//Die Schleife Startet wieder
mn = 0, sek = 0, mil = 0, Die_Pause = 0;
Race_Timer();
}mfg.
//Edit: Blitz100 ...
-
-
breadfish.de
Hat das Thema geschlossen.