Optimizaciуn
#1

Hola, tengo 6 variables: segundos, minutos, horas, dнas, meses & anios, quiero cargar datos y retornar a un texto algo asн:

pawn Код:
Tiempo en el servidor: minutos/segundos/horas/dнas/meses/aсos.
El problema es que solo quiero que muestre las variables que no estбn en '0' ejemplo:

pawn Код:
1 segundo
varios segundos

1 minuto
1 minuto 1 segundo
1 minuto varios segundos
varios minutos
varios minutos 1 segundo
varios minutos varios segundos

1 hora
1 hora 1 segundo
1 hora varios segundos
1 hora 1 minuto
1 hora 1 minuto 1 segundo
1 hora 1 minuto varios segundos
1 hora varios minutos
1 hora varios minutos 1 segundo
1 hora varios minutos varios segundos

1 dнa
1 dнa 1 segundo
1 dнa varios segundos
1 dнa 1 minuto
1 dнa 1 minuto 1 segundo
1 dнa 1 minuto varios segundos
1 dнa varios minutos
1 dнa varios minutos 1 segundo
1 dнa varios minutos varios segundos
1 dнa 1 hora
1 dнa 1 hora 1 segundo
1 dнa 1 hora varios segundos
1 dнa 1 hora 1 minuto
1 dнa 1 hora 1 minuto 1 segundo
1 dнa 1 hora 1 minuto varios segundos
1 dнa 1 hora varios minutos
1 dнa 1 hora varios minutos 1 segundo
1 dнa 1 hora varios minutos varios segundos

1 mes
1 mes 1 segundo
1 mes varios segundos
1 mes 1 minuto
1 mes 1 minuto 1 segundo
1 mes varios minutos
1 mes varios minutos 1 segundo
1 mes varios minutos varios segundos
1 mes 1 hora
1 mes 1 hora 1 segundo
1 mes 1 hora varios segundos
1 mes 1 hora 1 minuto
1 mes 1 hora 1 minuto 1 segundo
1 mes 1 hora 1 minuto varios segundos
1 mes 1 hora varios minutos
1 mes 1 hora varios minutos 1 segundo
1 mes 1 hora varios minutos varios segundos
1 mes 1 hora
1 mes 1 hora 1 segundo
1 mes 1 hora varios segundos
1 mes 1 hora 1 minuto
1 mes 1 hora 1 minuto 1 segundo
1 mes 1 hora 1 minuto varios segundos
1 mes 1 hora varios minutos
1 mes 1 hora varios minutos 1 segundo
1 mes 1 hora varios minutos varios segundos
1 mes 1 dia ..
Hice una funciуn pero creo serб algo lenta y me gustarнa saber como hacerlo mбs corto ya que no se me ocurre otra forma de hacerlo, no quiero includes, no quiero nada, quiero hacerlo con las funciones nativas de sa-mp.

Este es mi cуdigo, aъn le falta mucho y ya ocupa un gran espacio en mi modo de juego.

PHP код:
Funcion:algo(playerid)
{
    if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 minuto";
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 minuto 1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 minuto %02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d minutos"gInfo[playerid][minutos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d minutos 1 segundo"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d minutos %02d segundos"gInfo[playerid][minutos], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 hora";
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 hora 1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 hora %02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 hora 1 minuto";
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 hora 1 minuto 1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 hora 1 minuto %02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos]  >= && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 hora %02d minutos %02d  segundos"gInfo[playerid][minutos], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] >= && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d horas"gInfo[playerid][horas]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] >= && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d horas 1 segundo"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] >= && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d horas %02d segundos"gInfo[playerid][horas]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 dнa";
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 dнa 1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa %02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 dнa 1 minuto";
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 dнa 1 minuto 1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa 1 minuto %02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa %02d minutos"gInfo[playerid][minutos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa %02d minutos 1 segundo"gInfo[playerid][minutos], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa %02d minutos %02d segundos"gInfo[playerid][minutos], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 dнa 1 hora";
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 dнa 1 hora 1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa 1 hora %02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa 1 hora 1 minuto"gInfo[playerid][minutos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
string "1 dнa 1 hora 1 minuto 1 segundo";
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa 1 hora 1 minuto %02d segundos"gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa 1 hora %02d minutos"gInfo[playerid][minutos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa 1 hora %02d minutos 1 segundo"gInfo[playerid][minutos]);
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa 1 hora %02d minutos %02d segundos"gInfo[playerid][minutos], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] >= && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa %02d horas"gInfo[playerid][horas]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] >= && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa %02d horas 1 segundo"gInfo[playerid][horas]);
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] >= && gInfo[playerid][dias] < && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "1 dнa %02d horas %02d segundos"gInfo[playerid][horas], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas"gInfo[playerid][dias]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas 1 segundo"gInfo[playerid][dias]);
    }
    else if(
gInfo[playerid][segundos] >= 2  && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas %02d segundos"gInfo[playerid][dias], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas 1 minuto"gInfo[playerid][dias]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas %02d minutos 1 segundo"gInfo[playerid][dias], gInfo[playerid][minutos]);
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] >= && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas %02d minutos %02d segundos"gInfo[playerid][dias], gInfo[playerid][minutos], gInfo[playerid][segundos]);
    }
    else if(
gInfo[playerid][segundos] < && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas 1 hora"gInfo[playerid][dias]);
    }
    else if(
gInfo[playerid][segundos] < 2  && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas 1 hora 1 segundo"gInfo[playerid][dias]);
    }
    else if(
gInfo[playerid][segundos] >= && gInfo[playerid][minutos] < && gInfo[playerid][horas] < && gInfo[playerid][dias] >= && gInfo[playerid][meses] < && gInfo[playerid][anios] < 1)
    {
        
format(stringsizeof(string), "%02d dнas 1 hora %02d segundos"gInfo[playerid][dias], gInfo[playerid][segundos]);
    }
    return 
string;

Reply
#2

їPara que tantas lineas al pedo? Usa la funciуn GetDate.
https://sampwiki.blast.hk/wiki/Getdate
Reply
#3

Quote:
Originally Posted by xTexTx
Посмотреть сообщение
їPara que tantas lineas al pedo? Usa la funciуn GetDate.
https://sampwiki.blast.hk/wiki/Getdate
Quote:
Originally Posted by Yo
Посмотреть сообщение
pawn Код:
1 segundo
varios segundos

1 minuto
1 minuto 1 segundo
1 minuto varios segundos
varios minutos
varios minutos 1 segundo
varios minutos varios segundos

1 hora
1 hora 1 segundo
1 hora varios segundos
1 hora 1 minuto
1 hora 1 minuto 1 segundo
1 hora 1 minuto varios segundos
1 hora varios minutos
1 hora varios minutos 1 segundo
1 hora varios minutos varios segundos

1 dнa
1 dнa 1 segundo
1 dнa varios segundos
1 dнa 1 minuto
1 dнa 1 minuto 1 segundo
1 dнa 1 minuto varios segundos
1 dнa varios minutos
1 dнa varios minutos 1 segundo
1 dнa varios minutos varios segundos
1 dнa 1 hora
1 dнa 1 hora 1 segundo
1 dнa 1 hora varios segundos
1 dнa 1 hora 1 minuto
1 dнa 1 hora 1 minuto 1 segundo
1 dнa 1 hora 1 minuto varios segundos
1 dнa 1 hora varios minutos
1 dнa 1 hora varios minutos 1 segundo
1 dнa 1 hora varios minutos varios segundos

1 mes
1 mes 1 segundo
1 mes varios segundos
1 mes 1 minuto
1 mes 1 minuto 1 segundo
1 mes varios minutos
1 mes varios minutos 1 segundo
1 mes varios minutos varios segundos
1 mes 1 hora
1 mes 1 hora 1 segundo
1 mes 1 hora varios segundos
1 mes 1 hora 1 minuto
1 mes 1 hora 1 minuto 1 segundo
1 mes 1 hora 1 minuto varios segundos
1 mes 1 hora varios minutos
1 mes 1 hora varios minutos 1 segundo
1 mes 1 hora varios minutos varios segundos
1 mes 1 hora
1 mes 1 hora 1 segundo
1 mes 1 hora varios segundos
1 mes 1 hora 1 minuto
1 mes 1 hora 1 minuto 1 segundo
1 mes 1 hora 1 minuto varios segundos
1 mes 1 hora varios minutos
1 mes 1 hora varios minutos 1 segundo
1 mes 1 hora varios minutos varios segundos
1 mes 1 dia ..
Sн uso esa funciуn al segundo/minuto/hora de haber empezado a sumar a las variables; no estarб al pedo.
Reply
#4

PHP код:
stock GetDuration(time)
{
    new
        
str[32];
    if (
time || time == gettime()) {
        
format(strsizeof(str), "Nunca");
        return 
str;
    }
    else if (
time 60)
        
format(strsizeof(str), "%d segundos"time);
    else if (
time >= && time 60)
        
format(strsizeof(str), "%d segundos"time);
    else if (
time >= 60 && time 3600)
        
format(strsizeof(str), (time >= 120) ? ("%d minutos") : ("%d minuto"), time 60);
    else if (
time >= 3600 && time 86400)
        
format(strsizeof(str), (time >= 7200) ? ("%d horas") : ("%d hora"), time 3600);
    else if (
time >= 86400 && time 2592000)
         
format(strsizeof(str), (time >= 172800) ? ("%d dнas") : ("%d dнa"), time 86400);
    else if (
time >= 2592000 && time 31536000)
         
format(strsizeof(str), (time >= 5184000) ? ("%d meses") : ("%d mes"), time 2592000);
    else if (
time >= 31536000)
        
format(strsizeof(str), (time >= 63072000) ? ("%d aсos") : ("%d aсo"), time 31536000);
    return 
str;

VARIABLE = gettime();

Esta funciуn usarнa gettime - (VARIABLE)

No es necesario usar tantas variables, si las vas a usar para este caso entonces bastarнa con muy poco cуdigo y no serнa necesario realizar tanto cбlculo.

La funciуn esta lo que hace es obtener lo que falta para llegar a tal hora en formato hora:minuto:segundosdia:meses:aсos:
Reply
#5

Utiliza esto. Y dime donde o a que le llamas "optimizaciуn"...

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


Forum Jump:


Users browsing this thread: 1 Guest(s)