fix attacking bug, somthing on buying goldclub, add merchant run 3 times to goldclub and now banned player cannot found new village

This commit is contained in:
unknown
2012-06-04 13:30:36 +03:00
parent f9b9d7faaf
commit 19a286d4c4
10 changed files with 144 additions and 114 deletions
+89 -92
View File
@@ -186,7 +186,7 @@ class Automation {
} else {
$value = 0;
}
$newloyalty = min(100,$loyalty['loyalty']+$value*(time()-$loyalty['lastupdate'])*SPEED/(60*60));
$newloyalty = min(100,$loyalty['loyalty']+$value*(time()-$loyalty['lastupdate'])/(60*60));
$q = "UPDATE ".TB_PREFIX."vdata SET loyalty = $newloyalty WHERE wref = '".$loyalty['wref']."'";
$database->query($q);
}
@@ -203,7 +203,7 @@ class Automation {
} else {
$value = 0;
}
$newloyalty = min(100,$loyalty['loyalty']+$value*(time()-$loyalty['lastupdate'])*SPEED/(60*60));
$newloyalty = min(100,$loyalty['loyalty']+$value*(time()-$loyalty['lastupdate'])/(60*60));
$q = "UPDATE ".TB_PREFIX."odata SET loyalty = $newloyalty WHERE wref = '".$loyalty['wref']."'";
$database->query($q);
}
@@ -522,15 +522,57 @@ class Automation {
$fromcoor = $database->getCoor($data['to']);
$targettribe = $database->getUserField($database->getVillageField($data['from'],"owner"),"tribe",0);
$endtime = $this->procDistanceTime($tocoor,$fromcoor,$targettribe,0) + $data['endtime'];
$database->addMovement(2,$data['to'],$data['from'],$data['merchant'],time(),$endtime);
$database->setMovementProc($data['moveid']);
$database->addMovement(2,$data['to'],$data['from'],$data['merchant'],time(),$endtime,$data['send'],$data['wood'],$data['clay'],$data['iron'],$data['crop']);
$database->setMovementProc($data['moveid']);
}
$q1 = "SELECT * FROM ".TB_PREFIX."movement where proc = 0 and sort_type = 2 and endtime < $time";
$dataarray1 = $database->query_return($q1);
foreach($dataarray1 as $data1) {
$database->setMovementProc($data1['moveid']);
if($data1['send'] > 1){
$targettribe1 = $database->getUserField($database->getVillageField($data1['to'],"owner"),"tribe",0);
$send = $data1['send']-1;
$this->sendResource2($data1['wood'],$data1['clay'],$data1['iron'],$data1['crop'],$data1['to'],$data1['from'],$targettribe1,$send);
}
}
$q = "UPDATE ".TB_PREFIX."movement set proc = 1 where endtime < $time and sort_type = 2";
$database->query($q);
if(file_exists("GameEngine/Prevention/market.txt")) {
@unlink("GameEngine/Prevention/market.txt");
}
}
private function sendResource2($wtrans,$ctrans,$itrans,$crtrans,$from,$to,$tribe,$send) {
global $bid17,$bid28,$database,$generator,$logging;
$availableWood = $database->getWoodAvailable($from);
$availableClay = $database->getClayAvailable($from);
$availableIron = $database->getIronAvailable($from);
$availableCrop = $database->getCropAvailable($from);
if($availableWood >= $wtrans AND $availableClay >= $ctrans AND $availableIron >= $itrans AND $availableCrop >= $crtrans){
$merchant2 = ($this->getTypeLevel(17,$from) > 0)? $this->getTypeLevel(17,$from) : 0;
$used2 = $database->totalMerchantUsed($from);
$merchantAvail2 = $merchant2 - $used2;
$maxcarry2 = ($tribe == 1)? 500 : (($tribe == 2)? 1000 : 750);
$maxcarry2 *= TRADER_CAPACITY;
if($this->getTypeLevel(28,$from) != 0) {
$maxcarry2 *= $bid28[$this->getTypeLevel(28,$from)]['attri'] / 100;
}
$resource = array($wtrans,$ctrans,$itrans,$crtrans);
$reqMerc = ceil((array_sum($resource)-0.1)/$maxcarry2);
if($merchantAvail2 != 0 && $reqMerc <= $merchantAvail2) {
$coor = $database->getCoor($to);
$coor2 = $database->getCoor($from);
if($database->getVillageState($to)) {
$timetaken = $generator->procDistanceTime($coor,$coor2,$tribe,0);
$res = $resource[0]+$resource[1]+$resource[2]+$resource[3];
if($res!=0){
$reference = $database->sendResource($resource[0],$resource[1],$resource[2],$resource[3],$reqMerc,0);
$database->modifyResource($from,$resource[0],$resource[1],$resource[2],$resource[3],0);
$database->addMovement(0,$from,$to,$reference,time(),time()+$timetaken,$send);
}
}
}
header("Location: build.php?gid=17");
} else {}
}
private function sendunitsComplete() {
global $bid23,$bid34,$database,$battle,$village,$technology,$logging;
@@ -1395,36 +1437,7 @@ class Automation {
$pop=$this->recountPop($data['to']);
if($pop=='0')
{
$varray = $database->getProfileVillages($to['owner']);
if(count($varray)!='1' AND $to['capital']!='1'){
$database->clearExpansionSlot($data['to']);
$q = "DELETE FROM ".TB_PREFIX."abdata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."bdata where wid = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."enforcement where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."fdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."market where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."odata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."research where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."tdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."training where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."units where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."vdata where wref = ".$data['to'];
$database->query($q);
$q = "UPDATE ".TB_PREFIX."wdata set occupied = 0 where id = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."movement where to = ".$data['to']." or from = ".$data['to'];
$database->query($q);
}
$village_destroyed = 1;
}
}
elseif ($battlepart[4]==0)
@@ -1550,33 +1563,7 @@ class Automation {
{
$varray = $database->getProfileVillages($to['owner']);
if(count($varray)!='1' AND $to['capital']!='1'){
$database->clearExpansionSlot($data['to']);
$q = "DELETE FROM ".TB_PREFIX."abdata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."bdata where wid = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."enforcement where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."fdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."market where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."odata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."research where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."tdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."training where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."units where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."vdata where wref = ".$data['to'];
$database->query($q);
$q = "UPDATE ".TB_PREFIX."wdata set occupied = 0 where id = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."movement where to = ".$data['to']." or from = ".$data['to'];
$database->query($q);
$village_destroyed = 1;
}
}
}
@@ -1701,33 +1688,7 @@ class Automation {
{
$varray = $database->getProfileVillages($to['owner']);
if(count($varray)!='1' AND $to['capital']!='1'){
$database->clearExpansionSlot($data['to']);
$q = "DELETE FROM ".TB_PREFIX."abdata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."bdata where wid = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."enforcement where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."fdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."market where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."odata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."research where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."tdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."training where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."units where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."vdata where wref = ".$data['to'];
$database->query($q);
$q = "UPDATE ".TB_PREFIX."wdata set occupied = 0 where id = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."movement where to = ".$data['to']." or from = ".$data['to'];
$database->query($q);
$village_destroyed = 1;
}
}
}
@@ -1834,9 +1795,13 @@ class Automation {
}
if(!isset($nochiefing)){
//$info_chief = "".$chief_pic.",You don't have enought CP to chief a village.";
if($this->getTypeLevel(37,$data['to']) > 0){
if($this->getTypeLevel(35,$data['from']) == 0){
for ($i=0; $i<($data['t9']-$dead9); $i++){
$rand+=rand(15,25);
if($owntribe == 1){
$rand+=rand(20,30);
}else{
$rand+=rand(20,25);
}
}
}else{
for ($i=0; $i<($data['t9']-$dead9); $i++){
@@ -2102,6 +2067,38 @@ $crannyimg = "<img src=\"".GP_LOCATE."img/g/g23.gif\" height=\"20\" width=\"15\"
if($type == 3 or $type == 4){
$database->addGeneralAttack($totalattackdead);
}
if($village_destroyed == 1){
$varray = $database->getProfileVillages($to['owner']);
if(count($varray)!='1' AND $to['capital']!='1'){
$database->clearExpansionSlot($data['to']);
$q = "DELETE FROM ".TB_PREFIX."abdata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."bdata where wid = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."enforcement where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."fdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."market where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."odata where wref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."research where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."tdata where vref = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."training where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."units where vref =".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."vdata where wref = ".$data['to'];
$database->query($q);
$q = "UPDATE ".TB_PREFIX."wdata set occupied = 0 where id = ".$data['to'];
$database->query($q);
$q = "DELETE FROM ".TB_PREFIX."movement where to = ".$data['to']." or from = ".$data['to'];
$database->query($q);
}
}
}else{
//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'].'';
+1 -1
View File
@@ -208,7 +208,7 @@ class Battle {
//1 raid 0 normal
function calculateBattle($Attacker,$Defender,$def_wall,$att_tribe,$def_tribe,$residence,$attpop,$defpop,$type,$def_ab,$att_ab,$tblevel,$stonemason,$walllevel,$AttackerID,$DefenderID,$AttackerWref,$DefenderWref) {
global $database,$bid34,$bid35;
global $bid34,$bid35,$database;
// Definieer de array met de eenheden
$calvary = array(4,5,6,15,16,23,24,25,26,35,36,45,46);
$catapult = array(8,18,28,38,48);
+8 -8
View File
@@ -2013,8 +2013,8 @@
}
}
function addMovement($type, $from, $to, $ref, $time, $endtime) {
$q = "INSERT INTO " . TB_PREFIX . "movement values (0,$type,$from,$to,$ref,$time,$endtime,0)";
function addMovement($type, $from, $to, $ref, $time, $endtime, $send = 1, $wood = 0, $clay = 0, $iron = 0, $crop = 0) {
$q = "INSERT INTO " . TB_PREFIX . "movement values (0,$type,$from,$to,$ref,$time,$endtime,0,$send,$wood,$clay,$iron,$crop)";
return mysql_query($q, $this->connection);
}
@@ -2797,12 +2797,12 @@
return mysql_fetch_array($result);
}
function getMovementById($id){
$q="SELECT * FROM ".TB_PREFIX."movement where moveid = ".$id;
$result=mysql_query($q);
$array=$this->mysql_fetch_all($result);
return $array;
}
function getMovementById($id){
$q = "SELECT * FROM ".TB_PREFIX."movement WHERE moveid = ".$id."";
$result = mysql_query($q);
$array = $this->mysql_fetch_all($result);
return $array;
}
function getLinks($id){
$q = 'SELECT * FROM `' . TB_PREFIX . 'links` WHERE `userid` = ' . $id . ' ORDER BY `pos` ASC';
+1 -1
View File
@@ -108,7 +108,7 @@ class Market {
if($res!=0){
$reference = $database->sendResource($resource[0],$resource[1],$resource[2],$resource[3],$reqMerc,0);
$database->modifyResource($village->wid,$resource[0],$resource[1],$resource[2],$resource[3],0);
$database->addMovement(0,$village->wid,$id,$reference,time(),time()+$timetaken);
$database->addMovement(0,$village->wid,$id,$reference,time(),time()+$timetaken,$post['send3']);
$logging->addMarketLog($village->wid,1,array($resource[0],$resource[1],$resource[2],$resource[3],$id));
}
}
+31 -5
View File
@@ -70,10 +70,29 @@ class Units {
global $database,$village,$session,$generator,$logging,$form;
// Busqueda por nombre de pueblo
// Confirmamos y buscamos las coordenadas por nombre de pueblo
if($post['disabledr'] != ""){
$oid = $database->getVilWref($post['x'],$post['y']);
if($database->isVillageOases($oid) != 0){
$too = $database->getOasisField($oid,"conqured");
if($too['conqured'] == 0){$disabledr ="disabled=disabled"; $disabled ="disabled=disabled";}else{
$disabledr ="";
if($session->sit == 0){
$disabled ="";
}else{
$disabled ="disabled=disabled";
}
}
}else{
$disabledr ="";
if($session->sit == 0){
$disabled ="";
}else{
$disabled ="disabled=disabled";
}
}
if($disabledr != "" && $post['c'] == 2){
$form->addError("error","You can't reinforce this village/oasis");
}
if($post['disabled'] != ""){
if($disabled != "" && $post['c'] == 3){
$form->addError("error","You can't attack this village/oasis with normal attack");
}
if( !$post['t1'] && !$post['t2'] && !$post['t3'] && !$post['t4'] && !$post['t5'] &&
@@ -290,7 +309,11 @@ class Units {
if (isset($post['spy'])){$post['spy'] = $post['spy'];}else{ $post['spy'] = 0;}
$abdata = $database->getABTech($village->wid);
$reference = $database->addAttack(($village->wid),$data['u1'],$data['u2'],$data['u3'],$data['u4'],$data['u5'],$data['u6'],$data['u7'],$data['u8'],$data['u9'],$data['u10'],$data['u11'],$data['type'],$post['ctar1'],$post['ctar2'],$post['spy'],$abdata['b1'],$abdata['b2'],$abdata['b3'],$abdata['b4'],$abdata['b5'],$abdata['b6'],$abdata['b7'],$abdata['b8']);
$database->addMovement(3,$village->wid,$data['to_vid'],$reference,time(),($time+time()));
$checkexist = $database->checkVilExist($data['to_vid']);
$checkoexist = $database->checkOasisExist($data['to_vid']);
if($checkexist or $checkoexist){
$database->addMovement(3,$village->wid,$data['to_vid'],$reference,time(),($time+time()));
}
if($form->returnErrors() > 0) {
$_SESSION['errorarray'] = $form->getErrors();
@@ -416,7 +439,7 @@ class Units {
public function Settlers($post) {
global $form, $database, $village, $session;
if($session->access != BANNED){
$mode = CP;
$total = count($database->getProfileVillages($session->uid));
$need_cps = ${'cp'.$mode}[$total];
@@ -437,7 +460,10 @@ class Units {
}
} else {
header("Location: build.php?id=39");
}
}
}else{
header("Location: banned.php");
}
}
public function Hero($uid) {
+7 -2
View File
@@ -33,6 +33,7 @@ if(isset($_POST['ft'])=='check' && $allres!=0 && $allres <= $maxcarry && ($_POST
<input type="hidden" name="x" value="<?php echo $_POST['x']; ?>">
<input type="hidden" name="y" value="<?php echo $_POST['y']; ?>">
<input type="hidden" name="dname" value="<?php echo $_POST['dname']; ?>">
<input type="hidden" name="send3" value="<?php echo $_POST['send3']; ?>">
<table id="send_select" class="send_res" cellpadding="1" cellspacing="1">
<tr>
<td class="ico"><img class="r1" src="img/x.gif" alt="Lumber" title="Lumber" /></td>
@@ -190,8 +191,12 @@ $coor['y'] = "";
<span>Y:</span><input class="text" type="text" name="y" value="<?php echo $coor['y']; ?>" maxlength="4" tabindex="7">
</td>
</tr>
</table>
<div class="clear"></div><p><input type="image" value="ok" name="s1" id="btn_ok" class="dynamic_img" src="img/x.gif" tabindex="8" alt="OK" <?php if(!$market->merchantAvail()) { echo "DISABLED"; }?>/></p></form>
</table>
<div class="clear"></div>
<?php if($session->goldclub == 1){?>
<p><select name="send3"><option value="1" selected="selected">1x</option><option value="2">2x</option><option value="3">3x</option></select>go</p>
<?php } ?>
<p><input type="image" value="ok" name="s1" id="btn_ok" class="dynamic_img" src="img/x.gif" tabindex="8" alt="OK" <?php if(!$market->merchantAvail()) { echo "DISABLED"; }?>/></p></form>
<?php
$error = '';
if(isset($_POST['ft'])=='check'){
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
////////////// made by alq0rsan /////////////////////////
if($session->access != BANNED){
if($session->gold >= 100 && $session->sit == 0) {
if($session->gold >= 100 && $session->sit == 0 && $session->goldclub == 0) {
mysql_query("UPDATE ".TB_PREFIX."users set goldclub = 1, gold = gold - 100 where `username`='".$session->username."'");
}
header("Location: plus.php?id=3");
+1 -1
View File
@@ -192,7 +192,7 @@
<?php
while($row = mysql_fetch_array($result))
{
if($row['id'] >= 0){
if($row['RR'] >= 0) {
if($row['id']==$session->alliance) {
echo "<tr class=\"own hl\">"; } else { echo "<tr>"; }
echo "<td class=\"ra fc\">".$i++.".&nbsp;</td>";
-3
View File
@@ -8,12 +8,9 @@ $to = array('x'=>$newvillage['x'], 'y'=>$newvillage['y']);
$time = $generator->procDistanceTime($from,$to,300,0);
echo '<pre>';
//print_r($founder);
echo '</pre>';
?>
<h1>Found new village</h1>
<!--<p>De kolonisten kunnen nog niet vertrekken.<br> Voor het stichten van een nieuw dorp is er nog 750 grondstoffen hout, klei, ijzer en graan nodig.</p>-->
<form method="POST" action="build.php">
<input type="hidden" name="a" value="new" />
<input type="hidden" name="c" value="5" />
+5
View File
@@ -957,6 +957,11 @@ CREATE TABLE IF NOT EXISTS `%PREFIX%movement` (
`starttime` int(11) unsigned NOT NULL DEFAULT '0',
`endtime` int(11) unsigned NOT NULL DEFAULT '0',
`proc` tinyint(1) unsigned NOT NULL DEFAULT '0',
`send` tinyint(1) unsigned NOT NULL,
`wood` int(11) unsigned NOT NULL,
`clay` int(11) unsigned NOT NULL,
`iron` int(11) unsigned NOT NULL,
`crop` int(11) unsigned NOT NULL,
PRIMARY KEY (`moveid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;