/** * ctor * * @return */ function battle() { try { $reporter = new battlereporter(); } catch (Exception $e) { throw $e; } $battles = $this->get_battles(); if (!is_array($battles)) { echo "AAAAAAAAARRRRRRGH KAMPF KAPUTT!"; return false; } foreach ($battles as $battle) { list($sid, $pid) = $battle; try { $battlefield = new battlefield($sid, $pid); $battlefield->execute_battle(); if (BATTLE_DESTROY) { $battlefield->capture_units(); $battlefield->flee_units(); $battlefield->destroy_units(); // mop: lieber mehrmals ausführen....nicht, dass wir da nen segfault zwischendurch bekommen und dann die schiffe da bleiben delete_empty_fleets(); $sth1 = mysql_query("delete from inf_transports where count<=0"); $sth1 = mysql_query("delete from infantery where count<=0"); if ($pid) { $owner = get_uid_by_pid($pid); // Mop: derjenigen mit den meisten einheiten erobert den planeten // => idealsituation : der mit der prolligsten armee $sth1 = mysql_query("select i.uid,sum(i.count) as total_count from infantery i left join infantery i2 on i.pid=i2.pid and i2.uid=" . $owner . " where i.pid=" . $pid . " and i.uid!=" . $owner . " and i2.uid is null group by i.uid order by total_count desc limit 1"); if (!$sth1) { echo "invade kaputt =>" . $pid . "\n"; } if (mysql_num_rows($sth1) != 0) { list($new_owner) = mysql_fetch_row($sth1); $sth1 = mysql_query("update planets set uid=" . $new_owner . " where id=" . $pid); if (!$sth1) { echo "invade kaputt 2 => " . $pid . " " . $new_owner . "\n"; } $battlefield->set_invasion($new_owner); } } } $reporter->set_field($battlefield); $reporter->generate_reports(); } catch (Exception $e) { echo $e->getMessage() . "\n"; } } }
function covertops() { $sth = mysql_query("select * from covertops as c,covertopsmissions as cm where c.time=1 and c.cid=cm.id"); if (!$sth) { echo "Dtaabaser failure!"; } while ($covertops = mysql_fetch_array($sth)) { $success = false; $sth1 = mysql_query("select sum(c.value) from covertopsupgrades as c,constructions as b,planets as p where p.id=b.pid and b.prod_id=c.prod_id and p.uid=" . $covertops["uid"]); if (!$sth1) { echo "Dast FDS!"; } $f_co_upgrades = mysql_fetch_row($sth1); $sth1 = mysql_query("select count(id) from planets where uid=" . $covertops["uid"]); if (!$sth1) { echo "Datasbe failure!"; } $f_planets = mysql_fetch_row($sth1); $f_rate = $f_co_upgrades[0] / $f_planets[0]; // echo("Friendly Rate: ".$f_rate."\n"); if ($covertops["targettype"] == "I") { $imperium = $covertops["target"]; } else { $sth1 = mysql_query("select uid from planets where id=" . $covertops["target"]); if (!$sth1) { echo "Datasbe failuer!"; } $uid = mysql_fetch_array($sth1); $imperium = $uid["uid"]; } $sth1 = mysql_query("select sum(population)/10000 from planets where uid=" . $imperium); if (!$sth1) { echo "Datasber faileur!"; } $spies = mysql_fetch_row($sth1); $sth1 = mysql_query("select sum(count) from covertops where uid=" . $imperium); if (!$sth1) { echo "Database failuer!"; } $used_spies = mysql_fetch_row($sth1); if ($used_spies[0] == NULL) { $rate = 100; } else { $rate = ($spies[0] - $used_spies[0]) / $spies[0] * 100; } // echo("Grundrate: $rate\n"); $sth1 = mysql_query("select sum(c.value) from covertopsupgrades as c,constructions as b,planets as p where p.id=b.pid and b.prod_id=c.prod_id and p.uid={$imperium}"); if (!$sth1) { echo "Dtasabr failuer!"; } $co_upgrades = mysql_fetch_row($sth1); $sth1 = mysql_query("select count(id) from planets where uid={$imperium}"); if (!$sth1) { echo "Datasbe failure!"; } $planets = mysql_fetch_row($sth1); $rate = $rate + $co_upgrades[0] / $planets[0]; // echo("Rate mit Upgrades: $rate\n"); if ($rate <= 0) { $success = true; } else { mt_srand((double) microtime() * 1000000); $random = mt_rand(0, $rate - $f_rate); // echo("Berechnung: Rate->$rate Frindly Rate->$f_rate Zufall->$random Chance->".$covertops["chance"]."\n"); if ($random <= $covertops["chance"]) { $success = true; } } // if ($success) // echo("Success!\n"); // DEBUG! // $success=true; if ($success) { switch ($covertops["missiontype"]) { case "S": define("MAX_STEAL", 25); $sth1 = mysql_query("select f.prod_id,f.fid,f.count,p.typ, p.name, f.reload from fleet as f,production as p left join fleet_info as fi on fi.fid=f.fid where fi.uid={$imperium} and fi.mission=0 and fi.tpid=0 and fi.tsid=0 and fi.pid!=0 and f.prod_id=p.prod_id order by rand() limit 1"); if (!$sth1) { echo "Datsbe faileur!"; } if (mysql_num_rows($sth1) > 0) { $fleet = mysql_fetch_array($sth1); $sth2 = mysql_query("select p.id,p.sid from planets as p,users as u where p.id=u.homeworld and u.id=" . $covertops["uid"]); if (!$sth2) { echo "Dtabaser faileur!"; } $home = mysql_fetch_array($sth2); switch ($fleet["typ"]) { case "L": $multiplikator = 1; break; case "M": $multiplikator = 5; break; case "H": $multiplikator = 10; break; } if ($multiplikator * $fleet["count"] > MAX_STEAL) { $fleet["count"] = floor(MAX_STEAL / $multiplikator); } $new_fleet = new fleet(); $new_fleet->add_ships_arr(array($fleet["prod_id"] => array($fleet["count"], $fleet["reload"]))); $new_fleet->uid = $covertops["uid"]; $new_fleet->pid = $home["id"]; $new_fleet->sid = $home["sid"]; $new_fleet->create_fleet(); $sth2 = mysql_query("update fleet set count=count-" . $fleet["count"] . " where fid=" . $fleet["fid"] . " and prod_id=" . $fleet["prod_id"]); delete_empty_fleets(); ticker($covertops["uid"], "You have stolen " . $fleet["count"] . " " . $fleet["name"], "s"); ticker($imperium, $fleet["count"] . " " . $fleet["name"] . " vanished from your radar!", "s"); } else { ticker($covertops["uid"], "Your spies didn't find any ships. The target imperium doesn't have any!", "s"); } break; case "B": $sth1 = mysql_query("select b.prod_id,b.pid,pl.name,p.name as pname from planets as pl,production as p,constructions as b where b.prod_id=p.prod_id and b.pid=pl.id and pl.uid={$imperium} order by rand()"); if (!$sth1) { echo "Database failoer!"; } if (mysql_num_rows($sth1) > 0) { $building = mysql_fetch_array($sth1); $sth1 = mysql_query("delete from constructions where prod_id=" . $building["prod_id"] . " and pid=" . $building["pid"]); if (!$sth1) { echo "DDFatabf failur!"; } if ($building["name"] == "Unnamed") { $building["name"] = get_planetname("pid"); } ticker($covertops["uid"], "Your spies destroyed the " . $building["pname"] . " on planet " . $building["name"] . "!", "s"); ticker($imperium, "The " . $building["pname"] . " on planet " . $building["name"] . " was destroyed misteriously!", "s"); } break; case "F": $sth1 = mysql_query("select f.prod_id,f.fid from fleet as f,fleet_info as fi where fi.uid={$imperium} and fi.fid=f.fid"); if (!$sth1) { echo "Datsbe faileur!"; } if (mysql_num_rows($sth1) > 0) { if (mysql_num_rows($sth1) == 1) { $random = 0; } else { mt_srand((double) microtime() * 1000000); $random = mt_rand(0, mysql_num_rows($sth1) - 1); } for ($i = 0; $i <= $random; $i++) { $fleet = mysql_fetch_array($sth1); } $sth2 = mysql_query("delete from fleet where fid=" . $fleet["fid"] . " and prod_id=" . $fleet["prod_id"]); delete_empty_fleets(); ticker($covertops["uid"], "You spies destroyed some ships!", "s"); ticker($imperium, "Enemy spies destroyed some of your ships!", "s"); } else { ticker($covertops["uid"], "Your spies didn't find any ships. The target imperium doesn't have any!", "s"); } break; case "N": $sth1 = mysql_query("select * from ticker where uid={$imperium}"); if (!$sth1) { echo "Database failure!"; } while ($ticker = mysql_fetch_array($sth1)) { if ($end = strrpos($ticker["text"], "*")) { $text = substr($ticker["text"], $end + 1); } else { $text = $ticker["text"]; } $mail = $mail . "\n" . $text; } if (mysql_num_rows($sth1) == 0) { $mail = "This Imperium doesn't have any news at the moment!"; } $sth1 = mysql_query("select imperium from users where id=" . $imperium); if (!$sth1) { echo "Datsabe failure!"; } $imp_name = mysql_fetch_array($sth1); mail_to_uid($covertops["uid"], "News of " . $imp_name["imperium"], $mail); ticker($covertops["uid"], "Your spies have successfully hacked a news network. Check Mails.", "s"); break; case "M": $mail = ""; $sth1 = mysql_query("select fi.*,f.prod_id,f.count,f.reload,p.name,s.x,s.y from fleet as f,production as p,systems as s left join fleet_info as fi on fi.fid=f.fid and fi.uid={$imperium} where p.prod_id=f.prod_id and s.id=fi.sid order by fid"); if (mysql_num_rows($sth1) == 0) { $mail = "Target imperium doesn't have any fleets"; } else { while ($part_fleet = mysql_fetch_array($sth1)) { if ($part_fleet["fid"] != $fid_old) { $fid_old = $part_fleet["fid"]; $counter++; } $fleet[$counter][] = $part_fleet; } $counter = 1; for ($i = 1; $i <= sizeof($fleet); $i++) { $mail = $mail . "Fleet " . $counter++ . "<br>"; $mail = $mail . "<table>"; $head_array = ""; $text_arr = ""; $prod_arr = ""; for ($j = 0; $j < sizeof($fleet[$i]); $j++) { $head_array[$j] = $fleet[$i][$j]["name"]; $text_arr[$j] = $fleet[$i][$j]["count"]; } switch ($fleet[$i][0]["mission"]) { case "0": $mission_text["a"] = "Defending"; $mission_text["b"] = "defend"; break; case "1": $mission_text["a"] = "Attacking"; $mission_text["b"] = "attack"; break; case "4": $mission_text["a"] = ""; $mission_text["b"] = "colonize"; break; } if ($fleet[$i][0]["pid"] != 0 and $fleet[$i][0]["tsid"] == 0 and $fleet[$i][0]["tpid"] == 0) { $planetname = get_planetname($fleet[$i][0]["pid"]); $mission = $mission_text["a"] . " planet " . $planetname; } if ($fleet[$i][0]["pid"] == 0 and $fleet[$i][0]["tsid"] == 0 and $fleet[$i][0]["tpid"] == 0) { $systemname = get_systemname($fleet[$i][0]["sid"]); $mission = $mission_text["a"] . " system " . $systemname; } if ($fleet[$i][0]["tsid"] != 0 and $fleet[$i][0]["tpid"] == 0) { $systemname = get_systemname($fleet[$i][0]["tsid"]); $mission = "On its way to " . $mission_text["b"] . " system " . $systemname; } if ($fleet[$i][0]["tsid"] != 0 and $fleet[$i][0]["tpid"] != 0) { $planetname = get_planetname($fleet[$i][0]["tpid"]); $mission = "On its way to " . $mission_text["b"] . " planet " . $planetname; } $text_arr[] = $mission; $head_array[] = "Mission"; reset($head_array); $mail = $mail . "<tr>"; while (list($key, $dummy) = each($head_array)) { //echo($dummy."\n"); $mail = $mail . "<th>{$dummy}</th>"; } $mail = $mail . "</tr>"; reset($text_arr); $mail = $mail . "<tr>"; while (list($key, $dummy) = each($text_arr)) { echo $key . " - " . $dummy . "\n"; $mail = $mail . "<td>{$dummy}</td>"; } $mail = $mail . "</tr>"; $mail = $mail . "</table>"; } } $sth1 = mysql_query("select imperium from users where id=" . $imperium); if (!$sth1) { echo "Datsabe failure!"; } $imp_name = mysql_fetch_array($sth1); mail_to_uid($covertops["uid"], "Military overview of " . $imp_name["imperium"], $mail); ticker($covertops["uid"], "Your spies have successfully hacked a military network. Check Mails.", "s"); break; case "I": $mail = ""; $sth1 = mysql_query("select c.target,cm.descr,cm.targettype from covertops as c,covertopsmissions as cm where uid={$imperium} and cm.id=c.cid"); if (!$sth1) { echo "Databasdf faileru!"; } while ($missions = mysql_fetch_array($sth1)) { if ($missions["targettype"] == "I") { $sth2 = mysql_query("select imperium from users where id=" . $missions["target"]); if (!$sth2) { echo "Datasbae failuer!"; } $imp_tname = mysql_fetch_array($sth2); $target = "Imperium " . $imp_tname["imperium"]; } else { $planetname = get_planetname($missions["target"]); $target = "Planet " . $planetname; } $mail = $mail . "\n" . $missions["descr"] . " Target :" . $target; } $sth1 = mysql_query("select imperium from users where id=" . $imperium); if (!$sth1) { echo "Datsabe failure!"; } $imp_name = mysql_fetch_array($sth1); mail_to_uid($covertops["uid"], "CovertOps overview of " . $imp_name["imperium"], $mail); break; case "C": $sth1 = mysql_query("select population from planets where id=" . $covertops["target"]); if (!$sth1) { echo "Datasb faileur!"; } $pop = mysql_fetch_array($sth1); if ($pop["population"] > 10000000) { mt_srand((double) microtime() * 1000000); $killed = mt_rand(5000000, 8000000); } else { mt_srand((double) microtime() * 1000000); $killed = round($pop["population"] * (mt_rand(30, 80) / 100)); } $planetname = get_planetname($covertops["target"]); $sth1 = mysql_query("update planets set population=population-{$killed} where id=" . $covertops["target"]); if (!$sth1) { echo "udFH failuewr!"; } ticker($covertops["uid"], "Your spies launched a nuclear assault on Planet " . $planetname . " {$killed} were killed!", "s"); $sth1 = mysql_query("select uid from planets where id=" . $covertops["target"]); if (!$sth1) { echo "Database dfasi!"; } $uid_target = mysql_fetch_array($sth1); ticker($uid_target["uid"], "Enemy spies launched a deadly nuclear attack agaonst Planet " . $planetname . " {$killed} were killed!", "s"); break; case "V": $sth1 = mysql_query("select population from planets where id=" . $covertops["target"]); if (!$sth1) { echo "Datasb faileur!"; } $pop = mysql_fetch_array($sth1); mt_srand((double) microtime() * 1000000); $killed = round($pop["population"] * (mt_rand(30, 80) / 100)); $planetname = get_planetname($covertops["target"]); $sth1 = mysql_query("update planets set population=population-{$killed} where id=" . $covertops["target"]); if (!$sth1) { echo "udFH failuewr!"; } ticker($covertops["uid"], "Your spies deployed a deadly virus on Planet " . $planetname . " {$killed} were killed!", "s"); $sth1 = mysql_query("select uid from planets where id=" . $covertops["target"]); if (!$sth1) { echo "Database dfasi!"; } $uid_target = mysql_fetch_array($sth1); ticker($uid_target["uid"], "Enemy spies deployed a deadly virus on Planet " . $planetname . " {$killed} were killed!", "s"); break; case "A": $sth1 = mysql_query("select imperium from users where id={$imperium}"); if (!$sth1) { echo "Databsae faileru!"; } $imp_name = mysql_fetch_array($sth1); $sth1 = mysql_query("select id,name,value from admirals where uid={$imperium} order by rand()"); if (!$sth1) { echo "Dtzasa faielru!"; } if (mysql_num_rows($sth1) == 0) { ticker($covertops["uid"], "Your spies didn't find an admiral of Imperium " . $imp_name["imperium"] . "!", "s"); return 0; } $admiral = mysql_fetch_array($sth1); $sth1 = mysql_query("delete from admirals where id=" . $admiral["id"]); if (!$sth1) { echo "Dzasakhbd faileur!"; } ticker($covertops["uid"], "Your spies killed Admiral " . $admiral["name"] . " of Imperium " . $imp_name["imperium"] . "!", "s"); ticker($imperium, "Admiral " . $admiral["name"] . " was assasinated!", "w"); break; case "T": $sth1 = mysql_query("select imperium from users where id={$imperium}"); if (!$sth1) { echo "Databsae faileru!"; } $imp_name = mysql_fetch_array($sth1); $sth1 = mysql_query("select sid from tradestations where uid={$imperium}"); if (!$sth1) { echo "Dtasgha faij!"; } if (mysql_num_rows($sth1) == 0) { ticker($covertops["uid"], $imp_name["imperium"] . " doesn't have a tradestation. Mission aborted.", "w"); } list($stationid) = mysql_fetch_row($sth1); $sth1 = mysql_query("update tradestations set fail_chance=fail_chance+(rand()*10+1) where sid={$stationid}"); if (!$sth1) { echo "Datsbae fauO!"; } ticker($covertops["uid"], "Your spies have successfully sabotaged " . $imp_name["imperium"] . "'s tradestation", "w"); break; } } else { mt_srand((double) microtime() * 10000000); $random = mt_rand(0, 100); if ($random <= 50) { if ($random <= 20) { $sth1 = mysql_query("select name,imperium from users where id=" . $covertops["uid"]); if (!$sth1) { echo "Dtas afa!"; } $att_name = mysql_fetch_array($sth1); ticker($imperium, "Your spies intercepted some enemy spies. Their leader is " . $att_name["name"] . " (" . $att_name["imperium"] . ")!", "s"); } else { ticker($imperium, "Your spies intercepted some enemy spies!", "s"); } } } } $sth = mysql_query("delete from covertops where time<=1"); if (!$sth) { echo "Dtabas faislru!"; } $sth = mysql_query("update covertops set time=time-'1'"); if (!$sth) { echo "Dtasbwer failure!"; } }
function create($request) { global $uid; $doc = domxml_new_doc("1.0"); $rootElem = $doc->create_element("SR_REQUEST"); $create_arr = parse_fleetlist($request); $new_inf = array(); $i = 0; $fleets = array(); $new_fleet = new fleet(); $new_elem = $doc->create_element("SR_FLEET"); foreach ($create_arr as $fid => $data) { $fleet_elem = $doc->create_element("SR_FLEET"); $fleet_elem->set_attribute("fid", $fid); $fleets[$i] = new fleet($fid); if ($i == 0) { $new_fleet->pid = $fleets[$i]->pid; $new_fleet->sid = $fleets[$i]->sid; $new_fleet->mission = $fleets[$i]->mission; $new_fleet->tpid = $fleets[$i]->tpid; $new_fleet->tsid = $fleets[$i]->tpid; $new_fleet->milminister = $fleets[$i]->milminister; $new_fleet->uid = $fleets[$i]->uid; $pid = $fleets[$i]->pid; $sid = $fleets[$i]->sid; } if ($fleets[$i]->pid != $pid || $fleets[$i]->sid != $sid || $fleets[$i]->uid != $uid) { return false; } $infantery = get_fleet_infantery($fid); $tmp_new_inf = transfer_ships($fleets[$i], $new_fleet, $doc, $fleet_elem, $new_elem, $infantery, $data); foreach ($tmp_new_inf as $prod_id => $count) { $new_inf[$prod_id] += $count; } $rootElem->append_child($fleet_elem); $i++; } if (!$new_fleet->create_fleet()) { echo "Please select some ships"; return false; } $new_elem->set_attribute("fid", $new_fleet->fid); //$rootElem->append_child($new_elem); for ($i = 0; $i < sizeof($fleets); $i++) { $fleets[$i]->update_all_prod_ids(); } add_infantery($new_fleet->fid, $new_inf); delete_empty_fleets(); $sth = mysql_query("delete from inf_transports where count=0"); if (!$sth) { return 0; } $doc->append_child($rootElem); // mop: route muss dupliziert werden, sonst ist alles kaputt $sth = mysql_query("replace into routes (fid,route) select " . $new_fleet->fid . ",route from routes where fid=" . $fleets[0]->fid); if (!$sth) { return false; } echo $doc->dump_mem(); }
/** * führe den transfer durch * * @return */ function execute() { $new_inf = array(); foreach ($this->source_data as $fid => $data) { // mop: quellflotte is nicht da, wo die zielflotte ist...schiffe beamen geht nicht ;) if ($this->source_fleets[$fid]->pid != $this->target_fleet->pid || $this->source_fleets[$fid]->sid != $this->target_fleet->sid) { continue; } // mop: die inf holen $infantery = $this->get_fleet_infantery($fid); $tmp_new_inf = $this->transfer_ships($fid, $data, $infantery); foreach ($tmp_new_inf as $prod_id => $count) { $new_inf[$prod_id] += $count; } } // mop: alle flotten updaten $this->target_fleet->update_all_prod_ids(); $this->add_infantery($this->target_fleet->fid, $new_inf); foreach ($this->source_fleets as $fid => $fleet) { $this->source_fleets[$fid]->update_all_prod_ids(); } delete_empty_fleets(); $sth = mysql_query("delete from inf_transports where count=0"); if (!$sth) { return 0; } }