Bug script tours par tours - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Bug script tours par tours (/showthread.php?tid=5002) Pages :
1
2
|
Bug script tours par tours - vulcain - 21-07-2010 RE: Bug script tours par tours - Th3kid - 22-07-2010 Heu ... tu pourrais nous en dire plus sur le problèmes ? Quand je test ton code je vois : Code : Vous venez de recevoir 7540000 et 7290010. Chose qui me semble plus ou moins logique ... Qu'est ce qui ne se passe pas ? Le code fonctionne parfaitement ... Après la mise à jour dans la base de donnée ne correspond à rien, il y a tjs un apport par rapport aux 45dernières minutes calculée au début et non par apport par rapport au vrai temps réel! Explique plus en détail ce que tu veux faire, je crois que ca sera plus simple RE: Bug script tours par tours - vulcain - 22-07-2010 Voilà le bug, comme tu l'as dit "Vous venez de recevoir 7540000 et 7290010" alors que ce message là doit s'afficher toutes les 45 minutes et doit afficher "Vous venez de recevoir 50 000 gold et 1 tour". Et je veux que toutes les 45 minutes ça se rajoute par exemple à la somme actuelle du joueur, si le joueur possède 100 000 gold alors il en aura 150 000, et pareil pour le tour d'attaque. Voici le petit code qui me permet d'afficher les ressources reçus : Code PHP :
RE: Bug script tours par tours - Globe - 22-07-2010 50000 ressources toutes les 45 minutes. Donc 2700 secondes dans 45 minutes donc 50000 / 2700 pour avoir ta production par seconde. time() - 2700, donc tu obtiens le timestamp d'il y à 45 minutes. Si tu veux que la mise à jour ne s'opère que toutes les 45 minutes et pas en continu tu dois vérifier que cela fait plus de 2700 secondes que la dernière maj à été faite donc en gros. Code PHP :
Tout simplement non ? Enfin possible que je me gourre complètement je fatigue sévère. RE: Bug script tours par tours - vulcain - 22-07-2010 Merci à toi, mais ça ne fonctionne toujours pas :pleure2: ça m'affiche toujours "Vous venez de recevoir 7540000 et 7290010" et mon code modifié : Code PHP :
RE: Bug script tours par tours - Globe - 22-07-2010 Code PHP :
Tu as réfléchi avant de copier ce que j'ai mis ? Dans ta table tu as bien un champs timestamp qui stocke le time() ? Là logiquement le code exact que je t'ai mis ici t'affiches "Vous avez gagné 50000 or et 1 tour." mais il est absolument pas interactif vu que tu définis le temps écoulé en variable et pas en le récupérant dans ta base de données. RE: Bug script tours par tours - vulcain - 22-07-2010 Oui, j'ai crée un timestamp => `timestamp` time NOT NULL, Dans ma table, le timestamp reste à zéro :/ et ça me met constamment "Vous avez gagné 50000 or et 1 tour." RE: Bug script tours par tours - Globe - 22-07-2010 Mais c'est normal dans le script tu initialise la variable du timestamp comme étant le timestamp d'il y à 45 minutes. Lis le code s'il te plaît ça ne sert à rien que je t'explique sinon. En gros tu vas récupérer l'ancien timestamp dans la bdd et stocker ton timestamp actuel à chaque fois que tu rafraichis la page, le script vérifie si la différence entre les deux est supérieure ou égale à 2700, si c'est le cas il t'affiche le message. Tu peux rajouter un texte utilisant les données de ta table pour écrire "Vous avez gagné 50 000 d'or et 1 tour. Vous possédez désormais 300 000 or et 11 tours." si on part du principe que tu avais déjà 250000 d'or et 10 tours. Mais utilises ta base de données, ton script est basé sur des variables, est-ce que tu comprends ce que tu codes ? Je ne veux pas être désobligeant mais j'ai un peu l'impression de parler à un mur. Edit: J'ai fait un script à la va vite surement truffé d'erreurs. Définis ton timestamp dans ta table avant de l'executer. Code PHP :
RE: Bug script tours par tours - vulcain - 22-07-2010 Ok ok Donc si j'ai bien compris, il faut que je récupère l'ancien timestamp est au bout de 45 minutes prendre le nouveau ? Voilà mon nouveau script : Code PHP :
Maintenant j'ai plus le message que ça m'affichai tout le temps. Mais il ne se passe toujours rien RE: Bug script tours par tours - Globe - 22-07-2010 timestamp valeur en secondes depuis une certaine date (lancement d'unix je me rappelle plus...), donc il est en constante évolution, donc tu stockes le timestamp dans ta table, donc t'as une valeur correspondant à un moment antérieur en secondes. le timestamp actuel est donc supérieur à celui stocké donc tu t'en sers pour déterminer combien de secondes se sont écoulées depuis la dernière fois ou ton code à été executé. Toi tu veux vérifier si 45 minutes (2700 secondes) se sont écoulées. Donc tu vas vérifier si le nouveau timestamp est supérieur ou égal à l'ancien timestamp additionné de 2700. Si c'est le cas tu vas lancer ton script donc faire une mise à jour de ta table pour changer ta quantité d'or et de tours. En meme temps tu vas redéfinir le timestamp stocké. Sauf que prenons un cas pratique : Cela fait 50 minutes que tu n'as pas executé le script donc 3000 secondes, il serait injuste que le mec ai à attendre 45 minutes de nouveau il devrait n'avoir à attendre que 40 minutes, donc le nouveau timestamp que tu vas stocker va etre égal au timestamp actuel - la différence de temps. Donc timestamp ancien + 2700 logiquement (je sais pas si j'avais fait ça avant je m'embrouille). La mise à jour de la table n'utiliseras alors pas le timestamp actuel. Je m'embrouille pour rien j'ai un peu de mal, enfin bref j'essaye de t'expliquer le fonctionnement mais va falloir y réfléchir un peu par toi même si tu veux comprendre. |