//
// Keeps the in game time synced to the server's time and
// draws the current time on the player's hud using a textdraw/
// (1 minute = 1 minute real world time)
//
// © 2009-2012 SA-MP Team
#include <a_samp>
#pragma tabsize 0
//--------------------------------------------------
new Text:txtTimeDisp;
new hour, minute;
new timestr[32];
forward UpdateTimeAndWeather();
//--------------------------------------------------
new fine_weather_ids[] = {1,2,3,4,5,6,7,12,13,14,15,17,18,24,25,26,27,28,29,30,40};
new foggy_weather_ids[] = {9,19,20,31,32};
new wet_weather_ids[] = {8};
stock UpdateWorldWeather()
{
new next_weather_prob = random(100);
if(next_weather_prob < 70) SetWeather(fine_weather_ids[random(sizeof(fine_weather_ids))]);
else if(next_weather_prob < 95) SetWeather(foggy_weather_ids[random(sizeof(foggy_weather_ids))]);
else SetWeather(wet_weather_ids[random(sizeof(wet_weather_ids))]);
}
//--------------------------------------------------
//new last_weather_update=0;
public UpdateTimeAndWeather()
{
// Update time
gettime(hour, minute);
format(timestr,32,"%02d:%02d",hour,minute);
TextDrawSetString(txtTimeDisp,timestr);
SetWorldTime(hour);
new x=0;
while(x!=MAX_PLAYERS) {
if(IsPlayerConnected(x) && GetPlayerState(x) != PLAYER_STATE_NONE) {
SetPlayerTime(x,hour,minute);
}
x++;
}
/* Update weather every hour
if(last_weather_update == 0) {
UpdateWorldWeather();
}
last_weather_update++;
if(last_weather_update == 60) {
last_weather_update = 0;
}*/
}
//--------------------------------------------------
public OnGameModeInit()
{
// Init our text display
txtTimeDisp = TextDrawCreate(605.0,25.0,"00:00");
TextDrawUseBox(txtTimeDisp, 0);
TextDrawFont(txtTimeDisp, 3);
TextDrawSetShadow(txtTimeDisp,0); // no shadow
TextDrawSetOutline(txtTimeDisp,2); // thickness 1
TextDrawBackgroundColor(txtTimeDisp,0x000000FF);
TextDrawColor(txtTimeDisp,0xFFFFFFFF);
TextDrawAlignment(txtTimeDisp,3);
TextDrawLetterSize(txtTimeDisp,0.5,1.5);
UpdateTimeAndWeather();
SetTimer("UpdateTimeAndWeather",1000 * 60,1);
return 1;
}
//--------------------------------------------------
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid,txtTimeDisp);
gettime(hour, minute);
SetPlayerTime(playerid,hour,minute);
return 1;
}
//--------------------------------------------------
public OnPlayerDeath(playerid, killerid, reason)
{
TextDrawHideForPlayer(playerid,txtTimeDisp);
return 1;
}
//--------------------------------------------------
public OnPlayerConnect(playerid)
{
gettime(hour, minute);
SetPlayerTime(playerid,hour,minute);
return 1;
}
//--------------------------------------------------
y si no... puedes usar el FS ke biene por defecto en los files de samp ne la carpeta filterscripts el archivo gl_realtime
pawn Код:
|
#include <a_samp>
#define Hora_Inicial (3)
#define Minutos_Inicial (30)
#define Segundos_Inicial (0)
/*
El Reloj iniciara en : 03:30:00 y ira bajando hasta llegar a 00:00:00
*/
new
Text:Tiempo
;
new
Horas=Hora_Inicial,
Minutos=Minutos_Inicial,
Segundos=Segundos_Inicial
;
public OnFilterScriptInit()
{
Tiempo = TextDrawCreate(605.0,25.0,"_");
TextDrawUseBox(Tiempo, 0);
TextDrawFont(Tiempo, 3);
TextDrawSetShadow(Tiempo,0);
TextDrawSetOutline(Tiempo,2);
TextDrawBackgroundColor(Tiempo,-1);
TextDrawColor(Tiempo,-1);
TextDrawAlignment(Tiempo,3);
TextDrawLetterSize(Tiempo,0.5,1.5);
SetTimer("UpdateTime",1000*60,true);
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid,Tiempo);
return 1;
}
forward UpdateTime();
public UpdateTime()
{
Segundos++;
if(Segundos >= 60)
{
Minutos--;
Segundos=0;
}
if(Minutos >= 60)
{
Horas--;
Segundos=0;
}
if(Horas == 0 && Minutos == 0 && Segundos == 0)
{
Segundos=0;
//Aca Funcion al quedar el reloj en 00:00:00
}
new str[30];
format(str,32,"%02d:%02d:%02d",Horas,Minutos,Segundos);
TextDrawSetString(Tiempo,str);
return 1;
}
#include <a_samp>
#define Hora_Inicial (3)
#define Minutos_Inicial (30)
#define Segundos_Inicial (0)
/*
El Reloj iniciara en : 03:30:00 y ira bajando hasta llegar a 00:00:00
*/
new
Text:Tiempo[MAX_PLAYERS]
;
new
ChauTiempo[MAX_PLAYERS]
;
new
Horas[MAX_PLAYERS]=Hora_Inicial,
Minutos[MAX_PLAYERS]=Minutos_Inicial,
Segundos[MAX_PLAYERS]=Segundos_Inicial
;
public OnPlayerConnect(playerid)
{
Tiempo[playerid] = TextDrawCreate(605.0,25.0,"_");
TextDrawUseBox(Tiempo[playerid], 0);
TextDrawFont(Tiempo[playerid], 3);
TextDrawSetShadow(Tiempo[playerid],0);
TextDrawSetOutline(Tiempo[playerid],2);
TextDrawBackgroundColor(Tiempo[playerid],-1);
TextDrawColor(Tiempo[playerid],-1);
TextDrawAlignment(Tiempo[playerid],3);
TextDrawLetterSize(Tiempo[playerid],0.5,1.5);
ChauTiempo[playerid] = SetTimerEx("UpdateTime", 1000*60, true, "i", playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid,Tiempo[playerid]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(playerid,Tiempo[playerid]);
TextDrawDestroy(Tiempo[playerid]);
KillTimer(ChauTiempo[playerid]);
return 1;
}
forward UpdateTime(playerid);
public UpdateTime(playerid)
{
Segundos[playerid]++;
if(Segundos[playerid] >= 60)
{
Minutos[playerid]--;
Segundos[playerid]=0;
}
if(Minutos[playerid] >= 60)
{
Horas[playerid]--;
Segundos[playerid]=0;
}
if(Horas[playerid] == 0 && Minutos[playerid] == 0 && Segundos[playerid] == 0)
{
Segundos[playerid]=0;
//Aca Funcion al quedar el reloj en 00:00:00
}
new str[30];
format(str,32,"%02d:%02d:%02d",Horas[playerid],Minutos[playerid],Segundos[playerid]);
TextDrawSetString(Tiempo[playerid],str);
return 1;
}
Perfecto Gracias lo probare, solo una ultima duda eso lo pongo dentro del gl_realtime o lo pongo aparte como otro FS?
|