new GameMinutes = 14;
new GameSeconds = 59;
new Text:Textdraw0;
Textdraw0 = TextDrawCreate(86.000000,427.000000,"15:00");
TextDrawAlignment(Textdraw0,2);
TextDrawBackgroundColor(Textdraw0,0x000000ff);
TextDrawFont(Textdraw0,3);
TextDrawLetterSize(Textdraw0,0.499999,2.000000);
TextDrawColor(Textdraw0,0xffffffff);
TextDrawSetOutline(Textdraw0,1);
TextDrawSetProportional(Textdraw0,1);
TextDrawSetShadow(Textdraw0,1);
SetTimer("GameTime",1000,1);
public GameTime()
{
if(GameSeconds > 0 || GameMinutes > 0)
{
GameSeconds--;
if(GameSeconds <= -1)
{
GameMinutes--;
GameSeconds=59;
}
new TimeString[14];
format(TimeString,sizeof(TimeString),"%02d:%02d",GameMinutes,GameSeconds);
TextDrawSetString(Textdraw0,TimeString);
}
if(GameSeconds == 0 && GameMinutes == 0)
{
OnGameModeExit();
}
return 1;
}
new GameSeconds = 900; // 60s - min, 300s - 5min
public GameTime()
{
new m = ((GameSeconds/60)%60);
new s = (GameSeconds%60);
new TimeString[14];
format(TimeString,sizeof(TimeString),"%02d:%02d",m,s);
TextDrawSetString(Textdraw0,TimeString);
if(GameSeconds == 0) OnGameModeExit();
GameSeconds--;
return 1;
}
^^ That.
Just use TogglePlayerClock and use a timer to update the time every second or so. |
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, Textdraw0);
return 1;
}
public GameTime()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GameSeconds > 0 || GameMinutes > 0)
{
GameSeconds--;
if(GameSeconds <= -1)
{
GameMinutes--;
GameSeconds=59;
}
new TimeString[14];
format(TimeString,sizeof(TimeString),"%02d:%02d",GameMinutes,GameSeconds);
TextDrawSetString(Textdraw0,TimeString);
}
if(GameSeconds == 0 && GameMinutes == 0)
{
OnGameModeExit();
}
}
return 1;
}
new GameSeconds = 1451;
new Text:Textdraw0;
Textdraw0 = TextDrawCreate(86.000000,427.000000,"Loading..");
TextDrawAlignment(Textdraw0,2);
TextDrawBackgroundColor(Textdraw0,0x000000ff);
TextDrawFont(Textdraw0,3);
TextDrawLetterSize(Textdraw0,0.499999,2.000000);
TextDrawColor(Textdraw0,0xffffffff);
TextDrawSetOutline(Textdraw0,1);
TextDrawSetProportional(Textdraw0,1);
TextDrawSetShadow(Textdraw0,1);
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, Textdraw0);
return true;
}
SetTimer("GameTime",1000,1);
forward GameTime();
public GameTime()
{
GameSeconds++;
new TimeString[14];
format(TimeString,sizeof(TimeString),"%i:%i",(GameSeconds/(60*60))%24,(GameSeconds/60)%60);
// Hours:Minutes
TextDrawSetString(Textdraw0,TimeString);
//In case you need a reset on completing 24 hours:
if((GameSeconds/(60*60))%24 == 24) { GameSeconds = 0; }
return true;
}
//You don't need GameMinutes here. No other stuff.
TextDrawHideForAll( Textdraw0 );
TextDrawSetString( Textdraw0, TimeString );
TextDrawShowForAll( Textdraw0 );
None of the previous posts will fix your problem. You need to hide and re-display the textdraw each time you set a new string to it, or it won't update on the player's screen. You should hide it, set the string, then show it again.
pawn Code:
|
None of the previous posts will fix your problem. You need to hide and re-display the textdraw each time you set a new string to it, or it won't update on the player's screen. You should hide it, set the string, then show it again.
pawn Code:
|
public GameTime()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GameSeconds > 0 || GameMinutes > 0)
{
GameSeconds--;
if(GameSeconds <= -1)
{
GameMinutes--;
GameSeconds=59;
}
new TimeString[14];
format(TimeString,sizeof(TimeString),"%02d:%02d",GameMinutes,GameSeconds);
TextDrawSetString(Textdraw0,TimeString);
TextDrawHideForAll( Textdraw0 );
TextDrawSetString( Textdraw0, TimeString );
TextDrawShowForAll( Textdraw0 );
}
if(GameSeconds == 0 && GameMinutes == 0)
{
OnGameModeExit();
}
}
return 1;
}
Have you tried my method above?^
|