Optimizar un codigo
#1

Hola,quisiera pedir como se actualiza /optimiza un cуdigo,un cliente me pidiу que haga algo asн: Tiempo restante para hablar : "x" minutos y "x" segundos.Con un tiempo determinado,pero a mi me sale esto: "x" segundos nada mas,ejemplo: 37272 segundos.

Gracias
Reply
#2

Si pasaras el cуdigo podriamos ver que onda
Reply
#3

Uso:
pawn Код:
new second = 37272, minute, hour, day, week, month, year;
format(string, sizeof(string), "37272 en tiempo ---> %s.", ConvertToTime(second, minute, hour, day, week, month, year));
SendClientMessage(playerid, -1, string);
Lo que hace el trabajo:
pawn Код:
ConvertToTime(&cts, &ctm=-1, &cth=-1, &ctd=-1, &ctw=-1, &ctmo=-1, &cty=-1)
{
    #define PLUR(%0,%1,%2) (%0),((%0) == 1)?((#%1)):((#%2))
    #define CTM_cty 31536000
    #define CTM_ctmo 2628000
    #define CTM_ctw 604800
    #define CTM_ctd 86400
    #define CTM_cth 3600
    #define CTM_ctm 60
    #define CT(%0) %0 = cts / CTM_%0; cts %= CTM_%0

    new string[128];
    if(cty != -1 && (cts / CTM_cty))
    {
        CT(cty); CT(ctmo); CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, %d %s, %d %s, %d %s, and %d %s", PLUR(cty, "year", "years"), PLUR(ctmo, "month", "months"), PLUR(ctw, "week", "weeks"), \
        PLUR(ctd, "day", "days"), PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctmo != -1 && (cts / CTM_ctmo))
    {
        cty = 0; CT(ctmo); CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, %d %s, %d %s, and %d %s", PLUR(ctmo, "month", "months"), PLUR(ctw, "week", "weeks"), PLUR(ctd, "day", "days"), PLUR(cth, "hour", \
        "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctw != -1 && (cts / CTM_ctw))
    {
        cty = 0; ctmo = 0; CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, %d %s, and %d %s", PLUR(ctw, "week", "weeks"), PLUR(ctd, "day", "days"), PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", \
        "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctd != -1 && (cts / CTM_ctd))
    {
        cty = 0; ctmo = 0; ctw = 0; CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, and %d %s", PLUR(ctd, "day", "days"), PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(cth != -1 && (cts / CTM_cth))
    {
        cty = 0; ctmo = 0; ctw = 0; ctd = 0; CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, and %d %s", PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctm != -1 && (cts / CTM_ctm))
    {
        cty = 0; ctmo = 0; ctw = 0; ctd = 0; cth = 0; CT(ctm);
        format(string, sizeof(string), "%d %s, and %d %s", PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }

    cty = 0; ctmo = 0; ctw = 0; ctd = 0; cth = 0; ctm = 0;
    format(string, sizeof(string), "%d %s", PLUR(cts, "second", "seconds"));
    return string;
}
Reply
#4

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
Uso:
pawn Код:
new second = 37272, minute, hour, day, week, month, year;
format(string, sizeof(string), "37272 en tiempo ---> %s.", ConvertToTime(second, minute, hour, day, week, month, year));
SendClientMessage(playerid, -1, string);
Lo que hace el trabajo:
pawn Код:
ConvertToTime(&cts, &ctm=-1, &cth=-1, &ctd=-1, &ctw=-1, &ctmo=-1, &cty=-1)
{
    #define PLUR(%0,%1,%2) (%0),((%0) == 1)?((#%1)):((#%2))
    #define CTM_cty 31536000
    #define CTM_ctmo 2628000
    #define CTM_ctw 604800
    #define CTM_ctd 86400
    #define CTM_cth 3600
    #define CTM_ctm 60
    #define CT(%0) %0 = cts / CTM_%0; cts %= CTM_%0

    new string[128];
    if(cty != -1 && (cts / CTM_cty))
    {
        CT(cty); CT(ctmo); CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, %d %s, %d %s, %d %s, and %d %s", PLUR(cty, "year", "years"), PLUR(ctmo, "month", "months"), PLUR(ctw, "week", "weeks"), \
        PLUR(ctd, "day", "days"), PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctmo != -1 && (cts / CTM_ctmo))
    {
        cty = 0; CT(ctmo); CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, %d %s, %d %s, and %d %s", PLUR(ctmo, "month", "months"), PLUR(ctw, "week", "weeks"), PLUR(ctd, "day", "days"), PLUR(cth, "hour", \
        "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctw != -1 && (cts / CTM_ctw))
    {
        cty = 0; ctmo = 0; CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, %d %s, and %d %s", PLUR(ctw, "week", "weeks"), PLUR(ctd, "day", "days"), PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", \
        "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctd != -1 && (cts / CTM_ctd))
    {
        cty = 0; ctmo = 0; ctw = 0; CT(ctd); CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, %d %s, and %d %s", PLUR(ctd, "day", "days"), PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(cth != -1 && (cts / CTM_cth))
    {
        cty = 0; ctmo = 0; ctw = 0; ctd = 0; CT(cth); CT(ctm);
        format(string, sizeof(string), "%d %s, %d %s, and %d %s", PLUR(cth, "hour", "hours"), PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }
    if(ctm != -1 && (cts / CTM_ctm))
    {
        cty = 0; ctmo = 0; ctw = 0; ctd = 0; cth = 0; CT(ctm);
        format(string, sizeof(string), "%d %s, and %d %s", PLUR(ctm, "minute", "minutes"), PLUR(cts, "second", "seconds"));
        return string;
    }

    cty = 0; ctmo = 0; ctw = 0; ctd = 0; cth = 0; ctm = 0;
    format(string, sizeof(string), "%d %s", PLUR(cts, "second", "seconds"));
    return string;
}
Mi variable es " thablar", como se aplicarнa tu funciуn con la variable? Para q salga: "x" minutos y "x" segundos?
Reply
#5

Quote:
Originally Posted by Choidito
Посмотреть сообщение
Mi variable es " thablar", como se aplicarнa tu funciуn con la variable? Para q salga: "x" minutos y "x" segundos?
Lo metes aqui:
pawn Код:
new second, minute, hour, day, week, month, year;
Segun lo que sea el numero (segundo, minuto, hora, etc) y la funcion hara lo demas, osea si pongo 120 segundos lo convertira en minutos (o hasta donde llega). Si pongo 24 horas, lo convertira en 1 dia y retornara el string, osea, "1 day".

Por ejemplo:
pawn Код:
new second, minute, hour = 24, day, week, month, year;
Output:
pawn Код:
1 day
O:
pawn Код:
variable[playerid] = 24;

new second, minute, hour = variable[playerid], day, week, month, year;
Output:
pawn Код:
1 day
Reply
#6

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
Lo metes aqui:
pawn Код:
new second, minute, hour, day, week, month, year;
Segun lo que sea el numero (segundo, minuto, hora, etc) y la funcion hara lo demas, osea si pongo 120 segundos lo convertira en minutes (o hasta donde llega). Si pongo 24 horas, lo convertira en 1 dia y retornara el string, osea, "1 day".

Por ejemplo:
pawn Код:
new second, minute, hour = 24, day, week, month, year;
Output:
pawn Код:
1 day
O:
pawn Код:
variable[playerid] = 24;

new second, minute, hour = variable[playerid], day, week, month, year;
Output:
pawn Код:
1 day
Solucionado,gracias
Reply
#7

http://forum.sa-mp.com/showpost.php?...&postcount=208
Reply
#8

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Y como se aplicarнa tu cуdigo ?
Reply
#9

pawn Код:
new tiempo_en_segundos = 100800; // Estos segundos son 1 dнa con 4 horas.

printf("Periodo: %s", generarTiempo(tiempo_en_segundos));
Reply
#10

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
pawn Код:
new tiempo_en_segundos = 100800; // Estos segundos son 1 dнa con 4 horas.

printf("Periodo: %s", generarTiempo(tiempo_en_segundos));
Y si quiero convertir minutos a horas, dias, meses, aсos, ...? O dias a meses?

Por ejemplo: Si tengo un sistema que guarda el tiempo que un jugador a pasado online, lo tengo en minutos y lo quiero convertir a ese format.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)