Beitrag von JustMe.77 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Versuche es so:
public UpdateRoundTime()
{
new sQuery[32];
if(RoundStarted == true)
{
RoundSeconds--;
if(RoundSeconds < 0)
{
RoundMints--;
RoundSeconds = 59;
}
else if(RoundSeconds == 0 && RoundMints == 0)
{
print("Timer Finished.");
RoundStarted = false;
}
}
format(sQuery, sizeof(sQuery), " ~b~%02d:%02d", RoundMints, RoundSeconds);
TextDrawSetString(RoundTime, sQuery);
format(sQuery, sizeof(sQuery), "ARENA:~b~ %02d", Area);
TextDrawSetString(ArenaTextID, sQuery);
return 1;
}
Hast du es mal ohne Timerfix versucht? Buggt das immer noch so rum? Ansonsten führ doch mal deinen SA-MP Server (unter Windows) als Administrator aus und schau, ob sich was ändert.
Oder wird der Timer aus irgend einem Grund doppelt gestartet ?
Wo lässt du den Timer starten. Poste uns mal einen Auschnitt.
lg
Startest du den Timer mehrmals? Das müsstest du dann daran erkennen, dass er nicht in Sekunden Schritten runter geht, sondern zum Beispiel immer gleich 5 Sekunden runter gehtgeht (oder mehr/weniger).
Lässt du die Runde dort beenden, wo
print("Timer Finished.");
im Countdown steht?
Wenn nicht, dann musst du es dort machen.
Hab mal deinen Code in einen leeren GameMode gepackt und bissl die Fehler entfernt. Lokal läuft der Timer 1a.
#include <a_samp>
new Text:RoundTime,
bool:RoundStarted = false,
RoundSeconds = 10,
RoundMints = 1;
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
RoundTime = TextDrawCreate(294.000000, 432.000000, " ~b~12:03");
TextDrawBackgroundColor(RoundTime, 255);
TextDrawFont(RoundTime, 2);
TextDrawLetterSize(RoundTime, 0.230000, 1.500000);
TextDrawColor(RoundTime, -1);
TextDrawSetOutline(RoundTime, 0);
TextDrawSetProportional(RoundTime, 1);
TextDrawSetShadow(RoundTime, 1);
TextDrawSetSelectable(RoundTime, 0);
SetTimer("UpdateRoundTime", 1000, true);
return 1;
}
forward UpdateRoundTime(); public UpdateRoundTime()
{
if (RoundStarted == true)
{
RoundSeconds--;
if (RoundSeconds < 0)
{
RoundMints --; RoundSeconds = 59; if (RoundMints < 0) {RoundStarted = false; RoundMints = 0; RoundSeconds = 0;}
}
}
new sQuery[32];
format(sQuery, sizeof(sQuery), " ~b~%02d:%02d", RoundMints, RoundSeconds);
TextDrawSetString(RoundTime, sQuery);
/*
format(sQuery, sizeof(sQuery), "ARENA:~b~ %02d", Area);
TextDrawSetString(ArenaTextID, sQuery);
*/
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid, RoundTime); RoundStarted = true;
return 1;
}
Alles anzeigen
Da ich den ArenaTextID TextDraw nicht habe, hab ich dies auskommentiert.