コード例 #1
0
/**
 * 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", '');
}
コード例 #2
0
ファイル: display.php プロジェクト: sonicmaster/RPG
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;
}
コード例 #3
0
/**
 * 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;
}