PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/pages/prod.php

https://bitbucket.org/ninety/mod-hof
PHP | 177 lines | 117 code | 43 blank | 17 comment | 24 complexity | 34a7692fe22dc3373b34b8e8a4b6bc19 MD5 | raw file
  1. <?php
  2. $debug = 0;
  3. if (isset($_GET['tri']) && $_GET['tri'] == 'c')
  4. {
  5. $tri = 'c';
  6. }
  7. else if (isset($_GET['tri']) && $_GET['tri'] == 'd')
  8. {
  9. $tri = 'd';
  10. }
  11. else
  12. {
  13. $tri = 'm';
  14. }
  15. $select_userIDs = $db->sql_query('SELECT DISTINCT user_id AS user_id FROM '. TABLE_USER_BUILDING .'');
  16. while ($userIDs = $db->sql_fetch_assoc($select_userIDs))
  17. {
  18. /* Reinitialisation de la production */
  19. $prodMetal = 0;
  20. $prodCristal = 0;
  21. $prodDeut = 0;
  22. $select_users = $db->sql_query(
  23. 'SELECT
  24. user_id,
  25. planet_id,
  26. temperature_min, temperature_max,
  27. Sat,
  28. M, C, D, CES, CEF,
  29. Sat_percentage,
  30. M_percentage, C_percentage, D_percentage, CES_percentage, CEF_percentage
  31. FROM
  32. '. TABLE_USER_BUILDING .'
  33. WHERE
  34. user_id = \''. $userIDs['user_id'] .'\'');
  35. /* Recuperation du pseudo du joueur */
  36. $select_pseudo = $db->sql_query('SELECT user_name FROM '. TABLE_USER .' WHERE user_id=\''. $userIDs['user_id'] .'\'');
  37. $pseudo = $db->sql_fetch_assoc($select_pseudo);
  38. $pseudo = $pseudo['user_name'];
  39. /* Récupération de la technologie energie du joueur */
  40. $select_NRJ = $db->sql_query('SELECT NRJ FROM '. TABLE_USER_TECHNOLOGY .' WHERE user_id=\''. $userIDs['user_id'] .'\'');
  41. $NRJ = $db->sql_fetch_assoc($select_NRJ);
  42. $NRJ = $NRJ['NRJ'];
  43. // Debug ...
  44. if ($debug)
  45. {
  46. echo '<pre style=\'text-align : left; font-size : 12px; border : 3px ridge silver;\'>';
  47. echo $pseudo .'<br />';
  48. }
  49. while ($users = $db->sql_fetch_assoc($select_users))
  50. {
  51. /* On verifie que ce n'est pas une lune */
  52. if ($users['planet_id'] >= 101 AND $users['planet_id'] <= 200)
  53. {
  54. /* ** Facteur de production = Energie produite / Energie nécessaire ** */
  55. /* Energie produite = CES + CEF + Sat */
  56. $cesProd = ($users['CES_percentage'] / 100) * 20 * $users['CES'] * pow(1.1, $users['CES']);
  57. $cefProd = ($users['CEF_percentage'] / 100) * 30 * $users['CEF'] * pow((1.05 + $NRJ * 0.01), $users['CEF']);
  58. $satProd = ($users['Sat_percentage'] / 100) * ceil(($users['temperature_max'] + $users['temperature_min']) / 12 + 80 / 3) * $users['Sat'];
  59. $prodEnergie = floor($cesProd + $cefProd + $satProd);
  60. /* Energie nécessaire = Metal + Cristal + Deut */
  61. $metalConso = ceil(($users['M_percentage'] / 100) * 10 * $users['M'] * pow (1.1, $users['M']));
  62. $cristalConso = ceil(($users['C_percentage'] / 100) * 10 * $users['C'] * pow (1.1, $users['C']));
  63. $deutConso = ceil(($users['D_percentage'] / 100) * 20 * $users['D'] * pow (1.1, $users['D']));
  64. $consoEnergie = floor($metalConso + $cristalConso + $deutConso);
  65. // Facteur de production
  66. $prodFacteur = $consoEnergie == 0 ? 1 : ($prodEnergie / $consoEnergie);
  67. if ($prodFacteur > 1)
  68. {
  69. $prodFacteur = 1;
  70. }
  71. /* ** Calcul des production horaire ** */
  72. // Consomation de deut par la CEF
  73. $cefConso = ($users['CEF_percentage'] / 100) * 10 * $users['CEF'] * pow (1.1, $users['CEF']);
  74. $prodMetal += 30 + $prodFacteur * floor (($users['M_percentage'] / 100) * (30 * $users['M'] * pow (1.1, $users['M'])));
  75. $prodCristal += 15 + $prodFacteur * floor (($users['C_percentage'] / 100) * (20 * $users['C'] * pow (1.1, $users['C'])));
  76. $prodDeut += $prodFacteur * floor(($users['D_percentage'] / 100) * (10 * $users['D'] * pow (1.1, $users['D']) * (1.44 - 0.004 * $users['temperature_max']))) - $cefConso;
  77. // Debug ...
  78. if ($debug)
  79. {
  80. echo '<br />'. $users['planet_id'] .' :';
  81. echo "\t".'Energie affichee : '. ($prodEnergie - $consoEnergie) .' / '. $prodEnergie .'<br />';
  82. echo "\t".'Facteur de prod : '. $prodFacteur .'<br />';
  83. echo "\t".'Metal : '. $prodMetal .' - '. $metalConso .'<br />';
  84. echo "\t".'Cristal : '. $prodCristal .' - '. $cristalConso .'<br />';
  85. echo "\t".'Deut : '. $prodDeut .' - '. $deutConso .'<br />';
  86. }
  87. }
  88. }
  89. // Debug ...
  90. if ($debug)
  91. {
  92. echo '</pre>';
  93. }
  94. /* On verifie si le joueur existe dans la table TABLE_HOF_PROD */
  95. $select_testPseudo = $db->sql_query('SELECT * FROM '. TABLE_HOF_PROD .' WHERE pseudo=\''. $pseudo .'\'');
  96. $testPseudo = $db->sql_fetch_assoc($select_testPseudo);
  97. if (!empty($testPseudo[0])) // Si le joueur existe
  98. {
  99. /* On verifie que sa production est superieure a celle deja presente, si oui on met a jour */
  100. if ($prodMetal > $testPseudo['m'])
  101. $db->sql_query('UPDATE '. TABLE_HOF_PROD .' SET m=\''. $prodMetal .'\' WHERE pseudo=\''. $pseudo .'\'');
  102. if ($prodCristal > $testPseudo['c'])
  103. $db->sql_query('UPDATE '. TABLE_HOF_PROD .' SET c=\''. $prodCristal .'\' WHERE pseudo=\''. $pseudo .'\'');
  104. if ($prodDeut > $testPseudo['d'])
  105. $db->sql_query('UPDATE '. TABLE_HOF_PROD .' SET d=\''. $prodDeut .'\' WHERE pseudo=\''. $pseudo .'\'');
  106. }
  107. else // Le joueur n'existe pas
  108. {
  109. $db->sql_query('INSERT INTO '. TABLE_HOF_PROD .' VALUES (\''. $pseudo .'\', \''. $prodMetal .'\', \''. $prodCristal .'\', \''. $prodDeut .'\')');
  110. }
  111. }
  112. /* Recuperation de la config du mod */
  113. $select_config = $db->sql_query('SELECT * FROM '. TABLE_HOF_CONFIG .'');
  114. $settings = array();
  115. while ($config = $db->sql_fetch_assoc($select_config))
  116. {
  117. $settings[$config['parameter']] = $config['value'];
  118. }
  119. /* Affichage de la production */
  120. echo '<p class=\'warningProd\'>Si votre production vous semble incorrecte soyez sűr que la température, le nombre de satellites solaires et le niveau de vos centrales sont correct.</p>';
  121. $facteur = $settings['uni50'] ? 2 : 1;
  122. if ($settings['prod_heure'])
  123. {
  124. afficherProd('heure', $facteur, $tri, $settings['nb_recordsMen']);
  125. }
  126. if ($settings['prod_jour'])
  127. {
  128. afficherProd('jour', $facteur * 24, $tri, $settings['nb_recordsMen']);
  129. }
  130. if ($settings['prod_semaine'])
  131. {
  132. afficherProd('semaine', $facteur * 168, $tri, $settings['nb_recordsMen']);
  133. }
  134. ?>