From aec41019e9009a801241466ce523d2b709442aaa Mon Sep 17 00:00:00 2001 From: Pietro Date: Thu, 5 Apr 2018 03:03:49 +0200 Subject: [PATCH] Fixed a bug in the troops training If the speed of the server is very high and the single troop training time is 0, you can now train troops instantly. --- GameEngine/Automation.php | 19 ++++++++++++------- GameEngine/Database.php | 4 +--- GameEngine/Technology.php | 1 - 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/GameEngine/Automation.php b/GameEngine/Automation.php index 5a1351cd..2f3450cb 100755 --- a/GameEngine/Automation.php +++ b/GameEngine/Automation.php @@ -4307,15 +4307,20 @@ class Automation { $valuesUpdated = false; if($timepast <= 0 && $train['amt'] > 0) { $valuesUpdated = true; - $timepast2 = $time - $train['timestamp2']; - $trained = 1; - while($timepast2 >= $train['eachtime']){ - $timepast2 -= $train['eachtime']; - $trained += 1; - } - if($trained > $train['amt']){ + if($train['eachtime'] > 0){ + $timepast2 = $time - $train['timestamp2']; + $trained = 1; + while($timepast2 >= $train['eachtime']){ + $timepast2 -= $train['eachtime']; + $trained += 1; + } + if($trained > $train['amt']){ + $trained = $train['amt']; + } + }else{ $trained = $train['amt']; } + if($train['unit']>60 && $train['unit']!=99){ $database->modifyUnit($train['vref'],array($train['unit']-60),array($trained),array(1)); }else{ diff --git a/GameEngine/Database.php b/GameEngine/Database.php index 50547b15..14c91b90 100755 --- a/GameEngine/Database.php +++ b/GameEngine/Database.php @@ -6113,9 +6113,7 @@ References: User ID/Message ID, Mode } } } - if ( $each == 0 ) { - $each = 1; - } + $time2 = $now + $each; if ( count( $queued ) > 0 ) { $time += $queued[ count( $queued ) - 1 ]['timestamp'] - $now; diff --git a/GameEngine/Technology.php b/GameEngine/Technology.php index 7b10bed4..a893752a 100755 --- a/GameEngine/Technology.php +++ b/GameEngine/Technology.php @@ -640,7 +640,6 @@ private function trainUnit($unit,$amt,$great=false) { $clay = ${'u'.$unit}['clay'] * $amt * ($great?3:1); $iron = ${'u'.$unit}['iron'] * $amt * ($great?3:1); $crop = ${'u'.$unit}['crop'] * $amt * ($great?3:1); - $each = ($each == 0) ? 1 : $each; $time = $each*$amt; if($database->modifyResource($village->wid,$wood,$clay,$iron,$crop,0) && $amt > 0) { $database->trainUnit($village->wid,$unit+($great?60:0),$amt,${'u'.$unit}['pop'],$each,time()+$time,0);