Aller au contenu

Réinitialiser les variables après minuit^^


Etamine

Messages recommandés

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Toujours dans le cadre de mon jeu (oui je sais je suis lourd :o° ), je cherche comment limiter le nombre de combats par jour par exemple. Et après minuit, hop! on peut en faire d'autre! :rtfm:

Je suppose que c'est le même genre de variables qui fait durer les actions (ex: Travailler pendant 5 heures).

Merci d'avance pour vos lecture et vos réponses.

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Tu fais un champ "nombre de combats restants" que tu décomptes jusqu'à 0. Une fois à 0, tu ne peux plus faire de combats.

Tu fais un champ "dernier jour" où tu entres la date à laquelle tu as donné les derniers points d'actions.

Si la date est différente de la date du jour, tu redonnes les points d'actions en conséquence et tu mets à jour le champ "dernier jour" avec la date courante.

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

OK. J'utilise la fonction time()?

Lien à poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Je te conseille plutôt de créer un champ "integer" de longueur 8 dans ta table et d'utiliser la fonction date comme suit :

$queryDate = // récupération de la date dans ta table
$currentDate = date('YYYYmmdd');

$numberOfDays = $currentDate - $queryDate;

if($numberOfDays != 0) {
  // rajouter des points d'action
  // mettre à jour le champ dernier jour et nombre de combats restants
}

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Je vais carrément créer une autre table. Je suis obligé de mettre un champs id? Et dans le champ integer en type, je mets date?

Lien à poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Bah non, en type tu mets integer :rtfm:

Et tu es obligé de faire un lien avec le joueur courant. Donc tu auras forcément dans une table une clef primaire et dans l'autre une clef étrangère.

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Euh integer, c'est INT?

Lien à poster
Partager sur d’autres sites

Membre, 35ans Posté(e)
Zilex Membre 91 messages
Baby Forumeur‚ 35ans‚
Posté(e)

Yes

OUAH s'te contribution, heureusement que j'étais là :rtfm:

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Oh oui! :rtfm: Merci!^^

Lien à poster
Partager sur d’autres sites

Membre, Forumeur tacheté , 37ans Posté(e)
ElNix Membre 4 891 messages
37ans‚ Forumeur tacheté ,
Posté(e)

Sinon y a moyen de faire ça en exécutant à minuit (automatiquement hein sinon ça devient vite lourd :o° ) une page PHP qui se charge de remettre à 5 toutes les parties des joueurs.

Je ne sais plus si on appelle le moyen de faire appel à une page à une date précise un démon ou un trigger.

(mais bon, la méthode qui t'a été proposée fonctionne très bien aussi :rtfm: )

Lien à poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Un cron ^^

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Euh ça marche. Par contre dans ma base, la date ressemble à ça : 2147483647. C'est normal? C'est grave?

Ca pourrais être pas mal à faire c'est sûr. Mais c'est pas beaucoup plus compliqué?

EDIT: Je parle de la technique Elnix.^^

Lien à poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)
Euh ça marche. Par contre dans ma base, la date ressemble à ça : 2147483647. C'est normal? C'est grave?

Ca pourrais être pas mal à faire c'est sûr. Mais c'est pas beaucoup plus compliqué?

Euh, c'est pas trop normal.

Tu enregistres comment ta date ? (tu peux donner la requete sql ?)

Pour la "technique Elnix" (le cron) ça dépend si ton hébergeur permet de faire des crontabs (exécution de scripts à un temps donné).

Lien à poster
Partager sur d’autres sites

Membre, Forumeur tacheté , 37ans Posté(e)
ElNix Membre 4 891 messages
37ans‚ Forumeur tacheté ,
Posté(e)
Un cron ^^

Merci ! J'en aurais pas dormit de la journée ! :rtfm:

Euh ça marche. Par contre dans ma base, la date ressemble à ça : 2147483647. C'est normal? C'est grave?

Si tu fais juste time() ça te renvoie un timestamp. Descend un peu dans ce tuto ça explique comment fonctionne le temsp en PHP : http://www.siteduzero.com/tutoriel-3-14457....html#ss_part_2

Ca pourrais être pas mal à faire c'est sûr. Mais c'est pas beaucoup plus compliqué?

EDIT: Je parle de la technique Elnix.^^

Pour mettre en place des crons soit tu as ton propre serveur (ça m'étonnerait ^^) soit il y a des sites qui te proposent de les mettre en place gratuitement pour toi. Ce n'est pas plus compliqué on sort juste du cadre de base de PHP.

EDIT : exemple : http://www.cronoo.com/

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Voilà pour ma requête:

$queryDate = ("SELECT date, pa_combat, pa_quete FROM joueurs WHERE pseudo='".$_SESSION['pseudo']."'") or die(mysql_error());
$currentDate = date('YYYYmmdd');

$numberOfDays = $currentDate - $queryDate;

if($numberOfDays != 0) {
  $req = mysql_query("UPDATE  joueurs SET pa_combat=5, pa_quete=5 WHERE pseudo='".$_SESSION['pseudo']."'") or die(mysql_error());
  $req = mysql_query("UPDATE  joueurs SET date='".$currentDate."' WHERE pseudo='".$_SESSION['pseudo']."'") or die(mysql_error());
  // mettre à jour le champ dernier jour et nombre de combats restants
}

Pur les crons, je pense que je vais laisser de coté pour l'instant.

Lien à poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Enlève les guillemets, car ton champ date est normalement de l'integer, donc un nombre, donc pas une chaine de caractères ^^

Et au lieu de faire deux requêtes, n'en fais qu'une seule :

   $req = mysql_query("UPDATE  joueurs SET pa_combat=5, pa_quete=5, date=".$currentDate." WHERE pseudo='".$_SESSION['pseudo']."'") or die(mysql_error());

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Tiens c'est vrai ça... pourquoi j'ai mis 2 requête :rtfm:

Bref en tout cas, ça ne change rien. :o°

Euh en fait c'est bizzare. La chaîne que j'obtiens fait 10 caractères alors que dans ma table j'avais spécifié seulement 8...

Lien à poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)
Tiens c'est vrai ça... pourquoi j'ai mis 2 requête :rtfm:

Bref en tout cas, ça ne change rien. :o°

Euh, change le type par du char(8), ce sera moins galère en fait ^^"

Lien à poster
Partager sur d’autres sites

Membre, 30ans Posté(e)
Etamine Membre 92 messages
Baby Forumeur‚ 30ans‚
Posté(e)

Ca me donne 20102010. c'est bizarre il me donne 2 fois l'année :rtfm:

Lien à poster
Partager sur d’autres sites

Membre, 36ans Posté(e)
Petisuis Membre 312 messages
Baby Forumeur‚ 36ans‚
Posté(e)

Ah oui au temps pour moi xD

Je travaille sur un logiciel qui formate les dates comme ça xD

Mais c'est date('Ymd') qu'il faut écrire ^^

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×