Jump to content

Sistema de produção de recursos


rikardo_92
 Share

Recommended Posts

Eu ando para aqui a fazer um jogo (para passar o tempo) e queria aplicar um sistema de produção de recursos. Algo que fizesse as contas à hora mas que sempre que actualizasse a página os recursos devidos estavam lá.

Eu tenho 500 ferro. Por hora ganho 60 ferro. Assim por minuto teria que ganhar 1 de ferro.

Eu pretendia um sistema que sempre que eu actualizasse a página estava lá mais 1.

500

*1 min depois actualizava*

501

*1 min depois actualizava*

502

Mas não faço ideia de como se faz uma coisa destas. Isto é cronjob?

Obrigado 👍

Link to comment
Share on other sites

Eu ando para aqui a fazer um jogo (para passar o tempo) e queria aplicar um sistema de produção de recursos. Algo que fizesse as contas à hora mas que sempre que actualizasse a página os recursos devidos estavam lá.

Eu tenho 500 ferro. Por hora ganho 60 ferro. Assim por minuto teria que ganhar 1 de ferro.

Eu pretendia um sistema que sempre que eu actualizasse a página estava lá mais 1.

500

*1 min depois actualizava*

501

*1 min depois actualizava*

502

Mas não faço ideia de como se faz uma coisa destas. Isto é cronjob?

Obrigado 👍

Pode ser, pode não ser. Há várias maneiras do gato ir às filhoses...

Tens isso guardado numa BD, certo? Eu, pessoalmente, preferia fazer as contas on-the-fly e guardar o acumulado em cada operação.

Por exemplo, imagina que um tipo quando se regista tem 10.000 dos tais recursos. Isso fica na BD, na DATETIME X, 10.000 recursos. A cada página carregada, o que fazes é ir buscar a data e a quantidade, e somares a essa quantidade os recursos ganhos por minuto desde a data. Depois, quando se gastam recursos, voltas a guardar na BD o DATETIME da operação e os recursos actuais.

Ex. (ganhos por minuto: 10):

Registo:

Na BD: 2010-06-22 22:24:00, 10.000

Apresentado ao user: 10.000 recursos

Passado algum tempo (por exemplo, à meia noite):

Na BD: 2010-06-22 22:24:00, 10.000

Apresentado ao user: 10.000 + (10 * 36) = 10.360

O utilizador gasta 5.000 recursos às 9 da manhã do dia seguinte:

Na BD: 2010-06-22 22:24:00, 10.000

Actualizar BD: 2010-06-23 09:00:00, (10.000 + (10 * 576)) - 5.000

Apresentado ao user: 10.760

Percebes?

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

Hm... percebi. Nunca tinha pensado nisso assim =/

Então eu vou ter uma função que faz a actualização dos recursos e essa função tem que ser chamada em cada clique que o user faz. Faz sentido

Mantenham isto aberto. Depois se precisar de mais ajuda pergunto aqui ^^

Obrigado 👍

Link to comment
Share on other sites

Terás de actualizar não só pelos cliques do utilizador como de ataques de outros jogador, reconhecimento dos recursos por outros jogadores, etc..

Será bom implementares com JavaScript uma forma fiel de actualizar o valor de recursos para o utilizador não refrescar muitas vezes só para ver os recursos. Imagina que estão uns 100 jogadores a refrescar para actualizar só os recursos.

Link to comment
Share on other sites

scorch, ele não precisa de ajax é mais simples apenas fazer um setTimeout ou um setInterval com o tempo em que dá por exemplo 1 recurso, do que estar sempre a ir buscar com ajax, pois definias esse interval ou timeout com php. na minha opinião é o mais fácil, actualizando só mesmo quando existem acções

...

Link to comment
Share on other sites

scorch, ele não precisa de ajax é mais simples apenas fazer um setTimeout ou um setInterval com o tempo em que dá por exemplo 1 recurso, do que estar sempre a ir buscar com ajax, pois definias esse interval ou timeout com php. na minha opinião é o mais fácil, actualizando só mesmo quando existem acções

Mas a produção por X tempo vai variar. Nesse caso teria que ir buscar o tempo actual com PHP à DB para depois dizer ao JS. Qual se torna mais fácil?

Link to comment
Share on other sites

Eu tenho isto:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#navigation').load("menu.php");
}, 3000); 

</script>

Quando abro a página o menu.php está lá mas quando faz o refresh do div a sessão perde-se e já não mostra os recursos (que são obtidos pela sessão).

Ajuda sff 👍

Link to comment
Share on other sites

A fazer pelo que tu dizes:

<script type="text/JavaScript">

var food = (<?php echo $database->resources['food']; ?>)
var food_perhour = (<?php echo $database->resources['food_perhour']; ?>/60)/60

var foodnew = Math.round(food + food_perhour);

</script>

Ele faz bem as contas, só tem um problema. A primeira actualização de página ele soma 1 de recurso (quando não é) e só à segunda é que o valor vai coincidir com o da DB.

Link to comment
Share on other sites

Isto resultou. Obrigado.

<script type="text/JavaScript">

var food = (<?php echo $database->resources['food']; ?>)
var food_persecond = ((<?php echo $database->resources['food_perhour']; ?>)/60)/60

var foodnew;

var timer=0;
var t;

function updateResources() {

var foodnew = Math.round(food + (food_persecond * timer));
document.getElementById('food').innerHTML = foodnew;

timer=timer+1;

t=setTimeout("updateResources()", 1000);
}

</script> 

EDIT: Continua com um problema. Só ao segundo refresh é que tem o valor correcto, o primeiro é sempre abaixo do real :s

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.