/** * PlanetResourceUpdate.php * * @version 2.0 * @copyright 2009 By MadnessRed for XNova Redesigned */ function PlanetResourceUpdate($CurrentUser, &$CurrentPlanet) { global $resources, $resource; //We need to know the production rates $Caps = ProductionRates($CurrentUser, $CurrentPlanet); //How long since last update? $time = time(); $production = $time - $CurrentPlanet['last_update']; //Some how many resources where mined in that time? foreach ($resources as $res) { //How much should we expect to produce? $produce = $Caps[$res . '_perhour'] / 3600 * $production; //Do we go over limit? if ($CurrentPlanet[$res] > $Caps[$res . '_max']) { //We started over the limit - so base production only $CurrentPlanet[$res] += $game_config[$res . '_basic_income'] * $production; } elseif ($CurrentPlanet[$res] + $produce > $Caps[$res . '_max']) { //We have exceded storage limit - resources were produced up to that limit normall, then base production only $space = $Caps[$res . '_max'] - $CurrentPlanet[$res]; //What percentage of that time was at base income? $pc_base = 1 - $space / $produce; //So we got to full... $CurrentPlanet[$res] = $Caps[$res . '_max']; //Then carried on at base comsumption for $pc_base% of the time $CurrentPlanet[$res] += $game_config[$res . '_basic_income'] * $production * $pc_base; } else { //We have not exceded storage limit - add the total produce $CurrentPlanet[$res] += $produce; } } //See what was built $built = HandleElementBuildingQueue($CurrentUser, $CurrentPlanet, $production); //Now update the planet $qry = "UPDATE {{table}} SET"; foreach ($resources as $res) { $qry .= "`" . $res . "` = '" . $CurrentPlanet[$res] . "', "; $qry .= "`" . $res . "_perhour` = '" . $Caps[$res . '_perhour'] . "', "; $CurrentPlanet[$res . '_perhour'] = $Caps[$res . '_perhour']; $qry .= "`" . $res . "_max` = '" . $Caps[$res . '_max'] . "', "; $CurrentPlanet[$res . '_max'] = $Caps[$res . '_max']; } $qry .= "`energy_used` = '" . $Caps['energy_used'] . "', "; $CurrentPlanet['energy_used'] = $Caps['energy_used']; $qry .= "`energy_max` = '" . $Caps['energy_max'] . "', "; $CurrentPlanet['energy_max'] = $Caps['energy_max']; $qry .= "`last_update` = '" . $time . "', "; foreach ($built as $element => $count) { if ($element > 0) { $qry .= "`" . $resource[$element] . "` = `" . $resource[$element] . "` + '" . $count . "', "; } } $qry .= "`b_hangar` = '" . $CurrentPlanet['b_hangar'] . "', "; $qry .= "`b_hangar_id` = '" . $CurrentPlanet['b_hangar_id'] . "' "; $qry .= "WHERE `id` = '" . $CurrentPlanet['id'] . "' LIMIT 1 ;"; doquery("LOCK TABLE {{table}} WRITE", 'planets'); doquery($qry, 'planets'); doquery("UNLOCK TABLES", ''); }
function GeneralFoot() { global $user, $planetrow, $resource, $lang, $game_config; //metal metal_perhour metal_max crystal crystal_perhour crystal_max deuterium deuterium_perhour deuterium_max energy_used energy_max $Caps = ProductionRates($user, $planetrow); $planetrow['metal_max'] = $Caps['metal_max']; $planetrow['crystal_max'] = $Caps['crystal_max']; $planetrow['deuterium_max'] = $Caps['deuterium_max']; $parse = array_merge($lang, $planetrow); $parse['metal_ps'] = $Caps['metal_perhour'] / 3600; $parse['crys_ps'] = $Caps['crystal_perhour'] / 3600; $parse['deut_ps'] = $Caps['deuterium_perhour'] / 3600; $parse['Admin'] = $user['authlevel'] >= 1; $parse['forum_url'] = $game_config['forum_url']; $parse['server_offset'] = date('Z'); $parse['ajax_time'] = time(); $parse['matter'] = $user['matter'] * DARK_MATTER_FACTOR; $part = parsetemplate(gettemplate('redesigned/general_foot'), $parse); //echo $part; return $part; }
/** * BuildRessourcePage.php * * @version 1.0 * @copyright 2008 by Chlorel for XNova */ function BuildRessourcePage($CurrentUser, $CurrentPlanet, $hide = '') { global $lang, $ProdGrid, $resource, $reslist, $game_config, $_POST; getLang('resources'); $Caps = ProductionRates($CurrentUser, $CurrentPlanet); //print_r($Caps); $RessBodyTPL = gettemplate('resources'); $RessRowTPL = gettemplate('resources_row'); // Si c'est une lune ... pas de ressources produites if ($CurrentPlanet['planet_type'] == 3) { $game_config['metal_basic_income'] = 0; $game_config['crystal_basic_income'] = 0; $game_config['deuterium_basic_income'] = 0; } $ValidList['percent'] = array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100); $SubQry = ""; if ($_POST) { foreach ($_POST as $Field => $Value) { $FieldName = $Field . "_porcent"; if (isset($CurrentPlanet[$FieldName])) { if (!in_array($Value, $ValidList['percent'])) { header("Location: ./?s=" . UNI . "&page=resources&mode=resources"); exit; } $Value = $Value / 10; $CurrentPlanet[$FieldName] = $Value; $SubQry .= ", `" . $FieldName . "` = '" . $Value . "'"; } } } $parse = $lang; $parse['production_level'] = 100; $post_porcent = $Caps['production_factor']; // ------------------------------------------------------------------------------------------------------- // Mise a jour de l'espace de stockage $CurrentPlanet['metal_max'] = $Caps['metal_max']; $CurrentPlanet['crystal_max'] = $Caps['crystal_max']; $CurrentPlanet['deuterium_max'] = $Caps['deuterium_max']; // ------------------------------------------------------------------------------------------------------- $parse['resource_row'] = ""; $CurrentPlanet['metal_perhour'] = $Caps['metal_perhour']; $CurrentPlanet['crystal_perhour'] = $Caps['crystal_perhour']; $CurrentPlanet['deuterium_perhour'] = $Caps['deuterium_perhour']; $CurrentPlanet['energy_max'] = $Caps['energy_max']; $CurrentPlanet['energy_used'] = $Caps['energy_used']; $countforalt = 0; foreach ($reslist['prod'] as $ProdID) { $ignore = array(22, 23, 24); if (!in_array($ProdID, $ignore)) { $countforalt++; $metal = $Caps[$ProdID]['metal_perhour']; $crystal = $Caps[$ProdID]['crystal_perhour']; $deuterium = $Caps[$ProdID]['deuterium_perhour']; $energy = $Caps[$ProdID]['energy_max'] + $Caps[$ProdID]['energy_used']; $Field = $resource[$ProdID] . "_porcent"; $CurrRow = array(); $CurrRow['name'] = $resource[$ProdID]; $CurrRow['porcent'] = $CurrentPlanet[$Field]; for ($Option = 10; $Option >= 0; $Option--) { $OptValue = $Option * 10; if ($Option == $CurrRow['porcent']) { $OptSelected = " selected=selected"; } else { $OptSelected = ""; } $CurrRow['option'] .= "<option value=\"" . $OptValue . "\"" . $OptSelected . ">" . $OptValue . "%</option>"; } $CurrRow['type'] = $lang['tech'][$ProdID]; $CurrRow['level'] = $ProdID > 200 ? $lang['quantity'] : $lang['level']; $CurrRow['level_type'] = $CurrentPlanet[$resource[$ProdID]]; $CurrRow['metal_type'] = pretty_number($metal); $CurrRow['crystal_type'] = pretty_number($crystal); $CurrRow['deuterium_type'] = pretty_number($deuterium); $CurrRow['energy_type'] = pretty_number($energy); $CurrRow['metal_type'] = colorNumber($CurrRow['metal_type']); $CurrRow['crystal_type'] = colorNumber($CurrRow['crystal_type']); $CurrRow['deuterium_type'] = colorNumber($CurrRow['deuterium_type']); $CurrRow['energy_type'] = colorNumber($CurrRow['energy_type']); $CurrRow['alt'] = ""; if ($countforalt % 2 == 0) { $CurrRow['alt'] = "alt"; } $parse['resource_row'] .= parsetemplate($RessRowTPL, $CurrRow); } } $parse['Production_of_resources_in_the_planet'] = str_replace('%s', $CurrentPlanet['name'], $lang['Production_of_resources_in_the_planet']); if ($CurrentPlanet['energy_max'] == 0 && $CurrentPlanet['energy_used'] > 0) { $parse['production_level'] = 0; } elseif ($CurrentPlanet['energy_max'] > 0 && abs($CurrentPlanet['energy_used']) > $CurrentPlanet['energy_max']) { $parse['production_level'] = floor($CurrentPlanet['energy_max'] / (0 - $CurrentPlanet['energy_used']) * 100); } elseif ($CurrentPlanet['energy_max'] == 0 && abs($CurrentPlanet['energy_used']) > $CurrentPlanet['energy_max']) { $parse['production_level'] = 0; } else { $parse['production_level'] = 100; } if ($parse['production_level'] > 100) { $parse['production_level'] = 100; } $parse['metal_basic_income'] = $game_config['metal_basic_income'] * $game_config['resource_multiplier']; $parse['crystal_basic_income'] = $game_config['crystal_basic_income'] * $game_config['resource_multiplier']; $parse['deuterium_basic_income'] = $game_config['deuterium_basic_income'] * $game_config['resource_multiplier']; $parse['energy_basic_income'] = $game_config['energy_basic_income'] * $game_config['resource_multiplier']; if ($CurrentPlanet['metal_max'] < $CurrentPlanet['metal']) { $parse['metal_max'] = "<font color=\"#ff0000\">"; } else { $parse['metal_max'] = "<font color=\"#00ff00\">"; } $parse['metal_max'] .= pretty_number($CurrentPlanet['metal_max'] / 1000) . " " . $lang['k'] . "</font>"; if ($CurrentPlanet['crystal_max'] < $CurrentPlanet['crystal']) { $parse['crystal_max'] = "<font color=\"#ff0000\">"; } else { $parse['crystal_max'] = "<font color=\"#00ff00\">"; } $parse['crystal_max'] .= pretty_number($CurrentPlanet['crystal_max'] / 1000) . " " . $lang['k'] . "</font>"; if ($CurrentPlanet['deuterium_max'] < $CurrentPlanet['deuterium']) { $parse['deuterium_max'] = "<font color=\"#ff0000\">"; } else { $parse['deuterium_max'] = "<font color=\"#00ff00\">"; } $parse['deuterium_max'] .= pretty_number($CurrentPlanet['deuterium_max'] / 1000) . " " . $lang['k'] . "</font>"; $parse['metal_total'] = colorNumber(pretty_number(floor($CurrentPlanet['metal_perhour'] * 0.01 * $parse['production_level'] + $parse['metal_basic_income']))); $parse['crystal_total'] = colorNumber(pretty_number(floor($CurrentPlanet['crystal_perhour'] * 0.01 * $parse['production_level'] + $parse['crystal_basic_income']))); $parse['deuterium_total'] = colorNumber(pretty_number(floor($CurrentPlanet['deuterium_perhour'] * 0.01 * $parse['production_level'] + $parse['deuterium_basic_income']))); $parse['energy_total'] = colorNumber(pretty_number(floor($CurrentPlanet['energy_max'] + $parse['energy_basic_income'] + $CurrentPlanet['energy_used']))); $parse['daily_metal'] = floor($CurrentPlanet['metal_perhour'] * 24 * 0.01 * $parse['production_level'] + $parse['metal_basic_income'] * 24); $parse['weekly_metal'] = floor($CurrentPlanet['metal_perhour'] * 24 * 7 * 0.01 * $parse['production_level'] + $parse['metal_basic_income'] * 24 * 7); $parse['monthly_metal'] = floor($CurrentPlanet['metal_perhour'] * 24 * 30 * 0.01 * $parse['production_level'] + $parse['metal_basic_income'] * 24 * 30); $parse['daily_crystal'] = floor($CurrentPlanet['crystal_perhour'] * 24 * 0.01 * $parse['production_level'] + $parse['crystal_basic_income'] * 24); $parse['weekly_crystal'] = floor($CurrentPlanet['crystal_perhour'] * 24 * 7 * 0.01 * $parse['production_level'] + $parse['crystal_basic_income'] * 24 * 7); $parse['monthly_crystal'] = floor($CurrentPlanet['crystal_perhour'] * 24 * 30 * 0.01 * $parse['production_level'] + $parse['crystal_basic_income'] * 24 * 30); $parse['daily_deuterium'] = floor($CurrentPlanet['deuterium_perhour'] * 24 * 0.01 * $parse['production_level'] + $parse['deuterium_basic_income'] * 24); $parse['weekly_deuterium'] = floor($CurrentPlanet['deuterium_perhour'] * 24 * 7 * 0.01 * $parse['production_level'] + $parse['deuterium_basic_income'] * 24 * 7); $parse['monthly_deuterium'] = floor($CurrentPlanet['deuterium_perhour'] * 24 * 30 * 0.01 * $parse['production_level'] + $parse['deuterium_basic_income'] * 24 * 30); $parse['daily_metal'] = colorNumber(pretty_number($parse['daily_metal'])); $parse['weekly_metal'] = colorNumber(pretty_number($parse['weekly_metal'])); $parse['monthly_metal'] = colorNumber(pretty_number($parse['monthly_metal'])); $parse['daily_crystal'] = colorNumber(pretty_number($parse['daily_crystal'])); $parse['weekly_crystal'] = colorNumber(pretty_number($parse['weekly_crystal'])); $parse['monthly_crystal'] = colorNumber(pretty_number($parse['monthly_crystal'])); $parse['daily_deuterium'] = colorNumber(pretty_number($parse['daily_deuterium'])); $parse['weekly_deuterium'] = colorNumber(pretty_number($parse['weekly_deuterium'])); $parse['monthly_deuterium'] = colorNumber(pretty_number($parse['monthly_deuterium'])); $parse['metal_storage'] = floor($CurrentPlanet['metal'] / $CurrentPlanet['metal_max'] * 100) . $lang['o/o']; $parse['crystal_storage'] = floor($CurrentPlanet['crystal'] / $CurrentPlanet['crystal_max'] * 100) . $lang['o/o']; $parse['deuterium_storage'] = floor($CurrentPlanet['deuterium'] / $CurrentPlanet['deuterium_max'] * 100) . $lang['o/o']; $parse['metal_storage_bar'] = floor($CurrentPlanet['metal'] / $CurrentPlanet['metal_max'] * 100 * 2.5); $parse['crystal_storage_bar'] = floor($CurrentPlanet['crystal'] / $CurrentPlanet['crystal_max'] * 100 * 2.5); $parse['deuterium_storage_bar'] = floor($CurrentPlanet['deuterium'] / $CurrentPlanet['deuterium_max'] * 100 * 2.5); if ($parse['metal_storage_bar'] > 100 * 2.5) { $parse['metal_storage_bar'] = 250; $parse['metal_storage_barcolor'] = '#C00000'; } elseif ($parse['metal_storage_bar'] > 80 * 2.5) { $parse['metal_storage_barcolor'] = '#C0C000'; } else { $parse['metal_storage_barcolor'] = '#00C000'; } if ($parse['crystal_storage_bar'] > 100 * 2.5) { $parse['crystal_storage_bar'] = 250; $parse['crystal_storage_barcolor'] = '#C00000'; } elseif ($parse['crystal_storage_bar'] > 80 * 2.5) { $parse['crystal_storage_barcolor'] = '#C0C000'; } else { $parse['crystal_storage_barcolor'] = '#00C000'; } if ($parse['deuterium_storage_bar'] > 100 * 2.5) { $parse['deuterium_storage_bar'] = 250; $parse['deuterium_storage_barcolor'] = '#C00000'; } elseif ($parse['deuterium_storage_bar'] > 80 * 2.5) { $parse['deuterium_storage_barcolor'] = '#C0C000'; } else { $parse['deuterium_storage_barcolor'] = '#00C000'; } $parse['production_level_bar'] = $parse['production_level'] * 2.5; $parse['production_level'] = "{$parse['production_level']}%"; $parse['production_level_barcolor'] = '#00ff00'; $QryUpdatePlanet = "UPDATE {{table}} SET "; $QryUpdatePlanet .= "`id` = '" . $CurrentPlanet['id'] . "' "; $QryUpdatePlanet .= $SubQry; $QryUpdatePlanet .= "WHERE "; $QryUpdatePlanet .= "`id` = '" . $CurrentPlanet['id'] . "';"; doquery($QryUpdatePlanet, 'planets'); //To show or not to show? $parse['hideres'] = $hide; $page = parsetemplate($RessBodyTPL, $parse); return $page; }