[Consulta] Como Fijar El Tiempo como en el video
#1

Hola amigos traigo esta consulta que no encuentro por ningun lado y si alguno de ustedes sabe como hacerlo porfavor necesito su ayuda.

Yo quiero agregar tiempo asi como la siguiente imagen ya que mi server no tiene ese tiempo


Ahora lo siguiente asi como el tiempo de arriba yo quiero que sea un tiempo determinado es decir yo pongo 5 minutos y los 5 minutos se empiezen a contar en forma descendente por ejemplo: 4:49 , 4:48, 4:47.. etc hasta llegar a 0 porfavor si me podria ayudar en esto ya que eh buscado y no eh encontrado por ningun lado, Gracias

Acontinuacion un video de como quiero miren el video y observen el reloj:

http://www.youtube.com/watch?v=e2377...ature=*********

Edito: Gracias a los usuarios que comentaron pero porfavor tengo otra duda pueden ayudarme con lo que digo en el ultimo comentario
Reply
#2

https://sampwiki.blast.hk/wiki/TogglePlayerClock
Usa el buscador la prуxima vez.
Reply
#3

Eso si eso ya tengo, y si bien nose eso es unicamente para mostrar el reloj y yo me refiero ah que que debo aumentarle o que para que el reloj empieze ah ir en forma descendente tal y como sale en el video, Gracias
Reply
#4

Eso es un TextDraw con las mismas caracterнsticas que el reloj del juego normal (color, tamaсo, etc.) y usa un timer a base de variables para restar y mostrar su valor. Te dije la parte teуrica, si no entiendes, dнmelo y a lo mejor te pongo un ejemplo. Pero intйntalo.
Reply
#5

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 Код:
//
// 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;
}

//--------------------------------------------------
Reply
#6

Si, ese FS lo usan muchos. Yo igual lo uso en mi servidor y es perfecto!
Reply
#7

Quote:
Originally Posted by bytytus
Посмотреть сообщение
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 Код:
//
// 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;
}

//--------------------------------------------------
Gracias lo acabe de probar y funciono ahoralo que quiero saber es si me podrias ayudar ah que debo editarle en el codigo para que cuando abra el sv empieze a contar 5 minutos en forma descendente hasta llegar al 00:00 , es para un Mini GM de juego porfavor se lo agradeceria mucho
Reply
#8

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;
}
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[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;
}
Reply
#9

Perfecto Gracias lo probare, solo una ultima duda eso lo pongo dentro del gl_realtime o lo pongo aparte como otro FS?
Reply
#10

Quote:
Originally Posted by EvelioCuenca
Посмотреть сообщение
Perfecto Gracias lo probare, solo una ultima duda eso lo pongo dentro del gl_realtime o lo pongo aparte como otro FS?
Aparte en otro FS mi pana.
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)