|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
Bonjour,
avec des copains nous nous sommes décidés à faire un jeux en ligne en php (du type ogame ou travian pour ceux qui connaissent). Mais nos maigres connaissances butent déja pour la mise à jour des ressources à chaque actualisation de la page par l'utilisateur. Je m'explique, pendant l'inscription les ressources sont définies à 800 (pour les 4 types de ressources), mais nous cherchons à ce que ces ressources augmentent en fonction du temps (et que l'UPDATE se fasse au chargement de la page par l'utilisateur). Je pense qu'il faudrait utiliser la commande "date" avant et apres et augmenter les ressources en fonction du temps passé entre les deux actualisations , mais ca m'a l'air bien compliqué. Connaissez vous plus simple ? Merci d'avance |
|
|
00
|
|
|
#2 | |
|
Membre éprouvé
![]() ![]() Jérémy Cochoy Étudiant Inscription : novembre 2004 Messages : 691 ![]() |
Citation:
Soit tu a un programme sur le serveur qui se charge d'actualiser la base de donnée, et fait donc evoluer les resources même quand tu n'est pas connecter (Ex : Ogame) Soit tu fait apelle à un script qui recalcule les resources à chaque actualisation/Interraction(si les autres joueurs veulent récupèrer des informations sur un autre joueur) avec le compte en vérifiant une diférence de date (On peut dire que c'est actualiser toute les heures?) et si la diférence dépasse une certaine valeur, alors on effectu une mise à jour (et on stoque le moment présent) Dans ce cas un timestamp est ce qu'il me semble le plus adapter. |
|
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Citation:
C'est donc beaucoup plus simple pour vous de travailler directement sur la valeur du time() sachant qu'elle s'exprime en seconde. Bonne chance pour votre projet. |
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
Merci à vous pour vos réponses rapides et précises.
Je pense que dans ma situation, comme le dit SpiritOfDoc, il serait plus adapté de faire un programme qui se charge d'actualiser ma base de donnée, mais je ne sais pas comment m'y prendre , alors je vais me rabattre vers time(). Je vous tient au courant, merci de votre soutient. |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
J'ai rien dit de telle :p.
Par contre tu peux très bien utiliser les sessions, ça devrait te permettre de bien gérer les temps sans utiliser (de trop) ta BDD. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
Excuse mon manque de connaissance, mais que veus tu dire par la ? J'utilise les sessions pour transmettre les variables, tu penses qu'il serait préférable de stocker les valeures des ressources dans les variables sessions ? parce que ca me parait plutôt difficile, il faudrait alors que l'UPDATE se fasse quand l'utilisateur appuie sur "deconnecter", ce qui entrainerai pas mal de contrainte au niveau du jeux. J'ai cherché si il y avait une fonction time() spécifique aux sessions, mais je n'ai pas trouvé. |
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Les sessions ne sont pas utiliser que pour garder un login en mémoire
Ceci te met en variable session le timestamp. Et je ne vois pas vraiment le rapport entre le lien déconnexion et les sessions (comme dit plus haut, ça n'a pas d'utilisation spécifique :p). Bonne soirée. [EDIT] : Une belle FAQ et des beaux tutoriaux |
|
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 8 ![]() |
J'ai compris, merci de ton aide !!
je vais essayer de faire quelques chose de propre avec les sessions. Citation:
Bonne soirée à toi aussi. |
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Tiger Scott Développeur Web Inscription : juin 2006 Messages : 1 251 ![]() |
salut,
je suis pas sur de ce que j'avance : si j'ai bien compris, tous les changements des stats de ton perso, ressources... sont stocké dans tes variables de session et quand on clique sur "déconnexion", ca met a jour la bdd... mais si c'est comme ca que tu fais, il y aura un soucy si le user quit la fenetre sans cliquer sur "déconnexion" nan ? |
|
|
00
|
|
|
#10 | |
|
Membre éprouvé
![]() ![]() Jérémy Cochoy Étudiant Inscription : novembre 2004 Messages : 691 ![]() |
Citation:
mais je rajouterait que dans le cas de l'intervention d'un autre utilisateur sur ce compte de cette utilisateur (exemple : vole de resource d'un autre joueur) cette technique pose certains problèmes. Pour un programme qui met à jour ta base de donnée, c'était de moi l'idée ^^ Seulement bien qu'aillent de meilleures performances, la réalisation peut s'avèrer plus complexe que celle en PHP si tu n'a pas déjà quelques bases en un langage adapter. Moi ce que je te conseille (Oui je sais je me répète) c'est de créer une fonction prenant le nom d'un compte qui se charge d'actualiser les resources du comtpe en question et ajoute un timestamp du moment de la mise à jour. par la suite tu fera apelle à elle : A la connection Toute les N secondes via un le dernier timestamp de mise à jour que tu a récupèrer dans tes sessions à ta conection et que tu modifira à chaque mise à jour Durant une interaction sur le comtpe d'un autre utilisateur. |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 46 ![]() |
On m'avait proposé de réaliser une presque copie de Ogame...je me suis pas lancé parce que c'était vraiment trop de la copie.
Pour en revenir à l'automatisation: executer CRON sur le serveur pour qui recalcule les ressources toutes les 10secondes...à voir ... heu prévoir un gros serveur ;-)
__________________
Gaétan |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 4 ![]() |
Bonjour à tous et bienvenue parmis vous !!!
Je me présente, j'ai 15 ans, bientôt 16. Moi-même, je suis en train de créer un jeu. Je te le dis honnêtement : je ne suis pas un grand programmeur. Voila tt d'abord l'adresse de mon site (qui risque de changer) : http://samax69.free.fr/site/login.php Bon... Il semble encore y avoir du travail, mais vu de loin, je pense qu'il devrait être terminé avant les vacances d'été... Va jeter également un oeil au forum à cette adresse : http://zellios-empire.forumactif.com Comment ais-je fait pour les ressources : je t'envoie directement mon script si tu veux (allez, je suis sympa!!!) Bien sûr, ma solution est loin d'être la meilleure, mais ça semble fonctionner... <?php session_start(); $pseudo=$_SESSION['login']; <------ la tu prends le pseudo du joueur qui vient de de logguer $pass=$_SESSION['password']; <------son mot de passe ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>ZellioS EmpireS</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" /> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script> </head> <body> <div align="center"> <p> </p> <p> </p> <p> </p> <p><a href="Champs.php"><img src="select_chps.gif" width="92" height="92" border="0"></a>_ <a href="Nveau-Site.php"><img src="select_city.gif" width="92" height="92" border="0"></a>_ <img src="select_chps.gif" width="92" height="92">_ <img src="select_chps.gif" width="92" height="92"> <br/> </p> </div> <div align="center"></div> <div align="center"></div> <div align="center"> <?php mysql_connect("http://sql.free.fr", "*****", "*****"); // Connexion à MySQL mysql_select_db("*****"); // Sélection de la base coursphp $reponse111 = mysql_query("SELECT * FROM $pseudo WHERE id=25"); // Requête SQL $données111 = mysql_fetch_array($reponse111); $nivo_bois = $données111['contenu']; $reponse112 = mysql_query("SELECT * FROM $pseudo WHERE id=26"); // Requête SQL $données112 = mysql_fetch_array($reponse112); $nivo_terre = $données112['contenu']; $reponse113 = mysql_query("SELECT * FROM $pseudo WHERE id=27"); // Requête SQL $données113 = mysql_fetch_array($reponse113); $nivo_fer = $données113['contenu']; $reponse114 = mysql_query("SELECT * FROM $pseudo WHERE id=28"); // Requête SQL $données114 = mysql_fetch_array($reponse114); $nivo_céré = $données114['contenu']; $reponse115 = mysql_query("SELECT * FROM $pseudo WHERE id=29"); // Requête SQL $données115 = mysql_fetch_array($reponse115); $time_bdd = $données115['contenu']; $reponse116 = mysql_query("SELECT * FROM $pseudo WHERE id=1"); // Requête SQL $données116 = mysql_fetch_array($reponse116); $bois = $données116['contenu']; $reponse117 = mysql_query("SELECT * FROM $pseudo WHERE id=2"); // Requête SQL $données117 = mysql_fetch_array($reponse117); $terre = $données117['contenu']; $reponse118 = mysql_query("SELECT * FROM $pseudo WHERE id=3"); // Requête SQL $données118 = mysql_fetch_array($reponse118); $fer = $données118['contenu']; $reponse119 = mysql_query("SELECT * FROM $pseudo WHERE id=4"); // Requête SQL $données119 = mysql_fetch_array($reponse119); $céré = $données119['contenu']; mysql_close(); $bois=$bois/1000000; $fer=$fer/1000000; $terre=$terre/1000000; $céré=$céré/1000000; $timestamp_actuel=time(); $temps_ecoule = $timestamp_actuel - $time_bdd; $prod_bois=$nivo_bois*$nivo_bois*$nivo_bois*2; $prod_terre=$nivo_terre*$nivo_terre*$nivo_terre*2; $prod_fer=$nivo_fer*$nivo_fer*$nivo_fer*2; $prod_céré=$nivo_céré*$nivo_céré*$nivo_céré*4; $bois_produit= $prod_bois / 3600 * $temps_ecoule; $terre_produit=$prod_terre/3600*$temps_ecoule; $fer_produit=$prod_fer/3600*$temps_ecoule; $céré_produit=$prod_céré/3600*$temps_ecoule; $boisnv=($bois+$bois_produit)*1000000; $terrenv=($terre+$terre_produit)*1000000; $fernv=($fer+$fer_produit)*1000000; $cérénv=($céré+$céré_produit)*1000000; mysql_connect("http://sql.free.fr", "*****", "*****"); // Connexion à MySQL mysql_select_db("*****"); // Sélection de la base coursphp mysql_query("UPDATE $pseudo SET contenu=$boisnv WHERE id=1"); // Requête SQL mysql_query("UPDATE $pseudo SET contenu=$terrenv WHERE id=2"); // Requête SQL mysql_query("UPDATE $pseudo SET contenu=$fernv WHERE id=3"); // Requête SQL mysql_query("UPDATE $pseudo SET contenu=$cérénv WHERE id=4"); // Requête SQL mysql_query("UPDATE $pseudo SET contenu=$timestamp_actuel WHERE id=29"); // Requête SQL mysql_close(); mysql_connect("http://sql.free.fr", "*****", "*****"); // Connexion à MySQL mysql_select_db("*****"); // Sélection de la base coursphp $reponse196 = mysql_query("SELECT * FROM $pseudo WHERE id=1"); // Requête SQL $données196 = mysql_fetch_array($reponse196); $boisnv = $données196['contenu']; $reponse197 = mysql_query("SELECT * FROM $pseudo WHERE id=2"); // Requête SQL $données197 = mysql_fetch_array($reponse197); $terrenv = $données197['contenu']; $reponse198 = mysql_query("SELECT * FROM $pseudo WHERE id=3"); // Requête SQL $données198 = mysql_fetch_array($reponse198); $fernv = $données198['contenu']; $reponse199 = mysql_query("SELECT * FROM $pseudo WHERE id=4"); // Requête SQL $données199 = mysql_fetch_array($reponse199); $cérénv = $données199['contenu']; mysql_close(); $boisnv=$boisnv/1000000; $terrenv=$terrenv/1000000; $fernv=$fernv/1000000; $cérénv=$cérénv/1000000; echo "<p align=\"center\"><img src=\"wood.gif\" width=\"29\" height=\"22\"> $boisnv <img src=\"2.gif\" width=\"25\" height=\"19\"> $terrenv <img src=\"3.gif\" width=\"26\" height=\"21\"> $fernv <img src=\"e53.gif\" width=\"34\" height=\"29\"> $cérénv<br/></p>"; ?> <p> </p> <div id="Layer1" style="position:absolute; width:200px; height:207px; z-index:1; left: -17px; top: 405px;"><a href="Champs.php"><img src="Login.gif" width="146" height="40" border="0" usemap="#Map"> <map name="Map"> <area shape="rect" coords="2,4,143,38" href="login.php" target="_blank"> </map> <img src="Inscription.gif" width="146" height="40" border="0" usemap="#Map2"> <map name="Map2"> <area shape="rect" coords="1,2,147,42" href="Form_inscr.php"> </map> <img src="mode-d'emploi.gif" width="146" height="40" border="0" usemap="#Map3"> <map name="Map3"> <area shape="rect" coords="1,2,147,41" href="http://www.zellios-empire.forumactif.com" target="_blank"> </map> <img src="Forumb.gif" width="146" height="40" border="0" usemap="#Map4"> <map name="Map4"> <area shape="rect" coords="2,2,146,39" href="http://www.zellios-empire.forumactif.com" target="_blank"> </map> </a></div> </div> </body> </html> Te pose pas de questions sur tt ce qui est images et autre, mais je t'envoie ce script à titre d'exemple, pour que tu visualises. D'après moi, la bdd c'est ce qu'il y a de mieux : aucun risque d'erreur, de bug ou autre, aucune perte de données, l'utilisateur n'a pas à cliquer sur le lien "déconnection" avant de quitter le jeu... Tu te créés une page php "ressources.php", par exemple, dans cette page, tu fais tout ce dont il y a besoin au niveau des ressources, et ensuite, sur chacune des pages de ton jeu (enfin... pas pr l'index et tt, tu gères comme un grand), tu inclus cette page ressources avec la balise include(). PS: tu remarqueras que j'ai fait des divisions et multiplications qui pourront te paraître inutiles (genre /1000000000) mais j'ai eu un p'ti pb avec ma base de données. En effet, j'arrivais pas à enregistrer des nombres décimaux (avec la catégorie "float", ds ma bdd, il ne garde que le premier chiffre après la virgule) alors j'ai arrangé ça en mettant des nombres conséquents ds ma bdd, puis en les divisant pour que l'utilisateur aie un nombre résonnable de ressources. Bon... J'espère que mon aide saura te satisfaire. Sur ce, slt et à bientôt. Re-PS : Si ça vs intéresse, toi et tes copains pourriez même vous joindre à moi pour la création du jeu : moi-même, je suis nul en programmation, ce jeu me prend à plein temps et je suis seul pour le créer. Pour me contacter, tu peux m'envoyer un MP de le forum de mon jeu (cf l'adresse plus haut). |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Tiger Scott Développeur Web Inscription : juin 2006 Messages : 1 251 ![]() |
salut,
les balise CODE auraient été le bienvenue... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com