Пример #1
0
/**
 * Copyright (c) 2009-2010 by Gorlum for http://supernova.ws
 *       OpenSource as long as you don't remove this Copyright
 * V3 2009-11-13
 * V2 2009-10-10
 */
function coe_o_missile_calculate()
{
    sn_db_transaction_check(true);
    global $lang;
    $iraks = doquery("SELECT * FROM {{iraks}} WHERE `fleet_end_time` <= " . SN_TIME_NOW . " FOR UPDATE;");
    while ($fleetRow = db_fetch($iraks)) {
        set_time_limit(15);
        $db_changeset = array();
        $targetUser = db_user_by_id($fleetRow['fleet_target_owner'], true);
        $target_planet_row = sys_o_get_updated($targetUser, array('galaxy' => $fleetRow['fleet_end_galaxy'], 'system' => $fleetRow['fleet_end_system'], 'planet' => $fleetRow['fleet_end_planet'], 'planet_type' => PT_PLANET), SN_TIME_NOW);
        $target_planet_row = $target_planet_row['planet'];
        $rowAttacker = db_user_by_id($fleetRow['fleet_owner'], true);
        if ($target_planet_row['id']) {
            $planetDefense = array();
            foreach (sn_get_groups('defense_active') as $unit_id) {
                $planetDefense[$unit_id] = array(mrc_get_level($targetUser, $target_planet_row, $unit_id, true, true));
            }
            $message = '';
            $interceptors = mrc_get_level($targetUser, $target_planet_row, UNIT_DEF_MISSILE_INTERCEPTOR, true, true);
            //$target_planet_row[$interceptor_db_name]; // Number of interceptors
            $missiles = $fleetRow['fleet_amount'];
            // Number of MIP
            if ($interceptors >= $missiles) {
                $message = $lang['mip_all_destroyed'];
                $db_changeset['unit'][] = sn_db_unit_changeset_prepare(UNIT_DEF_MISSILE_INTERCEPTOR, -$missiles, $targetUser, $target_planet_row['id']);
            } else {
                if ($interceptors) {
                    $message = sprintf($lang['mip_destroyed'], $interceptors);
                    $db_changeset['unit'][] = sn_db_unit_changeset_prepare(UNIT_DEF_MISSILE_INTERCEPTOR, -$interceptors, $targetUser, $target_planet_row['id']);
                }
                //        $message .= $lang['mip_defense_destroyed'];
                $attackResult = COE_missileAttack($targetUser, $rowAttacker, $missiles - $interceptors, $planetDefense, $fleetRow['primaer']);
                foreach ($attackResult['structures'] as $key => $structure) {
                    $destroyed = $planetDefense[$key][0] - $structure[0];
                    if ($destroyed) {
                        $db_changeset['unit'][] = sn_db_unit_changeset_prepare($key, -$destroyed, $targetUser, $target_planet_row['id']);
                        $message .= "&nbsp;&nbsp;{$lang['tech'][$key]} - {$destroyed} {$lang['quantity']}<br>";
                    }
                }
                if (!empty($message)) {
                    $message = $lang['mip_defense_destroyed'] . $message . "{$lang['mip_recycled']}{$lang['Metal']}: {$attackResult['metal']}, {$lang['Crystal']}: {$attackResult['crystal']}<br>";
                    db_planet_set_by_id($target_planet_row['id'], "`metal` = `metal` + {$attackResult['metal']}, `crystal` = `crystal` + {$attackResult['crystal']}");
                }
                //        $message .= "{$lang['mip_recycled']}{$lang['Metal']}: {$attackResult['metal']}, {$lang['Crystal']}: {$attackResult['crystal']}<br>";
            }
            db_changeset_apply($db_changeset);
            $fleetRow['fleet_start_type'] = PT_PLANET;
            $sourcePlanet = db_planet_by_vector($fleetRow, 'fleet_start_', false, 'name');
            $message_vorlage = sprintf($lang['mip_body_attack'], $fleetRow['fleet_amount'], addslashes($sourcePlanet['name']), $fleetRow['fleet_start_galaxy'], $fleetRow['fleet_start_system'], $fleetRow['fleet_start_planet'], addslashes($target_planet_row['name']), $fleetRow['fleet_end_galaxy'], $fleetRow['fleet_end_system'], $fleetRow['fleet_end_planet']);
            empty($message) ? $message = $lang['mip_no_defense'] : false;
            // empty($message) && ($message = $lang['mip_no_defense']);
            msg_send_simple_message($fleetRow['fleet_owner'], '', SN_TIME_NOW, MSG_TYPE_SPY, $lang['mip_sender_amd'], $lang['mip_subject_amd'], $message_vorlage . $message);
            msg_send_simple_message($fleetRow['fleet_target_owner'], '', SN_TIME_NOW, MSG_TYPE_SPY, $lang['mip_sender_amd'], $lang['mip_subject_amd'], $message_vorlage . $message);
        }
        doquery("DELETE FROM {{iraks}} WHERE id = '{$fleetRow['id']}';");
    }
}
Пример #2
0
/**
 * Copyright (c) 2009-2010 by Gorlum for http://supernova.ws
 *       OpenSource as long as you don't remove this Copyright
 * V3 2009-11-13
 * V2 2009-10-10
 */
function coe_o_missile_calculate()
{
    global $time_now, $sn_data, $lang;
    $iraks = doquery("SELECT * FROM {{iraks}} WHERE `zeit` <= '{$time_now}';");
    while ($fleetRow = mysql_fetch_assoc($iraks)) {
        $targetUser = doquery('SELECT * FROM {{users}} WHERE `id` = ' . $fleetRow['zielid'], '', true);
        $target_planet_row = sys_o_get_updated($targetUser, array('galaxy' => $fleetRow['galaxy'], 'system' => $fleetRow['system'], 'planet' => $fleetRow['planet'], 'planet_type' => PT_PLANET), $time_now);
        $target_planet_row = $target_planet_row['planet'];
        $rowAttacker = doquery("SELECT `military_tech` FROM `{{users}}` WHERE `id` = '{$fleetRow['owner']}' LIMIT 1;", '', true);
        if ($target_planet_row['id']) {
            $planetDefense = array(400 => array(0, 'shield' => 0, 'structure' => 0), 401 => array($target_planet_row[$sn_data[401]['name']], 'shield' => 0, 'structure' => 0), 402 => array($target_planet_row[$sn_data[402]['name']], 'shield' => 0, 'structure' => 0), 403 => array($target_planet_row[$sn_data[403]['name']], 'shield' => 0, 'structure' => 0), 404 => array($target_planet_row[$sn_data[404]['name']], 'shield' => 0, 'structure' => 0), 405 => array($target_planet_row[$sn_data[405]['name']], 'shield' => 0, 'structure' => 0), 406 => array($target_planet_row[$sn_data[406]['name']], 'shield' => 0, 'structure' => 0), 407 => array($target_planet_row[$sn_data[407]['name']], 'shield' => 0, 'structure' => 0), 408 => array($target_planet_row[$sn_data[408]['name']], 'shield' => 0, 'structure' => 0), 409 => array($target_planet_row[$sn_data[409]['name']], 'shield' => 0, 'structure' => 0));
            $message = '';
            $interceptor_db_name = $sn_data[502]['name'];
            $interceptors = $target_planet_row[$interceptor_db_name];
            // Number of interceptors
            $missiles = $fleetRow['anzahl'];
            // Number of MIP
            $qUpdate = "UPDATE `{{planets}}` SET {$interceptor_db_name} = ";
            if ($interceptors >= $missiles) {
                $message = $lang['mip_all_destroyed'];
                $qUpdate .= "{$interceptor_db_name} - {$missiles} ";
            } else {
                if ($interceptors) {
                    $message = sprintf($lang['mip_destroyed'], $interceptors);
                }
                $qUpdate .= "0";
                $message .= $lang['mip_defense_destroyed'];
                $attackResult = COE_missileAttack($targetUser, $rowAttacker, $missiles - $interceptors, $planetDefense, $fleetRow['primaer']);
                foreach ($attackResult['structures'] as $key => $structure) {
                    $destroyed = $planetDefense[$key][0] - $structure[0];
                    if ($key > 400 && $destroyed) {
                        $message .= "&nbsp;&nbsp;{$lang['tech'][$key]} - {$destroyed} {$lang['quantity']}<br>";
                        $qUpdate .= ", `{$sn_data[$key]['name']}` = {$structure[0]}";
                    }
                }
                $qUpdate .= ", `metal`=`metal`+" . $attackResult['metal'] . ", `crystal`=`crystal`+" . $attackResult['crystal'];
                $message .= "{$lang['mip_recycled']}{$lang['Metal']}: {$attackResult['metal']}, {$lang['Crystal']}: {$attackResult['crystal']}<br>";
            }
            $qUpdate .= " WHERE `id` = " . $target_planet_row['id'] . ";";
            doquery($qUpdate);
            $sourcePlanet = doquery("SELECT `name` FROM `{{planets}}` WHERE `galaxy` = '{$fleetRow['galaxy_angreifer']}' AND `system` = '{$fleetRow['system_angreifer']}' AND `planet` = '{$fleetRow['planet_angreifer']}' and planet_type = " . PT_PLANET, '', true);
            $message_vorlage = sprintf($lang['mip_body_attack'], $fleetRow['anzahl'], addslashes($sourcePlanet['name']), $fleetRow['galaxy_angreifer'], $fleetRow['system_angreifer'], $fleetRow['planet_angreifer'], addslashes($target_planet_row['name']), $fleetRow['galaxy'], $fleetRow['system'], $fleetRow['planet']);
            if (empty($message)) {
                $message = $lang['mip_no_defense'];
            }
            msg_send_simple_message($fleetRow['owner'], '', $time_now, MSG_TYPE_SPY, $lang['mip_sender_amd'], $lang['mip_subject_amd'], $message_vorlage . $message);
            msg_send_simple_message($fleetRow['zielid'], '', $time_now, MSG_TYPE_SPY, $lang['mip_sender_amd'], $lang['mip_subject_amd'], $message_vorlage . $message);
        }
        doquery("DELETE FROM {{iraks}} WHERE id = '{$fleetRow['id']}';");
    }
}