Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

augustoclaro

Counter

Recommended Posts

Olá! eu estou querendo fazer um counter para quando acabar este counter, mesmo o user não estando online, a função ocorra. Eu conheço dois jeitos:

 

1 - Faço um counter em JS e quando ele zerar vai pra uma págiona que acontece a função, o problema é que se o usuário estiver off só vai acontecer qndo ele entrar

2 - Agendar ações no servidor.

 

Há outra maneira? Porque a primeira não serve, e a segunda não posso pois estou desenvolvendo localmente e ainda não tenho servidor para o projeto.

 

O que fazer? Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, quando preciso executar páginas onde estas podem não ser acedidas como eu queria, o que faço é mesmo pelo agenda de tarefas do servidor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz o contador usando o global.asa

Compartilhar este post


Link para o post
Compartilhar em outros sites

lembrando que vários usuários podem iniciar vários counters ao msmo tempo

 

qual seria a finalidade, onde ele pode iniciar vários counters ao msmo tempo ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

é um jogo. o mesmo que eu tinha o problema do interpreter.

é o seguinte, eles podem iniciar contruções no jogo, e eu quero que isso demore x minutos. E isso inicia um counter e qndo este counter acabar, a contrução fica pronta.

mas não tenho servidor no momento pra usar as tarefas agendadas, e com javascript a função só roda qndo o player entrar novamnete no jogo, e a função tem que ocorrer assim que o counter acabar.

 

=D

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, tipo o jogo battleknight, onde você tem um tempo, que decresce, ou seja, um temporizador

dependendo das missões...

 

voce pode usar a função datediff ou dateadd para fazer operações de tempo (hora,min,seg) e assim que alcançar o tempo, você executa sua operação

Compartilhar este post


Link para o post
Compartilhar em outros sites

grava o a hora do inicio da construção num bd, e ao visitar novamente a pagina, um script compara o tempo atual com o gravado no bd, se estiver dentro do tempo, nao faz nada, e se já tiver passado, faz alguma coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por exemplo no battleknight, você inicia a missão e mesmo, que não esteja online, os minutos da missão vão decrescendo, se entrar novamente antes da missão terminar, você verá que ainda, não pode iniciar outra missão, pois precisa finalizar a atual...

você terá que usar algo como session ou cookies, para saber sobre o que esta acontecendo com o user, olha este exemplo de contagem regressiva usando cookies

 

<%
strdata_atual = now
strdata_final = contagem("datafinal")

strminutos = DateDiff("n", strdata_atual, strdata_final)
strsegundos = DateDiff("s", strdata_atual, strdata_final)
%>
<script language="javaScript">
var horario_antigo = getCookie("horario_antigo").split(":");
var min, seg;

if (horario_antigo)
{
min = horario_antigo[0];
seg = horario_antigo[1];
}
else
{
min = <%= strminutos %>;
seg = 0
}

function relogio(){
if((min > 0) || (seg > 0)){
if(seg == 0){
seg = 59;
min = min - 1
}
else{
seg = seg - 1;
}

if(min.toString().length == 1){
min = "0" + min;
}
if(seg.toString().length == 1){
seg = "0" + seg;
}

document.getElementById('spanRelogio').innerHTML = min + ":" + seg;
setTimeout('relogio()', 1000);
}
else{
document.getElementById('spanRelogio').innerHTML = "A contagem terminou";
parent.window.location="atualiza_contagem.asp";
}
}

function setCookie(cookie_name, cookie_value, expire_in_days)
{
var cookie_expire = "";

if (expire_in_days != null)
{
var expire = new Date();
expire.setTime(expire.getTime() + 1000*60*60*24*parseInt(expire_in_days));
cookie_expire = "; expires=" + expire.toGMTString();
}

document.cookie = escape(cookie_name) + "=" + escape(cookie_value) + cookie_expire;
}

function getCookie(cookie_name)
{
if (!document.cookie.match(eval("/" + escape(cookie_name) + "=/")))
{
return false;
}

return unescape(document.cookie.replace(eval("/^.*?" + escape(cookie_name) + "=([^\\s;]*).*$/"), "$1"));
}
</script>
<body bgcolor="#ffffff" onload="relogio()" onbeforeunload="setCookie('horario_antigo', document.getElementById('spanRelogio').innerHTML, 1)">
<FONT face=verdana color=#1e90ff size=2><B>
<span id="spanRelogio"></span></FONT>

tenho este outro contador, que sempre uso...

 

ar YY = 2007;
var MM = 12;
var DD = 31;
var HH = 23;
var MI = 59;
var SS = 59;

function atualizaContador() {
  var hoje = new Date();
  var futuro = new Date(YY,MM-1,DD,HH,MI,SS);

  var ss = parseInt((futuro - hoje) / 1000);
  var mm = parseInt(ss / 60);
  var hh = parseInt(mm / 60);
  var dd = parseInt(hh / 24);

  ss = ss - (mm * 60);
  mm = mm - (hh * 60);
  hh = hh - (dd * 24);

  var faltam = '';
  faltam += (dd && dd > 1) ? dd+' dias, ' : (dd==1 ? '1 dia, ' : '');
  faltam += (toString(hh).length) ? hh+' hr, ' : '';
  faltam += (toString(mm).length) ? mm+' min e ' : '';
  faltam += ss+' seg';

  if (dd+hh+mm+ss > 0) {
    document.getElementById('contador').innerHTML = faltam;
    setTimeout(atualizaContador,1000);
  } else {
    document.getElementById('contador').innerHTML = 'CHEGOU!!!!';
    setTimeout(atualizaContador,1000);
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas veja bem, vamos supor que o contador seja para melhorar alguma coisa que aumenta a produção de recursos. Se quando terminar o counter o usuário não estive online, se ele n estiver na página pro javascript puxar a função, a produção d recursos só vai melhorar qndo o usuário entrar, o javascript ver que acabou o tempo, e rodar a função. isso daria desvantagem, pois o tempo entre o counter acabar e ele entrar de novo ele ganharia o mesmo tanto de recursos de seele n tivesse melhorado a produção, sacou? =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.