[BUG][2.8.1] New Bug MissionCaseDestruction.class.php

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • [BUG][2.8.1] New Bug MissionCaseDestruction.class.php

    Existe un bug critico en la misión destrucción y consiste en que cuando envías mas de una flota a destruir una luna al mismo tiempo y la luna es destruida por la primera flota enviada entonces la segunda flota o la tercera en caso de que la segunda falle destruye el planeta al cual pertenecía la luna, este bug esta presente en la mayoría de las versiones de 2moons y aquí les comparto como corregirlo ^^

    Lo primero que vamos a hacer es verificar si la luna a la cual va dirigida la flota existe para en caso de que no exista la segunda flota que se dirija a destruirla regrese automáticamente y no se desvíe al planeta al cual pertenecía la luna, para ello buscamos las siguientes líneas en MissionCaseDestruction.class.php

    PHP Source Code: MissionCaseDestruction.class.php

    1. $sql = "SELECT * FROM %%PLANETS%% WHERE id = :planetId;";
    2. $targetPlanet = $db->selectSingle($sql, array(
    3. ':planetId' => $this->_fleet['fleet_end_id']
    4. ));
    y después de estas líneas colocamos lo siguiente que es lo que va a verificar la existencia de la luna y en caso de que no exista va a enviar la flota de regreso al planeta de origen

    PHP Source Code: MissionCaseDestruction.class.php

    1. if($targetPlanet == false)
    2. {
    3. $sql = "SELECT * FROM %%USERS%% WHERE id = :id;";
    4. $Player = Database::get()->selectSingle($sql, array(
    5. ':id' => $this->_fleet['fleet_owner']
    6. ));
    7. FleetFunctions::SendFleetBack($Player, $this->_fleet['fleet_id']);
    8. return;
    9. }
    Con esto las flota que se dirigía a destruir la luna regresara automáticamente al ver que la luna ya no existe. Pero hay un fragmento de esta clase que hace que las flotas que se dirigían a la luna se desvíen al planeta al cual pertenecía la luna y este fragmento también debe ser editado ya que si no cuando la primera flota enviada destruya la luna entonces va a desviar las demás flotas que se encuentran en camino a destruir la luna hacia el planeta y para evitar esto buscamos las siguientes líneas en MissionCaseDestruction.class.php


    PHP Source Code: MissionCaseDestruction.class.php

    1. $sql = 'UPDATE %%FLEETS%% SET
    2. fleet_start_type = 1,
    3. fleet_start_id = :planetId
    4. WHERE fleet_start_id = :moonId;';
    Y las reemplazamos por:


    PHP Source Code: MissionCaseDestruction.class.php

    1. $sql = 'UPDATE %%FLEETS%% SET
    2. fleet_end_type = 1,
    3. fleet_end_id = :planetId
    4. WHERE fleet_end_id = :moonId
    5. AND fleet_id != :fleetId AND fleet_mission != 9;';
    Con esto ya queda solucionado este error y podrán enviar las flotas que deseen al mismo tiempo a destruir una luna ya que cuando la luna sea destruida todas las demás flotas que se encuentren en camino a destruir dicha luna al ver que la luna ya no existe viraran automáticamente. Espero que esto les sea de gran utilidad y no se olviden dejarnos un hermoso LIKE :thumbsup: :thumbsup: :thumbsup:

    The post was edited 1 time, last by Linkin ().

  • Abyss wrote:

    my file is this correct?
    En tu caso si quieres no le hagas esos cambios por que en el tuyo lo que hace es cambiar las flotas que vienen después de la que destruya la luna con misión destruir las pasa a ataque hacia el planeta al cual pertenecía la luna
  • esto es un error en 2moons a la hora de aceptar un miembro en la alianza
    USER ERROR
    Message: SQLSTATE[42000]: Syntax error or access violation: 1064 Routing query to backend failed. See the error log for further details.

    Query-Code:SELECT r.`applyID`, r.`time`, r.`text`, u.`username`, u.`register_time`, u.`onlinetime`, u.`galaxy`, u.`system`, u.`planet`, CONCAT_WS(':', u.`galaxy`, u.`system`, u.`planet`) AS `coordinates`, @total_fights := u.`wons` + u.`loos` + u.`draws`, @total_fights_percentage := @total_fights / 100, @total_fights AS `total_fights`, u.`wons`, ROUND(u.`wons` / @total_fights_percentage, 2) AS `wons_percentage`, u.`loos`, ROUND(u.`loos` / @total_fights_percentage, 2) AS `loos_percentage`, u.`draws`, ROUND(u.`draws` / @total_fights_percentage, 2) AS `draws_percentage`, u.`kbmetal`, u.`kbcrystal`, u.`lostunits`, u.`desunits`, stat.`tech_rank`, stat.`tech_points`, stat.`build_rank`, stat.`build_points`, stat.`defs_rank`, stat.`defs_points`, stat.`fleet_rank`, stat.`fleet_points`, stat.`total_rank`, stat.`total_points`, p.`name` FROM uni1_alliance_request AS r LEFT JOIN uni1_users AS u ON r.userId = u.id INNER JOIN uni1_statpoints AS stat LEFT JOIN uni1_planets AS p ON p.id = u.id_planet WHERE applyID = 4;
    File: /includes/classes/Database.class.php
    Line: 126
    URL: xnova.nat.cu/game.php?page=all…n&action=detailApply&id=4
    PHP-Version: 7.3.29
    PHP-API: fpm-fcgi
    2Moons Version: 2.4.git
    Debug Backtrace:
    #0 /includes/classes/Database.class.php(202): Database->_query('SELECT/n/t/t/tr.`ap...', Array, 'select')
    #1 /includes/pages/game/ShowAlliancePage.class.php(1093): Database->selectSingle('SELECT/n/t/t/tr.`ap...', Array)
    #2 /includes/pages/game/ShowAlliancePage.class.php(735): ShowAlliancePage->adminDetailApply()
    #3 /game.php(58): ShowAlliancePage->admin()
    #4 {main}
  • Desconocido wrote:

    esto es un error en 2moons a la hora de aceptar un miembro en la alianza
    USER ERROR
    Message: SQLSTATE[42000]: Syntax error or access violation: 1064 Routing query to backend failed. See the error log for further details.
    Query-Code:SELECT r.`applyID`, r.`time`, r.`text`, u.`username`, u.`register_time`, u.`onlinetime`, u.`galaxy`, u.`system`, u.`planet`, CONCAT_WS(':', u.`galaxy`, u.`system`, u.`planet`) AS `coordinates`, @total_fights := u.`wons` + u.`loos` + u.`draws`, @total_fights_percentage := @total_fights / 100, @total_fights AS `total_fights`, u.`wons`, ROUND(u.`wons` / @total_fights_percentage, 2) AS `wons_percentage`, u.`loos`, ROUND(u.`loos` / @total_fights_percentage, 2) AS `loos_percentage`, u.`draws`, ROUND(u.`draws` / @total_fights_percentage, 2) AS `draws_percentage`, u.`kbmetal`, u.`kbcrystal`, u.`lostunits`, u.`desunits`, stat.`tech_rank`, stat.`tech_points`, stat.`build_rank`, stat.`build_points`, stat.`defs_rank`, stat.`defs_points`, stat.`fleet_rank`, stat.`fleet_points`, stat.`total_rank`, stat.`total_points`, p.`name` FROM uni1_alliance_request AS r LEFT JOIN uni1_users AS u ON r.userId = u.id INNER JOIN uni1_statpoints AS stat LEFT JOIN uni1_planets AS p ON p.id = u.id_planet WHERE applyID = 4;
    File: /includes/classes/Database.class.php
    Line: 126
    URL: xnova.nat.cu/game.php?page=all…n&action=detailApply&id=4
    PHP-Version: 7.3.29
    PHP-API: fpm-fcgi
    2Moons Version: 2.4.git
    Debug Backtrace:
    #0 /includes/classes/Database.class.php(202): Database->_query('SELECT/n/t/t/tr.`ap...', Array, 'select')
    #1 /includes/pages/game/ShowAlliancePage.class.php(1093): Database->selectSingle('SELECT/n/t/t/tr.`ap...', Array)
    #2 /includes/pages/game/ShowAlliancePage.class.php(735): ShowAlliancePage->adminDetailApply()
    #3 /game.php(58): ShowAlliancePage->admin()
    #4 {main}

    Tienes todas tus tablas en InnoDB?