示例#1
0
 public static function FleetAjax()
 {
     global $USER, $PLANET, $db, $resource, $LNG;
     $UserSpyProbes = $PLANET[$resource[210]];
     $UserRecycles = $PLANET[$resource[209]];
     $UserGRecycles = $PLANET[$resource[219]];
     $UserDeuterium = $PLANET['deuterium'];
     $UserMissiles = $PLANET['interplanetary_misil'];
     $thisgalaxy = $PLANET['galaxy'];
     $thissystem = $PLANET['system'];
     $thisplanet = $PLANET['planet'];
     $thisplanettype = $PLANET['planet_type'];
     $galaxy = request_var('galaxy', 0);
     $system = request_var('system', 0);
     $planet = request_var('planet', 0);
     $planettype = request_var('planettype', 0);
     $mission = request_var('mission', 0);
     $CurrentFlyingFleets = parent::GetCurrentFleets($USER['id']);
     switch ($mission) {
         case 6:
             $SpyProbes = request_var('ships', 0);
             $SpyProbes = min($SpyProbes, $PLANET[$resource[210]]);
             if (empty($SpyProbes)) {
                 exit($ResultMessage = "611; " . $LNG['fa_no_spios'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
             }
             $FleetArray = array(210 => $SpyProbes);
             break;
         case 8:
             $SRecycles = explode("|", request_var('ships', ''));
             $GRecycles = min($SRecycles[0], $PLANET[$resource[219]]);
             $Recycles = min($SRecycles[1], $PLANET[$resource[209]]);
             if (empty($Recycles) && empty($GRecycles)) {
                 exit($ResultMessage = "611; " . $LNG['fa_no_recyclers'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
             }
             $FleetArray = array(219 => $GRecycles, 209 => $Recycles);
             break;
         default:
             exit("610; " . $LNG['fa_not_enough_probes'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
             break;
     }
     parent::CleanFleetArray($FleetArray);
     if (empty($FleetArray)) {
         exit("610; " . $LNG['fa_not_enough_probes'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
     }
     if (parent::GetMaxFleetSlots($USER) <= $CurrentFlyingFleets) {
         $ResultMessage = "612; " . $LNG['fa_no_more_slots'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
         die($ResultMessage);
     }
     if ($galaxy > MAX_GALAXY_IN_WORLD || $galaxy < 1) {
         $ResultMessage = "602; " . $LNG['fa_galaxy_not_exist'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
         die($ResultMessage);
     }
     if ($system > MAX_SYSTEM_IN_GALAXY || $system < 1) {
         $ResultMessage = "602; " . $LNG['fa_system_not_exist'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
         die($ResultMessage);
     }
     if ($planet > MAX_PLANET_IN_SYSTEM || $planet < 1) {
         $ResultMessage = "602; " . $LNG['fa_planet_not_exist'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
         die($ResultMessage);
     }
     $QrySelectEnemy = "SELECT id_level, id_owner FROM " . PLANETS . " ";
     $QrySelectEnemy .= "WHERE ";
     $QrySelectEnemy .= "`galaxy` = '" . $galaxy . "' AND ";
     $QrySelectEnemy .= "`system` = '" . $system . "' AND ";
     $QrySelectEnemy .= "`planet` = '" . $planet . "' AND ";
     $QrySelectEnemy .= "`planet_type` = '" . $planettype . "';";
     $TargetRow = $db->uniquequery($QrySelectEnemy);
     if ($TargetRow['id_level'] > $USER['authlevel'] && $mission == 6 && $CONF['adm_attack'] == 0) {
         exit("619; " . $LNG['fa_action_not_allowed'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
     }
     $TargetUser = GetUserByID($TargetRow['id_owner'], array('id', 'onlinetime', 'urlaubs_modus'));
     if ($USER['urlaubs_modus'] == 1) {
         $ResultMessage = "620; " . $LNG['fa_vacation_mode_current'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
         die($ResultMessage);
     }
     if ($mission == 6) {
         $TargetVacat = $TargetUser['urlaubs_modus'];
         if ($TargetVacat) {
             $ResultMessage = "605; " . $LNG['fa_vacation_mode'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
             die($ResultMessage);
         }
         $UserPoints = $USER;
         $User2Points = $db->uniquequery("SELECT `total_points` FROM " . STATPOINTS . " WHERE `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '" . $TargetRow['id_owner'] . "';");
         $IsNoobProtec = CheckNoobProtec($UserPoints, $User2Points, $TargetUser['onlinetime']);
         if ($IsNoobProtec['NoobPlayer']) {
             exit("603; " . $LNG['fa_week_player'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
         } elseif ($IsNoobProtec['StrongPlayer']) {
             exit("604; " . $LNG['fa_strong_player'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
         }
         if (empty($TargetRow['id_owner'])) {
             $ResultMessage = "601; " . $LNG['fa_planet_not_exist'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
             die($ResultMessage);
         }
         if ($TargetRow["id_owner"] == $PLANET["id_owner"]) {
             $ResultMessage = "618; " . $LNG['fa_not_spy_yourself'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles;
             die($ResultMessage);
         }
     }
     $SpeedFactor = parent::GetGameSpeedFactor();
     $Distance = parent::GetTargetDistance($thisgalaxy, $galaxy, $thissystem, $system, $thisplanet, $planet);
     $SpeedAllMin = parent::GetFleetMaxSpeed($FleetArray, $USER);
     $Duration = parent::GetMissionDuration(10, $SpeedAllMin, $Distance, $SpeedFactor, $USER);
     $consumption = parent::GetFleetConsumption($FleetArray, $Duration, $Distance, $SpeedAllMin, $USER, $SpeedFactor);
     $UserDeuterium -= $consumption;
     if ($UserDeuterium < 0) {
         exit("613; " . $LNG['fa_not_enough_fuel'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
     } elseif ($consumption > parent::GetFleetRoom($FleetArray)) {
         exit("613; " . $LNG['fa_no_fleetroom'] . " |" . $CurrentFlyingFleets . " " . $UserSpyProbes . " " . $UserRecycles . " " . $UserGRecycles . " " . $UserMissiles);
     }
     $fleet['fly_time'] = $Duration;
     $fleet['start_time'] = $Duration + TIMESTAMP;
     $fleet['end_time'] = $Duration * 2 + TIMESTAMP;
     $FleetShipCount = 0;
     $FleetDBArray = "";
     $FleetSubQRY = "";
     foreach ($FleetArray as $Ship => $Count) {
         $FleetShipCount += $Count;
         $FleetDBArray .= $Ship . "," . $Count . ";";
         $FleetSubQRY .= "`" . $resource[$Ship] . "` = `" . $resource[$Ship] . "` - " . $Count . " , ";
     }
     if (connection_aborted()) {
         exit;
     }
     $QryUpdate = "LOCK TABLE " . FLEETS . " WRITE, " . PLANETS . " WRITE;";
     $QryUpdate .= "INSERT INTO " . FLEETS . " SET ";
     $QryUpdate .= "`fleet_owner` = '" . $USER['id'] . "', ";
     $QryUpdate .= "`fleet_mission` = '" . $mission . "', ";
     $QryUpdate .= "`fleet_amount` = '" . $FleetShipCount . "', ";
     $QryUpdate .= "`fleet_array` = '" . $FleetDBArray . "', ";
     $QryUpdate .= "`fleet_start_time` = '" . $fleet['start_time'] . "', ";
     $QryUpdate .= "`fleet_start_galaxy` = '" . $thisgalaxy . "', ";
     $QryUpdate .= "`fleet_start_system` = '" . $thissystem . "', ";
     $QryUpdate .= "`fleet_start_planet` = '" . $thisplanet . "', ";
     $QryUpdate .= "`fleet_start_type` = '" . $thisplanettype . "', ";
     $QryUpdate .= "`fleet_end_time` = '" . $fleet['end_time'] . "', ";
     $QryUpdate .= "`fleet_end_galaxy` = '" . $galaxy . "', ";
     $QryUpdate .= "`fleet_end_system` = '" . $system . "', ";
     $QryUpdate .= "`fleet_end_planet` = '" . $planet . "', ";
     $QryUpdate .= "`fleet_end_type` = '" . $planettype . "', ";
     $QryUpdate .= "`fleet_target_owner` = '" . $TargetRow['id_owner'] . "', ";
     $QryUpdate .= "`start_time` = '" . TIMESTAMP . "';";
     $QryUpdate .= "UPDATE " . PLANETS . " SET ";
     $QryUpdate .= $FleetSubQRY;
     $QryUpdate .= "`deuterium` = '" . floattostring($UserDeuterium) . "' ";
     $QryUpdate .= "WHERE ";
     $QryUpdate .= "`id` = '" . $PLANET['id'] . "';";
     $QryUpdate .= "UNLOCK TABLES;";
     $db->multi_query($QryUpdate);
     $CurrentFlyingFleets++;
     $ResultMessage = "600; " . $LNG['fa_sending'] . " " . $FleetShipCount . " " . $LNG['tech'][$Ship] . " a " . $galaxy . ":" . $system . ":" . $planet . "...|";
     $ResultMessage .= $CurrentFlyingFleets . " " . ($UserSpyProbes - $SpyProbes) . " " . ($UserRecycles - $Recycles) . " " . ($UserGRecycles - $GRecycles) . " " . $UserMissiles;
     die($ResultMessage);
 }