mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-07-16 09:36:08 +00:00
more big update (sorry about all of them, but i not remember exactly all fixes that i did)
This commit is contained in:
+264
-130
@@ -146,6 +146,9 @@ class Automation {
|
||||
if(!file_exists("GameEngine/Prevention/training.txt") or time()-filemtime("GameEngine/Prevention/training.txt")>10) {
|
||||
$this->trainingComplete();
|
||||
}
|
||||
if(!file_exists("GameEngine/Prevention/starvation.txt") or time()-filemtime("GameEngine/Prevention/starvation.txt")>10) {
|
||||
$this->starvation();
|
||||
}
|
||||
if(!file_exists("GameEngine/Prevention/celebration.txt") or time()-filemtime("GameEngine/Prevention/celebration.txt")>10) {
|
||||
$this->celebrationComplete();
|
||||
}
|
||||
@@ -167,117 +170,6 @@ class Automation {
|
||||
$this->updateStore();
|
||||
}
|
||||
|
||||
function activeCropDead(){
|
||||
global $session,$village,$database,$_SESSION, $allcrop;
|
||||
// var_dump($session);
|
||||
// var_dump($village);
|
||||
// echo"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";'
|
||||
|
||||
//echo $session->villages;
|
||||
$this->updateRes($_SESSION['wid'],$session->uid);
|
||||
$allcrop=$this->bountyproduction['crop'];
|
||||
$allUnitInTown=$database->getUnit($_SESSION['wid']);
|
||||
$allEnforceInTown=$database->getEnforceVillage($_SESSION['wid'],0);
|
||||
$checkcrop=$database->getVillageField($_SESSION['wid'],'crop');
|
||||
$cropProd=$this->bountyGetCropProd();
|
||||
|
||||
// $time = time();
|
||||
// var_dump($session);
|
||||
// echo $checkcrop;
|
||||
// echo $allcrop;
|
||||
|
||||
if ($allcrop<0&&$checkcrop<0){
|
||||
$loops=0;
|
||||
while ($loops<1){
|
||||
if ($checkcrop < 0){
|
||||
|
||||
// array_shift($allUnitInTown);
|
||||
// rsort($allUnitInTown);
|
||||
//rsort($allEnforceIntown);
|
||||
// echo $numEnforce=count($allEnforceInTown);
|
||||
|
||||
if (!empty($allEnforceInTown)){
|
||||
arsort($allEnforceInTown);
|
||||
$unitarr=array();
|
||||
foreach ($allEnforceInTown as $enforceInTown){
|
||||
//var_dump($enforceInTown);
|
||||
// array_shift($enforceInTown);array_pop($enforceInTown);array_pop($enforceInTown);
|
||||
// array_splice($enforceInTown,count($enforceInTown)+1,2);
|
||||
// $enforceInTown=rsort($enforceInTown);
|
||||
for ($i=1;$i<51;$i++){
|
||||
$unitarr['u'.$i]=$enforceInTown['u'.$i];
|
||||
}
|
||||
$unitarr['hero']=$enforceInTown['hero'];
|
||||
|
||||
//var_dump($enforceInTown);
|
||||
if (array_sum($unitarr)>0){
|
||||
arsort($unitarr);
|
||||
$keydel=key($unitarr);
|
||||
$keydel2=substr($keydel,1);
|
||||
// echo $keydel."|||".$keydel2."|||";
|
||||
global ${$keydel};
|
||||
// echo ${$keydel}['crop'];
|
||||
// $newtroop=$unitarr[$keydel]-1;
|
||||
|
||||
$database->modifyEnforce($enforceInTown['id'],$keydel2,1,0);
|
||||
// $cropupdate=$checkcrop+${$keydel}['crop'];
|
||||
$q = "UPDATE ".TB_PREFIX."vdata set `crop` = `crop` +".${$keydel}['crop']." WHERE wref =".$_SESSION['wid'];
|
||||
$database->query($q);
|
||||
// echo$q;
|
||||
}else{
|
||||
$database->deleteReinf($enforceInTown["id"]);
|
||||
}
|
||||
// var_dump($enforceInTown);
|
||||
// var_dump($unitarr);
|
||||
|
||||
/* $allkey=array_keys($enforceInTown));
|
||||
$checkar=array();
|
||||
foreach ($allkey as $value){
|
||||
if ($enforceInTown[$value]>0){
|
||||
$checkar[]=$value;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}else{
|
||||
$unitarr=array();
|
||||
for ($i=1;$i<51;$i++){
|
||||
$unitarr['u'.$i]=$allUnitInTown['u'.$i];
|
||||
}
|
||||
$unitarr['hero']=$allUnitInTown['hero'];
|
||||
arsort($unitarr);
|
||||
if (array_sum($unitarr)>0){
|
||||
$keydel=key($unitarr);
|
||||
$keydel2=substr($keydel,1);
|
||||
global ${$keydel};
|
||||
$database->modifyUnit($allUnitInTown['vref'],$keydel2,1,0);
|
||||
|
||||
$q = "UPDATE ".TB_PREFIX."vdata set `crop` = `crop`+".${$keydel}['crop']." WHERE wref =".$_SESSION['wid'];
|
||||
$database->query($q);
|
||||
// echo$q;
|
||||
}
|
||||
}
|
||||
$this->updateRes($_SESSION['wid'],$session->uid);
|
||||
$allcrop=$this->bountyproduction['crop'];
|
||||
$allUnitInTown=$database->getUnit($_SESSION['wid']);
|
||||
$allEnforceInTown=$database->getEnforceVillage($_SESSION['wid'],0);
|
||||
$checkcrop=$database->getVillageField($_SESSION['wid'],'crop');
|
||||
//echo $allcrop."|||".$checkcrop;
|
||||
if ($allcrop>=0){
|
||||
$q = "UPDATE ".TB_PREFIX."vdata set `crop` = 0 WHERE wref =".$_SESSION['wid'];
|
||||
$database->query($q);
|
||||
$loops++;
|
||||
}elseif ($checkcrop>0){
|
||||
$loops++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// var_dump($allUnitInTown);
|
||||
//var_dump($allEnforceIntown);
|
||||
// echo $allcrop;
|
||||
}
|
||||
|
||||
}
|
||||
private function loyaltyRegeneration() {
|
||||
global $database;
|
||||
$array = array();
|
||||
@@ -656,7 +548,8 @@ if (array_sum($unitarr)>0){
|
||||
if ($isoasis == 0){
|
||||
$Attacker['id'] = $database->getUserField($database->getVillageField($data['from'],"owner"),"id",0);
|
||||
$Defender['id'] = $database->getUserField($database->getVillageField($data['to'],"owner"),"id",0);
|
||||
|
||||
$AttackerID = $database->getUserField($database->getVillageField($data['from'],"owner"),"id",0);
|
||||
$DefenderID = $database->getUserField($database->getVillageField($data['to'],"owner"),"id",0);
|
||||
$owntribe = $database->getUserField($database->getVillageField($data['from'],"owner"),"tribe",0);
|
||||
$targettribe = $database->getUserField($database->getVillageField($data['to'],"owner"),"tribe",0);
|
||||
$ownally = $database->getUserField($database->getVillageField($data['from'],"owner"),"alliance",0);
|
||||
@@ -693,6 +586,7 @@ if (array_sum($unitarr)>0){
|
||||
for($i=1;$i<=50;$i++) {
|
||||
$Defender['u'.$i] += $enforce['u'.$i];
|
||||
}
|
||||
$Defender['hero'] += $enforce['hero'];
|
||||
}
|
||||
}
|
||||
for($i=1;$i<=50;$i++){
|
||||
@@ -710,6 +604,13 @@ if (array_sum($unitarr)>0){
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!isset($Defender['hero'])){
|
||||
$Defender['hero'] = '0';
|
||||
} else {
|
||||
if($Defender['hero']=='' or $Defender['hero']<='0'){
|
||||
$Defender['hero'] = '0';
|
||||
}
|
||||
}
|
||||
//get attack units
|
||||
$Attacker = array();
|
||||
$start = ($owntribe-1)*10+1;
|
||||
@@ -864,9 +765,10 @@ if (array_sum($unitarr)>0){
|
||||
}else{
|
||||
$Attacker['id'] = $database->getUserField($database->getVillageField($data['from'],"owner"),"id",0);
|
||||
$Defender['id'] = $database->getUserField($database->getOasisField($data['to'],"owner"),"id",0);
|
||||
|
||||
$AttackerID = $database->getUserField($database->getVillageField($data['from'],"owner"),"id",0);
|
||||
$DefenderID = $database->getUserField($database->getOasisField($data['to'],"owner"),"id",0);
|
||||
$owntribe = $database->getUserField($database->getVillageField($data['from'],"owner"),"tribe",0);
|
||||
$targettribe = 4;
|
||||
$targettribe = $database->getUserField($database->getOasisField($data['to'],"owner"),"tribe",0);;
|
||||
$ownally = $database->getUserField($database->getVillageField($data['from'],"owner"),"alliance",0);
|
||||
$targetally = $database->getUserField($database->getOasisField($data['to'],"owner"),"alliance",0);
|
||||
$to = $database->getOMInfo($data['to']);
|
||||
@@ -884,6 +786,7 @@ if (array_sum($unitarr)>0){
|
||||
for($i=1;$i<=50;$i++) {
|
||||
$Defender['u'.$i] += $enforce['u'.$i];
|
||||
}
|
||||
$Defender['hero'] += $enforce['hero'];
|
||||
}
|
||||
}
|
||||
for($i=1;$i<=50;$i++){
|
||||
@@ -901,6 +804,13 @@ if (array_sum($unitarr)>0){
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!isset($Defender['hero'])){
|
||||
$Defender['hero'] = '0';
|
||||
} else {
|
||||
if($Defender['hero']=='' or $Defender['hero']<='0'){
|
||||
$Defender['hero'] = '0';
|
||||
}
|
||||
}
|
||||
//get attack units
|
||||
$Attacker = array();
|
||||
$start = ($owntribe-1)*10+1;
|
||||
@@ -983,7 +893,7 @@ if (array_sum($unitarr)>0){
|
||||
$stonemason = "1";
|
||||
|
||||
}
|
||||
$battlepart = $battle->calculateBattle($Attacker,$Defender,$def_wall,$att_tribe,$def_tribe,$residence,$attpop,$defpop,$type,$def_ab,$att_ab,$tblevel,$stonemason,$walllevel);
|
||||
$battlepart = $battle->calculateBattle($Attacker,$Defender,$def_wall,$att_tribe,$def_tribe,$residence,$attpop,$defpop,$type,$def_ab,$att_ab,$tblevel,$stonemason,$walllevel,$AttackerID,$DefenderID);
|
||||
|
||||
//units attack string for battleraport
|
||||
$unitssend_att = ''.$data['t1'].','.$data['t2'].','.$data['t3'].','.$data['t4'].','.$data['t5'].','.$data['t6'].','.$data['t7'].','.$data['t8'].','.$data['t9'].','.$data['t10'].'';
|
||||
@@ -999,14 +909,14 @@ if (array_sum($unitarr)>0){
|
||||
$unitssend_def[3] = ''.$Defender['u21'].','.$Defender['u22'].','.$Defender['u23'].','.$Defender['u24'].','.$Defender['u25'].','.$Defender['u26'].','.$Defender['u27'].','.$Defender['u28'].','.$Defender['u29'].','.$Defender['u30'].'';
|
||||
$unitssend_def[4] = ''.$Defender['u31'].','.$Defender['u32'].','.$Defender['u33'].','.$Defender['u34'].','.$Defender['u35'].','.$Defender['u36'].','.$Defender['u37'].','.$Defender['u38'].','.$Defender['u39'].','.$Defender['u40'].'';
|
||||
$unitssend_def[5] = ''.$Defender['u41'].','.$Defender['u42'].','.$Defender['u43'].','.$Defender['u44'].','.$Defender['u45'].','.$Defender['u46'].','.$Defender['u47'].','.$Defender['u48'].','.$Defender['u49'].','.$Defender['u50'].'';
|
||||
|
||||
$herosend_def = $Defender['hero'];
|
||||
$totalsend_alldef[1] = $Defender['u1']+$Defender['u2']+$Defender['u3']+$Defender['u4']+$Defender['u5']+$Defender['u6']+$Defender['u7']+$Defender['u8']+$Defender['u9']+$Defender['u10'];
|
||||
$totalsend_alldef[2] = $Defender['u11']+$Defender['u12']+$Defender['u13']+$Defender['u14']+$Defender['u15']+$Defender['u16']+$Defender['u17']+$Defender['u18']+$Defender['u19']+$Defender['u20'];
|
||||
$totalsend_alldef[3] = $Defender['u21']+$Defender['u22']+$Defender['u23']+$Defender['u24']+$Defender['u25']+$Defender['u26']+$Defender['u27']+$Defender['u28']+$Defender['u29']+$Defender['u30'];
|
||||
$totalsend_alldef[4] = $Defender['u31']+$Defender['u32']+$Defender['u33']+$Defender['u34']+$Defender['u35']+$Defender['u36']+$Defender['u37']+$Defender['u38']+$Defender['u39']+$Defender['u40'];
|
||||
$totalsend_alldef[5] = $Defender['u41']+$Defender['u42']+$Defender['u43']+$Defender['u44']+$Defender['u45']+$Defender['u46']+$Defender['u47']+$Defender['u48']+$Defender['u49']+$Defender['u50'];
|
||||
|
||||
$totalsend_alldef = $totalsend_alldef[1]+$totalsend_alldef[2]+$totalsend_alldef[3]+$totalsend_alldef[4]+$totalsend_alldef[5];
|
||||
$totalsend_alldef = $totalsend_alldef[1]+$totalsend_alldef[2]+$totalsend_alldef[3]+$totalsend_alldef[4]+$totalsend_alldef[5]+$herosend_def;
|
||||
|
||||
$unitssend_deff[1] = '?,?,?,?,?,?,?,?,?,?,';
|
||||
$unitssend_deff[2] = '?,?,?,?,?,?,?,?,?,?,';
|
||||
@@ -1014,12 +924,12 @@ if (array_sum($unitarr)>0){
|
||||
$unitssend_deff[4] = '?,?,?,?,?,?,?,?,?,?,';
|
||||
$unitssend_deff[5] = '?,?,?,?,?,?,?,?,?,?,';
|
||||
//how many troops died? for battleraport
|
||||
for($i=1;$i<=11;$i++){
|
||||
if($battlepart['casualties_attacker'][$i] <= 0) { ${dead.$i} = 0; }elseif($battlepart['casualties_attacker'][$i] > $data['t'.$i]){
|
||||
${dead.$i}=$data['t'.$i];
|
||||
}else { ${dead.$i} = $battlepart['casualties_attacker'][$i]; }
|
||||
}
|
||||
$heroAttackDead=$dead11;
|
||||
for($i=1;$i<=11;$i++){
|
||||
if($battlepart['casualties_attacker'][$i] <= 0) { ${dead.$i} = 0; }elseif($battlepart['casualties_attacker'][$i] > $data['t'.$i]){
|
||||
${dead.$i}=$data['t'.$i];
|
||||
}else { ${dead.$i} = $battlepart['casualties_attacker'][$i]; }
|
||||
}
|
||||
$heroAttackDead=$dead11;
|
||||
//kill own defence
|
||||
$q = "SELECT * FROM ".TB_PREFIX."units WHERE vref='".$data['to']."'";
|
||||
$unitlist = $database->query_return($q);
|
||||
@@ -1033,6 +943,11 @@ ${dead.$i}=$data['t'.$i];
|
||||
$database->modifyUnit($data['to'],array($i),array(round($battlepart[2]*$unitlist[0]['u'.$i])),array(0));
|
||||
}
|
||||
}
|
||||
$dead['hero']='0';
|
||||
if($unitlist){
|
||||
$dead['hero']+=round($battlepart[2]*$unitlist[0]['hero']);
|
||||
$database->modifyUnit($data['to'],array("hero"),array(round($battlepart[2]*$unitlist[0]['hero'])),array(0));
|
||||
}
|
||||
//kill other defence in village
|
||||
if(count($database->getEnforceVillage($data['to'],0)) > 0) {
|
||||
foreach($database->getEnforceVillage($data['to'],0) as $enforce) {
|
||||
@@ -1051,6 +966,13 @@ ${dead.$i}=$data['t'.$i];
|
||||
} else {
|
||||
$dead[$i]='0';
|
||||
}
|
||||
if($enforce['hero']>'0'){
|
||||
$database->modifyEnforce($enforce['id'],"hero",round($battlepart[2]*$enforce['hero']),0);
|
||||
$dead['hero']+=round($battlepart[2]*$enforce['hero']);
|
||||
if($dead['hero']!=$enforce['hero']){
|
||||
$wrong='1';
|
||||
}
|
||||
}
|
||||
}
|
||||
$notlife= ''.$dead[$start].','.$dead[$start+1].','.$dead[$start+2].','.$dead[$start+3].','.$dead[$start+4].','.$dead[$start+5].','.$dead[$start+6].','.$dead[$start+7].','.$dead[$start+8].','.$dead[$start+9].'';
|
||||
$notlife1 = $dead[$start]+$dead[$start+1]+$dead[$start+2]+$dead[$start+3]+$dead[$start+4]+$dead[$start+5]+$dead[$start+6]+$dead[$start+7]+$dead[$start+8]+$dead[$start+9];
|
||||
@@ -1092,6 +1014,7 @@ ${dead.$i}=$data['t'.$i];
|
||||
$unitsdead_deff[3] = '?,?,?,?,?,?,?,?,?,?,';
|
||||
$unitsdead_deff[4] = '?,?,?,?,?,?,?,?,?,?,';
|
||||
$unitsdead_deff[5] = '?,?,?,?,?,?,?,?,?,?,';
|
||||
$deadhero = $dead['hero'];
|
||||
|
||||
$totaldead_alldef[1] = $dead['1']+$dead['2']+$dead['3']+$dead['4']+$dead['5']+$dead['6']+$dead['7']+$dead['8']+$dead['9']+$dead['10'];
|
||||
$totaldead_alldef[2] = $dead['11']+$dead['12']+$dead['13']+$dead['14']+$dead['15']+$dead['16']+$dead['17']+$dead['18']+$dead['19']+$dead['20'];
|
||||
@@ -1099,7 +1022,7 @@ ${dead.$i}=$data['t'.$i];
|
||||
$totaldead_alldef[4] = $dead['31']+$dead['32']+$dead['33']+$dead['34']+$dead['35']+$dead['36']+$dead['37']+$dead['38']+$dead['39']+$dead['40'];
|
||||
$totaldead_alldef[5] = $dead['41']+$dead['42']+$dead['43']+$dead['44']+$dead['45']+$dead['46']+$dead['47']+$dead['48']+$dead['49']+$dead['50'];
|
||||
|
||||
$totaldead_alldef = $totaldead_alldef[1]+$totaldead_alldef[2]+$totaldead_alldef[3]+$totaldead_alldef[4]+$totaldead_alldef[5];
|
||||
$totaldead_alldef = $totaldead_alldef[1]+$totaldead_alldef[2]+$totaldead_alldef[3]+$totaldead_alldef[4]+$totaldead_alldef[5]+$deadhero;
|
||||
/*
|
||||
if($battlepart['casualties_defender'][1] == 0) { $dead11 = 0; } else { $dead11 = $battlepart['casualties_defender'][1]; }
|
||||
if($battlepart['casualties_defender'][2] == 0) { $dead12 = 0; } else { $dead12 = $battlepart['casualties_defender'][2]; }
|
||||
@@ -1982,10 +1905,10 @@ $crannyimg = "<img src=\"gpack/travian_default/img/g/g23.gif\" height=\"30\" wid
|
||||
|
||||
}
|
||||
|
||||
$data2 = ''.$from['owner'].','.$from['wref'].','.$owntribe.','.$unitssend_att.','.$unitsdead_att.',0,0,0,0,0,'.$to['owner'].','.$to['wref'].','.addslashes($to['name']).','.$targettribe.',,,'.$rom.','.$unitssend_def[1].','.$unitsdead_def[1].','.$ger.','.$unitssend_def[2].','.$unitsdead_def[2].','.$gal.','.$unitssend_def[3].','.$unitsdead_def[3].','.$nat.','.$unitssend_def[4].','.$unitsdead_def[4].','.$natar.','.$unitssend_def[5].','.$unitsdead_def[5].','.$info_ram.','.$info_cat.','.$info_chief.','.$info_spy.',,'.$data['t11'].','.$dead11.',,';
|
||||
$data2 = ''.$from['owner'].','.$from['wref'].','.$owntribe.','.$unitssend_att.','.$unitsdead_att.',0,0,0,0,0,'.$to['owner'].','.$to['wref'].','.addslashes($to['name']).','.$targettribe.',,,'.$rom.','.$unitssend_def[1].','.$unitsdead_def[1].','.$ger.','.$unitssend_def[2].','.$unitsdead_def[2].','.$gal.','.$unitssend_def[3].','.$unitsdead_def[3].','.$nat.','.$unitssend_def[4].','.$unitsdead_def[4].','.$natar.','.$unitssend_def[5].','.$unitsdead_def[5].','.$info_ram.','.$info_cat.','.$info_chief.','.$info_spy.',,'.$data['t11'].','.$dead11.','.$herosend_def.','.$deadhero.',,';
|
||||
}
|
||||
else{
|
||||
$data2 = ''.$from['owner'].','.$from['wref'].','.$owntribe.','.$unitssend_att.','.$unitsdead_att.','.$steal[0].','.$steal[1].','.$steal[2].','.$steal[3].','.$battlepart['bounty'].','.$to['owner'].','.$to['wref'].','.addslashes($to['name']).','.$targettribe.',,,'.$rom.','.$unitssend_def[1].','.$unitsdead_def[1].','.$ger.','.$unitssend_def[2].','.$unitsdead_def[2].','.$gal.','.$unitssend_def[3].','.$unitsdead_def[3].','.$nat.','.$unitssend_def[4].','.$unitsdead_def[4].','.$natar.','.$unitssend_def[5].','.$unitsdead_def[5].','.$info_ram.','.$info_cat.','.$info_chief.','.$info_spy.',,'.$data['t11'].','.$dead11.',,';
|
||||
$data2 = ''.$from['owner'].','.$from['wref'].','.$owntribe.','.$unitssend_att.','.$unitsdead_att.','.$steal[0].','.$steal[1].','.$steal[2].','.$steal[3].','.$battlepart['bounty'].','.$to['owner'].','.$to['wref'].','.addslashes($to['name']).','.$targettribe.',,,'.$rom.','.$unitssend_def[1].','.$unitsdead_def[1].','.$ger.','.$unitssend_def[2].','.$unitsdead_def[2].','.$gal.','.$unitssend_def[3].','.$unitsdead_def[3].','.$nat.','.$unitssend_def[4].','.$unitsdead_def[4].','.$natar.','.$unitssend_def[5].','.$unitsdead_def[5].','.$info_ram.','.$info_cat.','.$info_chief.','.$info_spy.',,'.$data['t11'].','.$dead11.','.$herosend_def.','.$deadhero.',,';
|
||||
}
|
||||
|
||||
|
||||
@@ -2111,6 +2034,11 @@ $crannyimg = "<img src=\"gpack/travian_default/img/g/g23.gif\" height=\"30\" wid
|
||||
unset($data_fail);
|
||||
unset($owntribe);
|
||||
unset($unitsdead_att);
|
||||
unset($dead11);
|
||||
unset($herosend_def);
|
||||
unset($deadhero);
|
||||
unset($AttackerID);
|
||||
unset($DefenderID);
|
||||
}
|
||||
if(file_exists("GameEngine/Prevention/sendunits.txt")) {
|
||||
@unlink("GameEngine/Prevention/sendunits.txt");
|
||||
@@ -2834,10 +2762,6 @@ private function demolitionComplete() {
|
||||
if ($hdata['experience'] > $hero_levels[$hdata['level']+1]) {
|
||||
mysql_query("UPDATE " . TB_PREFIX ."hero SET level = level + 1 WHERE heroid = '".$hdata['heroid']."'");
|
||||
mysql_query("UPDATE " . TB_PREFIX ."hero SET points = points + 5 WHERE heroid = '".$hdata['heroid']."'");
|
||||
}
|
||||
if($hdata['health']==0) {
|
||||
mysql_query("UPDATE " . TB_PREFIX ."hero SET dead = '1' WHERE heroid = '".$hdata['heroid']."'");
|
||||
mysql_query("UPDATE " . TB_PREFIX ."units SET hero = '0' WHERE vref = '".$hdata['wref']."'");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2965,6 +2889,216 @@ private function demolitionComplete() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function starvation() {
|
||||
global $database;
|
||||
$ourFileHandle = @fopen("GameEngine/Prevention/starvation.txt", 'w');
|
||||
@fclose($ourFileHandle);
|
||||
$starvcost = array(
|
||||
|
||||
'1'=>30,
|
||||
'2'=>70,
|
||||
'3'=>80,
|
||||
'4'=>40,
|
||||
'5'=>100,
|
||||
'6'=>180,
|
||||
'7'=>70,
|
||||
'8'=>90,
|
||||
'9'=>37500,
|
||||
'10'=>5500,
|
||||
'11'=>40,
|
||||
'12'=>40,
|
||||
'13'=>70,
|
||||
'14'=>50,
|
||||
'15'=>75,
|
||||
'16'=>80,
|
||||
'17'=>70,
|
||||
'18'=>60,
|
||||
'19'=>27200,
|
||||
'20'=>6500,
|
||||
'21'=>30,
|
||||
'22'=>60,
|
||||
'23'=>40,
|
||||
'24'=>60,
|
||||
'25'=>120,
|
||||
'26'=>170,
|
||||
'27'=>75,
|
||||
'28'=>90,
|
||||
'29'=>37500,
|
||||
'30'=>4900,
|
||||
'31'=>100,
|
||||
'32'=>100,
|
||||
'33'=>100,
|
||||
'34'=>100,
|
||||
'35'=>100,
|
||||
'36'=>100,
|
||||
'37'=>100,
|
||||
'38'=>100,
|
||||
'39'=>100,
|
||||
'40'=>100,
|
||||
'41'=>100,
|
||||
'42'=>100,
|
||||
'43'=>100,
|
||||
'44'=>100,
|
||||
'45'=>100,
|
||||
'46'=>100,
|
||||
'47'=>100,
|
||||
'48'=>100,
|
||||
'49'=>100,
|
||||
'50'=>100
|
||||
);
|
||||
$starvupkeep = array(
|
||||
|
||||
'1'=>1,
|
||||
'2'=>1,
|
||||
'3'=>1,
|
||||
'4'=>2,
|
||||
'5'=>3,
|
||||
'6'=>4,
|
||||
'7'=>3,
|
||||
'8'=>6,
|
||||
'9'=>5,
|
||||
'10'=>1,
|
||||
'11'=>1,
|
||||
'12'=>1,
|
||||
'13'=>1,
|
||||
'14'=>1,
|
||||
'15'=>2,
|
||||
'16'=>3,
|
||||
'17'=>6,
|
||||
'18'=>4,
|
||||
'19'=>1,
|
||||
'20'=>1,
|
||||
'21'=>1,
|
||||
'22'=>1,
|
||||
'23'=>2,
|
||||
'24'=>2,
|
||||
'25'=>2,
|
||||
'26'=>3,
|
||||
'27'=>3,
|
||||
'28'=>6,
|
||||
'29'=>4,
|
||||
'30'=>1,
|
||||
'31'=>1,
|
||||
'32'=>1,
|
||||
'33'=>1,
|
||||
'34'=>2,
|
||||
'35'=>2,
|
||||
'36'=>3,
|
||||
'37'=>3,
|
||||
'38'=>3,
|
||||
'39'=>3,
|
||||
'40'=>5,
|
||||
'41'=>1,
|
||||
'42'=>1,
|
||||
'43'=>1,
|
||||
'44'=>1,
|
||||
'45'=>2,
|
||||
'46'=>3,
|
||||
'47'=>6,
|
||||
'48'=>5,
|
||||
'49'=>1,
|
||||
'50'=>1
|
||||
);
|
||||
|
||||
$time = time();
|
||||
|
||||
// load villages with minus prod
|
||||
$starvarray = array();
|
||||
$starvarray = $database->getStarvation();
|
||||
foreach ($starvarray as $starv){
|
||||
if (($starv['starvupdate']+60) < $time){
|
||||
// get enforce
|
||||
$enforcearray = $database->getEnforceVillage($starv['wref'],0);
|
||||
$maxcount = 0;
|
||||
if(count($enforcearray)==0){
|
||||
// get units
|
||||
$unitarray = $database->getUnit($starv['wref']);
|
||||
for($i = 0 ; $i <= 50 ; $i++){
|
||||
$units = $unitarray['u'.$i];
|
||||
if($unitarray['u'.$i] > $maxcount){
|
||||
$maxcount = $unitarray['u'.$i];
|
||||
$maxtype = $i;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
foreach ($enforcearray as $enforce){
|
||||
for($i = 0 ; $i <= 50 ; $i++){
|
||||
$units = $enforce['u'.$i];
|
||||
if($enforce['u'.$i] > $maxcount){
|
||||
$maxcount = $enforce['u'.$i];
|
||||
$maxtype = $i;
|
||||
$enf = $enforce['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// counting
|
||||
|
||||
$timedif = $time-$starv['starvupdate'];
|
||||
|
||||
$starvsec = ($starv['starv']/3600);
|
||||
|
||||
$difcrop = ($timedif*$starvsec);
|
||||
$newcrop = 0;
|
||||
$oldcrop = $database->getVillageField($starv['wref'], 'crop');
|
||||
if ($oldcrop > 100){
|
||||
$difcrop = $difcrop-$oldcrop;
|
||||
if($difcrop < 0){
|
||||
$difcrop = 0;
|
||||
$newcrop = $oldcrop-$difcrop;
|
||||
}else{
|
||||
$newcrop = $starvcost[$maxtype];
|
||||
}
|
||||
}
|
||||
if($difcrop > 0){
|
||||
$killunits = round(($difcrop/$starvcost[$maxtype]));
|
||||
if (isset($enf)){
|
||||
if($killunits < $maxcount){
|
||||
$database->modifyEnforce($enf, $maxtype, $killunits, 0);
|
||||
}else{
|
||||
$database->deleteReinf($enf);
|
||||
}
|
||||
}else{
|
||||
if($killunits < $maxcount){
|
||||
$database->modifyUnit($starv['wref'], $maxtype, $killunits, 0);
|
||||
}elseif($killunits > $maxcount){
|
||||
$killunits = $maxcount;
|
||||
$database->modifyUnit($starv['wref'], $maxtype, $killunits, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$upkeep = $starv['starv']-($killunits*$starvupkeep[$maxtype]);
|
||||
|
||||
$time = time();
|
||||
|
||||
$crop = $database->getCropProdstarv($starv['wref']);
|
||||
$unitarrays = $this->getAllUnits($starv['wref']);
|
||||
$upkeep = $this->getUpkeep($unitarrays, 0) ;
|
||||
if ($crop < $upkeep){
|
||||
// add starv data
|
||||
$database->setVillageField($starv['wref'], 'starv', $upkeep);
|
||||
$database->setVillageField($starv['wref'], 'starvupdate', $time);
|
||||
$database->setVillageField($starv['wref'], 'crop', $newcrop);
|
||||
}else{
|
||||
$database->setVillageField($starv['wref'], 'starv', 0);
|
||||
$database->setVillageField($starv['wref'], 'starvupdate', 0);
|
||||
$database->setVillageField($starv['wref'], 'crop', $newcrop);
|
||||
}
|
||||
}
|
||||
unset ($starv);
|
||||
unset ($unitarray);
|
||||
unset ($enforcearray);
|
||||
unset ($enforce);
|
||||
unset ($starvarray);
|
||||
}
|
||||
|
||||
if(file_exists("GameEngine/Prevention/starvation.txt")) {
|
||||
@unlink("GameEngine/Prevention/starvation.txt");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
$automation = new Automation;
|
||||
|
||||
Reference in New Issue
Block a user