Вход Регистрация
Файл: includes/functions/PlanetResourceUpdate.php
Строк: 312
<?php

##############################################################################
# *                                                                             #
# * XG PROYECT                                                                 #
# *                                                                           #
# * @copyright Copyright (C) 2008 - 2009 By lucky from xgproyect.net           #
# *                                                                             #
# *                                                                             #
# *  This program is free software: you can redistribute it and/or modify    #
# *  it under the terms of the GNU General Public License as published by    #
# *  the Free Software Foundation, either version 3 of the License, or       #
# *  (at your option) any later version.                                     #
# *                                                                             #
# *  This program is distributed in the hope that it will be useful,         #
# *  but WITHOUT ANY WARRANTY; without even the implied warranty of             #
# *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             #
# *  GNU General Public License for more details.                             #
# *                                                                             #
##############################################################################

if(!defined('INSIDE')){ die(header("location:../../"));}

    function 
PlanetResourceUpdate ( $CurrentUser, &$CurrentPlanet, $UpdateTime, $Simul = false )
    {
        global 
$ProdGrid, $resource, $reslist, $game_config;

        
$CurrentPlanet['metal_max']        =    (BASE_STORAGE_SIZE + 50000 * (roundUp(pow(1.6,$CurrentPlanet[ $resource[22] ])) -1)) * (1 + ($CurrentUser['rpg_stockeur'] * STOCKEUR));
        
$CurrentPlanet['crystal_max']    =    (BASE_STORAGE_SIZE + 50000 * (roundUp(pow(1.6,$CurrentPlanet[ $resource[23] ])) -1)) * (1 + ($CurrentUser['rpg_stockeur'] * STOCKEUR));
        
$CurrentPlanet['deuterium_max']    =    (BASE_STORAGE_SIZE + 50000 * (roundUp(pow(1.6,$CurrentPlanet[ $resource[24] ])) -1)) * (1 + ($CurrentUser['rpg_stockeur'] * STOCKEUR));

        
$MaxMetalStorage                = $CurrentPlanet['metal_max']     * MAX_OVERFLOW;
        
$MaxCristalStorage              = $CurrentPlanet['crystal_max']   * MAX_OVERFLOW;
        
$MaxDeuteriumStorage            = $CurrentPlanet['deuterium_max'] * MAX_OVERFLOW;

        
$Caps             = array();
        
$BuildTemp        = $CurrentPlanet[ 'temp_max' ];

        
$parse['production_level'] = 100;

        if (
$CurrentPlanet['energy_max'] == 0 && $CurrentPlanet['energy_used'] > 0)
        {
            
$post_porcent = 0;
        }
        elseif (
$CurrentPlanet['energy_max'] > 0 && ($CurrentPlanet['energy_used'] + $CurrentPlanet['energy_max']) < 0 )
        {
            
$post_porcent = floor(($CurrentPlanet['energy_max']) / ($CurrentPlanet['energy_used']*-1) * 100);
        }
        else
        {
            
$post_porcent = 100;
        }

        if (
$post_porcent > 100)
        {
            
$post_porcent = 100;
        }

        for ( 
$ProdID = 0; $ProdID < 300; $ProdID++ )
        {
            if ( 
in_array( $ProdID, $reslist['prod']) )
            {
                
$BuildLevelFactor = $CurrentPlanet[ $resource[$ProdID]."_porcent" ];
                
$BuildLevel = $CurrentPlanet[ $resource[$ProdID] ];
                
$Caps['metal_perhour']     += floor( eval ( $ProdGrid[$ProdID]['formule']['metal'] )     * (0.01 * $post_porcent) * ( $game_config['resource_multiplier'] ) * ( 1 + ( $CurrentUser['rpg_geologue'] * GEOLOGUE ) ) );
                
$Caps['crystal_perhour']   += floor( eval ( $ProdGrid[$ProdID]['formule']['crystal'] )   * (0.01 * $post_porcent) * ( $game_config['resource_multiplier'] ) * ( 1 + ( $CurrentUser['rpg_geologue'] * GEOLOGUE ) ) );

                if (
$ProdID < 4)
                {
                    
$Caps['deuterium_perhour'] += floor( eval ( $ProdGrid[$ProdID]['formule']['deuterium'] ) * (0.01 * $post_porcent) * ( $game_config['resource_multiplier'] ) * ( 1 + ( $CurrentUser['rpg_geologue'] * GEOLOGUE ) ) );
                    
$Caps['energy_used']   +=  floor( eval  ( $ProdGrid[$ProdID]['formule']['energy']    ) * ( $game_config['resource_multiplier'] ) );
                }
                elseif (
$ProdID >= 4 )
                {
                    if(
$ProdID == 12 && $CurrentPlanet['deuterium'] == 0)
                        continue;

                    
$Caps['deuterium_perhour'] += floor( eval ( $ProdGrid[$ProdID]['formule']['deuterium'] ) * (0.01 * $post_porcent) * ( $game_config['resource_multiplier'] ) * ( 1 + ( $CurrentUser['rpg_geologue'] * GEOLOGUE ) ) );
                    
$Caps['energy_max']    +=  floor( eval  ( $ProdGrid[$ProdID]['formule']['energy']    ) * ( $game_config['resource_multiplier'] ) * ( 1 + ( $CurrentUser['rpg_ingenieur'] * INGENIEUR ) ) );
                }
            }
        }

        if (
$CurrentPlanet['planet_type'] == 3)
        {
            
$game_config['metal_basic_income']     = 0;
            
$game_config['crystal_basic_income']   = 0;
            
$game_config['deuterium_basic_income'] = 0;
            
$CurrentPlanet['metal_perhour']        = 0;
            
$CurrentPlanet['crystal_perhour']      = 0;
            
$CurrentPlanet['deuterium_perhour']    = 0;
            
$CurrentPlanet['energy_used']          = 0;
            
$CurrentPlanet['energy_max']           = 0;
        }
        else
        {
            
$CurrentPlanet['metal_perhour']        = $Caps['metal_perhour'];
            
$CurrentPlanet['crystal_perhour']      = $Caps['crystal_perhour'];
            
$CurrentPlanet['deuterium_perhour']    = $Caps['deuterium_perhour'];
            
$CurrentPlanet['energy_used']          = $Caps['energy_used'];
            
$CurrentPlanet['energy_max']           = $Caps['energy_max'];
        }

        
$ProductionTime               = ($UpdateTime - $CurrentPlanet['last_update']);
        
$CurrentPlanet['last_update'] = $UpdateTime;

        if (
$CurrentPlanet['energy_max'] == 0)
        {
            
$CurrentPlanet['metal_perhour']     = $game_config['metal_basic_income'];
            
$CurrentPlanet['crystal_perhour']   = $game_config['crystal_basic_income'];
            
$CurrentPlanet['deuterium_perhour'] = $game_config['deuterium_basic_income'];
            
$production_level            = 100;
        }
        elseif (
$CurrentPlanet["energy_max"] >= $CurrentPlanet["energy_used"])
        {
            
$production_level = 100;
        }
        else
        {
            
$production_level = floor(($CurrentPlanet['energy_max'] / $CurrentPlanet['energy_used']) * 100);
        }
        if(
$production_level > 100)
        {
            
$production_level = 100;
        }
        elseif (
$production_level < 0)
        {
            
$production_level = 0;
        }

        if ( 
$CurrentPlanet['metal'] <= $MaxMetalStorage )
        {
            
$MetalProduction = (($ProductionTime * ($CurrentPlanet['metal_perhour'] / 3600))) * (0.01 * $production_level);
            
$MetalBaseProduc = (($ProductionTime * ($game_config['metal_basic_income'] / 3600 )));
            
$MetalTheorical  = $CurrentPlanet['metal'] + $MetalProduction  +  $MetalBaseProduc;
            if ( 
$MetalTheorical <= $MaxMetalStorage )
            {
                
$CurrentPlanet['metal']  = $MetalTheorical;
            }
            else
            {
                
$CurrentPlanet['metal']  = $MaxMetalStorage;
            }
        }

        if ( 
$CurrentPlanet['crystal'] <= $MaxCristalStorage )
        {
            
$CristalProduction = (($ProductionTime * ($CurrentPlanet['crystal_perhour'] / 3600))) * (0.01 * $production_level);
            
$CristalBaseProduc = (($ProductionTime * ($game_config['crystal_basic_income'] / 3600 )));
            
$CristalTheorical  = $CurrentPlanet['crystal'] + $CristalProduction  +  $CristalBaseProduc;
            if ( 
$CristalTheorical <= $MaxCristalStorage )
            {
                
$CurrentPlanet['crystal']  = $CristalTheorical;
            }
            else
            {
                
$CurrentPlanet['crystal']  = $MaxCristalStorage;
            }
        }

        if ( 
$CurrentPlanet['deuterium'] <= $MaxDeuteriumStorage )
        {
            
$DeuteriumProduction = (($ProductionTime * ($CurrentPlanet['deuterium_perhour'] / 3600))) * (0.01 * $production_level);
            
$DeuteriumBaseProduc = (($ProductionTime * ($game_config['deuterium_basic_income'] / 3600 )));
            
$DeuteriumTheorical  = $CurrentPlanet['deuterium'] + $DeuteriumProduction  +  $DeuteriumBaseProduc;
            if ( 
$DeuteriumTheorical <= $MaxDeuteriumStorage )
            {
                
$CurrentPlanet['deuterium']  = $DeuteriumTheorical;
            }
            else
            {
                
$CurrentPlanet['deuterium']  = $MaxDeuteriumStorage;
            }
        }

        if( 
$CurrentPlanet['metal'] < 0 )
        {
            
$CurrentPlanet['metal']  = 0;
        }

        if( 
$CurrentPlanet['crystal'] < 0 )
        {
            
$CurrentPlanet['crystal']  = 0;
        }

        if( 
$CurrentPlanet['deuterium'] < 0 )
        {
            
$CurrentPlanet['deuterium']  = 0;
        }

        if (
$Simul == false)
        {
            
$Builded          = HandleElementBuildingQueue ( $CurrentUser, $CurrentPlanet, $ProductionTime );

            
$QryUpdatePlanet  = "UPDATE {{table}} SET ";
            
$QryUpdatePlanet .= "`metal` = '"            . $CurrentPlanet['metal']             ."', ";
            
$QryUpdatePlanet .= "`crystal` = '"          . $CurrentPlanet['crystal']           ."', ";
            
$QryUpdatePlanet .= "`deuterium` = '"        . $CurrentPlanet['deuterium']         ."', ";
            
$QryUpdatePlanet .= "`last_update` = '"      . $CurrentPlanet['last_update']       ."', ";
            
$QryUpdatePlanet .= "`b_hangar_id` = '"      . $CurrentPlanet['b_hangar_id']       ."', ";
            
$QryUpdatePlanet .= "`metal_perhour` = '"    . $CurrentPlanet['metal_perhour']     ."', ";
            
$QryUpdatePlanet .= "`crystal_perhour` = '"  . $CurrentPlanet['crystal_perhour']   ."', ";
            
$QryUpdatePlanet .= "`deuterium_perhour` = '". $CurrentPlanet['deuterium_perhour'] ."', ";
            
$QryUpdatePlanet .= "`energy_used` = '"      . $CurrentPlanet['energy_used']       ."', ";
            
$QryUpdatePlanet .= "`energy_max` = '"       . $CurrentPlanet['energy_max']        ."', ";
            if ( 
$Builded != '' )
            {
                foreach ( 
$Builded as $Element => $Count )
                {
                    if (
$Element <> '')
                        
$QryUpdatePlanet .= "`". $resource[$Element] ."` = '". $CurrentPlanet[$resource[$Element]] ."', ";
                }
            }
            
$QryUpdatePlanet .= "`b_hangar` = '". $CurrentPlanet['b_hangar'] ."' ";
            
$QryUpdatePlanet .= "WHERE ";
            
$QryUpdatePlanet .= "`id` = '". $CurrentPlanet['id'] ."';";
            
doquery($QryUpdatePlanet, 'planets');
        }
    }
?>
Онлайн: 0
Реклама