示例#1
0
function getPlotDistanceOld(SmrSector &$sector, SmrSector &$target)
{
    $plotter = new Course_Plotter();
    $plotter->set_course($sector->getSectorID(), $target->getSectorID(), $sector->getGameID());
    $plotter->plot();
    $return = $plotter->plotted_course[0];
    $plotter->Course_Plotter_Destructor();
    unset($plotter);
    return $return;
}
<?php

// include helper funtions
include "course_plot.inc";
if (isset($var["from"])) {
    $start = $var["from"];
} else {
    $start = $_POST["from"];
}
if (isset($var["to"])) {
    $target = $var["to"];
} else {
    $target = $_POST["to"];
}
$plotter = new Course_Plotter();
$plotter->set_course($start, $target, $player->game_id);
$plotter->plot();
$account->log(5, "Player plots to {$target}.", $player->sector_id);
$container = array();
$container["url"] = "skeleton.php";
$container["body"] = "course_plot_result.php";
$container["plotted_course"] = serialize($plotter->plotted_course[1]);
$container["distance"] = $plotter->plotted_course[0];
$plotter->Course_Plotter_Destructor();
unset($plotter);
forward($container);
            $allowed = true;
        }
        if ($warp_sector1->galaxy_id == $sector->galaxy_id && $warp_sector2->galaxy_id == $target_sector->galaxy_id) {
            $allowed = true;
        }
    }
} else {
    $allowed = true;
}
if (!$allowed) {
    create_error("You can not jump that many galaxies away");
}
// for ingal jumps we use different algorithm
if ($sector->galaxy_id == $target_sector->galaxy_id) {
    //FIXME: We should use the distance plotter here, but the course plotter is better tested
    $plotter = new Course_Plotter();
    $plotter->set_course($from, $to, $player->game_id);
    $plotter->plot();
    $distance = $plotter->plotted_course[0];
    // calculate the number of free sectors per jump
    $free_sector = 15 + floor($player->level_id / 10);
    // the rest gets a 10% failure per sector
    if ($distance > $free_sector) {
        $failure_chance = 10 * ($distance - $free_sector);
    } else {
        $failure_chance = 0;
    }
    $failure_distance = round($failure_chance / 10);
} else {
    $failure_chance = 75;
    $failure_distance = round(0.1 * mt_rand(10, 30 + (50 - $player->level_id)));