Exemplo n.º 1
0
function fleetstatus_recall($fsid)
{
    $status = fleetstatus_get($fsid);
    if ($status['uid']) {
        // interne flotte
        if ($status['fleetnum'] && $status['arrival']) {
            $eta = $status['arrival'] - time();
            if ($eta < 0) {
                $eta = 0;
            }
            $eta = floor($eta / 60);
            $data = array();
            $data['orbittime'] = "";
            $data['returntime'] = "";
            $data['arrival'] = gnarrival($status['returntime'] - $eta);
            $data['return_flight'] = 1;
            fleetstatus_update($fsid, $data);
        } else {
            fleetstatus_delete($fsid);
        }
    } else {
        // externe flotte
        fleetstatus_delete($fsid);
        if ($status['fid']) {
            fleet_delete($status['fid']);
        }
    }
    //letzter atter recallt ?
    if ($status['status'] == 1 && !fleetstatus_get_bytarget($status['tgala'], $status['tpos'], 1)) {
        $user = getUserByPos($status['tgala'], $status['tpos']);
        user_set_safe($user['uid'], 0);
    }
}
Exemplo n.º 2
0
 function _match_deffer($tgala, $tpos, $line, $messages, $errors)
 {
     unset($defferadd_list);
     $user_defferlist = fleetstatus_get_bytarget($tgala, $tpos, 2);
     if (preg_match_all("/(\\d{1,4}):(\\d{1,2})(.*?)<br>/ism", $line[10], $tak_list, PREG_SET_ORDER)) {
         if (count($tak_list)) {
             $tak_timelist = parse_time($line[11]);
             #defferliste
             for ($j = 0; $j < count($tak_list); $j++) {
                 unset($deffer);
                 $tak_eta = $tak_timelist[$j];
                 if ($tak_eta == "error") {
                     $errors[] = "deffer (" . $tak_list[$j][1] . ":" . $tak_list[$j][2] . ") zeit nicht erkannt";
                     continue;
                 }
                 #20 ticks im orbit
                 if ($tak_eta == 0) {
                     $tak_eta_low = -300;
                     $tak_eta_high = 0;
                 } else {
                     #toleranz von einem tick
                     $tak_eta_low = $tak_eta - 14;
                     $tak_eta_high = $tak_eta + 14;
                 }
                 #passenden deffer finden
                 for ($k = 0; $k < count($user_defferlist); $k++) {
                     $eta = floor(($user_defferlist[$k]['arrival'] - time()) / 60);
                     if ($user_defferlist[$k]['gala'] == $tak_list[$j][1] && $user_defferlist[$k]['pos'] == $tak_list[$j][2] && !$user_defferlist[$k]['checked'] && $eta > $tak_eta_low && $eta < $tak_eta_high) {
                         #passenden deffer gefunden!
                         $deffer =& $user_defferlist[$k];
                         break;
                     }
                 }
                 if ($deffer) {
                     $deffer['checked'] = true;
                 } else {
                     $gala = trim($tak_list[$j][1]);
                     $pos = trim($tak_list[$j][2]);
                     $nick = trim($tak_list[$j][3]);
                     $adddeffer = array("gala" => $gala, "pos" => $pos, "nick" => $nick, "fleetnum" => 1, "eta" => $tak_eta);
                     $messages[] = "<span class=\"green\">Deffer (" . $gala . ":" . $pos . ") " . $nick . " Flotte 1 ETA " . $this->formattime($tak_eta * 60, true) . " hinzugefügt</span>";
                     $defferadd_list[] = $adddeffer;
                 }
                 #else
             }
             #for
         }
         #if count(tak:list)
     }
     # if (pregmatchall)
     #deffer auf recall prüfen
     for ($j = 0; $j < count($user_defferlist); $j++) {
         $deffer =& $user_defferlist[$j];
         if (!$deffer['checked']) {
             #nach zweiter flotte suchen die im selben tick fliegt aber nicht recallt hat
             $eta = floor(($deffer['arrival'] - time()) / 60);
             $gala = $deffer['gala'];
             $pos = $deffer['pos'];
             $nick = $deffer['nick'];
             if ($eta > 0) {
                 $eta_high = $eta + 14;
                 $eta_low = $eta - 14;
                 if ($eta_low < 0) {
                     $eta_low = 1;
                 }
             } else {
                 $eta_low = 0;
                 $eta_high = 0;
             }
             $found = false;
             for ($k = 0; $k < count($user_defferlist); $k++) {
                 $eta_search = floor(($user_defferlist[$k]['arrival'] - time()) / 60);
                 #im orbit
                 if ($eta_search < 0) {
                     $eta_search = 0;
                 }
                 if ($user_defferlist[$k]['checked'] && $user_defferlist[$k]['gala'] == $gala && $user_defferlist[$k]['pos'] == $pos && $eta_search >= $eta_low && $eta_search <= $eta_high) {
                     $found = true;
                     break;
                 }
             }
             if (!$found) {
                 $messages[] = "<span class=\"blue\">Deffer (" . $gala . ":" . $pos . ") " . $nick . " Flotte " . $deffer['fleetnum'] . " ETA " . $this->formattime($deffer['arrival'] - time(), true) . " hat recalled</span>";
                 fleetstatus_recall($deffer['fsid']);
             } else {
                 #flotte gefunden die im selben tick fliegt und gematcht wurde
                 #-> unklar welche von beiden recallt hat
                 $messages[] = "<span class=\"red\"><b>(" . $gala . ":" . $pos . ") " . $nick . " defft mit 2 Flotten im selben Tick und hat eine von beiden recallt, bitte überprüfen </b></span>";
             }
             #else
         }
         #if not deffer_checked
     }
     #for
     #deffer in die db eintragen
     for ($j = 0; $j < count($defferadd_list); $j++) {
         $deffer =& $defferadd_list[$j];
         if ($check = fleetstatus_get_bykoords($deffer['gala'], $deffer['pos'], $deffer['fleetnum'])) {
             if ($check['return_flight']) {
                 fleetstatus_delete($check['fsid']);
             } else {
                 if ($deffer['fleetnum'] == 1) {
                     $deffer['fleetnum'] = 2;
                 } else {
                     $deffer['fleetnum'] = 1;
                 }
             }
         }
         deffer_add($deffer['gala'], $deffer['pos'], $tgala, $tpos, $deffer['fleetnum'], 360, 20, $deffer['eta'], $deffer['nick']);
     }
 }
Exemplo n.º 3
0
 function User_fleet_status()
 {
     $id = param_num("id");
     if ($id) {
         $this->template->assign("id", $id);
     } else {
         $id = $this->userdata['uid'];
     }
     if (!($user = getUserByID($id)) || $user['aid'] != $this->userdata['aid']) {
         $this->_header();
     }
     #information message, step 2
     if ($_SESSION['steps']['fleetstatus']) {
         #unset step
         unset($_SESSION['steps']['fleetstatus']);
         $_SESSION['steps'] = $data;
         $this->forms['information']['url'] = $this->backtracking->backlink();
         $this->forms['information']['title'] = "Flottenstatus updaten";
         $this->forms['information']['message'] = "Flottenstatus aktualisiert";
         $this->forms['information']['style'] = "green";
         $this->show('message_information', "Flottenstatus updaten");
     }
     $fleetnum = param_num("fleet");
     $fleet = user_fleet_bynum($id, $fleetnum);
     if (!$fleet) {
         $this->_header("index.php");
     }
     $form = new formContainer();
     $form->add(new formInput("target", "Zielkoordinaten", "string", true, 10, true, "'^\\s*(\\d{1,4}):(\\d{1,2})\\s*\$'is"));
     $form->add(new formInput("eta", "Flugzeit (ETA)", "string", true, 10, false, "'^\\s*(?:(\\d{1,3})|(\\d{1,2}):(\\d{1,2}))\\s*\$'is"));
     $status_titles[] = array("title" => "Im Orbit", "value" => 0);
     $status_titles[] = array("title" => "Angriffsflug", "value" => 1);
     $status_titles[] = array("title" => "Verteidigung", "value" => 2);
     if (!$fleet['status']) {
         $status_titles[] = array("value" => 3, "title" => "Rückflug");
     } else {
         if ($fleet['tgala'] && $fleet['tpos']) {
             $galastr = " von " . $fleet['tgala'] . ":" . $fleet['tpos'];
         }
         if ($fleet['status'] == 1) {
             $typestr = "Angriff";
         } else {
             $typestr = "Verteidigung";
         }
         $status_titles[] = array("title" => "Rückflug " . $typestr . $galastr, "value" => 3);
     }
     $form->add(new formSelectBox("status", "Flottenstatus", "numeric", $status_titles, false));
     $orbit = new formInput("orbit", "Zeit im Orbit", "string", true, 10, false, "'^(?:(\\d+):(\\d+)|(\\d+))\$'is");
     $defftype = new formSelectBox("defftype", "Verteidigung", "numeric", array(array("title" => "Galaintern (" . $this->formattime(270 * 60, true) . ")", "value" => 270), array("title" => "Allyintern (" . $this->formattime(300 * 60, true) . ")", "value" => 300), array("title" => "Meta (" . $this->formattime(330 * 60, true) . ")", "value" => 330), array("title" => "extern (" . $this->formattime(360 * 60, true) . ")", "value" => 360)), false);
     if ($_POST['send']) {
         $form->submit("status");
         $data['status'] = $form->get("status");
         if ($_POST['next_x']) {
             switch ($data['status']) {
                 case 1:
                     $form->add(&$orbit);
                     $form->submit(array("target", "orbit", "eta"));
                     $data['returntime'] = 450;
                     break;
                 case 2:
                     $form->add(&$orbit);
                     $form->add(&$defftype);
                     $form->submit(array("target", "orbit", "defftype", "eta"));
                     $data['returntime'] = $form->get("defftype");
                     break;
                 case 3:
                     $form->submit("eta");
             }
             if (!$form->hasErrors()) {
                 // save step
                 if ($data['status'] == 3) {
                     $eta = $form->getregex("eta");
                     if ($eta[1]) {
                         $eta = $eta[1];
                     } else {
                         $eta = $eta[2] * 60 + $eta[3];
                     }
                     if ($eta < 0) {
                         $eta = 0;
                     }
                     $data['arrival'] = gnarrival($eta);
                 }
                 if ($data['status'] == 1 || $data['status'] == 2) {
                     $eta = $form->getregex("eta");
                     if ($eta[1]) {
                         $eta = $eta[1];
                     } else {
                         $eta = $eta[2] * 60 + $eta[3];
                     }
                     $orbit = $form->getregex("orbit");
                     if ($orbit[1]) {
                         $orbit = $orbit[1] * 60 + $orbit[2];
                     } else {
                         $orbit = $orbit[3];
                     }
                     if ($eta == 0) {
                         $data['orbittime'] = gnticktime($orbit);
                         $data['arrival'] = time();
                     } else {
                         $data['arrival'] = gnarrival($eta);
                         $data['orbittime'] = $orbit;
                     }
                     $target = $form->getRegex("target");
                     $data['tgala'] = $target[1];
                     $data['tpos'] = $target[2];
                     $data['return_flight'] = 0;
                 }
                 if ($data['status'] == 1 && $data['tgala'] && user_get_bypos($data['tgala'], $data['tpos'])) {
                     $form->setError("target");
                     $form->addError("Ziel ist Metamuitglied");
                 }
             }
             if (!$form->hasErrors()) {
                 $_SESSION['steps']['fleetstatus'] = 1;
                 if ($data['status'] == 3) {
                     $data['status'] = $fleet['status'];
                     $data['tgala'] = $fleet['tgala'];
                     $data['tpos'] = $fleet['tpos'];
                     $data['return_flight'] = 1;
                 }
                 $data['fleetnum'] = $fleetnum;
                 $data['gala'] = $user['gala'];
                 $data['pos'] = $user['pos'];
                 $data['fid'] = $fleet['fid'];
                 if ($data['status'] || $data['return_flight']) {
                     if ($fleet['fsid']) {
                         fleetstatus_update($fleet['fsid'], $data);
                     } else {
                         #$check = fleetstatus_get_byfleetnum($user['gala'],$user['pos'],true);
                         #if(count($check) >= 2) fleetstatus_delete($check[0]['fsid']);
                         fleetstatus_add($data);
                     }
                 } else {
                     if ($fleet['fsid']) {
                         fleetstatus_delete($fleet['fsid']);
                     }
                 }
                 $this->_header("user.php?action=fleetstatus&send");
             }
         } else {
             if ($data['status'] == 1) {
                 $form->add(&$orbit);
             }
             if ($data['status'] == 2) {
                 $form->add(&$orbit);
                 $form->add(&$defftype);
             }
             if ($data['status'] == 1) {
                 if ($data['status'] == $fleet['status'] && !$fleet['return_flight']) {
                     $form->set("orbit", $this->formattime($fleet['orbittime'] * 60));
                     if ($fleet['tgala']) {
                         $form->set("target", "{$fleet['tgala']}:{$fleet['tpos']}");
                     }
                 } else {
                     $form->set("orbit", $this->formattime(75 * 60));
                 }
             }
             if ($data['status'] == 2) {
                 if ($data['status'] == $fleet['status'] && !$fleet['return_flight']) {
                     $defftype->select($fleet['returntime']);
                     $form->set("orbit", $this->formattime($fleet['orbittime'] * 60));
                     if ($fleet['tgala']) {
                         $form->set("target", $fleet['tgala'] . ":" . $fleet['tpos']);
                     }
                 } else {
                     $form->set("orbit", $this->formattime(300 * 60));
                     $defftype->select(360);
                 }
             }
             if (($fleet['status'] == 2 || $fleet['status'] == 1) && $data['status'] == 3 && !$fleet['return_flight']) {
                 $eta = $fleet['arrival'] - time();
                 if ($eta < 0) {
                     $eta = 0;
                 }
                 $form->set("eta", $this->formattime($fleet['returntime'] * 60 - $eta));
             }
             if ($data['status'] == $fleet['status'] || $data['status'] == 3 && $fleet['return_flight']) {
                 $form->set("eta", $this->formattime($fleet['arrival'] - time()));
             }
         }
     } else {
         if ($fleet['return_flight']) {
             $data['status'] = 3;
         } else {
             $data['status'] = $fleet['status'];
             if (($fleet['status'] == 1 || $fleet['status'] == 2) && $fleet['tgala']) {
                 $form->set("target", $fleet['tgala'] . ":" . $fleet['tpos']);
             }
         }
         $form->select("status", $data['status']);
         #$form->set("status",$data['status']);
         if ($data['status'] == 1 || $data['status'] == 2) {
             $form->add(&$orbit);
         }
         if ($fleet['arrival']) {
             $eta = $fleet['arrival'] - time();
             if ($eta < 0) {
                 $eta_exact = 0;
             } else {
                 $eta_exact = $eta;
             }
             $form->set("eta", $this->formattime($eta_exact));
         }
         if ($data['status'] == 2) {
             if ($fleet['orbittime']) {
                 if ($eta < 0) {
                     $orbittime = $fleet['orbittime'] * 60 + $eta;
                 } else {
                     $orbittime = $fleet['orbittime'] * 60;
                 }
                 $form->set("orbit", $this->formattime($orbittime));
             }
         }
         if ($data['status'] == 1) {
             #echo "eta: ".($eta/60)."<br>";
             if ($fleet['orbittime']) {
                 if ($eta < 0) {
                     $orbittime = $fleet['orbittime'] * 60 + $eta;
                 } else {
                     $orbittime = $fleet['orbittime'] * 60;
                 }
                 $form->set("orbit", $this->formattime($orbittime));
             }
         }
         if ($data['status'] == 2) {
             $form->add(&$defftype);
             $form->select("defftype", $fleet['returntime']);
         }
     }
     $form->registerVars(&$this->template);
     $this->template->assign("fleet", $fleetnum);
     $this->show("user_fleetstatus", "Flottenstatus updaten");
 }