Example #1
0
function MissionCaseAttack($FleetRow)
{
    global $phpEx, $xnova_root_path, $pricelist, $lang, $resource, $CombatCaps, $game_config;
    includelang('tech');
    includelang('system');
    if ($FleetRow['fleet_mess'] == 0 && $FleetRow['fleet_start_time'] <= time()) {
        if (!isset($CombatCaps[202]['sd'])) {
            message('<font color=red>' . $lang['sys_no_vars'] . '</font><br />(Error: <font color=red>(!isset($pricelist[202][\'sd\']))</font>. Please report this to an admin.)', $lang['sys_error'], 'fleet.php', 15);
        }
        include $xnova_root_path . "includes/functions/MissionCaseEvoAttack.php";
        $strunitsgesamt = $result['lost']['att'] + $result['lost']['def'];
        $user1lostunits = $result['lost']['att'];
        $user1shotunits = $result['lost']['def'];
        $user2lostunits = $result['lost']['def'];
        $user2shotunits = $result['lost']['att'];
        $strtruemmerfeld = $result['debree']['att'][0] + $result['debree']['def'][0] + $result['debree']['att'][1] + $result['debree']['def'][1] + $result['debree']['att'][2] + $result['debree']['def'][2];
        $strtruemmermetal = $result['debree']['att'][0] + $result['debree']['def'][0];
        $strtruemmercrystal = $result['debree']['att'][1] + $result['debree']['def'][1];
        $strtruemmerappolonium = $result['debree']['att'][2] + $result['debree']['def'][2];
        $FleetDebris = $result['debree']['att'][0] + $result['debree']['def'][0] + $result['debree']['att'][1] + $result['debree']['def'][1] + $result['debree']['att'][2] + $result['debree']['def'][2];
        $StrAttackerUnits = sprintf($lang['sys_attacker_lostunits'], $result['lost']['att']);
        $StrDefenderUnits = sprintf($lang['sys_defender_lostunits'], $result['lost']['def']);
        $StrRuins = sprintf($lang['sys_gcdrunits'], $result['debree']['def'][0] + $result['debree']['att'][0], $lang['Metal'], $result['debree']['def'][1] + $result['debree']['att'][1], $lang['Crystal'], $result['debree']['def'][2] + $result['debree']['att'][2], $lang['Appolonium']);
        $DebrisField = $StrAttackerUnits . "<br />" . $StrDefenderUnits . "<br />" . $StrRuins;
        $MoonChance = $FleetDebris / 100000;
        if ($FleetDebris > 2000000) {
            $MoonChance = 20;
        }
        if ($FleetDebris < 100000) {
            $UserChance = 0;
            $ChanceMoon = "";
        } elseif ($FleetDebris >= 100000) {
            $UserChance = mt_rand(1, 100);
            $ChanceMoon = sprintf($lang['sys_moonproba'], $MoonChance);
        }
        if ($UserChance > 0 && $UserChance <= $MoonChance && $targetGalaxy['id_luna'] == 0) {
            $TargetPlanetName = CreateOneMoonRecord($FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'], $TargetUserID, $FleetRow['fleet_start_time'], '', $MoonChance);
            $GottenMoon = sprintf($lang['sys_moonbuilt'], $TargetPlanetName, $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
            $GottenMoon .= "<br />";
            //Abfrage der Größe des Trümmerfeldes?
            $QrySelectGalaxy = "SELECT * FROM {{table}} ";
            $QrySelectGalaxy .= "WHERE ";
            $QrySelectGalaxy .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
            $QrySelectGalaxy .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
            $QrySelectGalaxy .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' ";
            $QrySelectGalaxy .= "LIMIT 1;";
            $TargetGalaxy = doquery($QrySelectGalaxy, 'galaxy', true);
            // Trümmerfeld wird gelöscht da der Mond aus den Trümmern entstanden ist!.
            $QryUpdateGalaxy = "UPDATE {{table}} SET ";
            $QryUpdateGalaxy .= "`metal` = `metal` - '" . $TargetGalaxy["metal"] . "', ";
            $QryUpdateGalaxy .= "`crystal` = `crystal` - '" . $TargetGalaxy["crystal"] . "',";
            $QryUpdateGalaxy .= "`appolonium` = `appolonium` - '" . $TargetGalaxy["appolonium"] . "' ";
            $QryUpdateGalaxy .= "WHERE ";
            $QryUpdateGalaxy .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
            $QryUpdateGalaxy .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
            $QryUpdateGalaxy .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' ";
            $QryUpdateGalaxy .= "LIMIT 1;";
            doquery($QryUpdateGalaxy, 'galaxy');
        } elseif ($UserChance = 0 or $UserChance > $MoonChance) {
            $GottenMoon = "";
        }
        $OwnedUser = doquery('SELECT * FROM {{table}} WHERE id=' . $FleetRow['fleet_owner'], 'users', true);
        $formatted_cr = formatCR($result, $steal, $MoonChance, $GottenMoon, $totaltime);
        $raport = $formatted_cr['html'];
        $rid = md5($raport);
        $QryInsertRapport = 'INSERT INTO {{table}} SET ';
        $QryInsertRapport .= '`time` = UNIX_TIMESTAMP(), ';
        foreach ($attackFleets as $fleetID => $attacker) {
            $users2[$attacker['user']['id']] = $attacker['user']['id'];
        }
        foreach ($defense as $fleetID => $defender) {
            $users2[$defender['user']['id']] = $defender['user']['id'];
        }
        $QryInsertRapport .= '`owners` = "' . implode(',', $users2) . '", ';
        $QryInsertRapport .= '`rid` = "' . $rid . '", ';
        $QryInsertRapport .= '`raport` = "' . mysql_real_escape_string($raport) . '"';
        doquery($QryInsertRapport, 'rw') or die("Error inserting CR to database" . mysql_error() . "<br /><br />Trying to execute:" . mysql_query());
        $angreifer = $formatted_cr['angreifer'];
        $dpath = !$user["dpath"] ? DEFAULT_SKINPATH : $user["dpath"];
        $rid = md5($raport);
        $QryInserttopkb = "INSERT INTO {{table}} SET ";
        $QryInserttopkb .= "`time` = UNIX_TIMESTAMP(), ";
        $QryInserttopkb .= "`id_owner1` = '" . $FleetRow['fleet_owner'] . "', ";
        $QryInserttopkb .= "`angreifer` = '" . $angreifer . "', ";
        $QryInserttopkb .= "`id_owner2` = '" . $targetUser['id'] . "', ";
        $QryInserttopkb .= "`defender` = '" . $targetUser['username'] . "', ";
        $QryInserttopkb .= "`gesamtunits` = '" . $strunitsgesamt . "', ";
        $QryInserttopkb .= "`gesamttruemmer` = '" . $strtruemmerfeld . "', ";
        $QryInserttopkb .= "`rid` = '" . $rid . "', ";
        $QryInserttopkb .= "`a_zestrzelona` = '" . $a_zestrzelona . "', ";
        $QryInserttopkb .= "`raport` = '" . mysql_real_escape_string($raport) . "',";
        $QryInserttopkb .= "`fleetresult` = '" . $result['won'] . "';";
        doquery("LOCK TABLE {{table}} WRITE", 'topkb');
        doquery($QryInserttopkb, 'topkb');
        doquery("UNLOCK TABLES", '');
        $user1stat = $FleetRow['fleet_owner'];
        $user2stat = $TargetUserID;
        $raport = '<a href # OnClick=\'f( "rw.php?raport=' . $rid . '", "");\' >';
        $raport .= '<center>';
        if ($result['won'] == "a") {
            $raport .= '<font color=\'green\'>';
        } elseif ($result['won'] == "w") {
            $raport .= '<font color=\'orange\'>';
        } elseif ($result['won'] == "r") {
            $raport .= '<font color=\'red\'>';
        }
        $raport .= $lang['sys_mess_attack_report'] . ' [' . $FleetRow['fleet_end_galaxy'] . ':' . $FleetRow['fleet_end_system'] . ':' . $FleetRow['fleet_end_planet'] . '] </font></a><br /><br />';
        $raport .= '<font color=\'red\'>' . $lang['sys_perte_attaquant'] . ': ' . $result['lost']['att'] . '</font>';
        $raport .= '<font color=\'green\'>   ' . $lang['sys_perte_defenseur'] . ': ' . $result['lost']['def'] . '</font><br />';
        $raport .= $lang['sys_gain'] . ' ' . $lang['Metal'] . ':<font color=\'#adaead\'>' . $steal['metal'] . '</font>   ' . $lang['Crystal'] . ':<font color=\'#ef51ef\'>' . $steal['crystal'] . '</font>   ' . $lang['Deuterium'] . ':<font color=\'#f77542\'>' . $steal['deuterium'] . '</font>   ' . $lang['Appolonium'] . ':<font color=\'#ffa07a\'>' . $steal['appolonium'] . '</font><br />';
        $raport .= $lang['sys_debris'] . ' ' . $lang['Metal'] . ': <font color=\'#adaead\'>' . ($result['debree']['att'][0] + $result['debree']['def'][0]) . '</font>   ' . $lang['Crystal'] . ': <font color=\'#ef51ef\'>' . ($result['debree']['att'][1] + $result['debree']['def'][1]) . '</font>   ' . $lang['Appolonium'] . ': <font color=\'#ef51ef\'>' . ($result['debree']['att'][2] + $result['debree']['def'][2]) . '</font><br /></center>';
        SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport);
        $raport2 = '<a href # OnClick=\'f( "rw.php?raport=' . $rid . '", "");\' >';
        $raport2 .= '<center>';
        if ($result['won'] == "a") {
            $raport2 .= '<font color=\'red\'>';
        } elseif ($result['won'] == "w") {
            $raport2 .= '<font color=\'orange\'>';
        } elseif ($result['won'] == "r") {
            $raport2 .= '<font color=\'green\'>';
        }
        $raport2 .= $lang['sys_mess_attack_report'] . ' [' . $FleetRow['fleet_end_galaxy'] . ':' . $FleetRow['fleet_end_system'] . ':' . $FleetRow['fleet_end_planet'] . '] </font></a><br /><br />';
        foreach ($users2 as $id) {
            if ($id != $FleetRow['fleet_owner'] && $id != 0) {
                SendSimpleMessage($id, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport2);
            }
        }
        $user1 = doquery("SELECT * FROM {{table}} WHERE `id` = '" . $user1stat . "';", 'users');
        while ($user1data = mysql_fetch_assoc($user1)) {
            $strtruemmermetaluser1 = $strtruemmermetal + $user1data['kbmetal'];
            $strtruemmercrystaluser1 = $strtruemmercrystal + $user1data['kbcrystal'];
            $strtruemmerappoloniumuser1 = $strtruemmerappolonium + $user1data['kbappolonium'];
            $user1lostunits = $user1lostunits + $user1data['lostunits'];
            $user1shotunits = $user1shotunits + $user1data['desunits'];
            $user1wons = $user1data['wons'];
            $user1loos = $user1data['loos'];
            $user1draws = $user1data['draws'];
        }
        $user2 = doquery("SELECT * FROM {{table}} WHERE `id` = '" . $user2stat . "';", 'users');
        while ($user2data = mysql_fetch_assoc($user2)) {
            $strtruemmermetaluser2 = $strtruemmermetal + $user2data['kbmetal'];
            $strtruemmercrystaluser2 = $strtruemmercrystal + $user2data['kbcrystal'];
            $strtruemmerappoloniumuser2 = $strtruemmerappolonium + $user2data['kbappolonium'];
            $user2lostunits = $user2lostunits + $user2data['lostunits'];
            $user2shotunits = $user2shotunits + $user2data['desunits'];
            $user2wons = $user2data['wons'];
            $user2loos = $user2data['loos'];
            $user2draws = $user2data['draws'];
        }
        if ($result['won'] == "a") {
            $user1wons = $user1wons + 1;
            $user2loos = $user2loos + 1;
        } elseif ($result['won'] == "w") {
            $user1draws = $user1draws + 1;
            $user2draws = $user2draws + 1;
        } elseif ($result['won'] == "r") {
            $user1loos = $user1loos + 1;
            $user2wons = $user2wons + 1;
        }
        $QryUpdateuserstat = "UPDATE {{table}} SET ";
        $QryUpdateuserstat .= "`wons` = '" . $user1wons . "', ";
        $QryUpdateuserstat .= "`loos` = '" . $user1loos . "', ";
        $QryUpdateuserstat .= "`draws` = '" . $user1draws . "', ";
        $QryUpdateuserstat .= "`kbmetal` = '" . $strtruemmermetaluser1 . "', ";
        $QryUpdateuserstat .= "`kbcrystal` = '" . $strtruemmercrystaluser1 . "', ";
        $QryUpdateuserstat .= "`kbappolonium` = '" . $strtruemmerappoloniumuser1 . "', ";
        $QryUpdateuserstat .= "`lostunits` = '" . $user1lostunits . "', ";
        $QryUpdateuserstat .= "`desunits` = '" . $user1shotunits . "' ";
        $QryUpdateuserstat .= "WHERE ";
        $QryUpdateuserstat .= "`id` = '" . $FleetRow['fleet_owner'] . "';";
        doquery($QryUpdateuserstat, 'users');
        $QryUpdateuser2stat = "UPDATE {{table}} SET ";
        $QryUpdateuser2stat .= "`wons` = '" . $user2wons . "', ";
        $QryUpdateuser2stat .= "`loos` = '" . $user2loos . "', ";
        $QryUpdateuser2stat .= "`draws` = '" . $user2draws . "', ";
        $QryUpdateuser2stat .= "`kbmetal` = '" . $strtruemmermetaluser2 . "', ";
        $QryUpdateuser2stat .= "`kbcrystal` = '" . $strtruemmercrystaluser2 . "', ";
        $QryUpdateuser2stat .= "`kbappolonium` = '" . $strtruemmerappoloniumuser2 . "', ";
        $QryUpdateuser2stat .= "`lostunits` = '" . $user2lostunits . "', ";
        $QryUpdateuser2stat .= "`desunits` = '" . $user2shotunits . "' ";
        $QryUpdateuser2stat .= "WHERE ";
        $QryUpdateuser2stat .= "`id` = '" . $targetUser['id'] . "';";
        doquery($QryUpdateuser2stat, 'users');
        $CurrentUser = doquery("SELECT * FROM {{table}} WHERE id = " . $FleetRow['fleet_owner'], 'users', true);
        $CurrentUserID = $CurrentUser['id'];
        $AddPoint = $CurrentUser['xpraid'] + 1;
        $QryUpdateOfficier = "UPDATE {{table}} SET ";
        $QryUpdateOfficier .= "`xpraid` = '" . $AddPoint . "' ";
        $QryUpdateOfficier .= "WHERE id = '" . $CurrentUserID . "' ";
        $QryUpdateOfficier .= "LIMIT 1 ;";
        doquery($QryUpdateOfficier, 'users');
        $RaidsTotal = $CurrentUser['raids'] + 1;
        if ($result['won'] == "a") {
            $RaidsWin = $CurrentUser['raidswin'] + 1;
            $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
            $QryUpdateRaidsCompteur .= "`raidswin` ='" . $RaidsWin . "', ";
            $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
            $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
            $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
            doquery($QryUpdateRaidsCompteur, 'users');
        } elseif ($result['won'] == "r" || $result['won'] == "w") {
            $RaidsLoose = $CurrentUser['raidsloose'] + 1;
            $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
            $QryUpdateRaidsCompteur .= "`raidsloose` ='" . $RaidsLoose . "', ";
            $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
            $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
            $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
            doquery($QryUpdateRaidsCompteur, 'users');
        }
    } elseif ($FleetRow['fleet_end_time'] <= time()) {
        $Message = sprintf($lang['sys_tran_mess_angriffback'], $TargetName, GetTargetAdressLink($FleetRow, ''), pretty_number($FleetRow['fleet_resource_metal']), $lang['Metal'], pretty_number($FleetRow['fleet_resource_crystal']), $lang['Crystal'], pretty_number($FleetRow['fleet_resource_deuterium']), $lang['Deuterium'], pretty_number($FleetRow['fleet_resource_appolonium']), $lang['Appolonium']);
        SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_fleetback'], $Message);
        RestoreFleetToPlanet($FleetRow);
        doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . $FleetRow['fleet_id'], 'fleets');
        //Piratenangriff nach Zufallsprinzip
        $zufall = 0;
        $zufall = rand(1, 10);
        if ($zufall == 7) {
            Piratenangriff($FleetRow);
            $zufall = 0;
        }
        // Ende Piratenangriff
    }
}
Example #2
0
/**
 * This file is under the GPL liscence, which must be included with the file under distrobution (license.txt)
 * this file was made by Xnova, edited to support Toms combat engine by Anthony (MadnessReD) [http://madnessred.co.cc/]
 * Do not edit this comment block
 */
function MissionCaseAttack($FleetRow)
{
    global $phpEx, $xnova_root_path, $pricelist, $lang, $resource, $CombatCaps, $game_config;
    //IPMORTANT!!! XNOVA 0.8? or SP1?
    /*
    		If you are using X-Nova 0.8 you must change "$xnova_root_path" to "$ugamela_root_path".
    		
    		/* Below is the origional global, may need to pull some stuff across */
    //global $user, $phpEx, $ugamela_root_path, $pricelist, $lang, $resource, $CombatCaps;
    includelang('tech');
    includelang('system');
    doquery("UPDATE {{table}} SET `small_protection_shield` =1 WHERE `small_protection_shield` >1;", 'planets') or die("Sorting Dome Cheaters:<br />" . mysql_error());
    doquery("UPDATE {{table}} SET `big_protection_shield` =1 WHERE `big_protection_shield` >1;", 'planets') or die("Sorting Dome Cheaters:<br />" . mysql_error());
    /*
    doquery ("UPDATE {{table}} SET `sm_grav_dome` =1 WHERE `sm_grav_dome` >1;", 'planets')
    	or die("Sorting Dome Cheaters:<br />".mysql_error());
    doquery ("UPDATE {{table}} SET `xl_grav_dome` =1 WHERE `xl_grav_dome` >1;", 'planets')
    	or die("Sorting Dome Cheaters:<br />".mysql_error());
    */
    if ($FleetRow['fleet_mess'] == 0 && $FleetRow['fleet_start_time'] <= time()) {
        if (!isset($CombatCaps[202]['sd'])) {
            message('<font color=red>' . $lang['sys_no_vars'] . '</font><br />(Error: <font color=red>(!isset($pricelist[202][\'sd\']))</font>. Please report this to an admin.)', $lang['sys_error'], 'fleet.php', 15);
        }
        //include toms stuff
        include $xnova_root_path . "includes/functions/MissionCaseEvoAttack.php";
        // FROM HERE THE SCRIPT WAS IMPORTED (not TvdW code anymore)
        $FleetDebris = $result['debree']['att'][0] + $result['debree']['def'][0] + $result['debree']['att'][1] + $result['debree']['def'][1];
        $StrAttackerUnits = sprintf($lang['sys_attacker_lostunits'], $result['lost']['att']);
        $StrDefenderUnits = sprintf($lang['sys_defender_lostunits'], $result['lost']['def']);
        $StrRuins = sprintf($lang['sys_gcdrunits'], $result['debree']['def'][0] + $result['debree']['att'][0], $lang['Metal'], $result['debree']['def'][1] + $result['debree']['att'][1], $lang['Crystal']);
        $DebrisField = $StrAttackerUnits . "<br />" . $StrDefenderUnits . "<br />" . $StrRuins;
        $MoonChance = $FleetDebris / 10000000;
        if ($FleetDebris > 35000000) {
            $MoonChance = 35;
        }
        if ($FleetDebris < 10000000) {
            $UserChance = 0;
            $ChanceMoon = "";
        } elseif ($FleetDebris >= 10000000) {
            $UserChance = mt_rand(1, 100);
            $ChanceMoon = sprintf($lang['sys_moonproba'], $MoonChance);
        }
        if ($UserChance > 0 && $UserChance <= $MoonChance && $galenemyrow['id_luna'] == 0) {
            $TargetPlanetName = CreateOneMoonRecord($FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'], $TargetUserID, $FleetRow['fleet_start_time'], '', $MoonChance);
            $GottenMoon = sprintf($lang['sys_moonbuilt'], $TargetPlanetName, $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
            $GottenMoon .= "<br />";
        } elseif ($UserChance = 0 or $UserChance > $MoonChance) {
            $GottenMoon = "";
        }
        //Start of Raid Points ((Anthony))
        /*
        $att_id = $CurrentUserID;
        $def_id = $TargetUserID;
        $att_dam = $zlom["atakujacy"];
        $def_dam = $zlom["wrog"];
        
        if($def_dam > $att_dam){
        	$att_pts = round(sqrt($def_dam / (pow($att_dam, 2) + 1)));
        	if ($att_pts > 10){
        		$att_pts == 10;
        	}
        	$def_pts = 0;
        	$raid_pts_mess = "The Attacker won ".$att_pts." points";
        }elseif($def_dam < $att_dam){
        	$att_pts = 0;
        	$def_pts = round(sqrt($att_dam / (pow($def_dam, 2) + 1)));
        	if ($def_pts > 10){
        		$def_pts == 10;
        	}
        	$raid_pts_mess = "The Defender won ".$def_pts." points";
        }else{
        	$att_pts = 0;
        	$def_pts = 0;
        }
        
        doquery("UPDATE {{table}} SET `lvl_raid` = `lvl_raid` + '".$att_pts."' WHERE `id` = '".$att_id."' ;", 'users');	
        doquery("UPDATE {{table}} SET `lvl_raid` = `lvl_raid` + '".$def_pts."' WHERE `id` = '".$def_id."' ;", 'users');
        
        doquery("UPDATE {{table}} SET `xpraid` = `xpraid` + '".$def_dam."' WHERE `id` = '".$att_id."' ;", 'users');	
        doquery("UPDATE {{table}} SET `xpraid` = `xpraid` + '".$att_dam."' WHERE `id` = '".$def_id."' ;", 'users');
        doquery("UPDATE {{table}} SET `xploss` = `xploss` + '".$att_dam."' WHERE `id` = '".$att_id."' ;", 'users');	
        doquery("UPDATE {{table}} SET `xploss` = `xploss` + '".$def_dam."' WHERE `id` = '".$def_id."' ;", 'users');
        */
        //End of Raid Points
        //MadnessRed CR Creation.
        $formatted_cr = formatCR($result, $steal, $MoonChance, $GottenMoon, $totaltime);
        $raport = $formatted_cr['html'];
        $rid = md5($raport);
        $QryInsertRapport = 'INSERT INTO {{table}} SET ';
        $QryInsertRapport .= '`time` = UNIX_TIMESTAMP(), ';
        foreach ($attackFleets as $fleetID => $attacker) {
            $users2[$attacker['user']['id']] = $attacker['user']['id'];
        }
        foreach ($defense as $fleetID => $defender) {
            $users2[$defender['user']['id']] = $defender['user']['id'];
        }
        $QryInsertRapport .= '`owners` = "' . implode(',', $users2) . '", ';
        $QryInsertRapport .= '`rid` = "' . $rid . '", ';
        $QryInsertRapport .= '`raport` = "' . mysql_real_escape_string($raport) . '"';
        doquery($QryInsertRapport, 'rw') or die("Error inserting CR to database" . mysql_error() . "<br /><br />Trying to execute:" . mysql_query());
        // Colorize report.
        $raport = '<a href # OnClick=\'f( "rw.php?raport=' . $rid . '", "");\' >';
        $raport .= '<center>';
        if ($result['won'] == 1) {
            $raport .= '<font color=\'green\'>';
        } elseif ($result['won'] == 0) {
            $raport .= '<font color=\'orange\'>';
        } elseif ($result['won'] == 2) {
            $raport .= '<font color=\'red\'>';
        }
        $raport .= $lang['sys_mess_attack_report'] . ' [' . $FleetRow['fleet_end_galaxy'] . ':' . $FleetRow['fleet_end_system'] . ':' . $FleetRow['fleet_end_planet'] . '] </font></a><br /><br />';
        $raport .= '<font color=\'red\'>' . $lang['sys_perte_attaquant'] . ': ' . $result['lost']['att'] . '</font>';
        $raport .= '<font color=\'green\'>   ' . $lang['sys_perte_defenseur'] . ': ' . $result['lost']['def'] . '</font><br />';
        $raport .= $lang['sys_gain'] . ' ' . $lang['Metal'] . ':<font color=\'#adaead\'>' . $steal['metal'] . '</font>   ' . $lang['Crystal'] . ':<font color=\'#ef51ef\'>' . $steal['crystal'] . '</font>   ' . $lang['Deuterium'] . ':<font color=\'#f77542\'>' . $steal['deuterium'] . '</font><br />';
        $raport .= $lang['sys_debris'] . ' ' . $lang['Metal'] . ': <font color=\'#adaead\'>' . ($result['debree']['att'][0] + $result['debree']['def'][0]) . '</font>   ' . $lang['Crystal'] . ': <font color=\'#ef51ef\'>' . ($result['debree']['att'][1] + $result['debree']['def'][1]) . '</font><br /></center>';
        SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport);
        // Coloriize report.
        $raport2 = '<a href # OnClick=\'f( "rw.php?raport=' . $rid . '", "");\' >';
        $raport2 .= '<center>';
        if ($result['won'] == 1) {
            $raport2 .= '<font color=\'green\'>';
        } elseif ($result['won'] == 0) {
            $raport2 .= '<font color=\'orange\'>';
        } elseif ($result['won'] == 2) {
            $raport2 .= '<font color=\'red\'>';
        }
        $raport2 .= $lang['sys_mess_attack_report'] . ' [' . $FleetRow['fleet_end_galaxy'] . ':' . $FleetRow['fleet_end_system'] . ':' . $FleetRow['fleet_end_planet'] . '] </font></a><br /><br />';
        foreach ($users2 as $id) {
            if ($id != $FleetRow['fleet_owner'] && $id != 0) {
                SendSimpleMessage($id, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport2);
            }
        }
        // Ajout du petit point raideur
        $AddPoint = $CurrentUser['xpraid'] + 1;
        $QryUpdateOfficier = "UPDATE {{table}} SET ";
        $QryUpdateOfficier .= "`xpraid` = '" . $AddPoint . "' ";
        $QryUpdateOfficier .= "WHERE id = '" . $CurrentUserID . "' ";
        $QryUpdateOfficier .= "LIMIT 1 ;";
        doquery($QryUpdateOfficier, 'users');
        // Ajout d'un point au compteur de raids
        $RaidsTotal = $CurrentUser['raids'] + 1;
        if ($FleetResult == "a") {
            $RaidsWin = $CurrentUser['raidswin'] + 1;
            $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
            $QryUpdateRaidsCompteur .= "`raidswin` ='" . $RaidsWin . "', ";
            $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
            $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
            $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
            doquery($QryUpdateRaidsCompteur, 'users');
        } elseif ($FleetResult == "r" || $FleetResult == "w") {
            $RaidsLoose = $CurrentUser['raidsloose'] + 1;
            $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
            $QryUpdateRaidsCompteur .= "`raidsloose` ='" . $RaidsLoose . "', ";
            $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
            $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
            $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
            doquery($QryUpdateRaidsCompteur, 'users');
        }
    } elseif ($FleetRow['fleet_end_time'] <= time()) {
        RestoreFleetToPlanet($FleetRow);
        doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . $FleetRow['fleet_id'], 'fleets');
    }
}
Example #3
0
         if ($deuter > $max_resources) {
             $steal['deuterium'] = $max_resources;
             $max_resources -= $steal['deuterium'];
         } else {
             $steal['deuterium'] = $deuter;
             $max_resources -= $steal['deuterium'];
         }
     }
     $steal = array_map('round', $steal);
     //$steal['metal']
     //$steal['crystal']
     //$steal['deuterium']
 }
 // !---------------------------------------------------------------------------------------------------------------------------------! //
 //Code checkpoint 1 (for finding this point again
 $formatted_cr = formatCR($result, $steal, $MoonChance, $GottenMoon, $totaltime);
 // Well lets just copy rw.php code. If I am showing a cr why re-inent the wheel???
 $Page = "<html>";
 $Page .= "<head>";
 $Page .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"" . $dpath . "/formate.css\">";
 $Page .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\" />";
 $Page .= "</head>";
 $Page .= "<body>";
 $Page .= "<center>";
 //OK, one change, we won't be getting cr from datbase, instead we will be generating it directly, lets skip the database stage, this is what get generated and put in the database.
 $report = stripslashes($formatted_cr['html']);
 foreach ($lang['tech_rc'] as $id => $s_name) {
     $str_replace1 = array("[ship[" . $id . "]]");
     $str_replace2 = array($s_name);
     $report = str_replace($str_replace1, $str_replace2, $report);
 }
 private function MissionCaseAttack($FleetRow)
 {
     global $pricelist, $lang, $resource, $CombatCaps, $game_config, $user;
     if ($FleetRow['fleet_mess'] == 0 && $FleetRow['fleet_start_time'] <= time()) {
         $targetPlanet = doquery("SELECT * FROM {{table}} WHERE `galaxy` = " . intval($FleetRow['fleet_end_galaxy']) . " AND `system` = " . intval($FleetRow['fleet_end_system']) . " AND `planet_type` = " . intval($FleetRow['fleet_end_type']) . " AND `planet` = " . intval($FleetRow['fleet_end_planet']) . ";", 'planets', true);
         if ($FleetRow['fleet_group'] > 0) {
             doquery("DELETE FROM {{table}} WHERE id =" . intval($FleetRow['fleet_group']), 'aks');
             doquery("UPDATE {{table}} SET fleet_mess=1 WHERE fleet_group=" . $FleetRow['fleet_group'], 'fleets');
         } else {
             doquery("UPDATE {{table}} SET fleet_mess=1 WHERE fleet_id=" . intval($FleetRow['fleet_id']), 'fleets');
         }
         $targetGalaxy = doquery('SELECT * FROM {{table}} WHERE `galaxy` = ' . intval($FleetRow['fleet_end_galaxy']) . ' AND `system` = ' . intval($FleetRow['fleet_end_system']) . ' AND `planet` = ' . intval($FleetRow['fleet_end_planet']) . ';', 'galaxy', true);
         $targetUser = doquery('SELECT * FROM {{table}} WHERE id=' . intval($targetPlanet['id_owner']), 'users', true);
         PlanetResourceUpdate($targetUser, $targetPlanet, time());
         $targetGalaxy = doquery('SELECT * FROM {{table}} WHERE `galaxy` = ' . intval($FleetRow['fleet_end_galaxy']) . ' AND `system` = ' . intval($FleetRow['fleet_end_system']) . ' AND `planet` = ' . intval($FleetRow['fleet_end_planet']) . ';', 'galaxy', true);
         $targetUser = doquery('SELECT * FROM {{table}} WHERE id=' . intval($targetPlanet['id_owner']), 'users', true);
         $TargetUserID = $targetUser['id'];
         $attackFleets = array();
         if ($FleetRow['fleet_group'] != 0) {
             $fleets = doquery('SELECT * FROM {{table}} WHERE fleet_group=' . $FleetRow['fleet_group'], 'fleets');
             while ($fleet = mysql_fetch_assoc($fleets)) {
                 $attackFleets[$fleet['fleet_id']]['fleet'] = $fleet;
                 $attackFleets[$fleet['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id =' . intval($fleet['fleet_owner']), 'users', true);
                 $attackFleets[$fleet['fleet_id']]['detail'] = array();
                 $temp = explode(';', $fleet['fleet_array']);
                 foreach ($temp as $temp2) {
                     $temp2 = explode(',', $temp2);
                     if ($temp2[0] < 100) {
                         continue;
                     }
                     if (!isset($attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]])) {
                         $attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]] = 0;
                     }
                     $attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]] += $temp2[1];
                 }
             }
         } else {
             $attackFleets[$FleetRow['fleet_id']]['fleet'] = $FleetRow;
             $attackFleets[$FleetRow['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id=' . intval($FleetRow['fleet_owner']), 'users', true);
             $attackFleets[$FleetRow['fleet_id']]['detail'] = array();
             $temp = explode(';', $FleetRow['fleet_array']);
             foreach ($temp as $temp2) {
                 $temp2 = explode(',', $temp2);
                 if ($temp2[0] < 100) {
                     continue;
                 }
                 if (!isset($attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]])) {
                     $attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]] = 0;
                 }
                 $attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]] += $temp2[1];
             }
         }
         $defense = array();
         $def = doquery('SELECT * FROM {{table}} WHERE `fleet_end_galaxy` = ' . intval($FleetRow['fleet_end_galaxy']) . ' AND `fleet_end_system` = ' . intval($FleetRow['fleet_end_system']) . ' AND `fleet_end_type` = ' . intval($FleetRow['fleet_end_type']) . ' AND `fleet_end_planet` = ' . intval($FleetRow['fleet_end_planet']) . ' AND fleet_start_time<' . time() . ' AND fleet_end_stay>=' . time(), 'fleets');
         while ($defRow = mysql_fetch_assoc($def)) {
             $defRowDef = explode(';', $defRow['fleet_array']);
             foreach ($defRowDef as $Element) {
                 $Element = explode(',', $Element);
                 if ($Element[0] < 100) {
                     continue;
                 }
                 if (!isset($defense[$defRow['fleet_id']]['def'][$Element[0]])) {
                     $defense[$defRow['fleet_id']][$Element[0]] = 0;
                 }
                 $defense[$defRow['fleet_id']]['def'][$Element[0]] += $Element[1];
                 $defense[$defRow['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id=' . intval($defRow['fleet_owner']), 'users', true);
             }
         }
         $defense[0]['def'] = array();
         $defense[0]['user'] = $targetUser;
         for ($i = 200; $i < 500; $i++) {
             if (isset($resource[$i]) && isset($targetPlanet[$resource[$i]])) {
                 $defense[0]['def'][$i] = $targetPlanet[$resource[$i]];
             }
         }
         $start = microtime(true);
         $result = calculateAttack($attackFleets, $defense);
         $totaltime = microtime(true) - $start;
         $QryUpdateGalaxy = "UPDATE {{table}} SET ";
         $QryUpdateGalaxy .= "`metal` = `metal` +'" . ($result['debree']['att'][0] + $result['debree']['def'][0]) . "', ";
         $QryUpdateGalaxy .= "`crystal` = `crystal` + '" . ($result['debree']['att'][1] + $result['debree']['def'][1]) . "' ";
         $QryUpdateGalaxy .= "WHERE ";
         $QryUpdateGalaxy .= "`galaxy` = '" . intval($FleetRow['fleet_end_galaxy']) . "' AND ";
         $QryUpdateGalaxy .= "`system` = '" . intval($FleetRow['fleet_end_system']) . "' AND ";
         $QryUpdateGalaxy .= "`planet` = '" . intval($FleetRow['fleet_end_planet']) . "' ";
         $QryUpdateGalaxy .= "LIMIT 1;";
         doquery($QryUpdateGalaxy, 'galaxy');
         $totalDebree = $result['debree']['def'][0] + $result['debree']['def'][1] + $result['debree']['att'][0] + $result['debree']['att'][1];
         $steal = array('metal' => 0, 'crystal' => 0, 'deuterium' => 0);
         if ($result['won'] == "a") {
             $steal = self::calculateAKSSteal($attackFleets, $targetPlanet);
         }
         foreach ($attackFleets as $fleetID => $attacker) {
             $fleetArray = '';
             $totalCount = 0;
             foreach ($attacker['detail'] as $element => $amount) {
                 if ($amount) {
                     $fleetArray .= $element . ',' . $amount . ';';
                 }
                 $totalCount += $amount;
             }
             if ($totalCount <= 0) {
                 doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . intval($fleetID), 'fleets');
             } else {
                 doquery('UPDATE {{table}} SET fleet_array="' . substr($fleetArray, 0, -1) . '", fleet_amount=' . $totalCount . ', fleet_mess=1 WHERE fleet_id=' . intval($fleetID), 'fleets');
             }
         }
         foreach ($defense as $fleetID => $defender) {
             if ($fleetID != 0) {
                 $fleetArray = '';
                 $totalCount = 0;
                 foreach ($defender['def'] as $element => $amount) {
                     if ($amount) {
                         $fleetArray .= $element . ',' . $amount . ';';
                     }
                     $totalCount += $amount;
                 }
                 if ($totalCount <= 0) {
                     doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . intval($fleetID), 'fleets');
                 } else {
                     doquery('UPDATE {{table}} SET fleet_array="' . $fleetArray . '", fleet_amount=' . $totalCount . ', fleet_mess=1 WHERE fleet_id=' . $fleetID, 'fleets');
                 }
             } else {
                 $fleetArray = '';
                 $totalCount = 0;
                 foreach ($defender['def'] as $element => $amount) {
                     $fleetArray .= '`' . $resource[$element] . '`=' . $amount . ', ';
                 }
                 $QryUpdateTarget = "UPDATE {{table}} SET ";
                 $QryUpdateTarget .= $fleetArray;
                 $QryUpdateTarget .= "`metal` = `metal` - '" . $steal['metal'] . "', ";
                 $QryUpdateTarget .= "`crystal` = `crystal` - '" . $steal['crystal'] . "', ";
                 $QryUpdateTarget .= "`deuterium` = `deuterium` - '" . $steal['deuterium'] . "' ";
                 $QryUpdateTarget .= "WHERE ";
                 $QryUpdateTarget .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
                 $QryUpdateTarget .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
                 $QryUpdateTarget .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' AND ";
                 $QryUpdateTarget .= "`planet_type` = '" . $FleetRow['fleet_end_type'] . "' ";
                 $QryUpdateTarget .= "LIMIT 1;";
                 doquery($QryUpdateTarget, 'planets');
             }
         }
         $FleetDebris = $result['debree']['att'][0] + $result['debree']['def'][0] + $result['debree']['att'][1] + $result['debree']['def'][1];
         $StrAttackerUnits = sprintf($lang['sys_attacker_lostunits'], $result['lost']['att']);
         $StrDefenderUnits = sprintf($lang['sys_defender_lostunits'], $result['lost']['def']);
         $StrRuins = sprintf($lang['sys_gcdrunits'], $result['debree']['def'][0] + $result['debree']['att'][0], $lang['Metal'], $result['debree']['def'][1] + $result['debree']['att'][1], $lang['Crystal']);
         $DebrisField = $StrAttackerUnits . "<br />" . $StrDefenderUnits . "<br />" . $StrRuins;
         $MoonChance = $FleetDebris / 100000;
         // mod TOP KB
         $strunitsgesamt = $result['lost']['att'] + $result['lost']['def'];
         $user1lostunits = $result['lost']['att'];
         $user1shotunits = $result['lost']['def'];
         $user2lostunits = $result['lost']['def'];
         $user2shotunits = $result['lost']['att'];
         $strtruemmermetal = $result['debree']['def'][0] + $result['debree']['att'][0];
         $strtruemmercrystal = $result['debree']['def'][1] + $result['debree']['att'][1];
         $strtruemmerfeld = $strtruemmermetal + $strtruemmercrystal;
         // mod TOP KB
         if ($FleetDebris > 2000000) {
             $MoonChance = 20;
             $UserChance = mt_rand(1, 100);
             $ChanceMoon = sprintf($lang['sys_moonproba'], $MoonChance);
         } elseif ($FleetDebris < 100000) {
             $UserChance = 0;
             $ChanceMoon = sprintf($lang['sys_moonproba'], $MoonChance);
         } elseif ($FleetDebris >= 100000) {
             $UserChance = mt_rand(1, 100);
             $ChanceMoon = sprintf($lang['sys_moonproba'], $MoonChance);
         }
         if ($UserChance > 0 && $UserChance <= $MoonChance && $targetGalaxy['id_luna'] == 0) {
             $TargetPlanetName = CreateOneMoonRecord($FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'], $TargetUserID, $FleetRow['fleet_start_time'], '', $MoonChance);
             $GottenMoon = sprintf($lang['sys_moonbuilt'], $TargetPlanetName, $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
             $GottenMoon .= "<br />";
         } elseif ($UserChance = 0 or $UserChance > $MoonChance) {
             $GottenMoon = "";
         }
         $formatted_cr = formatCR($result, $steal, $MoonChance, $GottenMoon, $totaltime);
         $raport = $formatted_cr['html'];
         $rid = md5($raport);
         $QryInsertRapport = 'INSERT INTO {{table}} SET ';
         $QryInsertRapport .= '`time` = UNIX_TIMESTAMP(), ';
         foreach ($attackFleets as $fleetID => $attacker) {
             $users2[$attacker['user']['id']] = $attacker['user']['id'];
         }
         foreach ($defense as $fleetID => $defender) {
             $users2[$defender['user']['id']] = $defender['user']['id'];
         }
         $QryInsertRapport .= '`owners` = "' . implode(',', $users2) . '", ';
         $QryInsertRapport .= '`rid` = "' . $rid . '", ';
         $QryInsertRapport .= '`a_zestrzelona` = "' . $formatted_cr['destroyed'] . '", ';
         $QryInsertRapport .= '`raport` = "' . mysql_escape_string($raport) . '"';
         doquery($QryInsertRapport, 'rw') or die("Error inserting CR to database" . mysql_error() . "<br /><br />Trying to execute:" . mysql_query());
         // mod TOP KB
         if ($result['won'] == "a") {
             $blubb = a;
         }
         if ($result['won'] == "w") {
             $blubb = w;
         }
         if ($result['won'] == "r") {
             $blubb = r;
         }
         $rid = md5($raport);
         $QryInserttopkb = "INSERT INTO {{table}} SET ";
         $QryInserttopkb .= "`time` = UNIX_TIMESTAMP(), ";
         $QryInserttopkb .= "`id_owner1` = '" . $FleetRow['fleet_owner'] . "', ";
         $QryInserttopkb .= "`angreifer` = '" . $attacker['user']['username'] . "', ";
         $QryInserttopkb .= "`id_owner2` = '" . $TargetUserID . "', ";
         $QryInserttopkb .= "`defender` = '" . $defender['user']['username'] . "', ";
         $QryInserttopkb .= "`gesamtunits` = '" . $strunitsgesamt . "', ";
         $QryInserttopkb .= "`gesamttruemmer` = '" . $strtruemmerfeld . "', ";
         $QryInserttopkb .= "`rid` = '" . $rid . "', ";
         $QryInserttopkb .= "`a_zestrzelona` = '" . $formatted_cr['destroyed'] . "', ";
         $QryInserttopkb .= "`raport` = '" . addslashes($raport) . "',";
         $QryInserttopkb .= "`fleetresult` = '" . $blubb . "';";
         doquery("LOCK TABLE {{table}} WRITE", 'topkb');
         doquery($QryInserttopkb, 'topkb');
         doquery("UNLOCK TABLES", '');
         $user1stat = $FleetRow['fleet_owner'];
         $user2stat = $TargetUserID;
         // mod TOP KB
         if ($result['won'] == "a") {
             $style = "green";
         } elseif ($result['won'] == "w") {
             $style = "orange";
         } elseif ($result['won'] == "r") {
             $style = "red";
         }
         $raport = "<a href=\"#\" style=\"color:" . $style . ";\"  OnClick=\\'f(\"CombatReport.php?raport=" . $rid . "\", \"\");\\' >" . $lang['sys_mess_attack_report'] . " [" . $FleetRow['fleet_end_galaxy'] . ":" . $FleetRow['fleet_end_system'] . ":" . $FleetRow['fleet_end_planet'] . "]</a>";
         SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $raport, '');
         if ($result['won'] == "a") {
             $style = "red";
         } elseif ($result['won'] == "w") {
             $style = "orange";
         } elseif ($result['won'] == "r") {
             $style = "green";
         }
         $raport2 = "<a href=\"#\" style=\"color:" . $style . ";\"  OnClick=\\'f(\"CombatReport.php?raport=" . $rid . "\", \"\");\\' >" . $lang['sys_mess_attack_report'] . " [" . $FleetRow['fleet_end_galaxy'] . ":" . $FleetRow['fleet_end_system'] . ":" . $FleetRow['fleet_end_planet'] . "]</a>";
         foreach ($users2 as $id) {
             if ($id != $FleetRow['fleet_owner'] && $id != 0) {
                 SendSimpleMessage($id, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $raport2, '');
             }
         }
     } elseif ($FleetRow['fleet_end_time'] <= time()) {
         $Message = sprintf($lang['sys_fleet_won'], $TargetName, GetTargetAdressLink($FleetRow, ''), pretty_number($FleetRow['fleet_resource_metal']), $lang['Metal'], pretty_number($FleetRow['fleet_resource_crystal']), $lang['Crystal'], pretty_number($FleetRow['fleet_resource_deuterium']), $lang['Deuterium']);
         SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_fleetback'], $Message);
         $this->RestoreFleetToPlanet($FleetRow);
         doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . intval($FleetRow['fleet_id']), 'fleets');
     }
 }
Example #5
0
/**
 * This file is under the GPL liscence, which must be included with the file under distrobution (license.txt)
 * this file was made by Xnova, edited to support Toms combat engine by Anthony (MadnessReD) [http://madnessred.co.cc/]
 * Do not edit this comment block
 */
function flt_mission_attack($mission_data)
{
    global $lang, $sn_data, $time_now;
    $fleet_row = $mission_data['fleet'];
    $destination_user = $mission_data['dst_user'];
    $destination_planet = $mission_data['dst_planet'];
    if (!$fleet_row) {
        return;
    }
    if (!$destination_user || !$destination_planet || !is_array($destination_user) || !is_array($destination_planet)) {
        doquery("UPDATE {{fleets}} SET `fleet_mess` = 1 WHERE `fleet_id` = {$fleet_row['fleet_id']} LIMIT 1;");
        return;
    }
    $TargetUserID = $destination_planet['id_owner'];
    $attackFleets = array();
    // ACS function: put all fleet into an array
    if ($fleet_row['fleet_group'] != 0) {
        $fleets = doquery('SELECT * FROM {{fleets}} WHERE fleet_group=' . $fleet_row['fleet_group']);
        while ($fleet = mysql_fetch_assoc($fleets)) {
            BE_attackFleetFill(&$attackFleets, $fleet);
        }
    } else {
        BE_attackFleetFill(&$attackFleets, $fleet_row);
    }
    $db_admiral_name = $sn_data[MRC_ADMIRAL]['name'];
    $defenseFleets = array(0 => array('def' => array(), 'user' => array('id' => $destination_user['id'], 'username' => $destination_user['username'], $db_admiral_name => $destination_user[$db_admiral_name], 'defence_tech' => $destination_user['defence_tech'], 'shield_tech' => $destination_user['shield_tech'], 'military_tech' => $destination_user['military_tech'])));
    foreach ($sn_data['groups']['combat'] as $combatUnitID) {
        if ($destination_planet[$sn_data[$combatUnitID]['name']] > 0) {
            $defenseFleets[0]['def'][$combatUnitID] = $destination_planet[$sn_data[$combatUnitID]['name']];
        }
    }
    $fleets = doquery('SELECT * FROM {{fleets}} WHERE `fleet_end_galaxy` = ' . $fleet_row['fleet_end_galaxy'] . ' AND `fleet_end_system` = ' . $fleet_row['fleet_end_system'] . ' AND `fleet_end_planet` = ' . $fleet_row['fleet_end_planet'] . ' AND `fleet_end_type` = ' . $fleet_row['fleet_end_type'] . ' AND fleet_start_time<' . $time_now . ' AND fleet_end_stay>=' . $time_now);
    while ($fleet = mysql_fetch_assoc($fleets)) {
        BE_attackFleetFill(&$defenseFleets, $fleet, 'def');
    }
    $start = microtime(true);
    $result = coe_attack_calculate($attackFleets, $defenseFleets);
    $totaltime = microtime(true) - $start;
    // Update galaxy (debree)
    if ($destination_user['authlevel'] == 0) {
        doquery('UPDATE {{planets}} SET `debris_metal` = `debris_metal` + ' . ($result['debree']['att'][0] + $result['debree']['def'][0]) . ' , debris_crystal = debris_crystal+' . ($result['debree']['att'][1] + $result['debree']['def'][1]) . ' WHERE `galaxy` = ' . $fleet_row['fleet_end_galaxy'] . ' AND `system` = ' . $fleet_row['fleet_end_system'] . ' AND `planet` = ' . $fleet_row['fleet_end_planet'] . ' AND `planet_type` = 1 LIMIT 1;');
    }
    // !G+ post-calculation for Attackers: fleet left and possible loot
    $loot = BE_calculatePostAttacker($destination_planet, $attackFleets, $result, false);
    if ($result['won'] == 2 && count($result['rw']) == 2) {
        $one_round_loss = true;
    } else {
        $one_round_loss = false;
    }
    // Update fleets & planets
    foreach ($attackFleets as $fleetID => $attacker) {
        if ($attacker['totalCount'] > 0) {
            $sqlQuery = 'UPDATE {{fleets}} SET ';
            if ($result['won'] == 1) {
                $sqlQuery .= '`fleet_resource_metal` = `fleet_resource_metal` + ' . ($attacker['loot']['metal'] + 0) . ', ';
                $sqlQuery .= '`fleet_resource_crystal` = `fleet_resource_crystal` + ' . ($attacker['loot']['crystal'] + 0) . ', ';
                $sqlQuery .= '`fleet_resource_deuterium` = `fleet_resource_deuterium` + ' . ($attacker['loot']['deuterium'] + 0) . ', ';
            }
            $sqlQuery .= '`fleet_array` = "' . substr($attacker['fleetArray'], 0, -1) . '", ';
            $sqlQuery .= '`fleet_amount` = ' . $attacker['totalCount'] . ', `fleet_mess` = 1 WHERE `fleet_id` = ' . $fleetID;
            doquery($sqlQuery);
        }
    }
    if ($fleet_row['fleet_mission'] == MT_AKS && $fleet_row['fleet_group']) {
        doquery("DELETE FROM {{aks}} WHERE id={$fleet_row['fleet_group']} LIMIT 1;");
        doquery("UPDATE {{fleets}} SET fleet_group = 0 WHERE fleet_group = {$fleet_row['fleet_group']} AND fleet_mission = " . MT_AKS . ";");
    }
    foreach ($defenseFleets as $fleetID => $defender) {
        $fleetArray = '';
        $totalCount = 0;
        if ($fleetID == 0) {
            foreach ($defender['def'] as $element => $amount) {
                $fleetArray .= "`{$sn_data[$element]['name']}` = '{$amount}', ";
            }
            doquery('UPDATE {{planets}} SET ' . $fleetArray . ' metal = metal - ' . $loot['looted']['metal'] . ', crystal = crystal - ' . $loot['looted']['crystal'] . ', deuterium=deuterium-' . $loot['looted']['deuterium'] . ' WHERE id=' . $destination_planet['id']);
        } else {
            foreach ($defender['def'] as $element => $amount) {
                if ($amount) {
                    $fleetArray .= $element . ',' . $amount . ';';
                }
                $totalCount += $amount;
            }
            if ($totalCount <= 0) {
                doquery("DELETE FROM `{{fleets}}` WHERE `fleet_id` = '{$fleetID}'");
            } else {
                doquery("UPDATE {{fleets}} SET fleet_array = '{$fleetArray}', fleet_amount = {$totalCount}" . ($one_round_loss ? '' : ', fleet_mess = 1') . " WHERE fleet_id = {$fleetID} LIMIT 1;");
            }
        }
    }
    // TvdW (c) 2008
    $planet_coordinates = uni_render_coordinates($fleet_row, 'fleet_end_');
    // FROM HERE THE SCRIPT WAS IMPORTED (not TvdW code anymore)
    $MoonChance = BE_calculateMoonChance($result);
    if (mt_rand(1, 100) <= $MoonChance && ($TargetPlanetName = uni_create_moon($fleet_row['fleet_end_galaxy'], $fleet_row['fleet_end_system'], $fleet_row['fleet_end_planet'], $TargetUserID, $MoonChance))) {
        $GottenMoon = sprintf($lang['sys_moonbuilt'], $TargetPlanetName, $planet_coordinates);
    }
    // Adjust number of raids made/win/loose and xpraid
    $str_loose_or_win = $result['won'] == 1 ? 'raidswin' : 'raidsloose';
    doquery("UPDATE {{users}} SET `xpraid` = `xpraid` + 1, `raids` = `raids` + 1, `{$str_loose_or_win}` = `{$str_loose_or_win}` + 1 WHERE id = '{$fleet_row['fleet_owner']}' LIMIT 1;");
    $bashing_list = array();
    foreach ($defenseFleets as $fleetID => $defender) {
        $users2[$defender['user']['id']] = $users_defender[$defender['user']['id']] = $defender['user']['id'];
    }
    foreach ($attackFleets as $fleetID => $attacker) {
        $users2[$attacker['user']['id']] = $users_attacker[$attacker['user']['id']] = $attacker['user']['id'];
        // Generating attackers list for bashing table
        $bashing_list[$attacker['user']['id']] = "({$attacker['user']['id']}, {$destination_planet['id']}, {$fleet_row['fleet_end_time']})";
    }
    $bashing_list = implode(',', $bashing_list);
    doquery("INSERT INTO {{bashing}} (bashing_user_id, bashing_planet_id, bashing_time) VALUES {$bashing_list};");
    //MadnessRed CR Creation.
    $raport = formatCR($result, $loot['looted'], $MoonChance, $GottenMoon, $totaltime);
    $raport = $raport['html'];
    $rid = md5($raport);
    $QryInsertRapport = 'INSERT INTO `{{rw}}` SET ';
    $QryInsertRapport .= '`time` = UNIX_TIMESTAMP(), ';
    $QryInsertRapport .= '`owners` = "' . implode(',', $users2) . '", ';
    $QryInsertRapport .= '`id_owner1` = "' . $attacker['user']['id'] . '", ';
    $QryInsertRapport .= '`id_owner2` = "' . $defender['user']['id'] . '", ';
    $QryInsertRapport .= '`rid` = "' . $rid . '", ';
    $QryInsertRapport .= '`raport` = "' . mysql_real_escape_string($raport) . '"';
    doquery($QryInsertRapport) or die("Error inserting CR to database" . mysql_error() . "<br /><br />Trying to execute:" . mysql_query());
    switch ($result['won']) {
        case 0:
            $color_attackers = $color_defenders = 'orange';
            break;
        case 1:
            $color_attackers = 'green';
            $color_defenders = 'red';
            break;
        case 2:
            $color_attackers = 'red';
            $color_defenders = 'green';
            break;
    }
    $raport_part1 = '<span OnClick=\'f("rw.php?raport=' . $rid . '", "");\' ><center><font color=';
    $raport_part2 = ">{$lang['sys_mess_attack_report']} {$planet_coordinates}</font></span><br /><br />" . "<font color=\"red\">{$lang['sys_perte_attaquant']}: " . pretty_number($result['lost']['att'], true) . "</font>&nbsp;<font color=\"green\">{$lang['sys_perte_defenseur']}: " . pretty_number($result['lost']['def'], true) . "</font><br />" . "{$lang['sys_debris']} {$lang['Metal']} <font color=\"#adaead\">" . pretty_number($result['debree']['att'][0] + $result['debree']['def'][0], true) . "</font> {$lang['Crystal']} <font color=\"#ef51ef\">" . pretty_number($result['debree']['att'][1] + $result['debree']['def'][1], true) . '</font><br />' . ($result['won'] == 1 ? "{$lang['sys_gain']} " . "{$lang['Metal']} <font color=\"#adaead\">" . pretty_number($loot['looted']['metal'], true) . '</font> ' . "{$lang['Crystal']} <font color=\"#ef51ef\">" . pretty_number($loot['looted']['crystal'], true) . '</font> ' . "{$lang['Deuterium']} <font color=\"#f77542\">" . pretty_number($loot['looted']['deuterium'], true) . '</font><br />' : '') . "{$st_1}{$st_2}</center>";
    $raport_acs = $one_round_loss ? "<center><span class=\"negative\">{$lang['sys_mess_attack_report']} {$planet_coordinates}\r\n{$lang['sys_coe_lost_contact']}</span></center>" : "{$raport_part1}{$color_attackers}{$raport_part2}";
    foreach ($users_attacker as $id) {
        //    if ($id != $fleet_row['fleet_owner'] && $id != 0)
        if ($id) {
            msg_send_simple_message($id, '', $fleet_row['fleet_start_time'], MSG_TYPE_COMBAT, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport_acs);
        }
    }
    $raport_hold = "{$raport_part1}{$color_defenders}{$raport_part2}";
    foreach ($users_defender as $id) {
        if ($id && $id != $fleet_row['fleet_owner']) {
            msg_send_simple_message($id, '', $fleet_row['fleet_start_time'], MSG_TYPE_COMBAT, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport_hold);
        }
    }
    return $result;
}
 private function MissionCaseDestruction($FleetRow)
 {
     global $user, $phpEx, $pricelist, $lang, $resource, $CombatCaps;
     includeLang('INGAME');
     if ($FleetRow['fleet_mess'] == 0 && $FleetRow['fleet_start_time'] <= time()) {
         $targetPlanet = doquery("SELECT * FROM {{table}} WHERE `galaxy` = " . $FleetRow['fleet_end_galaxy'] . " AND `system` = " . $FleetRow['fleet_end_system'] . " AND `planet_type` = " . $FleetRow['fleet_end_type'] . " AND `planet` = " . $FleetRow['fleet_end_planet'] . ";", 'planets', true);
         $targetGalaxy = doquery('SELECT * FROM {{table}} WHERE `galaxy` = ' . $FleetRow['fleet_end_galaxy'] . ' AND `system` = ' . $FleetRow['fleet_end_system'] . ' AND `planet` = ' . $FleetRow['fleet_end_planet'] . ';', 'galaxy', true);
         $targetUser = doquery('SELECT * FROM {{table}} WHERE id=' . $targetPlanet['id_owner'], 'users', true);
         $TargetUserID = $targetUser['id'];
         $attackFleets = array();
         if ($FleetRow['fleet_group'] != 0) {
             $fleets = doquery('SELECT * FROM {{table}} WHERE fleet_group=' . $FleetRow['fleet_group'], 'fleets');
             while ($fleet = mysql_fetch_assoc($fleets)) {
                 $attackFleets[$fleet['fleet_id']]['fleet'] = $fleet;
                 $attackFleets[$fleet['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id =' . $fleet['fleet_owner'], 'users', true);
                 $attackFleets[$fleet['fleet_id']]['detail'] = array();
                 $temp = explode(';', $fleet['fleet_array']);
                 foreach ($temp as $temp2) {
                     $temp2 = explode(',', $temp2);
                     if ($temp2[0] < 100) {
                         continue;
                     }
                     if (!isset($attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]])) {
                         $attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]] = 0;
                     }
                     $attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]] += $temp2[1];
                 }
             }
         } else {
             $attackFleets[$FleetRow['fleet_id']]['fleet'] = $FleetRow;
             $attackFleets[$FleetRow['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id=' . $FleetRow['fleet_owner'], 'users', true);
             $attackFleets[$FleetRow['fleet_id']]['detail'] = array();
             $temp = explode(';', $FleetRow['fleet_array']);
             foreach ($temp as $temp2) {
                 $temp2 = explode(',', $temp2);
                 if ($temp2[0] < 100) {
                     continue;
                 }
                 if (!isset($attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]])) {
                     $attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]] = 0;
                 }
                 $attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]] += $temp2[1];
             }
         }
         $defense = array();
         $def = doquery('SELECT * FROM {{table}} WHERE `fleet_end_galaxy` = ' . $FleetRow['fleet_end_galaxy'] . ' AND `fleet_end_system` = ' . $FleetRow['fleet_end_system'] . ' AND `fleet_end_type` = ' . $FleetRow['fleet_end_type'] . ' AND `fleet_end_planet` = ' . $FleetRow['fleet_end_planet'] . ' AND fleet_start_time<' . time() . ' AND fleet_end_stay>=' . time(), 'fleets');
         while ($defRow = mysql_fetch_assoc($def)) {
             $defRowDef = explode(';', $defRow['fleet_array']);
             foreach ($defRowDef as $Element) {
                 $Element = explode(',', $Element);
                 if ($Element[0] < 100) {
                     continue;
                 }
                 if (!isset($defense[$defRow['fleet_id']]['def'][$Element[0]])) {
                     $defense[$defRow['fleet_id']][$Element[0]] = 0;
                 }
                 $defense[$defRow['fleet_id']]['def'][$Element[0]] += $Element[1];
                 $defense[$defRow['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id=' . $defRow['fleet_owner'], 'users', true);
             }
         }
         $defense[0]['def'] = array();
         $defense[0]['user'] = $targetUser;
         for ($i = 200; $i < 500; $i++) {
             if (isset($resource[$i]) && isset($targetPlanet[$resource[$i]])) {
                 $defense[0]['def'][$i] = $targetPlanet[$resource[$i]];
             }
         }
         $start = microtime(true);
         $result = calculateAttack($attackFleets, $defense);
         $totaltime = microtime(true) - $start;
         $QryUpdateGalaxy = "UPDATE {{table}} SET ";
         $QryUpdateGalaxy .= "`metal` = `metal` +'" . ($result['debree']['att'][0] + $result['debree']['def'][0]) . "', ";
         $QryUpdateGalaxy .= "`crystal` = `crystal` + '" . ($result['debree']['att'][1] + $result['debree']['def'][1]) . "' ";
         $QryUpdateGalaxy .= "WHERE ";
         $QryUpdateGalaxy .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
         $QryUpdateGalaxy .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
         $QryUpdateGalaxy .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' ";
         $QryUpdateGalaxy .= "LIMIT 1;";
         doquery($QryUpdateGalaxy, 'galaxy');
         foreach ($attackFleets as $fleetID => $attacker) {
             $fleetArray = '';
             $totalCount = 0;
             foreach ($attacker['detail'] as $element => $amount) {
                 if ($amount) {
                     $fleetArray .= $element . ',' . $amount . ';';
                 }
                 $totalCount += $amount;
             }
             if ($totalCount <= 0) {
                 doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . $fleetID, 'fleets');
             } else {
                 doquery('UPDATE {{table}} SET fleet_array="' . substr($fleetArray, 0, -1) . '", fleet_amount=' . $totalCount . ', fleet_mess=1 WHERE fleet_id=' . $fleetID, 'fleets');
             }
         }
         foreach ($defense as $fleetID => $defender) {
             if ($fleetID != 0) {
                 $fleetArray = '';
                 $totalCount = 0;
                 foreach ($defender['def'] as $element => $amount) {
                     if ($amount) {
                         $fleetArray .= $element . ',' . $amount . ';';
                     }
                     $totalCount += $amount;
                 }
                 if ($totalCount <= 0) {
                     doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . $fleetID, 'fleets');
                 } else {
                     doquery('UPDATE {{table}} SET fleet_array="' . $fleetArray . '", fleet_amount=' . $totalCount . ', fleet_mess=1 WHERE fleet_id=' . $fleetID, 'fleets');
                 }
             } else {
                 $fleetArray = '';
                 $totalCount = 0;
                 foreach ($defender['def'] as $element => $amount) {
                     $fleetArray .= '`' . $resource[$element] . '`=' . $amount . ', ';
                 }
                 $QryUpdateTarget = "UPDATE {{table}} SET ";
                 $QryUpdateTarget .= $fleetArray;
                 $QryUpdateTarget .= "`metal` = `metal` - '" . $steal['metal'] . "', ";
                 $QryUpdateTarget .= "`crystal` = `crystal` - '" . $steal['crystal'] . "', ";
                 $QryUpdateTarget .= "`deuterium` = `deuterium` - '" . $steal['deuterium'] . "' ";
                 $QryUpdateTarget .= "WHERE ";
                 $QryUpdateTarget .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
                 $QryUpdateTarget .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
                 $QryUpdateTarget .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' AND ";
                 $QryUpdateTarget .= "`planet_type` = '" . $FleetRow['fleet_end_type'] . "' ";
                 $QryUpdateTarget .= "LIMIT 1;";
                 doquery($QryUpdateTarget, 'planets');
             }
         }
         $FleetDebris = $result['debree']['att'][0] + $result['debree']['def'][0] + $result['debree']['att'][1] + $result['debree']['def'][1];
         $StrAttackerUnits = sprintf($lang['sys_attacker_lostunits'], $result['lost']['att']);
         $StrDefenderUnits = sprintf($lang['sys_defender_lostunits'], $result['lost']['def']);
         $StrRuins = sprintf($lang['sys_gcdrunits'], $result['debree']['def'][0] + $result['debree']['att'][0], $lang['Metal'], $result['debree']['def'][1] + $result['debree']['att'][1], $lang['Crystal']);
         $DebrisField = $StrAttackerUnits . "<br>" . $StrDefenderUnits . "<br>" . $StrRuins;
         $steal = array('metal' => 0, 'crystal' => 0, 'deuterium' => 0);
         switch ($result['won']) {
             case "a":
                 $max_resources = 0;
                 foreach ($attackFleets[$FleetRow['fleet_id']]['detail'] as $Element => $amount) {
                     $max_resources += $pricelist[$Element]['capacity'] * $amount;
                 }
                 if ($max_resources > 0) {
                     $metal = $targetPlanet['metal'] / 2;
                     $crystal = $targetPlanet['crystal'] / 2;
                     $deuter = $targetPlanet['deuterium'] / 2;
                     if ($deuter > $max_resources / 3) {
                         $steal['deuterium'] = $max_resources / 3;
                         $max_resources -= $steal['deuterium'];
                     } else {
                         $steal['deuterium'] = $deuter;
                         $max_resources -= $steal['deuterium'];
                     }
                     if ($crystal > $max_resources / 2) {
                         $steal['crystal'] = $max_resources / 2;
                         $max_resources -= $steal['crystal'];
                     } else {
                         $steal['crystal'] = $crystal;
                         $max_resources -= $steal['crystal'];
                     }
                     if ($metal > $max_resources) {
                         $steal['metal'] = $max_resources;
                         $max_resources = $max_resources - $steal['metal'];
                     } else {
                         $steal['metal'] = $metal;
                         $max_resources -= $steal['metal'];
                     }
                 }
                 $steal = array_map('round', $steal);
                 $QryUpdateFleet = 'UPDATE {{table}} SET ';
                 $QryUpdateFleet .= '`fleet_resource_metal` = `fleet_resource_metal` + ' . $steal['metal'] . ', ';
                 $QryUpdateFleet .= '`fleet_resource_crystal` = `fleet_resource_crystal` +' . $steal['crystal'] . ', ';
                 $QryUpdateFleet .= '`fleet_resource_deuterium` = `fleet_resource_deuterium` +' . $steal['deuterium'] . ' ';
                 $QryUpdateFleet .= 'WHERE fleet_id = ' . $FleetRow['fleet_id'] . ' ';
                 $QryUpdateFleet .= 'LIMIT 1 ;';
                 doquery($QryUpdateFleet, 'fleets');
                 $QryUpdateTarget = "UPDATE {{table}} SET ";
                 $QryUpdateTarget .= $fleetArray;
                 $QryUpdateTarget .= "`metal` = `metal` - '" . $steal['metal'] . "', ";
                 $QryUpdateTarget .= "`crystal` = `crystal` - '" . $steal['crystal'] . "', ";
                 $QryUpdateTarget .= "`deuterium` = `deuterium` - '" . $steal['deuterium'] . "' ";
                 $QryUpdateTarget .= "WHERE ";
                 $QryUpdateTarget .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
                 $QryUpdateTarget .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
                 $QryUpdateTarget .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' AND ";
                 $QryUpdateTarget .= "`planet_type` = '" . $FleetRow['fleet_end_type'] . "' ";
                 $QryUpdateTarget .= "LIMIT 1;";
                 doquery($QryUpdateTarget, 'planets');
                 $destructionl2 = (100 - sqrt($targetPlanet['diameter'])) * sqrt($attackFleets[$FleetRow['fleet_id']]['detail'][214]);
                 // Formel für min. Anzahl an Todessternen. Hat jmd. ne gute Formel? :D
                 // $mints = (pow((1 / (1-sqrt($targetPlanet['diameter']) / 100)),2))*10;
                 // $destructionl2 = max($destructionl1,$mints);
                 if ($destructionl2 > 100) {
                     $chance = '100';
                 } elseif ($destructionl2 < 0) {
                     $chance = '0';
                 }
                 $tirage = mt_rand(0, 100);
                 if ($tirage <= $chance) {
                     doquery("DELETE FROM {{table}} WHERE `id` = '" . $targetPlanet['id'] . "';", 'planets');
                     $Qrydestructionlune = "UPDATE {{table}} SET ";
                     $Qrydestructionlune .= "`destruyed` = '1' ";
                     $Qrydestructionlune .= "WHERE ";
                     $Qrydestructionlune .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
                     $Qrydestructionlune .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
                     $Qrydestructionlune .= "`lunapos` = '" . $FleetRow['fleet_end_planet'] . "' ";
                     $Qrydestructionlune .= "LIMIT 1 ;";
                     doquery($Qrydestructionlune, 'lunas');
                     $Qrydestructionlune2 = "UPDATE {{table}} SET ";
                     $Qrydestructionlune2 .= "`id_luna` = '0' ";
                     $Qrydestructionlune2 .= "WHERE ";
                     $Qrydestructionlune2 .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
                     $Qrydestructionlune2 .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
                     $Qrydestructionlune2 .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' ";
                     $Qrydestructionlune2 .= "LIMIT 1 ;";
                     doquery($Qrydestructionlune2, 'galaxy');
                     $destext .= sprintf($lang['sys_destruc_mess'], $DepName, $FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet'], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']) . "<br>";
                     $destext .= sprintf($lang['sys_destruc_lune'], $chance) . "<br>";
                     $destext .= $lang['sys_destruc_mess1'];
                     $destext .= $lang['sys_destruc_reussi'];
                     $destructionrip = sqrt($TargetPlanet['diameter']) / 2;
                     $chance2 = round($destructionrip);
                     $tirage2 = mt_rand(0, 100);
                     $probarip = sprintf($lang['sys_destruc_rip'], $chance2);
                     if ($tirage2 <= $chance2) {
                         $destext .= $lang['sys_destruc_echec'];
                         doquery("DELETE FROM {{table}} WHERE `fleet_id` = '" . $FleetRow["fleet_id"] . "';", 'fleets');
                     }
                 } else {
                     $destructionrip = sqrt($TargetPlanet['diameter']) / 2;
                     $chance2 = round($destructionrip);
                     $tirage2 = mt_rand(0, 100);
                     $probarip = sprintf($lang['sys_destruc_rip'], $chance2);
                     $destext .= sprintf($lang['sys_destruc_mess'], $DepName, $FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet'], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']) . "<br>";
                     $destext .= $lang['sys_destruc_mess1'];
                     $destext .= sprintf($lang['sys_destruc_lune'], $chance) . "<br>";
                     if ($tirage2 <= $chance2) {
                         $destext .= $lang['sys_destruc_echec'];
                         doquery("DELETE FROM {{table}} WHERE `fleet_id` = '" . $FleetRow["fleet_id"] . "';", 'fleets');
                     } else {
                         $destext .= $lang['sys_destruc_stop'];
                     }
                 }
                 break;
             case "r":
                 $destext .= sprintf($lang['sys_destruc_mess'], $DepName, $FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet'], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']) . "<br>";
                 $destext .= $lang['sys_destruc_stop'] . "<br>";
                 doquery("DELETE FROM {{table}} WHERE `fleet_id` = '" . $FleetRow["fleet_id"] . "';", 'fleets');
                 break;
             case "w":
                 $destext .= sprintf($lang['sys_destruc_mess'], $DepName, $FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet'], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']) . "<br>";
                 $destext .= $lang['sys_destruc_stop'] . "<br>";
                 break;
             default:
                 break;
         }
         $QryUpdateTarget = "UPDATE {{table}} SET ";
         $QryUpdateTarget .= $TargetPlanetUpd;
         $QryUpdateTarget .= "`metal` = `metal` - '" . $steal['metal'] . "', ";
         $QryUpdateTarget .= "`crystal` = `crystal` - '" . $steal['crystal'] . "', ";
         $QryUpdateTarget .= "`deuterium` = `deuterium` - '" . $steal['deuter'] . "' ";
         $QryUpdateTarget .= "WHERE ";
         $QryUpdateTarget .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
         $QryUpdateTarget .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
         $QryUpdateTarget .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' AND ";
         $QryUpdateTarget .= "`planet_type` = '" . $FleetRow['fleet_end_type'] . "' ";
         $QryUpdateTarget .= "LIMIT 1;";
         doquery($QryUpdateTarget, 'planets');
         $QryUpdateGalaxy = "UPDATE {{table}} SET ";
         $QryUpdateGalaxy .= "`metal` = `metal` + '" . $zlom['metal'] . "', ";
         $QryUpdateGalaxy .= "`crystal` = `crystal` + '" . $zlom['crystal'] . "' ";
         $QryUpdateGalaxy .= "WHERE ";
         $QryUpdateGalaxy .= "`galaxy` = '" . $FleetRow['fleet_end_galaxy'] . "' AND ";
         $QryUpdateGalaxy .= "`system` = '" . $FleetRow['fleet_end_system'] . "' AND ";
         $QryUpdateGalaxy .= "`planet` = '" . $FleetRow['fleet_end_planet'] . "' ";
         $QryUpdateGalaxy .= "LIMIT 1;";
         doquery($QryUpdateGalaxy, 'galaxy');
         $MoonChance = 0;
         $GottenMoon = "";
         $formatted_cr = formatCR($result, $steal, $MoonChance, $GottenMoon, $totaltime, $destext);
         $raport = $formatted_cr['html'];
         $rid = md5($raport);
         $QryInsertRapport = 'INSERT INTO {{table}} SET ';
         $QryInsertRapport .= '`time` = UNIX_TIMESTAMP(), ';
         foreach ($attackFleets as $fleetID => $attacker) {
             $users2[$attacker['user']['id']] = $attacker['user']['id'];
         }
         foreach ($defense as $fleetID => $defender) {
             $users2[$defender['user']['id']] = $defender['user']['id'];
         }
         $QryInsertRapport .= '`owners` = "' . implode(',', $users2) . '", ';
         $QryInsertRapport .= '`rid` = "' . $rid . '", ';
         $QryInsertRapport .= '`raport` = "' . mysql_real_escape_string($raport) . '"';
         doquery($QryInsertRapport, 'rw') or die("Error inserting CR to database" . mysql_error() . "<br><br>Trying to execute:" . mysql_query());
         $raport = '<a href # OnClick=\'f( "CombatReport.php?raport=' . $rid . '", "");\'>';
         $raport .= '<center>';
         if ($result['won'] == "a") {
             $raport .= '<font color=\'green\'>';
         } elseif ($result['won'] == "w") {
             $raport .= '<font color=\'orange\'>';
         } elseif ($result['won'] == "r") {
             $raport .= '<font color=\'red\'>';
         }
         $raport .= $lang['sys_mess_destruc_report'] . " [" . $FleetRow['fleet_end_galaxy'] . ":" . $FleetRow['fleet_end_system'] . ":" . $FleetRow['fleet_end_planet'] . "] </font></a><br><br>";
         $raport .= "<font color=\"red\">" . $lang['sys_perte_attaquant'] . ": " . $result['lost']['att'] . "</font>";
         $raport .= "<font color=\"green\">   " . $lang['sys_perte_defenseur'] . ": " . $result['lost']['def'] . "</font><br>";
         $raport .= $lang['sys_debris'] . " " . $lang['Metal'] . ":<font color=\"#adaead\">" . ($result['debree']['att'][0] + $result['debree']['def'][0]) . "</font>   " . $lang['Crystal'] . ":<font color=\"#ef51ef\">" . ($result['debree']['att'][1] + $result['debree']['def'][1]) . "</font><br></center>";
         SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport);
         $raport2 = "<a href # OnClick=\"f( 'CombatReport.php?raport=" . $rid . "', '');\">";
         $raport2 .= "<center>";
         if ($result['won'] == "a") {
             $raport2 .= '<font color=\'red\'>';
         } elseif ($result['won'] == "w") {
             $raport2 .= '<font color=\'orange\'>';
         } elseif ($result['won'] == "r") {
             $raport2 .= '<font color=\'green\'>';
         }
         $raport2 .= $lang['sys_mess_destruc_report'] . " [" . $FleetRow['fleet_end_galaxy'] . ":" . $FleetRow['fleet_end_system'] . ":" . $FleetRow['fleet_end_planet'] . "] </font></a><br><br>";
         SendSimpleMessage($TargetUserID, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_destruc_report'], $raport2);
     } elseif ($FleetRow['fleet_end_time'] <= time()) {
         $fquery = "";
         $Message = sprintf($lang['sys_fleet_won'], $TargetName, GetTargetAdressLink($FleetRow, ''), pretty_number($FleetRow['fleet_resource_metal']), $lang['Metal'], pretty_number($FleetRow['fleet_resource_crystal']), $lang['Crystal'], pretty_number($FleetRow['fleet_resource_deuterium']), $lang['Deuterium']);
         SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_fleetback'], $Message);
         $this->RestoreFleetToPlanet($FleetRow);
         doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . $FleetRow['fleet_id'], 'fleets');
     }
 }
Example #7
0
 $replay .= eco_sym_encode_replay($sym_attacker, 'A');
 $arr_combat_defender = eco_sym_to_combat($sym_defender, 'def');
 $arr_combat_attacker = eco_sym_to_combat($sym_attacker, 'detail');
 // Lets calcualte attack...
 //pdump($sym_defender);
 //pdump($arr_combat_attacker, '$arr_combat_attacker');
 //pdump($arr_combat_defender, '$arr_combat_defender');
 $start = microtime(true);
 $result = coe_attack_calculate($arr_combat_attacker, $arr_combat_defender, true);
 $totaltime = microtime(true) - $start;
 //pdump($result);
 // calculating loot per attacking fleet
 $loot = BE_calculatePostAttacker($arr_combat_defender[0]['resources'], $arr_combat_attacker, $result, true);
 // Calculating Moon Chance
 $MoonChance = BE_calculateMoonChance($result);
 $formatted_cr = formatCR($result, $loot['looted'], $MoonChance, '', $totaltime);
 // Well lets just copy rw.php code. If I am showing a cr why re-inent the wheel???
 $Page = '<html>';
 $Page .= '<head>';
 $Page .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"{$dpath}/formate.css\">";
 $Page .= '<meta http-equiv="content-type" content="text/html; charset=windows-1251" />';
 $Page .= '</head>';
 $Page .= '<body>';
 $Page .= '<center>';
 //OK, one change, we won't be getting cr from datbase, instead we will be generating it directly, lets skip the database stage, this is what get generated and put in the database.
 $report = stripslashes($formatted_cr['html']);
 foreach ($lang['tech'] as $id => $s_name) {
     $str_replace1 = array("[ship[{$id}]]");
     $str_replace2 = array($s_name);
     $report = str_replace($str_replace1, $str_replace2, $report);
 }
Example #8
0
function MissionCaseAttack($FleetRow)
{
    global $phpEx, $xnova_root_path, $pricelist, $lang, $resource, $CombatCaps, $game_config;
    includelang('tech');
    includelang('system');
    if ($FleetRow['fleet_mess'] == 0 && $FleetRow['fleet_start_time'] <= time()) {
        if (!isset($CombatCaps[202]['sd'])) {
            message('<font color=red>' . $lang['sys_no_vars'] . '</font><br />(Error: <font color=red>(!isset($pricelist[202][\'sd\']))</font>. Please report this to an admin.)', $lang['sys_error'], 'fleet.php', 15);
        }
        //include toms stuff
        include $xnova_root_path . "includes/functions/MissionCaseEvoAttack.php";
        // FROM HERE THE SCRIPT WAS IMPORTED (not TvdW code anymore)
        $FleetDebris = $result['debree']['att'][0] + $result['debree']['def'][0] + $result['debree']['att'][1] + $result['debree']['def'][1];
        $StrAttackerUnits = sprintf($lang['sys_attacker_lostunits'], $result['lost']['att']);
        $StrDefenderUnits = sprintf($lang['sys_defender_lostunits'], $result['lost']['def']);
        $StrRuins = sprintf($lang['sys_gcdrunits'], $result['debree']['def'][0] + $result['debree']['att'][0], $lang['Metal'], $result['debree']['def'][1] + $result['debree']['att'][1], $lang['Crystal']);
        $DebrisField = $StrAttackerUnits . "<br />" . $StrDefenderUnits . "<br />" . $StrRuins;
        $MoonChance = $FleetDebris / 100000;
        if ($FleetDebris > 2000000) {
            $MoonChance = 20;
        }
        if ($FleetDebris < 100000) {
            $UserChance = 0;
            $ChanceMoon = "";
        } elseif ($FleetDebris >= 100000) {
            $UserChance = mt_rand(1, 100);
            $ChanceMoon = sprintf($lang['sys_moonproba'], $MoonChance);
        }
        if ($UserChance > 0 && $UserChance <= $MoonChance && $targetGalaxy['id_luna'] == 0) {
            $TargetPlanetName = CreateOneMoonRecord($FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'], $TargetUserID, $FleetRow['fleet_start_time'], '', $MoonChance);
            $GottenMoon = sprintf($lang['sys_moonbuilt'], $TargetPlanetName, $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
            $GottenMoon .= "<br />";
        } elseif ($UserChance = 0 or $UserChance > $MoonChance) {
            $GottenMoon = "";
        }
        //MadnessRed CR Creation.
        $formatted_cr = formatCR($result, $steal, $MoonChance, $GottenMoon, $totaltime);
        $raport = $formatted_cr['html'];
        $rid = md5($raport);
        $QryInsertRapport = 'INSERT INTO {{table}} SET ';
        $QryInsertRapport .= '`time` = UNIX_TIMESTAMP(), ';
        foreach ($attackFleets as $fleetID => $attacker) {
            $users2[$attacker['user']['id']] = $attacker['user']['id'];
        }
        foreach ($defense as $fleetID => $defender) {
            $users2[$defender['user']['id']] = $defender['user']['id'];
        }
        $QryInsertRapport .= '`owners` = "' . implode(',', $users2) . '", ';
        $QryInsertRapport .= '`rid` = "' . $rid . '", ';
        $QryInsertRapport .= '`raport` = "' . mysql_real_escape_string($raport) . '"';
        doquery($QryInsertRapport, 'rw') or die("Error inserting CR to database" . mysql_error() . "<br /><br />Trying to execute:" . mysql_query());
        // Colorize report.
        $raport = '<a href # OnClick=\'f( "rw.php?raport=' . $rid . '", "");\' >';
        $raport .= '<center>';
        if ($result['won'] == "a") {
            $raport .= '<font color=\'green\'>';
        } elseif ($result['won'] == "w") {
            $raport .= '<font color=\'orange\'>';
        } elseif ($result['won'] == "r") {
            $raport .= '<font color=\'red\'>';
        }
        $raport .= $lang['sys_mess_attack_report'] . ' [' . $FleetRow['fleet_end_galaxy'] . ':' . $FleetRow['fleet_end_system'] . ':' . $FleetRow['fleet_end_planet'] . '] </font></a><br /><br />';
        $raport .= '<font color=\'red\'>' . $lang['sys_perte_attaquant'] . ': ' . $result['lost']['att'] . '</font>';
        $raport .= '<font color=\'green\'>   ' . $lang['sys_perte_defenseur'] . ': ' . $result['lost']['def'] . '</font><br />';
        $raport .= $lang['sys_gain'] . ' ' . $lang['Metal'] . ':<font color=\'#adaead\'>' . $steal['metal'] . '</font>   ' . $lang['Crystal'] . ':<font color=\'#ef51ef\'>' . $steal['crystal'] . '</font>   ' . $lang['Deuterium'] . ':<font color=\'#f77542\'>' . $steal['deuterium'] . '</font><br />';
        $raport .= $lang['sys_debris'] . ' ' . $lang['Metal'] . ': <font color=\'#adaead\'>' . ($result['debree']['att'][0] + $result['debree']['def'][0]) . '</font>   ' . $lang['Crystal'] . ': <font color=\'#ef51ef\'>' . ($result['debree']['att'][1] + $result['debree']['def'][1]) . '</font><br /></center>';
        SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport);
        // Coloriize report.
        $raport2 = '<a href # OnClick=\'f( "rw.php?raport=' . $rid . '", "");\' >';
        $raport2 .= '<center>';
        if ($result['won'] == "a") {
            $raport2 .= '<font color=\'red\'>';
        } elseif ($result['won'] == "w") {
            $raport2 .= '<font color=\'orange\'>';
        } elseif ($result['won'] == "r") {
            $raport2 .= '<font color=\'green\'>';
        }
        $raport2 .= $lang['sys_mess_attack_report'] . ' [' . $FleetRow['fleet_end_galaxy'] . ':' . $FleetRow['fleet_end_system'] . ':' . $FleetRow['fleet_end_planet'] . '] </font></a><br /><br />';
        foreach ($users2 as $id) {
            if ($id != $FleetRow['fleet_owner'] && $id != 0) {
                SendSimpleMessage($id, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_attack_report'], $raport2);
            }
        }
        // Ajout du petit point raideur
        $CurrentUser = doquery("SELECT * FROM {{table}} WHERE id = " . $FleetRow['fleet_owner'], 'users', true);
        $CurrentUserID = $CurrentUser['id'];
        $AddPoint = $CurrentUser['xpraid'] + 1;
        $QryUpdateOfficier = "UPDATE {{table}} SET ";
        $QryUpdateOfficier .= "`xpraid` = '" . $AddPoint . "' ";
        $QryUpdateOfficier .= "WHERE id = '" . $CurrentUserID . "' ";
        $QryUpdateOfficier .= "LIMIT 1 ;";
        doquery($QryUpdateOfficier, 'users');
        // Ajout d'un point au compteur de raids
        $RaidsTotal = $CurrentUser['raids'] + 1;
        if ($result['won'] == "a") {
            $RaidsWin = $CurrentUser['raidswin'] + 1;
            $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
            $QryUpdateRaidsCompteur .= "`raidswin` ='" . $RaidsWin . "', ";
            $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
            $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
            $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
            doquery($QryUpdateRaidsCompteur, 'users');
        } elseif ($result['won'] == "r" || $result['won'] == "w") {
            $RaidsLoose = $CurrentUser['raidsloose'] + 1;
            $QryUpdateRaidsCompteur = "UPDATE {{table}} SET ";
            $QryUpdateRaidsCompteur .= "`raidsloose` ='" . $RaidsLoose . "', ";
            $QryUpdateRaidsCompteur .= "`raids` ='" . $RaidsTotal . "' ";
            $QryUpdateRaidsCompteur .= "WHERE id = '" . $CurrentUserID . "' ";
            $QryUpdateRaidsCompteur .= "LIMIT 1 ;";
            doquery($QryUpdateRaidsCompteur, 'users');
        }
    } elseif ($FleetRow['fleet_end_time'] <= time()) {
        $Message = sprintf($lang['sys_tran_mess_angriffback'], $TargetName, GetTargetAdressLink($FleetRow, ''), pretty_number($FleetRow['fleet_resource_metal']), $lang['Metal'], pretty_number($FleetRow['fleet_resource_crystal']), $lang['Crystal'], pretty_number($FleetRow['fleet_resource_deuterium']), $lang['Deuterium']);
        SendSimpleMessage($FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_fleetback'], $Message);
        RestoreFleetToPlanet($FleetRow);
        doquery('DELETE FROM {{table}} WHERE `fleet_id`=' . $FleetRow['fleet_id'], 'fleets');
    }
}