[DUVIDAS]Falcon_Sixe
#1

>>> Duvidas Falcon_Sixe <<<


Bom depois de uma longa tarde de raciocнnio venho pedir arrego e solicitar a ajuda de vocкs..

Se Uma semana tem 604.800 segundos, que sгo equivalentes а 10.080 Minutos ou 168 Horas.

Quantos Milisegundos que se usa no pawno tem uma semana ?? 0.х

----------------------------------------------------------------------------------------------------------------
й possivel savar um SetTimer junto com a conta do player....e como faria isso (Uso Dini) ?? 0.х

----------------------------------------------------------------------------------------------------------------

Explicando melhor eu queria saber quantos milisegundos tem uma semana ( na vida real )..Porque assim quando um player executar uma aзгo iria comeзar um settimer com os milisegundos de uma semana da vida real..entгo ele so poderia executar essa aзгo depois de ter se passado uma semana..e ninguem vai ficar uma semana no servidor sem parar nй...entгo preciso da ajuda de vocкs para saber como faзo isso..salvar o timer ou seja o tempo restante que ainda falta para a semanal, para quando ele entrar no server continuar a contagem do tempo que estava quando saiu do server e so liberar essa aзгo quando o tempo de uma semana(VIDA REAL) se acabar..

Se poderem me ajudar ilhei vos agradecer muito muito mesmo.....

Obrigado !!
Reply
#2

1 semana = 7 dias = 168 horas = 10 080 minutos = 604 800 segundos = 604 800 000 milisegundos
Reply
#3

7 dias » 168 horas » 10080 minutos » 604800 Segundos » 604800017 Milissegundos » 604800016559 Microsegundos
Reply
#4

Mas se for colocar 604 800 000 nгo vai ***** com o server nгo.??..eu ouvi dizer que settimer com muito tempo assim mata o server O.o...

Alguem sabe como salvar ??
Reply
#5

ja tento fazer assim ?

SetTimer(60*1000); //1 hora (isso eh so um exemplo)

multiplicando...

so fazer uns calculos muito doidos ateh da oq tu keh oskaos
Reply
#6

isso й um minuto -..-

1 minuto = 60*1000

10 Minutos = 10*60*1000

60 Minutos = 60*60*1000

1 Dia = 24*60*60*1000

1 Semana = 7*24*60*60*1000 = 604800000

ta?
Reply
#7

Entх eu faзo assim:

pawn Код:
SetTimer(7*24*60*60*1000, false);
E tem como eu salvar dentro da conta do player que uso dini..ai salva o tempo restante quando o player sair e retorna a contar do ponto parado de quando ele saiu ??

eu uso dini para salvar..quando salva o arquivo fica em "Parвmetros de Configuraзгo" !
Reply
#8

cria uma variavel para definir o tempo ... ai a partir dai eu nao sei, tb ja pensei e ja foi pensado nisso aqui no forum ... ai a partir dai pessoas mais nerds facam a magica do pawno ...
Reply
#9

Pois й o Maximo que meu raciocino consegui chegar foi a:

pawn Код:
new ParaLiberar;
new JaPodeusar[MAX_PLAYERS];
Ai na parte que vai comeзar a contar um exemplo usando um menu:
pawn Код:
switch(row)
        {
            case 0:
        {
                SendClientMessage(playerid, cor_cinza,"Agora aguarde uma semana na vida real para usar novamente");
                ParaLiberar = SetTimer("LiberarFuncao",7*24*60*60*1000, false);
                JaPodeusar[playerid] = 0;
                 }
...................
ai depois iria ter a public:
pawn Код:
forward LiberarFuncao(playerid);
public LiberarFuncao(playerid)
{
JaPodeusar[playerid] = 1;
return 1;
}
ai depois usando em um comando por exemplo:
pawn Код:
if(strcmp(cmdtext,"/falconsixe",  true) == 0)
{
if(JaPodeUsar[playerid] == 1)
{
//A Linda Funзгo aqui
}
else
{
SendClientMessage(playerid, cor_rosa, "Vocк ainda nгo pode usar isto, espere a semana acabar");
}
return 1;
}
Ai travei e nгo conssegui mais.. ja tentei salvar o tempo que vai restar mais ainda nгo deu... Alguma pessoas abeзoada pela santa sabedoria do pawno pode me ajudar ??
Reply
#10

Bom, mas serб que ao dar gmx, o settimer nao iria reiniciar?
Reply
#11

Exatamente por isso. porque ao dar gmx ou o player sair do servidor o timer iria se reiniciar por isso eu quero saber se tem como salvar o tempo que ainda resta na conta de cada player. assim quando ele voltar ao servidor ira continuar a contagem da hora que ele saiu do server....e se tiver como fazer isso como farei porque ja sгo 3 dias seguidos tentando fazer isso e nada de resultado '-'
Reply
#12

tem algum timer de 1000 em seu server? se tiver eu resolvo ja..
Reply
#13

Sim deve ter uns 9 timer deste tipo e mais que ainda ira vir muitos deles !!

**Sinto cheiro de Esperanзa**
Reply
#14

entao faz assim

new playerOnlineTime[MAX_PLAYERS]; // No topo...

em um dos timers usa

pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
                playerOnlineTime[i]++;
            if(floatround(playerOnlineTime[i] / 60) >= 10080)
            {
                japodeusar[i] = 1;
                playerOnlineTime[i] = 0;
            }
        }
isso ira fazer assim a cada segundo ele ira adicionar 1 a variavel... e esta funзгo:

floatround(playerOnlineTime[i] / 60) ira calcular minutos ... quer dizer que voce ira ter de guardar a variavel playerOnlineTime

do jogador sempre que sair... e quando a variavel com a funзгo chegar a 10080 = 7 Dias ira executar como pode ver...
Reply
#15

deixa eu ver se entendi direito:

No Topo do GameMode:
pawn Код:
new playerOnlineTime[MAX_PLAYERS];
new Japodeusar[MAX_PLAYERS];
Ai em OnGameModeIniti vai ter isso:
pawn Код:
SetTimer("LiberarFuncao", 1000, false);
//nгo entendi oque faзo aqui '-'
Ai no caso para salvar em onplayerdisconnect junto com o sistema para salvar eu coloco:
pawn Код:
dini_IntSet(file,"playerOnlineTime",playerOnlineTime[playerid]);
E no OnPlayerConnect junto com o sistema para salvar eu coloco:
pawn Код:
playerOnlineTime[playerid] = dini_Int(file,"playerOnlineTime");
Oque eu entendi foi isso..nгo sei se й o certo.. esta correto ??
Reply
#16

correcticimo mas mete depois do players desconnectar depois de ter gravado a variavel a 0

esse timer depois de ter o numero completo todo ira fazer a funзao..

ke a funзгo й esta

pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
                playerOnlineTime[i]++;
            if(floatround(playerOnlineTime[i] / 60) >= 10080)
            {
                japodeusar[i] = 1;
                playerOnlineTime[i] = 0;
            }
        }
mete isso dentro do timer...
Reply
#17

Ok. ao vocк dizer para colocar isto dentro do timer vocк quer dizer assim:
pawn Код:
public OnGameModeInit()
{
SetTimer("LiberarFuncao", 1000, false);
return 1;
}
E na Public que vai chamar:

pawn Код:
forward LiberarFuncao(playerid);
public LiberarFuncao(playerid);
{
    for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
                playerOnlineTime[i]++;
            if(floatround(playerOnlineTime[i] / 60) >= 10080)
            {
                japodeusar[i] = 1;
                playerOnlineTime[i] = 0;
            }
        }
    return 1;
}

Seria isto ?? Derrepente esqueci de tudo '-'
Reply
#18

sim so :

SetTimer("LiberarFuncao", 1000, true);
Reply
#19

Ok compilo. Mas agora parei para penssar. se eu colocar em OnGameModeIniti sempre vai estar contando mesmo se ele nгo tiver logado... ou seja.

eu deveria colocar o timer dentro da coisa que eu quero exemplo:

pawn Код:
if(strcmp(cmdtext,"/falconsixe", true) == 0)
{
if(japodeusar[playerid] == 1)
{
SetTimer("LiberarFuncao", 1000, true);
SendClientMessage(playerid, cor, "agora espere o resto da semana para usar novamente");
}
else
{
SendClientMessage(playerid, cor,"voce nao pode usar isto porque ainda nao tem uma semana");
}
return 1;
}
E criaria a public tambem normalmente como antes...outra coisa na hora que for para salvar na conta dele..eu irei usar o playerOnlineTime correto

entao se eu usar em um comando ou seja como for sempre ira dar certo nй ??
E como eu posso alterar o tempo disto ?? exemplo ai esta para uma semana caso que queira que ele use novamente somente depois de 36 horas por exemplo onde eu iria alterar ??
Reply
#20

esse comando nao devera ser utilizado pois o timer ira tar sempre em funзгo... so pode e fazer tipo assim

igual mas

pawn Код:
forward LiberarFuncao();
public LiberarFuncao();
{
    for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i) && timerf[i] == 1)
                playerOnlineTime[i]++;
            if(floatround(playerOnlineTime[i] / 60) >= 10080 && timerf[i] == 1)
            {
                japodeusar[i] = 1;
                playerOnlineTime[i] = 0;
            }
        }
    return 1;
}
e no comando

pawn Код:
if(strcmp(cmdtext,"/falconsixe", true) == 0)
{
if(japodeusar[playerid] == 1)
{
timerf[playerid] = 1;
SendClientMessage(playerid, cor, "agora espere o resto da semana para usar novamente");
}
else
{
SendClientMessage(playerid, cor,"voce nao pode usar isto porque ainda nao tem uma semana");
}
return 1;
}
e se kiser remover basta por zero..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)