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); } }
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']); } }
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"); }