diff --git a/GameEngine/Database.php b/GameEngine/Database.php
index 18125650..cb69aeb3 100755
--- a/GameEngine/Database.php
+++ b/GameEngine/Database.php
@@ -721,14 +721,8 @@ class MYSQLi_DB {
}
function populateOasis() {
- $q = "SELECT * FROM " . TB_PREFIX . "wdata where oasistype != 0";
- $result = mysqli_query($this->dblink,$q);
- while($row = mysqli_fetch_array($result)) {
- $wid = $row['id'];
-
- $this->addUnits($wid);
-
- }
+ $q = "INSERT INTO " . TB_PREFIX . "units (vref) SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype <> 0";
+ mysqli_query($this->dblink,$q);
}
function populateOasisUnits($wid, $high) {
@@ -799,57 +793,37 @@ class MYSQLi_DB {
}
function populateOasisUnits2() {
- $q2 = "SELECT * FROM " . TB_PREFIX . "wdata where oasistype != 0";
- $result2 = mysqli_query($this->dblink,$q2);
- while($row = mysqli_fetch_array($result2)) {
- $wid = (int) $row['id'];
- switch($row['oasistype']) {
- case 1:
- case 2:
- //+25% lumber oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u35 = u35 + '".rand(5,10)."', u36 = u36 + '".rand(0,5)."', u37 = u37 + '".rand(0,5)."' WHERE vref = '" . $wid . "' AND u35 <= '10' AND u36 <= '10' AND u37 <= '10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- case 3:
- //+25% lumber and +25% crop oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u35 = u35 + '".rand(5,15)."', u36 = u36 + '".rand(0,5)."', u37 = u37 + '".rand(0,5)."' WHERE vref = '" . $wid . "' AND u35 <= '10' AND u36 <= '10' AND u37 <='10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- case 4:
- case 5:
- //+25% clay oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + '".rand(10,15)."', u32 = u32 + '".rand(5,15)."', u35 = u35 + '".rand(0,10)."' WHERE vref = '" . $wid . "' AND u31 <= '10' AND u32 <= '10' AND u35 <= '10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- case 6:
- //+25% clay and +25% crop oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + '".rand(15,20)."', u32 = u32 + '".rand(10,15)."', u35 = u35 + '".rand(0,10)."' WHERE vref = '" . $wid . "' AND u31 <= '10' AND u32 <= '10' AND u35 <='10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- case 7:
- case 8:
- //+25% iron oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + '".rand(10,15)."', u32 = u32 + '".rand(5,15)."', u34 = u34 + '".rand(0,10)."' WHERE vref = '" . $wid . "' AND u31 <= '10' AND u32 <= '10' AND u34 <= '10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- case 9:
- //+25% iron and +25% crop oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + '".rand(15,20)."', u32 = u32 + '".rand(10,15)."', u34 = u34 + '".rand(0,10)."' WHERE vref = '" . $wid . "' AND u31 <= '10' AND u32 <= '10' AND u34 <='10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- case 10:
- case 11:
- //+25% crop oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + '".rand(5,15)."', u33 = u33 + '".rand(5,10)."', u37 = u37 + '".rand(0,10)."', u39 = u39 + '".rand(0,5)."' WHERE vref = '" . $wid . "' AND u31 <= '10' AND u33 <= '10' AND u37 <='10' AND u39 <='10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- case 12:
- //+50% crop oasis
- $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + '".rand(10,15)."', u33 = u33 + '".rand(5,10)."', u38 = u38 + '".rand(0,5)."', u39 = u39 + '".rand(0,5)."' WHERE vref = '" . $wid . "' AND u31 <= '10' AND u33 <= '10' AND u38 <='10'AND u39 <='10'";
- $result = mysqli_query($this->dblink,$q);
- break;
- }
- }
+ // +25% lumber oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u35 = u35 + (FLOOR(5 + RAND() * 10)), u36 = u36 + (FLOOR(0 + RAND() * 5)), u37 = u37 + (FLOOR(0 + RAND() * 5)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(1,2)) AND u35 <= 10 AND u36 <= 10 AND u37 <= 10";
+ mysqli_query($this->dblink,$q);
+
+ // +25% lumber and +25% crop oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u35 = u35 + (FLOOR(5 + RAND() * 15)), u36 = u36 + (FLOOR(0 + RAND() * 5)), u37 = u37 + (FLOOR(0 + RAND() * 5)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(3)) AND u35 <= 10 AND u36 <= 10 AND u37 <= 10";
+ mysqli_query($this->dblink,$q);
+
+ // +25% clay oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + (FLOOR(10 + RAND() * 15)), u32 = u32 + (FLOOR(5 + RAND() * 15)), u35 = u35 + (FLOOR(0 + RAND() * 10)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(4,5)) AND u31 <= 10 AND u32 <= 10 AND u35 <= 10";
+ mysqli_query($this->dblink,$q);
+
+ // +25% clay and +25% crop oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + (FLOOR(15 + RAND() * 20)), u32 = u32 + (FLOOR(10 + RAND() * 15)), u35 = u35 + (FLOOR(0 + RAND() * 10)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(6)) AND u31 <= 10 AND u32 <= 10 AND u35 <= 10";
+ mysqli_query($this->dblink,$q);
+
+ // +25% iron oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + (FLOOR(10 + RAND() * 15)), u32 = u32 + (FLOOR(5 + RAND() * 15)), u34 = u34 + (FLOOR(0 + RAND() * 10)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(7,8)) AND u31 <= 10 AND u32 <= 10 AND u34 <= 10";
+ mysqli_query($this->dblink,$q);
+
+ // +25% iron and +25% crop oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + (FLOOR(15 + RAND() * 20)), u32 = u32 + (FLOOR(10 + RAND() * 15)), u34 = u34 + (FLOOR(0 + RAND() * 10)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(9)) AND u31 <= 10 AND u32 <= 10 AND u34 <= 10";
+ mysqli_query($this->dblink,$q);
+
+ // +25% crop oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + (FLOOR(5 + RAND() * 15)), u33 = u33 + (FLOOR(5 + RAND() * 10)), u37 = u37 + (FLOOR(0 + RAND() * 10)), u39 = u39 + (FLOOR(0 + RAND() * 5)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(10,11)) AND u31 <= 10 AND u33 <= 10 AND u37 <= 10 AND u39 <= 10";
+ mysqli_query($this->dblink,$q);
+
+ // +50% crop oasis
+ $q = "UPDATE " . TB_PREFIX . "units SET u31 = u31 + (FLOOR(10 + RAND() * 15)), u33 = u33 + (FLOOR(5 + RAND() * 10)), u38 = u38 + (FLOOR(0 + RAND() * 5)), u39 = u39 + (FLOOR(0 + RAND() * 5)) WHERE vref IN(SELECT id FROM " . TB_PREFIX . "wdata WHERE oasistype IN(12)) AND u31 <= 10 AND u33 <= 10 AND u38 <= 10 AND u39 <= 10";
+ mysqli_query($this->dblink,$q);
}
function removeOases($wref) {
@@ -3797,22 +3771,8 @@ class MYSQLi_DB {
}
function populateOasisdata() {
- $q2 = "SELECT * FROM " . TB_PREFIX . "wdata where oasistype != 0";
- $result2 = mysqli_query($this->dblink,$q2);
- while($row = mysqli_fetch_array($result2)) {
- $wid = $row['id'];
- $basearray = $this->getOMInfo($wid);
- if($basearray['oasistype'] < 4) {
- $high = 1;
- } else if ($basearray['oasistype'] < 10){
- $high = 2;
- }else {
- $high = 0;
- }
- //We switch type of oasis and instert record with apropriate infomation.
- $q = "INSERT into " . TB_PREFIX . "odata VALUES ('" . $basearray['id'] . "'," . (int) $basearray['oasistype'] . ",0,800,800,800,800,800,800," . time() . "," . time() . ",100,2,'Unoccupied Oasis',".(int) $high.")";
- $result = mysqli_query($this->dblink,$q);
- }
+ $q = "INSERT INTO " . TB_PREFIX . "odata SELECT id, oasistype, 0, 800, 800, 800, 800, 800, 800, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 100, 2 , \"Unoccupied Oasis\", CASE WHEN oasistype < 4 THEN 1 WHEN oasistype < 10 THEN 2 ELSE 0 END FROM " . TB_PREFIX . "wdata WHERE oasistype <> 0";
+ mysqli_query($this->dblink,$q) OR DIE (mysqli_error($this->dblink));
}
public function getAvailableExpansionTraining() {
diff --git a/README b/README
index e26f7abd..7968e110 100644
--- a/README
+++ b/README
@@ -55,6 +55,8 @@ martinambrus changes:
43. players who post in an Alliance forum are now notified of each subsequent post in that topic via messages
44. editing troops in Admin now saves them when Enter is used instead of clicking on "Save" as well
45. added option into Admin config to allow Administrative accounts to be raided and attacked (which also permits trading with them via Market)
+46. vastly improved speed of world and oasis generation steps
+47. Multihunter & Support password fields are now really password fields
Shadowss changes:
diff --git a/install/data/sql.sql b/install/data/sql.sql
index 766e1471..27a4e1b0 100644
--- a/install/data/sql.sql
+++ b/install/data/sql.sql
@@ -1571,9 +1571,9 @@ CREATE TABLE IF NOT EXISTS `%PREFIX%users` (
--
INSERT INTO `%PREFIX%users` (`id`, `username`, `password`, `email`, `tribe`, `access`, `gold`, `gender`, `birthday`, `location`, `desc1`, `desc2`, `plus`, `b1`, `b2`, `b3`, `b4`, `sit1`, `sit2`, `alliance`, `sessid`, `act`, `timestamp`, `ap`, `apall`, `dp`, `dpall`, `protect`, `quest`, `gpack`, `cp`, `lastupdate`, `RR`, `Rc`, `ok`) VALUES
-(5, 'Multihunter', '', 'multihunter@travianx.mail', 0, 9, 0, 0, '1970-01-01', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 'gpack/travian_default/', 1, 0, 0, 0, 0),
+(5, 'Multihunter', '', 'multihunter@travianz.game', 0, 9, 0, 0, '1970-01-01', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 'gpack/travian_default/', 1, 0, 0, 0, 0),
(1, 'Support', '', 'support@travianz.game', 0, 8, 0, 0, '1970-01-01', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 'gpack/travian_default/', 1, 0, 0, 0, 0),
-(2, 'Nature', '4262cc190152adfc1a3fcf32af6aa430', 'nature@travianz.game', 4, 9, 0, 0, '1970-01-01', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 'gpack/travian_default/', 1, 0, 0, 0, 0),
+(2, 'Nature', '', 'nature@travianz.game', 4, 2, 0, 0, '1970-01-01', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 'gpack/travian_default/', 1, 0, 0, 0, 0),
(4, 'Taskmaster', '', 'taskmaster@travianz.game', 0, 8, 0, 0, '1970-01-01', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', 0, 0, 0, 0, 0, 0, 0, 'gpack/travian_default/', 1, 0, 0, 0, 0);
-- --------------------------------------------------------
diff --git a/install/include/oasis.php b/install/include/oasis.php
index da3048b0..226fd38f 100644
--- a/install/include/oasis.php
+++ b/install/include/oasis.php
@@ -23,6 +23,6 @@
- header("Location: ../index.php?s=6");
+ header("Location: ../index.php?s=7");
?>
\ No newline at end of file
diff --git a/install/include/wdata.php b/install/include/wdata.php
index 76f2c137..5f794eae 100644
--- a/install/include/wdata.php
+++ b/install/include/wdata.php
@@ -20,6 +20,8 @@ if (count($data_exist)) {
}
$xyas=(1+(2*WORLD_MAX));
+$values_batch = [];
+$max_batch_size = 10000;
for($i=0; $i<$xyas; $i++){
$y=(WORLD_MAX-$i);
@@ -115,11 +117,24 @@ $y=(WORLD_MAX-$i);
}
//into database
- $q = "INSERT into ".TB_PREFIX."wdata values (0,'".$typ."','".$otype."','".$x."','".$y."',0,'".$image."')";
- $database->query($q);
+ $values_batch[] = "(0,'".$typ."','".$otype."','".$x."','".$y."',0,'".$image."')";
+
+ // insert the full batch when threshold is reached
+ if (count($values_batch) === $max_batch_size) {
+ $q = "INSERT into ".TB_PREFIX."wdata VALUES ".implode(',', $values_batch);
+ $database->query($q);
+ $values_batch = [];
+ }
}
}
+// last batch may not be as big as $max_batch_size
+if (count($values_batch)) {
+ $q = "INSERT into ".TB_PREFIX."wdata VALUES ".implode(',', $values_batch);
+ $database->query($q);
+ $values_batch = [];
+}
+
header("Location: ../index.php?s=4");
?>
diff --git a/install/templates/multihunter.tpl b/install/templates/multihunter.tpl
index 2c294a4b..24b4407c 100644
--- a/install/templates/multihunter.tpl
+++ b/install/templates/multihunter.tpl
@@ -14,6 +14,7 @@
## Source code: https://github.com/Shadowss/TravianZ ##
## ##
#################################################################################
+rename("include/constant.php","../GameEngine/config.php");
?>
@@ -24,7 +25,7 @@
Create Multihunter account
diff --git a/install/templates/support.tpl b/install/templates/support.tpl
index 563af2e0..6ffc5c7c 100644
--- a/install/templates/support.tpl
+++ b/install/templates/support.tpl
@@ -14,7 +14,6 @@
## Source code: https://github.com/Shadowss/TravianZ ##
## ##
#################################################################################
- rename("include/constant.php","../GameEngine/config.php");
?>
@@ -25,7 +24,7 @@
Create Support account