diff --git a/www/actions/events.php b/www/actions/events.php index f5811dc..f53571b 100644 --- a/www/actions/events.php +++ b/www/actions/events.php @@ -25,8 +25,8 @@ if ( isset($_POST['id']) && is_numeric($_POST['id']) && $_POST['id'] >= 0) $eventId = $_POST['id']; if ( isset($_POST['name']) && !empty($_POST['name'])) $eventName = sanitize_userinput($_POST['name']); if ( !empty($_POST['location'])) $eventLocation = sanitize_userinput($_POST['location']); -if ( !empty($_POST['link'])) $eventLink = escape_text((filter_var($_POST['link'], FILTER_VALIDATE_URL)===false?(filter_var(SITE_PROTOCOL.$_POST['link'], FILTER_VALIDATE_URL)!==false?SITE_PROTOCOL.$_POST['link']:$error='Ungültiger Event-Link'):$_POST['link'])); -if ( !empty($_POST['review_url'])) $eventReviewlink = escape_text((filter_var($_POST['review_url'], FILTER_VALIDATE_URL)===false?(filter_var(SITE_PROTOCOL.$_POST['review_url'], FILTER_VALIDATE_URL)!==false?SITE_PROTOCOL.$_POST['review_url']:$error='Ungültige Review-URL'):$_POST['review_url'])); +if ( !empty($_POST['link'])) $eventLink = (filter_var($_POST['link'], FILTER_VALIDATE_URL)===false?(filter_var(SITE_PROTOCOL.$_POST['link'], FILTER_VALIDATE_URL)!==false?SITE_PROTOCOL.$_POST['link']:$error='Ungültiger Event-Link'):$_POST['link']); +if ( !empty($_POST['review_url'])) $eventReviewlink = (filter_var($_POST['review_url'], FILTER_VALIDATE_URL)===false?(filter_var(SITE_PROTOCOL.$_POST['review_url'], FILTER_VALIDATE_URL)!==false?SITE_PROTOCOL.$_POST['review_url']:$error='Ungültige Review-URL'):$_POST['review_url']); if ( !empty($_POST['description'])) $eventDescription = htmlspecialchars_decode($_POST['description'], ENT_COMPAT | ENT_SUBSTITUTE); if ( isset($_POST['gallery_id']) && is_numeric($_POST['gallery_id']) && $_POST['gallery_id'] >= 0) $eventGallery = $_POST['gallery_id']; if ( isset($_GET['join']) && is_numeric($_GET['join']) && $_GET['join'] >= 0) $eventJoinId = $_GET['join']; @@ -38,30 +38,28 @@ /** Validation Error */ case (!empty($error)): /** If $error break switch() instantly */ - if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> Error: %s', __FILE__, __LINE__, $error)); + zorgDebugger::me()->warn('Validation Error: %s%s', [$error]); break; /** Add new Event */ case ((isset($_POST['action']) && $_POST['action'] === 'new')): - if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> New Event: %s', __FILE__, __LINE__, $eventName)); - $sql = 'INSERT INTO - events - (name, location, link, description, startdate, enddate, gallery_id, reportedby_id, reportedon_date, review_url) - VALUES - ( - "'.$eventName.'" - ,"'.$eventLocation.'" - ,"'.$eventLink.'" - ,"'.$eventDescription.'" - ,"'.$_POST['startYear'].'-'.$_POST['startMonth'].'-'.$_POST['startDay'].' '.$_POST['startHour'].':00" - ,"'.$_POST['endYear'].'-'.$_POST['endMonth'].'-'.$_POST['endDay'].' '.$_POST['endHour'].':00" - ,'.$eventGallery.' - ,'.$user->id.' - ,'.timestamp(true).' - ,"'.$eventReviewlink.'" - )'; - $idNewEvent = $db->query($sql, __FILE__, __LINE__, 'INSERT INTO events'); + zorgDebugger::me()->debug('Adding new Event: %s', [$eventName]); + $startdate = sprintf('%s-%s-%s %s:00', $_POST['startYear'], $_POST['startMonth'], $_POST['startDay'], $_POST['startHour']); + $enddate = sprintf('%s-%s-%s %s:00', $_POST['endYear'], $_POST['endMonth'], $_POST['endDay'], $_POST['endHour']); + $values = [ + 'name' => $eventName, + 'location' => $eventLocation, + 'link' => $eventLink, + 'description' => $eventDescription, + 'startdate' => $startdate, + 'enddate' => $enddate, + 'gallery_id' => $eventGallery, + 'reportedby_id' => $user->id, + 'reportedon_date' => timestamp(true), + 'review_url' => $eventReviewlink + ]; + $idNewEvent = $db->insert('events', $values, __FILE__, __LINE__, 'INSERT INTO events'); /** Error */ if (empty($idNewEvent)) @@ -80,21 +78,23 @@ /** Save updated Event details */ case ((isset($_POST['action']) && $_POST['action'] === 'edit')): - if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> Update Event: %d "%s"', __FILE__, __LINE__, $eventId, $eventName)); + zorgDebugger::me()->debug('Update existing Event: %d «%s»', [$eventId, $eventName]); + $newStartdate = sprintf('%s-%s-%s %s:00', $_POST['startYear'], $_POST['startMonth'], $_POST['startDay'], $_POST['startHour']); + $newEnddate = sprintf('%s-%s-%s %s:00', $_POST['endYear'], $_POST['endMonth'], $_POST['endDay'], $_POST['endHour']); $sql = 'UPDATE events SET name = "'.$eventName.'" , location = "'.$eventLocation.'" , link = "'.$eventLink.'" , description = "'.$eventDescription.'" - , startdate = "'.$_POST['startYear'].'-'.$_POST['startMonth'].'-'.$_POST['startDay'].' '.$_POST['startHour'].':00" - , enddate = "'.$_POST['endYear'].'-'.$_POST['endMonth'].'-'.$_POST['endDay'].' '.$_POST['endHour'].':00" + , startdate = "'.$newStartdate.'" + , enddate = "'.$newEnddate.'" , gallery_id = '.$eventGallery.' , review_url = "'.$eventReviewlink.'" WHERE id = '.$eventId ; - if (DEVELOPMENT) error_log($sql); + // TODO use $db->update() Method $result = $db->query($sql, __FILE__, __LINE__, 'edit'); if ($result === false) $error = 'Error updating Event ID "' . $eventId . '"'; @@ -103,16 +103,13 @@ /** Join User to Event */ case (isset($eventJoinId) && is_numeric($eventJoinId)): - if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> Join Event: %d', __FILE__, __LINE__, $eventJoinId)); + zorgDebugger::me()->debug('User joins Event: %d', [$eventJoinId]); $redirect_url .= '&event_id='.$eventJoinId; - $sql = 'INSERT INTO events_to_user VALUES('.$user->id.', '.$eventJoinId.')'; - if ($db->query($sql,__FILE__, __LINE__) === false) - { + $insertValues = ['user_id' => $user->id, 'event_id' => $eventJoinId]; + if ($db->insert('events_to_user', $insertValues, __FILE__, __LINE__) === false) { $error = 'Cannot join Event ID ' . $eventJoinId; - break; } else { - /** Activity Eintrag auslösen */ Activities::addActivity($user->id, 0, 'nimmt an '.Events::getEventName($eventJoinId).' teil.', 'ev'); } @@ -121,18 +118,18 @@ /** Unjoin User from Event */ case (isset($eventUnjoinId) && is_numeric($eventUnjoinId)): - if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> Unjoin Event: %d', __FILE__, __LINE__, $eventUnjoinId)); + zorgDebugger::me()->debug('User unjoins Event: %d', [$eventUnjoinId]); $redirect_url .= '&event_id='.$eventUnjoinId; - $sql = 'DELETE FROM events_to_user WHERE user_id = '.$user->id.' AND event_id = '.$eventUnjoinId; - if (!$db->query($sql,__FILE__, __LINE__)) $error = 'Cannot unjoin Event ID ' . $eventUnjoinId; + $sql = 'DELETE FROM events_to_user WHERE user_id=? AND event_id=?'; + if (!$db->query($sql,__FILE__, __LINE__, 'Event Unjoin', [$user->id, $eventUnjoinId])) $error = 'Cannot unjoin Event ID ' . $eventUnjoinId; break; /** Post Event to Twitter */ case ((isset($_POST['action']) && $_POST['action'] === 'tweet')): - if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> Tweet Event: %s', __FILE__, __LINE__, $redirect_url)); + zorgDebugger::me()->debug('Tweet Event: %s', [$redirect_url]); /** * Load Twitter Class & Grab the Twitter API Keys @@ -194,6 +191,7 @@ } /** Redirect request */ -if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> Redirecting to %s', __FILE__, __LINE__, $redirect_url.rawurlencode($error))); -header('Location: ' . $redirect_url . ( !empty($error) ? '&error='.rawurlencode($error) : '') ); +$goToUrl = $redirect_url . ( !empty($error) ? '&error='.rawurlencode($error) : ''); +zorgDebugger::me()->debug('Redirecting to %s', [$goToUrl]); +header('Location: ' . $goToUrl ); exit; diff --git a/www/controller/layout.controller.php b/www/controller/layout.controller.php index 68f143e..dd9bd73 100644 --- a/www/controller/layout.controller.php +++ b/www/controller/layout.controller.php @@ -63,7 +63,7 @@ class Layout extends \MVC\Controller public function __construct() { /** Position vom user bestimmen */ - if (DEVELOPMENT === true) error_log(sprintf('[DEBUG] <%s:%d> new \Utils\IP2Geolocation()', __FILE__, __LINE__)); + \zorgDebugger::me()->debug('New \Utils\IP2Geolocation()'); $userLocationData = new \Utils\User\IP2Geolocation(); /** Assign user location vars */ @@ -147,7 +147,7 @@ private function setCountryFlagicon($countryCode='CHE') */ private function setColors() { - if (DEVELOPMENT === true) error_log(sprintf('[DEBUG] <%s:%d> Color Layout: %s', __METHOD__, __LINE__, $this->layouttype)); + \zorgDebugger::me()->debug('Color Layout: %s', [$this->layouttype]); /** Background colors */ if (!defined('BACKGROUNDCOLOR')) define('BACKGROUNDCOLOR', ($this->layouttype === 'day' ? '#F2F2F2' : '#141414')); diff --git a/www/getfile.php b/www/getfile.php index 2c34ae1..74b2e97 100644 --- a/www/getfile.php +++ b/www/getfile.php @@ -32,16 +32,19 @@ if ((isset($_GET['user']) && !empty($_GET['user']) && is_numeric($_GET['user']) && $_GET['user'] > 0) && (isset($_GET['file']) && !empty($_GET['file']))) { - $e = $db->query('SELECT * FROM files WHERE user=' . (int)$_GET['user'] . ' AND name="' . addslashes($_GET['file']) .'"', __FILE__, __LINE__, 'SELECT files by user'); + $e = $db->query('SELECT * FROM files WHERE user=? AND name=?', + __FILE__, __LINE__, 'SELECT files by user', [(int)$_GET['user'], addslashes($_GET['file'])]); $d = $db->fetch($e); - +} /** ...else check & validate for file-id in URL-Params */ -} elseif (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0) - { - $e = $db->query('SELECT * FROM files WHERE id=' . (int)$_GET['id'], __FILE__, __LINE__, 'SELECT files by id'); - $d = $db->fetch($e); - } -} else { +elseif (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0) +{ + $e = $db->query('SELECT * FROM files WHERE id=?', + __FILE__, __LINE__, 'SELECT files by id', [(int)$_GET['id']]); + $d = $db->fetch($e); +} +/** ...finally: it's an invalid requests, it seems */ +else { http_response_code(400); // Set response code 400 (bad request) and exit. exit('Invalid or missing GET-Parameter'); } diff --git a/www/gnsimu.php b/www/gnsimu.php index 7577056..3bfb425 100644 --- a/www/gnsimu.php +++ b/www/gnsimu.php @@ -54,596 +54,596 @@ function __construct() // Variablen mit Kampfwerten füllen { // Daten Für Jäger Nr. 0 $this->name[0] = "Jäger"; - + $this->attakpower[0] = array(0.0246, 0.392, 0.0263); // Wie viele Schiffe ein Schiff mit 100% Feuerkrafft zerstören würde - + $this->shiptoattak[0] = array(11,1,4); // Welche Schiffe/Geschütze angegriffen werden - + $this->percent[0] = array(0.35,0.30,0.35); // Die Verteilung der Prozente, mit der auf die Schiffe geschoßen wird. - + $this->mcost[0] = 4000; - + $this->kcost[0] = 6000; - - - + + + // Daten Für Bomber Nr. 1 - + $this->attakpower[1] = array(0.0080,0.0100,0.0075); - + $this->shiptoattak[1] = array(12,5,6); - + $this->percent[1] = array(0.35,0.35,0.30); - + $this->name[1] = "Bomber"; - + $this->mcost[1] = 2000; - + $this->kcost[1] = 8000; - - - + + + // Daten Für Fregatte Nr. 2 - + $this->attakpower[2] = array(4.5,0.85); - + $this->shiptoattak[2] = array(13,0); - + $this->percent[2] = array(0.6,0.4); - + $this->name[2] = "Fregatte"; - + $this->mcost[2] = 15000; - + $this->kcost[2] = 7500; - - - + + + // Daten Für Zerstörer Nr. 3 - + $this->attakpower[3] = array(3.5,1.2444); - + $this->shiptoattak[3] = array(9,2); - + $this->percent[3] = array(0.6,0.4); - + $this->name[3] = "Zerstörer"; - + $this->mcost[3] = 40000; - + $this->kcost[3] = 30000; - - - + + + // Daten Für Kreuzer Nr. 4 - + $this->attakpower[4] = array(2.0,0.8571,10.0); - + $this->shiptoattak[4] = array(10,3,8); - + $this->percent[4] = array(0.35,0.30,0.35); - + $this->name[4] = "Kreuzer"; - + $this->mcost[4] = 65000; - + $this->kcost[4] = 85000; - - - + + + // Daten Für Schalchtschiff Nr. 5 - + $this->attakpower[5] = array(1.0,1.0666,0.4,0.3019,26.6667); - + $this->shiptoattak[5] = array(11,4,5,6,8); - + $this->percent[5] = array(0.2,0.2,0.2,0.2,0.2); - + $this->name[5] = "Schlachtschiff"; - + $this->mcost[5] = 250000; - + $this->kcost[5] = 150000; - - - + + + // Daten Für Trägerschiff Nr. 6 - + $this->attakpower[6] = array(25.0,14.0); - + $this->shiptoattak[6] = array(7,8); - + $this->percent[6] = array(0.5,0.5); - + $this->mcost[6] = 200000; - + $this->kcost[6] = 50000; - + $this->name[6] = "Trägerschiff"; - - - - - + + + + + // Daten für Kaperschiff - + $this->mcost[7] = 1500; - + $this->kcost[7] = 1000; - + $this->name[7] = "Kaperschiff"; - - - - - + + + + + // Daten für Schutzschiff - + $this->mcost[8] = 1000; - + $this->kcost[8] = 1500; - + $this->name[8] = "Schutzschiff"; - - - - - + + + + + // Daten Für Leichtes Obligtalgeschütz Nr. 9 - + $this->attakpower[9] = array(0.3,1.28); - + $this->shiptoattak[9] = array(0,7); - + $this->percent[9] = array(0.6,0.4); - - $this->this->mcost[9] = 6000; - + + $this->mcost[9] = 6000; + $this->kcost[9] = 2000; - + $this->name[9] = "Leichtes Obligtalgeschütz"; - - - - - + + + + + // Daten Für Leichtes Raumgeschütz Nr. 10 - + $this->attakpower[10] = array(1.2,0.5334); - + $this->shiptoattak[10] = array(1,2); - + $this->percent[10] = array(0.4,0.6); - + $this->mcost[10] = 20000; - + $this->kcost[10] = 10000; - + $this->name[10] = "Leichtes Raumgeschütz"; - - - - - + + + + + // Daten Für Mittleres Raumgeschütz Nr. 11 - + $this->attakpower[11] = array(0.9143,0.4267); - + $this->shiptoattak[11] = array(3,4); - + $this->percent[11] = array(0.4,0.6); - + $this->mcost[11] = 60000; - + $this->kcost[11] = 100000; - + $this->name[11] = "Mittleres Raumgeschütz"; - - - - - + + + + + // Daten Für Schweres Raumgeschütz Nr. 12 - + $this->attakpower[12] = array(0.5,0.3774); - + $this->shiptoattak[12] = array(5,6); - + $this->percent[12] = array(0.5,0.5); - + $this->mcost[12] = 200000; - + $this->kcost[12] = 300000; - + $this->name[12] = "Schweres Raumgeschütz"; - - - - - + + + + + // Daten Für Abfangjäger Nr. 13 - + $this->attakpower[13] = array(0.0114,0.32); - + $this->shiptoattak[13] = array(3,7); - + $this->percent[13] = array(0.4,0.6); - + $this->mcost[13] = 1000; - + $this->kcost[13] = 1000; - + $this->name[13] = "Abfangjäger"; - + } - - - - - - - + + + + + + + function Compute($lasttick) // Dieses ist sie also die mytische Funktion, die Werte in äh ja äh andere Werte verwandeln kann. $lasttick dient dazu im letzten tick die Jäger und Bomber zu zerstören, die über sind. - + { - + // Wenn man tolle Debug informationen sehen will einfach auf 1 setzen - - $debug = 1; - - - - - + + $debug = (DEVELOPMENT===true ? 1 : 0); + + + + + // "Sicherheitskopie" der Anzahl der Schiffe machen - + for($i=0;$i<14;$i++) - + { - + $this->Olddeff[$i] = $this->deffending[$i]; - + if($i<9) - + $this->Oldatt[$i] = $this->attaking[$i]; - + } - - - + + + //Schleife über alle Schiffe - + for($i=0;$i<14;$i++) - + { - + //Variablen für das nächste Schiff "nullen" - + $RestPercentatt = 0; - + $Restpoweratt = $this->Oldatt[$i]; //Die Power ist gleich der Anzahl der Schiffe die angreifen - + $OldRestpoweratt = 0; - + $RestPercentdeff = 0; - + $Restpowerdeff = $this->Olddeff[$i]; - + $OldRestpowerdeff = 0; - + $strike=0; - - - + + + //Berechnen wie viele Strikes der aktuelle Schiffstyp hat(eins geteilet durch den kleinsten Prozentwert, mit dem das Schiff feuert und das ganz aufrunden und noch +3) - + if($this->percent[$i]) - + $curstrikes = ceil(1/min($this->percent[$i]))+3; - + else - + $curstrikes = 0; - - - + + + while($strike < $curstrikes ) - + { - + if($debug) - + echo "Strike".($strike-$curstrikes)."
"; - + $OldRestpoweratt = $Restpoweratt; - + $OldRestpowerdeff = $Restpowerdeff; - + // Schleife über alle Schiffe die angeriffen werden sollen - + for($j=0;$jattakpower[$i]);$j++) - + { - + if($debug) - + echo $this->name[$i]." gegen ".$this->name[$this->shiptoattak[$i][$j]]."
"; - - - + + + // Angreifer - + if($Restpoweratt>0) - + { - + $del = 0; - + // Dafür sorgen, dass nicht mit einem Prozentsatz von größer als 100% angerifen wird - + if($RestPercentatt+$this->percent[$i][$j] > 1) - + $RestPercentatt = 1.0 - $this->percent[$i][$j]; - - - + + + // Maximale Zerstörung die Angerichtet werden kann. Die Power der Prozentsatz mal die Power der Schiffe mal wie viele Schiffe vom andern tyo von einem zerstört werden - + $MaxDestruction = floor(($RestPercentatt+$this->percent[$i][$j]) * $OldRestpoweratt * $this->attakpower[$i][$j]); - - - + + + if($debug) - + { - + echo "- Angreifende Schiffe: ".$this->Oldatt[$i]." Verteidigende Schiffe:".($this->deffending[$this->shiptoattak[$i][$j]])."
"; - + echo "- Maximale Zerstörung: floor(($RestPercentatt+".$this->percent[$i][$j].") * $OldRestpoweratt * ".$this->attakpower[$i][$j].")=$MaxDestruction
"; - + } - - - + + + // Wie viele Schiffe dann zerstört werden, nich mehr als die maximale zerstörung und nich mehr als mit 100%(was oben eigentlich schon geprüft wird) und nich mehr als Schiffe noch über sind. - + $del= floor(max(min($MaxDestruction, $Restpoweratt * $this->attakpower[$i][$j], $this->deffending[$this->shiptoattak[$i][$j]]), 0)); - - - - - + + + + + // Im 4ten Strike wird unter bestimmten Umständen(s.u) der Prozentsatz, der beim feuern nicht zum Einsatz gekommen ist zu einer Variable addiert, die zum normalen Prozentsatz dazugerechnet wird. - + if($strike==3) - + { - + // Wenn es das letzte Schiff im Tick ist oder keine Schiffe zerstört wurden wird Rest-Prozent um den Prozentsatz, der nich verbraucht wird erhöht. - + // Alles könnte schön und gut sein, wenn da nicht die Schlachter wären, die flogen der Regel nämlich nur wenn sie auf sich selbst oder Kreuzer schießen, sonnst wird immer der Prozentsatz der nicht gebraucht wurde dazugerechnet, warum auch immer... - + if ( $j == count($this->attakpower[$i])-1 || $del == 0 || ($i == 5 && $this->shiptoattak[$i][$j]!=5 && $this->shiptoattak[$i][$j]!=4)) - + { - + $RestPercentatt += $this->percent[$i][$j] - ($del / $OldRestpoweratt / $this->attakpower[$i][$j]); - + } - + } - + // Benutze Feuerkraft berechnen und subtrahiren - + $Firepower = $del/$this->attakpower[$i][$j]; - + $Restpoweratt -= $Firepower; - - - + + + // Schiffe zerstören - + $this->deffending[$this->shiptoattak[$i][$j]] -=$del; - + $this->geslostshipsdeff[$this->shiptoattak[$i][$j]] += $del; - - - + + + if($debug) - + { - + echo "- Zerstörte Schiffe: $del
- + - Benutzte Firepower = $del/".$this->attakpower[$i][$j]." = $Firepower; Restpower = $Restpoweratt
"; - + } - + } - - - - - + + + + + // Nochmal genau das selbe nur mit Angreifer/Verteidiger vertauschten Variablen. - + if($Restpowerdeff>0) - + { - + $del = 0; - + if($RestPercentdeff+$this->percent[$i][$j] > 1) - + $RestPercentdeff = 1.0 - $this->percent[$i][$j]; - + $MaxDestruction = floor(($RestPercentdeff+$this->percent[$i][$j]) * $OldRestpowerdeff * $this->attakpower[$i][$j]); - - - + + + if($debug) - + { - + echo "- Angreifende Schiffe: ".$this->Olddeff[$i]." Verteidigende Schiffe:".($this->attaking[$this->shiptoattak[$i][$j]])."
"; - + echo "- Maximale Zerstörung: floor(($RestPercentdeff+".$this->percent[$i][$j].") * $OldRestpowerdeff * ".$this->attakpower[$i][$j].")=$MaxDestruction
"; - - - + + + } - - - + + + $del= floor(max(min($MaxDestruction, $Restpowerdeff * $this->attakpower[$i][$j], $this->attaking[$this->shiptoattak[$i][$j]]), 0)); - - - - - + + + + + if($strike==3) - + { - + if ( $j == count($this->attakpower[$i])-1 || $del == 0 || ($i == 5 && $this->shiptoattak[$i][$j]!=5 && $this->shiptoattak[$i][$j]!=4)) - + { $RestPercentdeff += $this->percent[$i][$j] - ($del / $OldRestpowerdeff / $this->attakpower[$i][$j]); - + } - + } - - - + + + $Firepower = $del/$this->attakpower[$i][$j]; - + $Restpowerdeff -= $Firepower; - - - + + + $this->attaking[$this->shiptoattak[$i][$j]] -= $del; - + $this->geslostshipsatt[$this->shiptoattak[$i][$j]] += $del; - - - + + + if($debug) - + { - + echo "- Zerstörte Schiffe: $del
- + - Benutzte Firepower = $del/".$this->attakpower[$i][$j]." = $Firepower; Restpower = $Restpowerdeff
"; - + } - + } - + } - + $strike++; - + } - + } - - - + + + //Wenn wir im letzen Tick sind wird geprüft ob auch alle Jäger und Bomber mit nach hause fliegn dürfen - - - + + + if($lasttick) - + { - + $jaeger = $this->attaking[0]; - + $bomber = $this->attaking[1]; - + $traeger = $this->attaking[6]; - + if ( $bomber + $jaeger > $traeger*100) - + { - + $todel = $jaeger + $bomber - $traeger*100; - + $this->attaking[0] -= round($todel*($jaeger/($jaeger + $bomber))); - + $this->attaking[1] -= round($todel*($bomber/($jaeger + $bomber))); - + } - + } - + //Dann noch mal eben schnell paar exen klauen - - - + + + //Erstmall ausrechnen, wie viele maximal mitgenommen werden können, bin der Meinung mal Iregndwo im Forum gelesen zu haben, dass Metall- auf- und Kristallexen abgerundet werden - + $maxmexen = ceil((max($this->attaking[7]-$this->deffending[8],0))/2); - + $maxkexen = floor((max($this->attaking[7]-$this->deffending[8],0))/2); - - - + + + //Dann wie viele Metallexen in den meißten fällen geklaut würden - + $rmexen = min($maxmexen, floor($this->mexen*0.1)); - - - - - + + + + + //Wenn nich alle Schiffe, die für Metallexenlau bereitgestellt waren benutz werden, dürfen diezum Kristallexen klauen Benutzt werden - + if($rmexen != $maxmexen) - + $maxkexen += $maxmexen-$rmexen; - - - + + + //Kristallexen in den meißten fällen - + $rkexen = min($maxkexen, floor($this->kexen*0.1)); - - - + + + // Wenn nich alle zum Kristallexen bereitgestellten Cleps benutzt wurden, rechnen wir nochmal Metallexen ob nich evtl mehr mit genommen werden können. - + if($rkexen != $maxkexen) - + { - + $maxmexen += $maxkexen-$rkexen; - + $rmexen = min($maxmexen, floor($this->mexen*0.1)); - + } - - - - - + + + + + // Exen vom bestand abziehen und auch die benutzen Cleps "zerstören" - + $this->mexen -=$rmexen; - + $this->kexen -=$rkexen; - + $this->attaking[7] -= $rmexen+$rkexen; - + $this->geslostshipsatt[7] += $rmexen+$rkexen; - - - + + + //Für die Statistik, wie viele Exen insgesammt gestohlen wurden. - + $this->gesstolenexenm+=$this->stolenmexen = $rmexen; - + $this->gesstolenexenk+=$this->stolenkexen = $rkexen; } } @@ -651,5 +651,6 @@ function Compute($lasttick) // Dieses ist sie also die mytische Funktion, die We $attacking[7] = 1000; $mexen = 100; $simulation = new GNSimu(); -$simulation->compute(); +$simulation->compute(1); // Tick: Die Zeitrechnung in Galaxy-Network wird in Ticks angegeben. Ein Tick umfasst 15 Minuten realer Zeitrechnung. Wann der letzte Tick begonnen hat, kannst du ganz oben in deinem "Kontrollzentrum" ablesen. + print $simulation->stolenmexen; diff --git a/www/includes/googleapis.inc.php b/www/includes/googleapis.inc.php index 5bc6844..5e16641 100644 --- a/www/includes/googleapis.inc.php +++ b/www/includes/googleapis.inc.php @@ -15,7 +15,7 @@ */ require_once __DIR__.'/config.inc.php'; if (!defined('GOOGLE_API_KEY') && isset($_ENV['GOOGLE_MAPS_API_KEY'])) define('GOOGLE_API_KEY', $_ENV['GOOGLE_MAPS_API_KEY']); -if (DEVELOPMENT) error_log(sprintf('[DEBUG] <%s:%d> GOOGLE_API_KEY: %s', __FILE__, __LINE__, (!empty(GOOGLE_API_KEY) ? 'found' : 'MISSING'))); +zorgDebugger::me()->debug('GOOGLE_API_KEY: %s', [(!empty(GOOGLE_API_KEY) ? 'found' : 'MISSING')]); /** * Google Maps API Class diff --git a/www/includes/smarty.fnc.php b/www/includes/smarty.fnc.php index 0f0de1e..2c5c868 100644 --- a/www/includes/smarty.fnc.php +++ b/www/includes/smarty.fnc.php @@ -31,7 +31,7 @@ * Define and include the MCV Controllers and initialise Layout related settings. */ require_once CONTROLLERS_DIR.'layout.controller.php'; -if (DEVELOPMENT === true) error_log(sprintf('[DEBUG] <%s:%d> new MVC\Controller\Layout()', __FILE__, __LINE__)); +zorgDebugger::me()->debug('New MVC\Controller\Layout()'); $zorgLayout = new MVC\Controller\Layout(); /**