Page 1 sur 1

Problème timestamp et pourcentage php

Posté : 05 févr. 2022, 13:01
par Larker
Bonjour,

Je suis actuellement en train de faire un jeu en ligne mais je suis bloqué sur un module que je voudrais mettre en place.
Dans le jeu, le joueur possède des mines qui lui permettent de gagner des ressources.
Je suis en train de développer un système dans lequel le joueur peut utiliser un générateur pour booster sa production pendant 24h.
J'ai fait l'option qui permet de brancher le générateur et de doubler la production de ressources.
J'ai également fait le débranchement du générateur qui lui permet de revenir à sa production d'avant.
La durée de vie d'un générateur est de 24h une fois qu'il est connecté à la production de mines.

Le soucis que je rencontre c'est que je voudrais que lorsque le joueur débranche son générateur, que cela modifie la puissance restante dans ma table puissancee2pz pour que s'il souhaite le rebrancher il ne reparte pas avec une puissance d'un générateur neuf.
Par exemple s'il utilise son générateur pendant 12h, je voudrais que la puissance restante soit de 50.
Malheureusement j'ai l'impression de m'embrouiller l'esprit et de faire n'importe quoi ... De plus je ne sais pas pourquoi quand j'active un générateur, il commence avec une base de 80% au lieu de 100% ...

J'ai 2 tables différentes :

La première : eppzconnectee avec les champs id, id_joueur, id_planete, eppzbranche, eppzbranchefin
La deuxième : puissancee2pz avec les champs id, id_planete, puissance.

Voici le code :
<p>
<?php
$eppzbranche = $bdd->query("SELECT * FROM `eppzconnectee` WHERE id_planete='".$_SESSION['idPlanete']."' ORDER BY id DESC LIMIT 1");
$eppz = $eppzbranche->fetch();

  $getLastRelease = $bdd->query("
    SELECT
	p.id_planete, p.nom, c.id_planete, c.eppzbranche, e.id_planete, e.puissance
    FROM `planete` p
	LEFT OUTER JOIN `eppzconnectee` c ON p.id_planete = c.id_planete
    LEFT OUTER JOIN `puissance_e2pz` e ON p.id_planete = e.id_planete
	WHERE c.eppzbranche = '1' AND c.id_planete = '".$_SESSION['idPlanete']."'
  ");
  $ConnexionE2pz = $getLastRelease->fetch();

  $puissanceE2pz = $ConnexionE2pz['puissance'];
  $dureeMax = $eppz['eppzbranchefin'] + 24*60*60;
  $retire = time()+60*5;
  $puissanceep= time() + 24*60*60;
  $ecartDuree = ($dureeMax - $puissanceep)/60;
  $pourcentageeppz = ($ecartDuree/1400)*100;

  $puissance_restante = ceil(round($pourcentageeppz));
 
  $itemMoi = Item($_SESSION['idPlanete'], $bdd);

if($itemMoi['169'] >= 1 or $itemMoi['169'] >= 1 or $itemMoi['169'] >= 1)
{

$timeMtn = time();
$timestamp_24h = time()+60*1140;
  if(isset($_POST['branchereppz'])) {
      $addeppzQuery = $bdd->prepare("INSERT INTO `eppzconnectee` (`id_joueur`, `id_planete`, `eppzbranche`, `eppzbranchefin`) VALUES (?, ?, ?, ?)");
      $addeppzQuery->execute([
        $_SESSION['id'],
        $_SESSION['idPlanete'],
        '1',
        $timestamp_24h,
      ]);
	  $bdd->query("UPDATE `item` SET `169` = `169` - '1' WHERE `id_planete` ='".$_SESSION['idPlanete']."'");
	  $addEppzPuissanceQuery = $bdd->prepare("INSERT INTO `puissance_e2pz` (`id_planete`, `puissance`) VALUES (?, ?)");
      $addEppzPuissanceQuery->execute([
        $_SESSION['idPlanete'],
        $puissance_restante,
      ]);
    }
}
if(!empty($_POST['debrancheeppz']))
{
			$bdd->query("DELETE FROM eppzconnectee
			WHERE id_planete='".$_SESSION['idPlanete']."'");
			$bdd->query("UPDATE `item` SET `169` = `169` + '1' WHERE `id_planete` ='".$_SESSION['idPlanete']."'");
			$bdd->query("UPDATE `puissance_e2pz` SET `puissance` = '".$puissance_restante."' WHERE `id_planete` ='".$_SESSION['idPlanete']."'");
}
if($eppz['eppzbranche'] == '1' && $eppz['eppzbranchefin'] > $timeMtn)
{
echo"<form action='' method='POST'>
Débrancher votre E2PZ : <input type='submit' name='debrancheeppz' value='Ok !'/>
</form>";
}
else {
	echo"<form action='' method='POST'>
Brancher un E2PZ : <input type='submit' name='branchereppz' value='ok !'/>
</form>";
}
if($eppz['eppzbranchefin'] - $retire && $eppz['eppzbranchefin'] > $timeMtn)
{ 
if($eppz['eppzbranche'] == '1' && $eppz['eppzbranchefin'] > $timeMtn)
{ ?>
<p>Puissance actuelle de votre E2PZ : <?php echo $puissanceE2pz; ?>%</p>
<p>L'E2PZ peut rester allumé pendant encore <?php echo $ecartDuree; ?> min</p>
<p>Pourcentage d'utilisation E2PZ : <?php echo $pourcentageeppz; ?>%</p>
 	<style>
	        .container {
            background-color: #060606;
            width: 80%;
			border: 1px solid #040404;
			box-shadow: 0 0 0 2px #080808;
        }
      
        .skill {
            background-color: #317b6f;
            color: white;
            padding: 1%;
            text-align: right;
            font-size: 20px;
        }
        .php {
            width: <?php echo $pourcentageeppz; ?>%;
        }
		</style> 
    <p>Puissance restante de l'e2PZ :</p>
    <div class="container">
        <div class="skill php"><?php echo ceil(round($pourcentageeppz)); ?>%</div>
    </div>
<?php
}
}
?>
</p>
Je ne sais pas si j'ai été très claire dans mes explications, merci d'avance à ceux qui pourront m'aider dans mon impasse ! :)