제목: 부족전쟁 접으면서 -_-;; Post by: 항상야근 on 7월 26, 2010, 06:14:00 am .. 파일을 올릴려고 했는데 파일은 안올라 가는군요 -_-;;
한동안 잘 쓰던 동줍Class 입니다 ㅎㅎ (참고로 자작 A/S 없음) 쓸줄 아시는분은 셋팅해서 쓰세요 ㅎㅎ ================ bujok.class 파일 <? class Bujok{ private $id=""; private $pw=""; private $server=""; private $ch; public $village; public $proxy=false; private $userBill = array(); function Bujok($server){ $this->server = $server; $this->ch = curl_init(); $this->village = array(); $this->vInfo = false; } function Login($id, $pw,$server = false){ $this->id = $id; $this->pw = $pw; if($server !== false) $this->server = $server; $postData["user"] =$this->id; $postData["password"] =$this->pw; $postData["clear"] = "true"; $postData["server"] = $this->server; $postData["cookie"] = ""; if($this->prox) curl_setopt($this->ch, CURLOPT_PROXY, $this->prox); curl_setopt($this->ch, CURLOPT_URL, "http://www.bujokjeonjaeng.org/index.php?action=login"); curl_setopt($this->ch, CURLOPT_HEADER, 1); curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($this->ch, CURLOPT_COOKIESESSION, 1); curl_setopt($this->ch, CURLOPT_USERAGENT , "Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"); curl_setopt($this->ch, CURLOPT_REFERER, "http://www.bujokjeonjaeng.org"); curl_setopt($this->ch, CURLOPT_COOKIEFILE, "/home/naearu/www/lab/bu/cookie/cookiefile"); curl_setopt($this->ch, CURLOPT_COOKIEJAR, "/home/naearu/www/lab/bu/cookie/cookiefile"); curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($this->ch, CURLOPT_POST, 1); curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($postData)); curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, 5); $ex=curl_exec ($this->ch); $ex = str_replace("<span class=\"grey\">.</span>","",$ex); preg_match_all("/<a href=\"[^\"]*village=([0-9]+)[^\"]*\">[\n\r\t]*[ ]?(.*)[ ]?<span id=\"[^\"]*\">(.{1,100})<\/span>\t?<\/a>/",$ex,$out); $this->village = $out[1]; $loginOK = strstr($ex,"game.php?screen=overview"); if($loginOK !== false){ return true; }else{ return false; } } function getInfo(){ $this->vInfo = array(); curl_setopt($this->ch, CURLOPT_URL, "http://".$this->server.".bujokjeonjaeng.org/game.php?village=".$this->village[1]."&screen=overview_villages&mode=prod"); $ex=curl_exec ($this->ch); $ex = str_replace("<span class=\"grey\">.</span>","",$ex); preg_match_all("/<a href=\"[^\"]*village=([0-9]+)[^\"]*\">[\n\r\t]*[ ]?(.*)[ ]?<span id=\"[^\"]*\">(.{1,100})<\/span>\t?<\/a>/",$ex,$out1); //print_r($out1); preg_match_all("/<td>([0-9]+)<\/td>[\n\r\t]*[ ]?<td align=\"center\">[ ]?<img src=\"[^\"]*\" title=\"[^\"]*\" alt=\"\" \/>([0-9]+) [ ]?<img src=\"[^\"]*\" title=\"[^\"]*\" alt=\"\" \/>([0-9]+) [ ]?<img src=\"[^\"]*\" title=\"[^\"]*\" alt=\"\" \/>([0-9]+) <\/td>[\n\r\t ]*<td>([0-9]+)<\/td>[\n\r\t ]*<td><a href=\"[^\"]*\">([0-9\/]+)<\/a><\/td> <td>([0-9\/]+)<\/td>/",$ex,$out2); // 1 = 점수 // 2 = 목재 // 3 = 점토 // 4 = 철 // 5 = 저장고 // 6 = 상인 // 7 = 농가 //print_r($out2); for($i = 0; $i < count($out1[0]); $i++){ preg_match("/\(([0-9]+)\|([0-9]+)\)/",$out1[3][$i],$poTmp); //print_r($poTmp); $villNo = $out1[1][$i]; $this->vInfo[ $villNo ][Name ] = $out1[3][$i]; $this->vInfo[ $villNo ][Point ] = $out2[1][$i]; $this->vInfo[ $villNo ][Storage ] = $out2[5][$i]; $this->vInfo[ $villNo ][Place ] = $out2[6][$i]; $this->vInfo[ $villNo ][Farm ] = $out2[7][$i]; $this->vInfo[ $villNo ][Attack ] = $out2[1][$i]; $this->vInfo[ $villNo ][Wood ] = $out2[2][$i]; $this->vInfo[ $villNo ][Stone ] = $out2[3][$i]; $this->vInfo[ $villNo ][Iron ] = $out2[4][$i]; $this->vInfo[ $villNo ][X ] = $poTmp[1]; $this->vInfo[ $villNo ][Y ] = $poTmp[2]; } return $this->vInfo; } function attack($villNum ,$x,$y,$units){ $posStr = http_build_query($units); $posStr1 .= $posStr; $posStr1 .="&x=".$x; $posStr1 .="&y=".$y; $posStr1 .="&attack=%EA%B3%B5%EA%B2%A9"; $attackURL = "http://".$this->server.".bujokjeonjaeng.org/game.php?village=".$villNum."&screen=place&try=confirm"; curl_setopt($this->ch, CURLOPT_URL,$attackURL); curl_setopt($this->ch, CURLOPT_REFERER, "http://".$this->server.".bujokjeonjaeng.org/game.php?village=".$villNum."&screen=place"); curl_setopt($this->ch, CURLOPT_POSTFIELDS,$posStr1 ); $ex=curl_exec ($this->ch); if( !preg_match("/<input type=\"hidden\" name=\"action_id\" value=\"([0-9]+)\" \/>/",$ex,$out) ){ return false; } $posStr2 .="attack=true"; $posStr2 .="&x=".$x; $posStr2 .="&y=".$y; $posStr2 .="&action_id=".$out[1]; foreach($units as $unit=>$nums){ $posStr2 .="&".$unit."=".(!$nums?'0':$nums); } preg_match("/<form action=\"([^\"]+)\" method=\"post\" onsubmit=\"this\.submit\.disabled=true;\">/",$ex,$out); // preg_match("/<form action=\"([^\"]+)\" method=\"post\" onSubmit=\"this.submit.disabled=true;\">/",$ex,$out); $confURL = "http://".$this->server.".bujokjeonjaeng.org".urldecode($out[1]); $confURL = str_replace("&","&",$confURL); curl_setopt($this->ch, CURLOPT_URL, $confURL); curl_setopt($this->ch, CURLOPT_REFERER, "http://".$this->server.".bujokjeonjaeng.org/game.php?village=".$villNum."&screen=place&try=confirm"); curl_setopt($this->ch, CURLOPT_POSTFIELDS, $posStr2); $ex=curl_exec ($this->ch); return true; } function getGrayMine($villNum,$x=0,$y=0){ if($x ==0 && $y==0){ $posStr1 = ""; }else{ $posStr1 = "x=$x&y=$y"; } $attackURL = "http://".$this->server.".bujokjeonjaeng.org/game.php?village=".$villNum."&screen=map"; curl_setopt($this->ch, CURLOPT_URL,$attackURL); curl_setopt($this->ch, CURLOPT_REFERER, "http://".$this->server.".bujokjeonjaeng.org/game.php?village=".$villNum."&screen=place"); curl_setopt($this->ch, CURLOPT_POSTFIELDS,$posStr1 ); $ex=curl_exec ($this->ch); $count = preg_match_all("/onmouseover=\"Map.map_popup\(event, '([^']*)', '([^']*)', '([^']*)', [0-9]*, ([^,]*), ([^,]*), '([^']*)', '([^']*)', '([^']*)', ([^,]*), ([^,]*), ([^,]*), ([^,]*), ([^,]*), ([^,]*), ([^,]*)\)\" onmouseout=\"Map.map_kill\(\)\"/",$ex,$out); //onmouseover="Map.map_popup('103 다들 엉덩이 땀띠 조심해요 (579|498) K45', '/graphic/bonus/iron.png?1', '100% 더 많은 철생산', 6250, 'chaesoya (56.509 점)', '네오에이스 (1.176.278 점)', '', '', '', 100, 6552, '/game.php?village=6552&screen=overview&source=6240&json=', '10-05-02 11:41 ', 'dots/green.png', 'max_loot/0.png', false)" onmouseout="Map.map_kill()"> $grayMines = array(); for($i=0;$i<$count ;$i++){ if($out[4][$i] == 'null'){ preg_match("/\(([0-9]+)\|([0-9]+)\)/",$out[1][$i],$poTmp); $grayMines[] = array( 'X'=>$poTmp[1], 'Y'=>$poTmp[2], 'NAME'=>$out[1][$i] ); } } return $grayMines; } } ?> dong_jub.php -- 사용예시 <? include "bujok.class"; $bu = new Bujok("kr6"); // 서버명 if(!$bu->Login("아이디","비밀번호") ){ echo "로그인 실패!"; exit; } $info = $bu->getInfo(); //공격금지 마을 셋팅 $doNot = array(); // 병력셋팅 $DJunits = array( "spear" =>"", "sword" =>"", "axe" =>"", "archer" =>"", "spy" =>"1", "light" =>"15", "marcher" =>"", "heavy" =>"", "ram" =>"", "catapult" =>"", "knight" =>"", "snob" =>"" ); $villageNum = $bu->village[0]; echo "DongJub Start - $villageNum \n"; $gray1 = $bu->getGrayMine($villageNum,593,504); // 회광리스트업 $gray2 = $bu->getGrayMine($villageNum,593,519); // 회광리스트업 $gray3 = $bu->getGrayMine($villageNum,563,519); // 회광리스트업 $gray4 = $bu->getGrayMine($villageNum,563,504); // 회광리스트업 $grayMines = array_merge($gray1,$gray2,$gray3,$gray4); shuffle($grayMines); //$vills=array(6240,6787,6818); $vills=array(6787,6818); foreach( $vills as $villageNum){ shuffle($grayMines); echo "DongJub Start - $villageNum \n"; foreach($grayMines as $num => $grayMine ){ if( in_array(($grayMine[X]." | ".$grayMine[Y]),$doNot) ){ continue; } echo "attack ".$grayMine[X]." | ".$grayMine[Y]." : ".$grayMine[NAME]."\n"; $result = $bu->attack($villageNum ,$grayMine[X],$grayMine[Y],$DJunits); if(!$result) break; unset( $grayMines[ $num ] ); } } ?> 제목: Re: 부족전쟁 접으면서 -_-;; Post by: 러시앤캐쉬 on 7월 28, 2010, 05:32:04 pm 이거원.. 올려주셔도 이용방법을 모르니.. 궁금하고 답답할 따름입니다.
제목: Re: 부족전쟁 접으면서 -_-;; Post by: 항상야근 on 8월 01, 2010, 08:45:41 pm 두개의 파일을 올려드렸는데요.
PHP서버를 가지고 계신분들은 싹 셋팅하셔서 시간마다 호출하게 셋팅을 해 두시면 알아서 동줍을 다닙니다 -_-;; 이제껏 걸어놨었지만 걸린적은 없었네요 ㅎㅎ |