* @author Suunnittelu ja toteutus ildis / Doom @ s1.travian.fi * @author Kamalan koodin fiksailu pikkumyy / Sisu @ s2.travian.fi * @author K&R käyttöön fiksailu Bera / Kauniit @ s3.travian.fi * @author T&J käyttöön muokkaus Lehter / K&R-ghost @ s3.travian.fi * @author HL käyttöön muokkaus qjnrid / Hirttämättömät Lurjukset @ s1.travian.co.ee * @author FTU käyttöön muokkaus qjnrid * **/ date_default_timezone_set('Europe/Helsinki'); setlocale(LC_ALL, "FI_fi"); $docroot = '/FTU/'; // $docroot = '/travian/pakettiin/'; // $docroot = '/sg458hj/'; // $docroot = '/testi/'; // $docroot = '/travian/'; $anonymize = True; $bullakylat = array( 'Hilska WW (-151|46)' => array('nimi' => 'Hilska', 'osote' => 'z=283804&gid=17'), '6UNER WW (-90|-54)' => array('nimi' => '6UNER', 'osote' => 'z=363965&gid=17'), 'TurboKat WW (100|39)' => array('nimi' => 'TurboKat', 'osote' => 'z=289662&gid=17'), 'madgamer WW (15|41)' => array('nimi' => 'madgamer', 'osote' => 'z=287975&gid=17'), 'Morrigan WW (-16|-41)' => array('nimi' => 'Morrigan', 'osote' => 'z=353626&gid=17'), 'moonfox WW (38|154)' => array('nimi' => 'moonfox', 'osote' => 'z=197485&gid=17'), 'cupa WW (-38|98)' => array('nimi' => 'cupa', 'osote' => 'z=242265&gid=17') //' ()' => array('nimi' => '', 'osote' => ''), ); ?> WW Market parser EE T3.5

Market parser

Select city to update crop status:


Copy-paste the complete market view here using Firefox:




\r\n \r\n"; exit(); } $myymyy = ""; $myymyy2 = ""; $myymyyh = ""; $myymyya = ""; $myymyyb = ""; $myymyyc = ""; $myymyyv = ""; $myymyy3 = ""; $myymyyla = ""; $myymyylb = ""; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= ''; $myymyyh .= "\r\n".$_POST['kohde']." Crop Status"; $myymyyh .= ''; $myymyyh .= "\r\n

 

"; $keijo = $bullakylat[$_POST['kohde']]; $osote = $keijo['osote']; $filez = $keijo['nimi']; #echo $_POST['kohde']; #echo $keijo; #echo $filez; foreach ($bullakylat as $key => $ww) { if ($keijo['nimi'] == $ww['nimi']) { $myymyyh .= "
".$key." crop status"; } else { $myymyyh .= "
".$key." crop status"; } } $weekdays = array("", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"); define('M_PLAYER', 1); define('M_VILLAGE', 2); define('M_ETA', 3); define('M_ARRIVAL', 4); define('M_REPEAT', 5); define('M_WOOD', 6); define('M_CLAY', 7); define('M_IRON', 8); define('M_CROP', 9); define('M_COLOR', 10); define('M_SHORTED', 11); define('M_SHORT_TIME', 12); define('M_LVL_CROP', 13); define('M_HIT_DATE', 14); define('M_C_NOMORE', 53); define('M_C_SOME', 52); define('M_C_MORE', 51); define('M_C_MUCH_MORE', 50); $myymyyh .= "

 

UPDATED ON ".$weekdays[date("N", time())].", ".date("d.m.Y \a\\t H:i", time())."\r\n"; function trim_array($a) { if (is_array($a)) { foreach($a as $key => $val) { if (is_array($val)) { $a[$key] = trim_array($val); } else { $a[$key] = trim($val); } } } return $a; } // Incoming shipments //$regex7 = '/[\s]*(.*)[\s]+Kuljetus kylästä[\s]+(.*)[\s\n]+Saapuminen[\s]+(.*)[\s]+kello[\s]+(.*)[\s\n]+Resurssit[\s]+Puu([0-9]*)[\s\|]+Savi([0-9]*)[\s\|]+Rauta([0-9]*)[\s\|]+Vilja([0-9]*)[\s\n]+/i'; //$regex7 = '/[\s]*(.*)[\s]+Transport külast[\s]+(.*)[\s\n]+Saabuvad[\s]+(.*)[\s]+kell[\s]+(.*)[\s\n]+Varud[\s]+([0-9]*)[\s\|]+([0-9]*)[\s\|]+([0-9]*)[\s\|]+([0-9]*)[\s\n]+/i'; //$regex7 = '/[\s]*(.*)[\s]+Transport külast[\s]+(.*)[\s\n]+Saabuvad[\s]+(.*) t.[\s]+kell[\s]+(.*)[\s\n]+Varud[\s]+Puit([0-9]*)[\s\|]+Savi([0-9]*)[\s\|]+Raud([0-9]*)[\s\|]+Vili([0-9]*)[\s\n]+/i'; $regex7 = '/[\s]*(.*)[\s]+Transport külast[\s]+(.*)[\s\n]+Saabuvad[\s]+(.*) t.[\s]+kell[\s]+(.*)[\s\n]+Varud[\s\n]+.*([23]x|)+.*[\s\n]+Puit([0-9]*)[\s\|]+Savi([0-9]*)[\s\|]+Raud([0-9]*)[\s\|]+Vili([0-9]*)[\s\n]+/i'; preg_match_all($regex7, $_POST['market'], $match); $match = trim_array($match); // Consumption //$regex = '/Viljankulutus[\s]*([0-9]+)\/([0-9]+)/i'; //$regex = '/Vilja tarbimine[\s]*([0-9]+)\/([0-9]+)/i'; $regex = '/Vilja tarbimine[\s]*([0-9]+)\/([0-9]+)/i'; preg_match($regex, $_POST['market'], $consumption); $hour_consumption = $consumption[1] - $consumption[2]; $sec_consumption = $hour_consumption / 60 / 60; $day_consumption = $hour_consumption * 24; // WH levels //$regex = '/\[Puit\][\s]+([0-9]+)\/([0-9]+)[\s]+[Savi\][\s]+([0-9]+)\/([0-9]+)[\s]+[Raud\][\s]+([0-9]+)\/([0-9]+)[\s]+[Vili\][\s]+([\-0-9]+)\/([0-9]+)/i'; //$regex = '/Puit[\s]+([0-9]+)\/([0-9]+)[\s]+Savi[\s]+([0-9]+)\/([0-9]+)[\s]+Raud[\s]+([0-9]+)\/([0-9]+)[\s]+Vili[\s]+([\-0-9]+)\/([0-9]+)/i'; //$regex = '/Puu[\s]+([0-9]+)\/([0-9]+)[\s]+Savi[\s]+([0-9]+)\/([0-9]+)[\s]+Rauta[\s]+([0-9]+)\/([0-9]+)[\s]+Vilja[\s]+([\-0-9]+)\/([0-9]+)/i'; $regex = '/Puit[\s]+([0-9]+)\/([0-9]+)[\s]+Savi[\s]+([0-9]+)\/([0-9]+)[\s]+Raud[\s]+([0-9]+)\/([0-9]+)[\s]+Vili[\s]+([\-0-9]+)\/([0-9]+)/i'; preg_match($regex, $_POST['market'], $wh_levels); $lvl_wood = $wh_levels[1]; $lvl_clay = $wh_levels[3]; $lvl_iron = $wh_levels[5]; $lvl_crop = $wh_levels[7]; $lvl_wh = $wh_levels[2]; $lvl_gran = $wh_levels[8]; // Server time //$regex = '/Palvelimen aika: ([0-9:]+)/i'; $regex = '/Serverikell: ([0-9:]+)/i'; preg_match($regex, $_POST['market'], $server_time); $server_time = strtotime(date("Y-m-d", time()) . $server_time[1]); //if ($server_time > time()) { // $server_time = $server_time - 24*60*60; //} $last_hit_time = $server_time; $myymyyh .= "\r\n\r\n"; if (is_array($match[M_PLAYER]) && count($match[M_PLAYER]) > 0 ) { $TOTAL_WOOD = 0; $TOTAL_CLAY = 0; $TOTAL_IRON = 0; $TOTAL_CROP = 0; if(strstr($filez, "/") || strstr($filez, "\\") || strstr($filez, ":") || strstr($filez, " ")) die("lol oikeesti lol"); $myymyyla .= '
'; $myymyyla .= ''; $myymyyla .= ''; $myymyyla .= ''; $myymyyla .= '
When sending crops, always check the entire list with the arrival time of your kaubmehe to avoid granary overflows:
Do NOT send crops, if your kaubmehe arrive at a time when the crop satus is in green
Only send crops in small amounts, if your kaubmehe arrive at a time when the granary is almost full
Shipments can be as large as possible, when your kaubmehe arrive at a time when the granary is running low
Especially large amounts of crops are needed before the granary is completely empty!
'; $myymyylb .= '
'; $myymyylb .= ''; $myymyylb .= ''; $myymyylb .= ''; $myymyylb .= '
When sending crops, always check the entire list with the arrival time of your kaubmehe to avoid granary overflows:
Do NOT send crops, if your kaubmehe arrive at a time when the crop satus is in green (>90%, >'.number_format($lvl_gran*0.9, 0, '.', ' ').')
Only send crops in small amounts, if your kaubmehe arrive at a time when the granary is almost full (>80%, >'.number_format($lvl_gran*0.8, 0, '.', ' ').')
Shipments can be as large as possible, when your kaubmehe arrive at a time when the granary is running low
Especially large amounts of crops are needed before the granary is completely empty! (<34%, <'.number_format($lvl_gran*0.34, 0, '.', ' ').')
'; $myymyy .= '

Also remember to send other resources than crops, too.'; $myymyy .= "


-----( SEND CROPS )-----

"; $myymyy .= ''; $myymyy .= ''; $myymyy .= ' '; $myymyy .= ''; $myymyy .= ''; $myymyy .= ' '; $myymyy .= ' '; $myymyy .= ' '; $myymyy .= ' '; $myymyy .= ' '; $myymyy .= ' '; $myymyy .= ' '; $myymyy .= ''; $myymyy .= "\r\n\r\n"; $shorting = false; foreach($match[M_PLAYER] as $key => $player) { $TOTAL_WOOD += $match[M_WOOD][$key]; $TOTAL_CLAY += $match[M_CLAY][$key]; $TOTAL_IRON += $match[M_IRON][$key]; $TOTAL_CROP += $match[M_CROP][$key]; list($h, $m, $s) = explode(":", $match[M_ETA][$key]); $d = 0; //floor($h / 24.00); $hit_date = date("d.m.Y", $server_time + mktime($h, $m, $s,0,0,0) - mktime(0,0,0,0,0,0)); $match[M_HIT_DATE][$key] = $hit_date; $hit_time = strtotime($match[M_ARRIVAL][$key] . " " . $hit_date); $crop_eaten = round(($hit_time - $last_hit_time) * $sec_consumption, 0); $last_hit_time = $hit_time; if ($lvl_crop - $crop_eaten < 0) { $short = $lvl_crop - $crop_eaten; $short_time = $short / $sec_consumption; $lvl_crop = ($match[M_CROP][$key] > $lvl_gran) ? $lvl_gran : $match[M_CROP][$key]; if (isset($first_short_time) == false) { $first_short_time = $hit_time + $short_time; } if (!$shorting) { $match[M_SHORTED][$key] = true; $match[M_SHORT_TIME][$key] = $hit_time + $short_time; if ($match[M_CROP][$key] > 0) $shorting = false; else $shorting = true; } else { if ($match[M_CROP][$key] > 0) $shorting = false; $match[M_SHORTED][$key] = false; } } else { $shorting = false; $match[M_SHORTED][$key] = false; $lvl_crop = ($lvl_crop + $match[M_CROP][$key] - $crop_eaten > $lvl_gran) ? $lvl_gran : $lvl_crop + $match[M_CROP][$key] - $crop_eaten; } $match[M_LVL_CROP][$key] = $lvl_crop; $fill = $lvl_crop / $lvl_gran; if ($fill > 0.9) { $match[M_COLOR][$key] = M_C_NOMORE; } else if ($fill > 0.8) { $match[M_COLOR][$key] = M_C_SOME; } else if ($fill < 0.34) { $match[M_COLOR][$key] = M_C_MUCH_MORE; } else { $match[M_COLOR][$key] = M_C_MORE; } } $i = count($match[M_PLAYER])-1; #echo $i.' '; $current = $match[M_COLOR][$i]; $i--; while( $i >= 0 ) { #echo $i.' '; if( $match[M_COLOR][$i] > $current ) { $current = $match[M_COLOR][$i]; } else { $match[M_COLOR][$i] = $current; } if($match[M_SHORTED][$i]) { $current = M_C_MUCH_MORE; } $i--; } foreach($match[M_PLAYER] as $key => $player) { if( $match[M_SHORTED][$key] ) { $myymyya .= ''; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ''; $myymyyb .= ''; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ''; } $print_wood = number_format($match[M_WOOD][$key], 0, '.', ' '); $print_clay = number_format($match[M_CLAY][$key], 0, '.', ' '); $print_iron = number_format($match[M_IRON][$key], 0, '.', ' '); $myymyya .= ''; if( $anonymize ) { $myymyya .= ' '; $myymyya .= ' '; } else { $myymyya .= ' '; $myymyya .= ' '; } $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyyb .= ''; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $print_lvl_crop = number_format($match[M_LVL_CROP][$key], 0, '.', ' '); $print_lvl_gran = number_format($lvl_gran, 0, '.', ' '); if ($match[M_COLOR][$key] == M_C_MORE) { $myymyya .= ' '; $myymyyb .= ' '; } else if ($match[M_COLOR][$key] == M_C_MUCH_MORE || $match[M_LVL_CROP][$key] == 0) { $myymyya .= ' '; $myymyyb .= ' '; } else if ($match[M_COLOR][$key] == M_C_NOMORE ) { $myymyya .= ' '; $myymyyb .= ' '; } else if ($match[M_COLOR][$key] == M_C_SOME ) { $myymyya .= ' '; $myymyyb .= ' '; } else { $myymyya .= ' '; $myymyyb .= ' '; } $myymyya .= ''; $myymyyb .= ''; } if ($lvl_crop > 0) { $crop_lasts = $last_hit_time + $lvl_crop/$sec_consumption; $myymyya .= ''; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ''; $myymyyb .= ''; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ''; } $myymyya .= ''; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ' '; $myymyya .= ''; $myymyyb .= ''; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ' '; $myymyyb .= ''; if(!isset($first_short_time)) { $first_short_time = $last_hit_time + ($lvl_crop / $sec_consumption); } if ($sec_consumption < 0 ) { $myymyyc .= ''; $myymyyc .= ' '; } else { $myymyyc .= ''; $myymyyc .= ' '; $myymyyc .= ' '; $myymyyc .= ' '; $myymyyc .= ' '; $myymyyc .= ' '; $myymyyc .= ' '; $myymyyc .= ' '; $myymyyc .= ''; } $myymyyc .= '
Arriving shipments
PlayerVillage'; $myymyy .= ' ArrivesWoodClayIronCropCrop Status
! Crop runs out !'.date("d.m.Y H:i", $match[M_SHORT_TIME][$key]).'! Crop runs out !! Crops needed !
! Crop runs out !'.date("d.m.Y H:i", $match[M_SHORT_TIME][$key]).'! Crop runs out !! Crops needed !
Anonymous HeroGotham City'.$player.''.$match[M_VILLAGE][$key].''.$match[M_HIT_DATE][$key].' '.$match[M_ARRIVAL][$key].''.$print_wood.''.$print_clay.''.$print_iron.''.($match[M_CROP][$key]>0?"crops":"0").'
'.$player.''.$match[M_VILLAGE][$key].''.$match[M_HIT_DATE][$key].' '.$match[M_ARRIVAL][$key].''.$print_wood.''.$print_clay.''.$print_iron.''.number_format($match[M_CROP][$key], 0, '.', ' ').' More crops needed More crops needed
'.$print_lvl_crop.' / '.$print_lvl_gran.'
'.'
More crops needed! More crops needed!
'.$print_lvl_crop.' / '.$print_lvl_gran.'
'.'
No more crops No more crops
'.$print_lvl_crop.' / '.$print_lvl_gran.'
Crops only in small amounts Crops only in small amounts
'.$print_lvl_crop.' / '.$print_lvl_gran.'
'.'
MITEN IHMEESSÄ TÄNNE PÄÄDYTTIIN? MITEN IHMEESSÄ TÄNNE PÄÄDYTTIIN?
'.$match[M_COLOR][$key].'
'.$print_lvl_crop.' / '.$print_lvl_gran.'
'.'
! Crop runs out !'.date("d.m.Y H:i", $crop_lasts).'! Crop runs out !! Crops needed !
! Crop runs out !'.date("d.m.Y H:i", $crop_lasts).'! Crop runs out !! Crops needed !
Total'; $myymyya .= ' '.number_format($TOTAL_WOOD, 0, '.', ' ').''.number_format($TOTAL_CLAY, 0, '.', ' ').''.number_format($TOTAL_IRON, 0, '.', ' ').' crops  
Total'; $myymyyb .= ' '.number_format($TOTAL_WOOD, 0, '.', ' ').''.number_format($TOTAL_CLAY, 0, '.', ' ').''.number_format($TOTAL_IRON, 0, '.', ' ').''.number_format($TOTAL_CROP, 0, '.', ' ').' 
Crop never runs out, as consumption doesn\'t exceed production'; $myymyyc .= '
crop runs out the first time at'.date("d.m.Y H:i", $first_short_time).'     
'; $myymyy2 .= "

 

"; if ($sec_consumption <= 0) { $myymyy2 .= "Crop never runs out"; } else { $h = floor(($first_short_time - time()) / 3600); $h_str = str_replace(',', '.', $h); $first_short_time_str = str_replace(',', '.', $first_short_time); $myymyy2 .= "crop runs out the first time on "; $myymyy2 .= $weekdays[date("N", $first_short_time)].date(" d.m.Y \a\\t H:i", $first_short_time); $myymyy2 .= " \r\n( $first_short_time_str) echo '<Was ".date("{$h}\h i", $first_short_time - time())."min>'; else echo 'after '.date(\"{\$h}\h i\", ".$first_short_time_str." - time()).'min';?>)\r\n"; } $myymyy3 .= "

 

"; } $rah = date("Y-m-d_H.i.s", time()); $myymyyc .= '

basic|'; $myymyyc .= 'full

'; $myymyyc .= '

Design and implementation by ildis / Doom @ s1.travian.fi
'; $myymyyc .= 'Fixing of terrible code by pikkumyy / Sisu @ s2.travian.fi
'; $myymyyc .= 'Fixing for K&R usage by Bera / Kauniit @ s3.travian.fi
'; $myymyyc .= 'Modification for T&J usage by Lehter / K&R-ghost @ s3.travian.fi
'; $myymyyc .= 'Modification for HL usage by qjnrid / Hirttämättömät Lurjukset @ s1.travian.co.ee
'; $myymyyc .= 'Modification for FTU usage by qjnrid

'; $myymyyc .= '
'; $myymyyc .= '
'; $myymyyc .= ''; $myymyyc .= ''; ///////////// $myymyyv .= '

Crop consumption '.number_format($hour_consumption, 0, '.', ' ').'/h ('.number_format($day_consumption, 0, '.', ' ').'/day; '.number_format($sec_consumption, 2, '.', ' ').'/s)'; $myymyyfb = $myymyyh.$myymyy2.$myymyyv.$myymyy3.$myymyylb.$myymyy.$myymyyb.$myymyyc; $myymyyfa = $myymyyh.$myymyy2.$myymyy3.$myymyyla.$myymyy.$myymyya.$myymyyc; $fp = fopen($filez.".php", "w"); fwrite($fp, $myymyyfa); fclose($fp); $fp = fopen($filez."-raportit/".$filez."_".$rah."-full.php", "w"); fwrite($fp, $myymyyfb); fclose($fp); $fp = fopen($filez."-raportit/".$filez."_".$rah.".php", "w"); fwrite($fp, $myymyyfa); fclose($fp); echo " Updated ".$_POST['kohde']." crop status page

"; echo " ( raportit/".$filez."_".$rah.".php )
"; echo " ( raportit/".$filez."_".$rah."-full.php )\r\n"; echo "



PREVIEW:



"; echo $myymyyfa; ?>