vue
Courroux Messages : 2215 | Salut, bon j'ai un projet en cours et j'ai commencé un peu le développement de celui-ci. Il s'agit d'un jeu en ligne et j'ai une ébauche de la construction des bâtiments. Cependant, je sèche sur le fait qu'il faille intégrer un compte à rebours avant que la requête qui ajoute le bâtiment au joueur ne s'effectue. En fait, c'est la première fois que je développe ce type de système et je ne sais même pas comment organiser ma BDD. Actuellement, j'ai une table avec toutes les infos sur les bâtiments dont le temps requis pour la construction que j'interprète en seconde. J'ai une deuxième table avec la liste des bâtiments construits et leur niveau. Voilà j'aimerai si possible savoir comment est ce que vous imagineriez ce système de compte à rebours et ce qu'il faudrait que j'ajoute en fonction dans la base de donnée. |
jeudi 4 octobre 2012
| |
Kearz Messages : 261 | Moi j'aurais une table qui enregistre l'heure du passage de niveau du bâtiment. Et donc par calcul t'as l'heure de fin. Après si tu veux afficher au joueur un décompte en même temps ça semble plus complexe. Par contre si t'affiche juste 'bâtiment construit à 19h' c'est largement suffisant. |
jeudi 4 octobre 2012 (Dernière édition lundi 8 octobre 2012)
| |
Courroux Messages : 2215 | Le problème c'est qu'avec ton système, la requête ne s'exécutera que si la personne viendra sur la page. Il faudra donc qu'elle revienne deux fois: -Une fois avant afin d'ajouter le bâtiment à la queue -Et une autre fois afin que le script vérifie si le temps requis a bien été respecté pour la construction et donc lancer la requête qui ajoute le bâtiment au joueur. Il faudrait donc que ça s'exécute automatiquement, j'avais pensé à Cron mais bon, je sais pas si c'est adapté à ça, si ça sert vraiment à ça et puis j'espérais ne jamais l'utiliser étant donné que je ne sais pas comment le manipuler, mais avec un jeu en ligne, ça semble inévitable. Bref, tu pourrais juste un peu éclaircir ta démarche afin que je sache vers quoi m'orienter ? Merci encore |
vendredi 5 octobre 2012
| |
Anonyme Messages : 0 | Bonjour, D'après ce que j'ai compris, je crois que tu as mal compris ce que voulait dire Kearz. Pour savoir si le bâtiment est finis d'être construit, il suffit de comparer l'heure de fin de construction (enregistrée lors du début de la construction - je trouve ça mieux que l'heure de début) et l'heure actuelle. edit : Moi j'aurais une table qui enregistre leur du passage de niveau du bâtiment. C'est "l'heure", pas "leur". (passage de niveau ? Je croyais qu'on parlait de construction. M'enfin, c'est la même chose) Sinon, pour ce qui est d'afficher un compte à rebours, un peu de js suffirait. |
vendredi 5 octobre 2012 (Dernière édition vendredi 5 octobre 2012)
| |
Courroux Messages : 2215 | Ouais en fait, j'ai pas du tout compris Je ré-explique: En fait, je voudrais que lorsque le joueur arrive sur la page index.php?page=construction&idbatiment=X , une requête s'exécute et le bâtiment est ajouté à la liste des constructions en attente dans la table "queue_bat". Le problème c'est comment une fois que le bâtiment est ajouté dans la liste des constructions en attente dans la BDD, effectuer cette construction et donc planifier une requête qui ajouterai le bâtiment au joueur au bout de 20 secondes plus tard par exemple ? |
samedi 6 octobre 2012
| |
Anonyme Messages : 0 | Une solution simple est de faire comme suit :
Une solution alternative serait de traiter ta "queue_bat" à chaque fois qu'on veut voir les bâtiments du joueur, mais je trouve ça moins bien. Sinon, je pense qu'il faut un serveur dédié pour effectuer des planifications tâches planifiées comme ça (il faudrait un programme qui tourne en permanence - et en plus, je ne pense pas que php soit adapté à ça, mais peut-être). |
samedi 6 octobre 2012
| |
SiMax Messages : 7572 | Salut ! J'avais utilisé la même technique que propose Ideophage sur un projet similaire. En fait dans la pratique ça marche comme un interrupteur "bâtiment existant/bâtiment en construction". Concrètement, tu fais une seule base : les bâtiments existants avec un champ "date_construction". Si cette date_construction est inférieure à time(), ça veut dire que c'est en construction. Si c'est supérieur, ça te donne la date précise de construction. Pas besoin d'actualiser la BDD comme ça |
samedi 6 octobre 2012
| |
Courroux Messages : 2215 | Je vois... En gros je suis parti à créer 36 000 tables, à voir comment planifier avec cron, à séparer en plusieurs fichiers, et puis au final vous me sortez quelque chose qui se fait en deux lignes. Je suis vraiment con Je vais tester ça et je vous dis ce qui se passe. Merci |
samedi 6 octobre 2012
| |
Courroux Messages : 2215 | Une question encore basique mais j'ai jamais été dans ce genre de situations avec les date et le besoin de les enregistrer en seconde. Généralement un NOW() suffisait. Bref, je voulais savoir comment enregistrer une date en seconde. Je sais que c'est faisable avec time() mais la requête ne fonctionne pas. Que je la mette dans une variable ou pas, la requête s'effectue bien mais le champs date_construction reste sous cette forme: 00-00-0000 00:00:00 |
mercredi 10 octobre 2012
| |
SiMax Messages : 7572 | Il faut changer le format du champ. Là tu dois avoir un champ date. Comme tu vas enregistrer un nombre décimal d'une dizaine de caractères il faut mettre un petit VARCHAR comme type de donnée MySQL |
mercredi 10 octobre 2012
|
Aperçu (pas encore publié) | |
Kommunauty © Tous droits réservés
Contact /
Charte & Mentions légales /
Hebergement gratuit /
Bon plan hébergement /
Aide B2i