From ac2744c90e083186f2d23043243438e543206cb7 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 12 May 2012 13:16:57 +0300 Subject: [PATCH] fix traps training and by this fix also the 4294966344 setler bug too --- GameEngine/Automation.php | 6 ++- GameEngine/Data/unitdata.php | 1 + GameEngine/Database/db_MYSQL.php | 23 +++++----- GameEngine/Lang/en.php | 1 + GameEngine/Technology.php | 38 ++++++++++++++--- Templates/Build/36.tpl | 72 ++++++++++++++++++++++++-------- Templates/Build/avaliable.tpl | 2 +- install/data/sql.sql | 2 + 8 files changed, 109 insertions(+), 36 deletions(-) diff --git a/GameEngine/Automation.php b/GameEngine/Automation.php index e4e24ed4..fc08717b 100644 --- a/GameEngine/Automation.php +++ b/GameEngine/Automation.php @@ -2666,7 +2666,11 @@ $crannyimg = "= $train['amt']) { $trained = $train['amt']; } - $database->modifyUnit($train['vref'],array(($train['unit']>60?$train['unit']-60:$train['unit'])),array($trained),array(1)); + if($train['unit']>60 && $train['unit']!=99){ + $database->modifyUnit($train['vref'],array($train['unit']-60),array($trained),array(1)); + }else{ + $database->modifyUnit($train['vref'],array($train['unit']),array($trained),array(1)); + } if($train['amt']-$trained <= 0) { $database->trainUnit($train['id'],0,0,0,0,1,1); } diff --git a/GameEngine/Data/unitdata.php b/GameEngine/Data/unitdata.php index 30886694..7f97ffba 100644 --- a/GameEngine/Data/unitdata.php +++ b/GameEngine/Data/unitdata.php @@ -71,6 +71,7 @@ $u57=array('atk'=>250,'di'=>140,'dc'=>200,'wood'=>250,'clay'=>220,'iron'=>135,'c $u58=array('atk'=>450,'di'=>380,'dc'=>240,'wood'=>125,'clay'=>250,'iron'=>300,'crop'=>65,'speed'=>3,'pop'=>3,'time'=>2000,'cap'=>0); $u59=array('atk'=>200,'di'=>170,'dc'=>250,'wood'=>350,'clay'=>350,'iron'=>125,'crop'=>80,'speed'=>5,'pop'=>3,'time'=>70500,'cap'=>0); $u60=array('atk'=>600,'di'=>440,'dc'=>520,'wood'=>350,'clay'=>250,'iron'=>135,'crop'=>100,'speed'=>5,'pop'=>5,'time'=>31000,'cap'=>3000); +$u99=array('atk'=>0,'di'=>0,'dc'=>0,'wood'=>20,'clay'=>30,'iron'=>10,'crop'=>20,'speed'=>0,'pop'=>0,'time'=>600,'cap'=>0); // Hero data base values and increase per point $h1=array('atk'=>50,'atkp'=>54,'di'=>60,'dip'=>49,'dc'=>85,'dcp'=>62.5); $h2=array('atk'=>40,'atkp'=>46.5,'di'=>100,'dip'=>75.5,'dc'=>60,'dcp'=>47.5); diff --git a/GameEngine/Database/db_MYSQL.php b/GameEngine/Database/db_MYSQL.php index 8b9bfcda..062e29b7 100644 --- a/GameEngine/Database/db_MYSQL.php +++ b/GameEngine/Database/db_MYSQL.php @@ -2000,10 +2000,11 @@ $stables = array(4, 5, 6, 15, 16, 23, 24, 25, 26, 35, 36, 45, 46); $workshop = array(7, 8, 17, 18, 27, 28, 37, 38, 47, 48); $residence = array(9, 10, 19, 20, 29, 30, 39, 40, 49, 50); - $greatstables = array(64,65,66,75,76,83,84,85,86,95,96,105,106,); - $greatbarracks = array(61,62,63,71,72,73,84,81,82,91,92,93,94,101,102,103,104,111,112,113,114); - $greatworkshop = array(67,68,77,78,87,88,97,98,107,108); - + $greatstables = array(64,65,66,75,76,83,84,85,86,95,96,105,106,); + $greatbarracks = array(61,62,63,71,72,73,84,81,82,91,92,93,94,101,102,103,104,111,112,113,114); + $greatworkshop = array(67,68,77,78,87,88,97,98,107,108); + $trapper = array(99); + if(in_array($unit, $barracks)) { $queued = $technology->getTrainingList(1); } elseif(in_array($unit, $stables)) { @@ -2013,12 +2014,14 @@ } elseif(in_array($unit, $residence)) { $queued = $technology->getTrainingList(4); } elseif(in_array($unit, $greatstables)) { - $queued = $technology->getTrainingList(6); - } elseif(in_array($unit, $greatbarracks)) { - $queued = $technology->getTrainingList(5); - } elseif(in_array($unit, $greatworkshop)) { - $queued = $technology->getTrainingList(7); - } + $queued = $technology->getTrainingList(6); + } elseif(in_array($unit, $greatbarracks)) { + $queued = $technology->getTrainingList(5); + } elseif(in_array($unit, $greatworkshop)) { + $queued = $technology->getTrainingList(7); + } elseif(in_array($unit, $trapper)) { + $queued = $technology->getTrainingList(8); + } if(count($queued) > 0) { $time = $queued[count($queued) - 1]['commence'] + $queued[count($queued) - 1]['eachtime'] * $queued[count($queued) - 1]['amt']; } diff --git a/GameEngine/Lang/en.php b/GameEngine/Lang/en.php index 09709d31..35a62b9b 100644 --- a/GameEngine/Lang/en.php +++ b/GameEngine/Lang/en.php @@ -192,6 +192,7 @@ define("U27","Ram"); define("U28","Trebuchet"); define("U29","Chieftain"); define("U30","Settler"); +define("U99","Trap"); //NATURE UNITS define("U31","Rat"); diff --git a/GameEngine/Technology.php b/GameEngine/Technology.php index b37c251b..608ff06b 100644 --- a/GameEngine/Technology.php +++ b/GameEngine/Technology.php @@ -12,7 +12,7 @@ class Technology { - public $unarray = array(1=>U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,U21,U22,U23,U24,U25,U26,U27,U28,U29,U30,U31,U32,U33,U34,U35,U36,U37,U38,U39,U40,U41,U42,U43,U44,U45,U46,U47,U48,U49,U50,U0); + public $unarray = array(1=>U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,U21,U22,U23,U24,U25,U26,U27,U28,U29,U30,U31,U32,U33,U34,U35,U36,U37,U38,U39,U40,U41,U42,U43,U44,U45,U46,U47,U48,U49,U50,U99,U0); public function grabAcademyRes() { global $village; @@ -97,6 +97,7 @@ class Technology { $workshop = array(7,8,17,18,27,28,37,38,47,48); $greatworkshop = array(67,68,77,78,87,88,97,98,107,108); $residence = array(9,10,19,20,29,30,39,40,49,50); + $trapper = array(99); if(count($trainingarray) > 0) { foreach($trainingarray as $train) { if($type == 1 && in_array($train['unit'],$barracks)) { @@ -130,6 +131,10 @@ class Technology { $train['unit'] -= 60; array_push($listarray,$train); } + if($type == 8 && in_array($train['unit'],$trapper)) { + $train['name'] = $this->unarray[$train['unit']]; + array_push($listarray,$train); + } } } return $listarray; @@ -210,6 +215,8 @@ class Technology { function getAllUnits($base,$InVillageOnly=False) { global $database; $ownunit = $database->getUnit($base); + $ownunit['u99'] -= $ownunit['u99']; + $ownunit['u99o'] -= $ownunit['u99o']; $enforcementarray = $database->getEnforceVillage($base,0); if(count($enforcementarray) > 0) { foreach($enforcementarray as $enforce) { @@ -330,6 +337,14 @@ class Technology { $this->trainUnit($i,$amt,$great); } } + if($session->tribe == 3){ + if(isset($post['t99']) && $post['t99'] != 0) { + $amt = $post['t99']; + $amt = intval($amt); + if ($amt < 0) $amt = 1; + $this->trainUnit(99,$amt,$great); + } + } header("Location: build.php?id=".$post['id']); }else{ header("Location: banned.php"); @@ -391,13 +406,14 @@ class Technology { } private function trainUnit($unit,$amt,$great=false) { - global $session,$database,${'u'.$unit},$building,$village,$bid19,$bid20,$bid21,$bid25,$bid26,$bid29,$bid30,$bid41,$bid42; + global $session,$database,${'u'.$unit},$building,$village,$bid19,$bid20,$bid21,$bid25,$bid26,$bid29,$bid30,$bid36,$bid41,$bid42; - if($this->getTech($unit) || $unit%10 <= 1) { + if($this->getTech($unit) || $unit%10 <= 1 || $unit == 99) { $footies = array(1,2,3,11,12,13,14,21,22,31,32,33,34,41,42,43,44); $calvary = array(4,5,6,15,16,23,24,25,26,35,36,45,46); $workshop = array(7,8,17,18,27,28,37,38,47,48); $special = array(9,10,19,20,29,30,39,40,49,50); + $trapper = array(99); if(in_array($unit,$footies)) { if($great) { $each = round(($bid29[$building->getTypeLevel(29)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); @@ -426,14 +442,24 @@ private function trainUnit($unit,$amt,$great=false) { $each = round(($bid26[$building->getTypeLevel(26)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); } } - if($unit%10 == 0 || $unit%10 == 9) { + if(in_array($unit,$trapper)) { + $each = round(($bid19[$building->getTypeLevel(36)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); + } + if($unit%10 == 0 || $unit%10 == 9 && $unit != 99) { $slots = $database->getAvailableExpansionTraining(); if($unit%10 == 0 && $slots['settlers'] <= $amt) { $amt = $slots['settlers']; } if($unit%10 == 9 && $slots['chiefs'] <= $amt) { $amt = $slots['chiefs']; } } else { + if($unit != 99){ if($this->maxUnit($unit,$great) <= $amt) { - $amt = $this->maxUnit($unit,$great); + $amt = 0; } + }else{ + $max = $bid36[$building->getTypeLevel(36)]['attri'] - $village->unitarray['u99']; + if($max <= $amt) { + $amt = 0; + } + } } $wood = ${'u'.$unit}['wood'] * $amt * ($great?3:1); $clay = ${'u'.$unit}['clay'] * $amt * ($great?3:1); @@ -441,7 +467,7 @@ private function trainUnit($unit,$amt,$great=false) { $crop = ${'u'.$unit}['crop'] * $amt * ($great?3:1); $each = ($each == 0) ? 1 : $each; - if($database->modifyResource($village->wid,$wood,$clay,$iron,$crop,0)) { + 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(),0); } } diff --git a/Templates/Build/36.tpl b/Templates/Build/36.tpl index cd3b3646..09888bad 100644 --- a/Templates/Build/36.tpl +++ b/Templates/Build/36.tpl @@ -37,12 +37,11 @@ -

Your currently have 0 traps, 0 of which are occupied.

-
- +

Your currently have unitarray['u99']; ?> traps, unitarray['u99o']; ?> of which are occupied.

+getTypeLevel(36) > 0) { ?> + + + @@ -59,31 +58,68 @@
Trap Trap (Available: 0) + onClick="return Popup(36,4,'gid');">Trap (Available: unitarray['u99']; ?>)
-Lumber20|Clay30|Iron10|Crop20|Crop consumption0|Duration0:10:00 + alt="Duration" title="Duration" />getTimeFormat(round(${'u99'}['time'] * ($bid19[$village->resarray['f'.$id]]['attri'] / 100) / SPEED)); + echo ($dur=="0:00:00")? "0:00:01":$dur; ?>
- - + resarray['f'.$id]]['attri'] - $village->unitarray['u99']; + if($max < 0){ + $max = 0; + } + ?> + +
(resarray['f'.$id]]['attri']; ?>)()
- -

-
-

+ Training can commence when trapper are completed.
\n"; + } + $trainlist = $technology->getTrainingList(8); + if(count($trainlist) > 0) { + echo " + + + + + + + "; + $TrainCount = 0; + foreach($trainlist as $train) { + $TrainCount++; + echo " +
TrainingDurationFinished
"; + echo "\"".U99."\""; + echo $train['amt']." ".U99.""; + if ($TrainCount == 1 ) { + $NextFinished = $generator->getTimeFormat(($train['commence']+$train['eachtime'])-time()); + echo "".$generator->getTimeFormat(($train['commence']+($train['eachtime']*$train['amt']))-time()).""; + } else { + echo $generator->getTimeFormat($train['eachtime']*$train['amt']); + } + echo ""; + $time = $generator->procMTime($train['commence']+($train['eachtime']*$train['amt'])); + if($time[0] != "today") { + echo "on ".$time[0]." at "; + } + echo $time[1]; + } ?> +
The next unit will be finished in
+

\ No newline at end of file diff --git a/Templates/Build/avaliable.tpl b/Templates/Build/avaliable.tpl index 81936d6a..e8f071cf 100644 --- a/Templates/Build/avaliable.tpl +++ b/Templates/Build/avaliable.tpl @@ -87,7 +87,7 @@ if($mainbuilding >= 10 && $village->capital == 0 && $largeA['owner'] == $session if($mainbuilding >= 10 && $village->capital == 0 && $largeA['owner'] == $session->uid || $normalA['vref'] == $village->wid ) { include("avaliable/greatgranary.tpl"); } -if(($trapper ==0 || $trapper == 10) && $rallypoint >= 1 && $session->tribe == 3 && $id != 39 && $id != 40) { +if(($trapper ==0 || $trapper == 20) && $rallypoint >= 1 && $session->tribe == 3 && $id != 39 && $id != 40) { include("avaliable/trapper.tpl"); } if($rallypoint == 0 && $id != 40) { diff --git a/install/data/sql.sql b/install/data/sql.sql index 98fcb686..caae403d 100644 --- a/install/data/sql.sql +++ b/install/data/sql.sql @@ -1239,6 +1239,8 @@ CREATE TABLE IF NOT EXISTS `%PREFIX%units` ( `u48` int(11) unsigned NOT NULL DEFAULT '0', `u49` int(11) unsigned NOT NULL DEFAULT '0', `u50` int(11) unsigned NOT NULL DEFAULT '0', + `u99` int(11) unsigned NOT NULL DEFAULT '0', + `u99o` int(11) unsigned NOT NULL DEFAULT '0', `hero` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`vref`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;