si t'as production est "fixe" (au sens ou elle est pas aléatoire, mais qu'elle se fait à un rythme régulier)
tu dois plutot stocker le stock s à un temps t (donc 2 champs).
et ensuite tu calculeras ton stock réel en ajoutant au stock initial ce qui a été produit entre temps. (tu t'amuse pas à faire la mise à jour du stock s et du temps t dans la bdd sans arrêt^^; tu ne le fais que quand c'est nécessaire: dépense de ressources pour un achat, changement du rythme de production du fait construction/destruction batiment, etc... ).
l'avantage du système est simple; tu fais une requête à la bdd à la connection pour récupérer s et t (et à 2-3 autre moment sensible), idem pour la production. que tu stock ensuite en session.
après à chaque affichage tu fais le calcul temps réel du stock courant = s + ( now - t) * production.
---
edit: moi pas lu correctement question >_<; mais le concept expliqué reste vrai.
>> dans ton code y a un truc sur; c'est que tu as un floor () d'un truc divisé par 3600... autant dire que si tu as pas assez de broduction (niveau carrière et autre truc), le floor va faire que tu auras: 0 * multiplié par temps = 0... donc ta produc vaudra toujours 0.
c'est pas un problème de code mais de conception de tes formules :p
tu dois plutot stocker le stock s à un temps t (donc 2 champs).
et ensuite tu calculeras ton stock réel en ajoutant au stock initial ce qui a été produit entre temps. (tu t'amuse pas à faire la mise à jour du stock s et du temps t dans la bdd sans arrêt^^; tu ne le fais que quand c'est nécessaire: dépense de ressources pour un achat, changement du rythme de production du fait construction/destruction batiment, etc... ).
l'avantage du système est simple; tu fais une requête à la bdd à la connection pour récupérer s et t (et à 2-3 autre moment sensible), idem pour la production. que tu stock ensuite en session.
après à chaque affichage tu fais le calcul temps réel du stock courant = s + ( now - t) * production.
---
edit: moi pas lu correctement question >_<; mais le concept expliqué reste vrai.
>> dans ton code y a un truc sur; c'est que tu as un floor () d'un truc divisé par 3600... autant dire que si tu as pas assez de broduction (niveau carrière et autre truc), le floor va faire que tu auras: 0 * multiplié par temps = 0... donc ta produc vaudra toujours 0.
c'est pas un problème de code mais de conception de tes formules :p