Hi,
I think I found new bug on 2moons. I search 2moons github, and I have the same code. That mean the but is in engine.
Check on your own game.
When we send recyclers directly from galaxy page would collect wrackage, and use phalanx on planet where is the wrackage. Then we see recyclers on the phalanx. And we shouldn't
Because we're using phalanx on a scrap planet
Someone tip for fix it?
Display All
I think I found new bug on 2moons. I search 2moons github, and I have the same code. That mean the but is in engine.
Check on your own game.
When we send recyclers directly from galaxy page would collect wrackage, and use phalanx on planet where is the wrackage. Then we see recyclers on the phalanx. And we shouldn't
Because we're using phalanx on a scrap planet
Someone tip for fix it?
PHP Source Code: FlyingFleetTable
- <?php
- class FlyingFleetsTable
- {
- protected $Mode = null;
- protected $userId = null;
- protected $planetId = null;
- protected $IsPhalanx = false;
- protected $missions = false;
- public function __construct() {
- }
- public function setUser($userId) {
- $this->userId = $userId;
- }
- public function setPlanet($planetId) {
- $this->planetId = $planetId;
- }
- public function setPhalanxMode() {
- $this->IsPhalanx = true;
- }
- public function setMissions($missions) {
- $this->missions = implode(',', array_filter(explode(',', $missions), 'is_numeric'));
- }
- private function getFleets($acsID = false) {
- if($this->IsPhalanx) {
- $where = '(fleet_start_id = :planetId AND fleet_start_type = 1 AND fleet_mission != 4) OR
- (fleet_end_id = :planetId AND fleet_end_type = 1 AND fleet_mess IN (0, 2))';
- $param = array(
- ':planetId' => $this->planetId
- );
- } elseif(!empty($acsID)) {
- $where = 'fleet_group = :acsId';
- $param = array(
- ':acsId' => $acsID
- );
- } elseif($this->missions) {
- $where = '(fleet_owner = :userId OR fleet_target_owner = :userId) AND fleet_mission IN ('.$this->missions.')';
- $param = array(
- ':userId' => $this->userId
- );
- } else {
- $where = 'fleet_owner = :userId OR (fleet_target_owner = :userId AND fleet_mission != 8)';
- $param = array(
- ':userId' => $this->userId,
- );
- }
- $sql = 'SELECT DISTINCT fleet.*, ownuser.username as own_username, targetuser.username as target_username,
- ownplanet.name as own_planetname, targetplanet.name as target_planetname
- FROM %%FLEETS%% fleet
- LEFT JOIN %%USERS%% ownuser ON (ownuser.id = fleet.fleet_owner)
- LEFT JOIN %%USERS%% targetuser ON (targetuser.id = fleet.fleet_target_owner)
- LEFT JOIN %%PLANETS%% ownplanet ON (ownplanet.id = fleet.fleet_start_id)
- LEFT JOIN %%PLANETS%% targetplanet ON (targetplanet.id = fleet.fleet_end_id)
- WHERE '.$where.';';
- return Database::get()->select($sql, $param);
- }
- public function renderTable()
- {
- $fleetResult = $this->getFleets();
- $ACSDone = array();
- $FleetData = array();
- foreach($fleetResult as $fleetRow)
- {
- if ($fleetRow['fleet_mess'] == 0 && $fleetRow['fleet_start_time'] > TIMESTAMP && ($fleetRow['fleet_group'] == 0 || !isset($ACSDone[$fleetRow['fleet_group']])))
- {
- $ACSDone[$fleetRow['fleet_group']] = true;
- $FleetData[$fleetRow['fleet_start_time'].$fleetRow['fleet_id']] = $this->BuildFleetEventTable($fleetRow, 0);
- }
- if ($fleetRow['fleet_mission'] == 10 || ($fleetRow['fleet_mission'] == 4 && $fleetRow['fleet_mess'] == 0))
- continue;
- if ($fleetRow['fleet_end_stay'] != $fleetRow['fleet_start_time'] && $fleetRow['fleet_end_stay'] > TIMESTAMP && ($this->IsPhalanx && $fleetRow['fleet_end_id'] == $this->planetId))
- $FleetData[$fleetRow['fleet_end_stay'].$fleetRow['fleet_id']] = $this->BuildFleetEventTable($fleetRow, 2);
- $MissionsOK = 5;
- if ($fleetRow['fleet_end_stay'] > TIMESTAMP && $fleetRow['fleet_mission'] == $MissionsOK )
- $FleetData[$fleetRow['fleet_end_stay'].$fleetRow['fleet_id']] = $this->BuildFleetEventTable($fleetRow, 2);
- if ($fleetRow['fleet_owner'] != $this->userId)
- continue;
- if ($fleetRow['fleet_end_time'] > TIMESTAMP)
- $FleetData[$fleetRow['fleet_end_time'].$fleetRow['fleet_id']] = $this->BuildFleetEventTable($fleetRow, 1);
- }
- ksort($FleetData);
- return $FleetData;
- }
- private function BuildFleetEventTable($fleetRow, $FleetState)
- {
- $Time = 0;
- $Rest = 0;
- if ($FleetState == 0 && !$this->IsPhalanx && $fleetRow['fleet_group'] != 0)
- {
- $acsResult = $this->getFleets($fleetRow['fleet_group']);
- $EventString = '';
- foreach($acsResult as $acsRow)
- {
- $Return = $this->getEventData($acsRow, $FleetState);
- $Rest = $Return[0];
- $EventString .= $Return[1].'<br><br>';
- $Time = $Return[2];
- }
- $EventString = substr($EventString, 0, -8);
- }
- else
- {
- list($Rest, $EventString, $Time) = $this->getEventData($fleetRow, $FleetState);
- }
- return array(
- 'text' => $EventString,
- 'returntime' => $Time,
- 'resttime' => $Rest
- );
- }
- public function getEventData($fleetRow, $Status)
- {
- global $LNG;
- $Owner = $fleetRow['fleet_owner'] == $this->userId;
- $FleetStyle = array (
- 1 => 'attack',
- 2 => 'federation',
- 3 => 'transport',
- 4 => 'deploy',
- 5 => 'hold',
- 6 => 'espionage',
- 7 => 'colony',
- 8 => 'harvest',
- 9 => 'destroy',
- 10 => 'missile',
- 11 => 'transport',
- 15 => 'transport',
- );
- $GoodMissions = array(3, 5);
- $MissionType = $fleetRow['fleet_mission'];
- $FleetPrefix = ($Owner == true) ? 'own' : '';
- $FleetType = $FleetPrefix.$FleetStyle[$MissionType];
- $FleetName = (!$Owner && ($MissionType == 1 || $MissionType == 2) && $Status == FLEET_OUTWARD && $fleetRow['fleet_target_owner'] != $this->userId) ? $LNG['cff_acs_fleet'] : $LNG['ov_fleet'];
- $FleetContent = $this->CreateFleetPopupedFleetLink($fleetRow, $FleetName, $FleetPrefix.$FleetStyle[$MissionType]);
- $FleetCapacity = $this->CreateFleetPopupedMissionLink($fleetRow, $LNG['type_mission_'.$MissionType], $FleetPrefix.$FleetStyle[$MissionType]);
- $FleetStatus = array(0 => 'flight', 1 => 'return' , 2 => 'holding');
- $StartType = $LNG['type_planet_'.$fleetRow['fleet_start_type']];
- $TargetType = $LNG['type_planet_'.$fleetRow['fleet_end_type']];
- if ($MissionType == 8) {
- if ($Status == FLEET_OUTWARD)
- $EventString = sprintf($LNG['cff_mission_own_recy_0'], $FleetContent, $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), GetTargetAddressLink($fleetRow, $FleetType), $FleetCapacity);
- else
- $EventString = sprintf($LNG['cff_mission_own_recy_1'], $FleetContent, GetTargetAddressLink($fleetRow, $FleetType), $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $FleetCapacity);
- } elseif ($MissionType == 10) {
- if ($Owner)
- $EventString = sprintf($LNG['cff_mission_own_mip'], $fleetRow['fleet_amount'], $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $TargetType, $fleetRow['target_planetname'], GetTargetAddressLink($fleetRow, $FleetType));
- else
- $EventString = sprintf($LNG['cff_mission_target_mip'], $fleetRow['fleet_amount'], $this->BuildHostileFleetPlayerLink($fleetRow), $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $TargetType, $fleetRow['target_planetname'], GetTargetAddressLink($fleetRow, $FleetType));
- } elseif ($MissionType == 11 || $MissionType == 15) {
- if ($Status == FLEET_OUTWARD)
- $EventString = sprintf($LNG['cff_mission_own_expo_0'], $FleetContent, $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), GetTargetAddressLink($fleetRow, $FleetType), $FleetCapacity);
- elseif ($Status == FLEET_HOLD)
- $EventString = sprintf($LNG['cff_mission_own_expo_2'], $FleetContent, $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), GetTargetAddressLink($fleetRow, $FleetType), $FleetCapacity);
- else
- $EventString = sprintf($LNG['cff_mission_own_expo_1'], $FleetContent, GetTargetAddressLink($fleetRow, $FleetType), $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $FleetCapacity);
- } else {
- if ($Owner == true) {
- if ($Status == FLEET_OUTWARD) {
- if (!$Owner && ($MissionType == 1 || $MissionType == 2))
- $Message = $LNG['cff_mission_acs'] ;
- else
- $Message = $LNG['cff_mission_own_0'];
- $EventString = sprintf($Message, $FleetContent, $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $TargetType, $fleetRow['target_planetname'], GetTargetAddressLink($fleetRow, $FleetType), $FleetCapacity);
- } elseif($Status == FLEET_RETURN)
- $EventString = sprintf($LNG['cff_mission_own_1'], $FleetContent, $TargetType, $fleetRow['target_planetname'], GetTargetAddressLink($fleetRow, $FleetType), $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $FleetCapacity);
- else
- $EventString = sprintf($LNG['cff_mission_own_2'], $FleetContent, $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $TargetType, $fleetRow['target_planetname'], GetTargetAddressLink($fleetRow, $FleetType), $FleetCapacity);
- } else {
- if ($Status == FLEET_HOLD)
- $Message = $LNG['cff_mission_target_stay'];
- elseif(in_array($MissionType, $GoodMissions))
- $Message = $LNG['cff_mission_target_good'];
- else
- $Message = $LNG['cff_mission_target_bad'];
- $EventString = sprintf($Message, $FleetContent, $this->BuildHostileFleetPlayerLink($fleetRow), $StartType, $fleetRow['own_planetname'], GetStartAddressLink($fleetRow, $FleetType), $TargetType, $fleetRow['target_planetname'], GetTargetAddressLink($fleetRow, $FleetType), $FleetCapacity);
- }
- }
- $EventString = '<span class="'.$FleetStatus[$Status].' '.$FleetType.'">'.$EventString.'</span>';
- if ($Status == FLEET_OUTWARD)
- $Time = $fleetRow['fleet_start_time'];
- elseif ($Status == FLEET_RETURN)
- $Time = $fleetRow['fleet_end_time'];
- elseif ($Status == FLEET_HOLD)
- $Time = $fleetRow['fleet_end_stay'];
- else
- $Time = TIMESTAMP;
- $Rest = $Time - TIMESTAMP;
- return array($Rest, $EventString, $Time);
- }
- ...
- ...