Habria una forma [COnsulta]
#1

Hola amigos del samp habrнa alguna forma de mostrar al usuario el tiempo que esta conectado como por ejemplo:


pawn Код:
format(string2, sizeof(string2), "{B0C4DE}Usted ha estado online: 2horas Y 50 minutos");
SendClientMessage(VERDELIMA, string2);
Nota: creo que los tiempos serian diferentes para todos ya que todos se han conectado en diferente tiempo..


muchas gracias
Reply
#2

restando la hora actual y la hora de entrada.

saludos.


pawn Код:
new
    Online[MAX_PLAYERS][3];
pawn Код:
public OnPlayerConnect(playerid){

    new
        Hour,
        Minute,
        Second;
       
    gettime(Hour, Minute, Second);
   
    Online[playerid][0] =\
        Hour;
       
    Online[playerid][1] =\
        Minute;
       
    Online[playerid][2] =\
        Second;
   
    return true;
}
pawn Код:
new
    data[100],

    Hour,
    Minute,
    Second;
   
gettime(Hour, Minute, Second);

format(data, sizeof(data), " {B0C4DE} Usted ha estado online: horas:%02d minutos:%02d segundos:%02d ",\
(Hour - Online[playerid][0]),(Minute - Online[playerid][1]),(Second - Online[playerid][2]));

SendClientMessage(-1, data);
Reply
#3

Quote:
Originally Posted by OTACON
Посмотреть сообщение
restando la hora actual y la hora de entrada.

saludos.


pawn Код:
new
    Online[MAX_PLAYERS][3];
pawn Код:
public OnPlayerConnect(playerid){

    new
        Hour,
        Minute,
        Second;
       
    gettime(Hour, Minute, Second);
   
    Online[playerid][0] =\
        Hour;
       
    Online[playerid][1] =\
        Minute;
       
    Online[playerid][2] =\
        Second;
   
    return true;
}
pawn Код:
new
    data[100],

    Hour,
    Minute,
    Second;
   
gettime(Hour, Minute, Second);

format(data, sizeof(data), " {B0C4DE} Usted ha estado online: horas:%02d minutos:%02d segundos:%02d ",\
(Hour - Online[playerid][0]),(Minute - Online[playerid][1]),(Second - Online[playerid][2]));

SendClientMessage(-1, data);
muchas gracias por responder y como puedo hacer para que este mensaje se muestre cada cierto tiempo. como por ejemplo cada 15 min me parece que va con un timer ah y + resp
Reply
#4

---> [https://sampwiki.blast.hk/wiki/SetTimerEx

pawn Код:
new
    Online[MAX_PLAYERS][3];
pawn Код:
public OnPlayerConnect(playerid){

    new
        Hour,
        Minute,
        Second;

    gettime(Hour, Minute, Second);

    Online[playerid][0] =\
        Hour;

    Online[playerid][1] =\
        Minute;

    Online[playerid][2] =\
        Second;

    SetTimerEx("update_online", 15*60000, true, "d", playerid);
    return true;
}
pawn Код:
forward update_online(playerid); public update_online(playerid){
    new
        data[100],

        Hour,
        Minute,
        Second;

    gettime(Hour, Minute, Second);

    format(data, sizeof(data), " {B0C4DE} Usted ha estado online: horas:%02d minutos:%02d segundos:%02d ",\
    (Hour - Online[playerid][0]),(Minute - Online[playerid][1]),(Second - Online[playerid][2]));

    SendClientMessage(-1, data);
}
Reply
#5

pienso que serнa mejor hacer un solo timer y mostrarlo usando un bucle (mejor foreach para esto)

pawn Код:
//OnGameModeInit
SetTimer("update_online",15*60000,true);

forward update_online();
public update_online()
{
    foreach(Player, i)
    {
        new string[144],Hora,Minuto,Segundo;
        gettime(Hora,Minuto,Segundo);
        format(string, sizeof(string), "Usted ha estado online: horas:%02d minutos:%02d segundos:%02d ",(Hora - Online[i][0]),(Minuto - Online[i][1]),(Segundo - Online[i][2]));
        SendClientMessage(i,-1,string);
    }
}
aunque si lo que quieres es que lo muestre cada 15min que el jugador se conecte solo a йl, hazlo como otacon xD... esto lo mostrarб cada 15min a todos los jugadores conectados en ese momento

igual el cуdigo es de otacon xd solo es recomendaciуn
Reply
#6

Yo pienso quй serнa mejor sin usar timers(temporizadores). Mira esto .

pawn Код:
// This is a comment
// uncomment the line below if you want to write a filterscript

#define FILTERSCRIPT

#if defined FILTERSCRIPT

#include <a_samp>
#include <foreach>
#include <YSI\y_timers>

new tiempo_conectado[MAX_PLAYERS];


public OnFilterScriptInit()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        tiempo_conectado[i] = 0;
    }
    return true;
}

public OnPlayerConnect(playerid)
{
    tiempo_conectado[playerid] = 0;
    return true;
}

public OnPlayerDisconnect(playerid, reason)
{
    new string[144];
    strdel(string, 0, 144);
    if(tiempo_conectado[playerid] < 60)
    {
        format(string, sizeof(string), "** %s ah abandonado el servidor, segundos conectado: %d.", Nombre(playerid), tiempo_conectado[playerid]*1);
        SendClientMessageToAll(-1, string);
    }
    else if(tiempo_conectado[playerid] >= 60)
    {
        format(string, sizeof(string), "** %s ah abandonado el servidor, minutos conectado: %d.", Nombre(playerid), tiempo_conectado[playerid]/60*1);
        SendClientMessageToAll(-1, string);
    }
    return true;
}

stock Nombre(playerid)
{
    new nombre[24];
    GetPlayerName(playerid, nombre, 24);
    return nombre;
}

task conteo_tiempo_conectado[1000]()
{
    foreach(Player, i)
    {
        if(IsPlayerConnected(i))
        {
            tiempo_conectado[i]++;
        }
    }
    return true;
}

#endif
Reply
#7

Quote:
Originally Posted by JuanStone
Посмотреть сообщение
Yo pienso quй serнa mejor sin usar timers(temporizadores). Mira esto .

pawn Код:
// This is a comment
// uncomment the line below if you want to write a filterscript

#define FILTERSCRIPT

#if defined FILTERSCRIPT

#include <a_samp>
#include <foreach>
#include <YSI\y_timers>

new tiempo_conectado[MAX_PLAYERS];


public OnFilterScriptInit()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        tiempo_conectado[i] = 0;
    }
    return true;
}

public OnPlayerConnect(playerid)
{
    tiempo_conectado[playerid] = 0;
    return true;
}

public OnPlayerDisconnect(playerid, reason)
{
    new string[144];
    strdel(string, 0, 144);
    if(tiempo_conectado[playerid] < 60)
    {
        format(string, sizeof(string), "** %s ah abandonado el servidor, segundos conectado: %d.", Nombre(playerid), tiempo_conectado[playerid]*1);
        SendClientMessageToAll(-1, string);
    }
    else if(tiempo_conectado[playerid] >= 60)
    {
        format(string, sizeof(string), "** %s ah abandonado el servidor, minutos conectado: %d.", Nombre(playerid), tiempo_conectado[playerid]/60*1);
        SendClientMessageToAll(-1, string);
    }
    return true;
}

stock Nombre(playerid)
{
    new nombre[24];
    GetPlayerName(playerid, nombre, 24);
    return nombre;
}

task conteo_tiempo_conectado[1000]()
{
    foreach(Player, i)
    {
        if(IsPlayerConnected(i))
        {
            tiempo_conectado[i]++;
        }
    }
    return true;
}

#endif
se utilizarнa timers(temporizadores) solo para el uso del usuario que quiere actualizar el mensaje, no para detectar el tiempo online.

saludos.
Reply
#8

Si leнste el post, el quiere que muestre el mensaje cada 15min... por eso el timer.
Reply
#9

Quote:
Originally Posted by aoEXE
Посмотреть сообщение
Si leнste el post, el quiere que muestre el mensaje cada 15min... por eso el timer.
me referнa al mйtodo de detectar el tiempo online de JuanStone, el de el se necesita si o si un temporizador, mi mйtodo no.
Reply
#10

ї Estб usted seguro ? .

pawn Код:
task mensaje[15*60000]()
{
    foreach(Player, i)
    {
        if(IsPlayerConnected(i))
        {
            case 15: SendClientMessage(i, -1, "Hola llevas 15 minutos conectado y no hay temporizadores.");
        }
    }
    return true;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)