거리 측정 함수 새로 작성
- 이용하는 함수도 수정
This commit is contained in:
+2
-1
@@ -53,4 +53,5 @@ case "락풀기":
|
|||||||
}
|
}
|
||||||
|
|
||||||
//echo "<script>location.replace('_119.php');</script>";
|
//echo "<script>location.replace('_119.php');</script>";
|
||||||
echo '_119.php';//TODO:debug all and replace
|
//echo '_119.php';//TODO:debug all and replace
|
||||||
|
header('Location:_119.php');
|
||||||
+35
-38
@@ -2530,51 +2530,48 @@ function nextRuler($connect, $general) {
|
|||||||
// 장수 삭제 및 부대처리는 checkTurn에서
|
// 장수 삭제 및 부대처리는 checkTurn에서
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* $maxDist 이내의 도시를 검색하는 함수
|
||||||
|
* @param $from 기준 도시 코드
|
||||||
|
* @param $maxDist 검색하고자 하는 최대 거리
|
||||||
|
* @param $distForm 리턴 타입. true일 경우 $result[$dist] = [...$city] 이며, false일 경우 $result[$city] = $dist 임
|
||||||
|
*/
|
||||||
|
function searchDistance(int $from, int $maxDist=99, bool $distForm = false) {
|
||||||
|
$queue = new \SqlQueue();
|
||||||
|
|
||||||
function distance($connect, $from, $maxDist=99) {
|
$cities = [];
|
||||||
include_once("queue.php");
|
$distanceList = [];
|
||||||
|
|
||||||
$query = "select city,path from city";
|
$queue->enqueue([$from, 0]);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$cityNum = MYDB_num_rows($result);
|
|
||||||
for($i=0; $i < $cityNum; $i++) {
|
|
||||||
$city = MYDB_fetch_array($result);
|
|
||||||
$cityPath[$city['city']] = $city['path'];
|
|
||||||
$dist[$city['city']] = 99;
|
|
||||||
}
|
|
||||||
|
|
||||||
$select = 0;
|
while(!$queue->isEmpty()){
|
||||||
$queue = new Queue(20);
|
list($cityID, $dist) = $queue->dequeue();
|
||||||
$queue2 = new Queue(20);
|
|
||||||
$q = $queue;
|
if(!key_exists($dist, $distanceList)){
|
||||||
$q2 = $queue2;
|
$distanceList[$dist] = [];
|
||||||
$distance = $dist[$from] = 0;
|
}
|
||||||
$q->push($from);
|
$distanceList[$dist][] = $cityID;
|
||||||
while($q->getSize() > 0 || $q2->getSize() > 0) {
|
|
||||||
$distance++;
|
$cities[$cityID] = $dist;
|
||||||
if($distance > $maxDist) return $dist;
|
if($dist >= $maxDist){
|
||||||
while($q->getSize() > 0) {
|
return;
|
||||||
$city = $q->pop();
|
}
|
||||||
unset($path);
|
|
||||||
$path = explode("|", $cityPath[$city]);
|
foreach(array_keys(CityConst::byID($cityID)->path) as $connCityID){
|
||||||
for($i=0; $i < count($path); $i++) {
|
if(key_exists($connCityID, $cities)){
|
||||||
if($dist[$path[$i]] > $distance) {
|
continue;
|
||||||
$dist[$path[$i]] = $distance;
|
|
||||||
$q2->push($path[$i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
$queue->enqueue([$connCityID, $dist+1]);
|
||||||
}
|
}
|
||||||
if($select == 0) {
|
|
||||||
$q2 = $queue;
|
|
||||||
$q = $queue2;
|
|
||||||
} else {
|
|
||||||
$q = $queue;
|
|
||||||
$q2 = $queue2;
|
|
||||||
}
|
|
||||||
$select = 1 - $select;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $dist;
|
if($distForm){
|
||||||
|
unset($distanceList[0]);
|
||||||
|
return $distanceList;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return $cities;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function isClose($connect, $nation1, $nation2) {
|
function isClose($connect, $nation1, $nation2) {
|
||||||
|
|||||||
+52
-80
@@ -236,95 +236,67 @@ function SetNationFront($nationNo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function checkSupply($connect) {
|
function checkSupply($connect) {
|
||||||
include_once("queue.php");
|
$db = DB::db();
|
||||||
|
|
||||||
$query = "select city,nation,path from city";
|
$cities = [];
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
foreach($db->query('SELECT city, nation FROM city WHERE nation != 0') as $city){
|
||||||
$cityNum = MYDB_num_rows($result);
|
$cities[$city['city']] = [
|
||||||
for($i=0; $i < $cityNum; $i++) {
|
|
||||||
$city = MYDB_fetch_array($result);
|
'id'=>$city['city'],
|
||||||
$cityPath[$city['city']] = $city['path'];
|
'nation'=>$city['nation'],
|
||||||
$cityNation[$city['city']] = $city['nation'];
|
'supply'=>false
|
||||||
$label[$city['city']] = 0;
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$select = 0;
|
$queue = new \SplQueue();
|
||||||
$queue = new Queue(20);
|
|
||||||
$queue2 = new Queue(20);
|
|
||||||
$labelling = 0;
|
|
||||||
$marked = 0;
|
|
||||||
$comCount = array();
|
|
||||||
|
|
||||||
//모든 도시 마크할 때까지
|
|
||||||
while($marked < $cityNum) {
|
|
||||||
$queue->clear(); $queue2->clear();
|
|
||||||
$q = $queue; $q2 = $queue2;
|
|
||||||
|
|
||||||
$labelling++;
|
|
||||||
//마크 되지 않은 도시부터 라벨링 시작
|
|
||||||
for($i=1; $i <= $cityNum; $i++) {
|
|
||||||
if($label[$i] == 0) {
|
|
||||||
$label[$i] = $labelling;
|
|
||||||
$labelMapping[$labelling] = $cityNation[$i];
|
|
||||||
isset($comCount[$cityNation[$i]]) ? $comCount[$cityNation[$i]]++ : $comCount[$cityNation[$i]] = 1;
|
|
||||||
$q->push($i);
|
|
||||||
$marked++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
while($q->getSize() > 0 || $q2->getSize() > 0) {
|
|
||||||
while($q->getSize() > 0) {
|
|
||||||
$city = $q->pop();
|
|
||||||
unset($path);
|
|
||||||
$path = explode("|", $cityPath[$city]);
|
|
||||||
for($i=0; $i < count($path); $i++) {
|
|
||||||
if($label[$path[$i]] == 0 && $cityNation[$path[$i]] == $cityNation[$city]) {
|
|
||||||
$label[$path[$i]] = $labelling;
|
|
||||||
$q2->push($path[$i]);
|
|
||||||
$marked++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($select == 0) {
|
|
||||||
$q2 = $queue;
|
|
||||||
$q = $queue2;
|
|
||||||
} else {
|
|
||||||
$q = $queue;
|
|
||||||
$q2 = $queue2;
|
|
||||||
}
|
|
||||||
$select = 1 - $select;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//공백지는 다 보급상태
|
|
||||||
$query = "update city set supply='1' where nation='0'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
//우선 다 미보급 상태로
|
|
||||||
$query = "update city set supply='0' where nation!='0'";
|
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
|
|
||||||
//도시 있는 국가들
|
|
||||||
|
|
||||||
$str = "city='0'";
|
|
||||||
|
|
||||||
//TODO: in 을 쓰는게 낫다
|
|
||||||
foreach(getAllNationStaticInfo() as $nation){
|
foreach(getAllNationStaticInfo() as $nation){
|
||||||
if($nation['level'] <= 0){
|
$queue->enqueue($cities[$nation['capital']]);
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$lbl = $label[$nation['capital']];
|
while(!$queue->isEmpty()){
|
||||||
|
$city = $queue->dequeue();
|
||||||
|
|
||||||
for ($k=1; $k <= $cityNum; $k++) {
|
$city['supply'] = true;
|
||||||
if ($lbl == $label[$k]) {
|
|
||||||
$str .= " or city='{$k}'";
|
foreach(array_keys(CityConst::byID($city['id'])->path) as $connCityID){
|
||||||
|
$connCity = $cities[$connCityID];
|
||||||
|
if($connCity['nation'] != $city['nation']){
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
if($connCity['supply']){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$queue->enqueue($connCity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = "update city set supply='1' where {$str}";
|
$db->update('city',[
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
'supply'=>1
|
||||||
|
], 'nation=0');
|
||||||
|
|
||||||
|
$supply = [];
|
||||||
|
$unsupply = [];
|
||||||
|
|
||||||
|
foreach($cities as $city){
|
||||||
|
if($city['supply']){
|
||||||
|
$supply[] = $city['id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$unsupply[] = $city['id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($supply){
|
||||||
|
$db->update('city', [
|
||||||
|
'supply'=>1
|
||||||
|
], 'city IN %li', $supply);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($unsupply){
|
||||||
|
$db->update('city', [
|
||||||
|
'supply'=>0
|
||||||
|
], 'city IN %li', $unsupply);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+14
-14
@@ -105,24 +105,24 @@ function closeButton() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function printCitysName($connect, $cityNo, $distance=1) {
|
function printCitysName(int $cityNo, int $maxDistance=1) {
|
||||||
$dist = distance($connect, $cityNo, $distance);
|
$distanceList = searchDistance($cityNo, $maxDistance, true);
|
||||||
|
|
||||||
$cityList = [];
|
for($dist = 1; $dist <= $maxDistance; $dist++){
|
||||||
foreach(CityConst::all() as $city){
|
$cityList = array_map(function($cityID){
|
||||||
if($dist[$city->id] == $distance){
|
return CityConst::byID($cityID)->name;
|
||||||
$cityList[] = $city->name;
|
}, Util::array_get($distanceList[$dist], []));
|
||||||
|
|
||||||
|
$cityStr = join(', ', $cityList);
|
||||||
|
|
||||||
|
switch($dist) {
|
||||||
|
case 1: $color = "magenta"; break;
|
||||||
|
case 2: $color = "orange"; break;
|
||||||
|
default: $color = "yellow"; break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$cityStr = join(', ', $cityList);
|
echo "{$distance}칸 떨어진 도시 : <span style='color:{$color};font-weight:bold;'>{$cityStr}</span><br>";
|
||||||
|
|
||||||
switch($distance) {
|
|
||||||
case 1: $color = "magenta"; break;
|
|
||||||
case 2: $color = "orange"; break;
|
|
||||||
default: $color = "yellow"; break;
|
|
||||||
}
|
}
|
||||||
echo "{$distance}칸 떨어진 도시 : <font color={$color}><b>{$cityStr}</b></font><br>";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1505,7 +1505,7 @@ function process_30($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$city = MYDB_fetch_array($result);
|
$city = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $general['city'], 3);
|
$dist = searchDistance($general['city'], 3, false);
|
||||||
$command = DecodeCommand($general['turn0']);
|
$command = DecodeCommand($general['turn0']);
|
||||||
$destination = $command[1];
|
$destination = $command[1];
|
||||||
|
|
||||||
@@ -1515,7 +1515,9 @@ function process_30($connect, &$general) {
|
|||||||
|
|
||||||
$cost = $admin['develcost'] * 5;
|
$cost = $admin['develcost'] * 5;
|
||||||
|
|
||||||
if($dist[$destination] > 3) {
|
if($destination == $general['city']){
|
||||||
|
$log[] = "<C>●</>{$admin['month']}월:같은 도시입니다. <G><b>{$destcity['name']}</b></>(으)로 강행 실패. <1>$date</>";
|
||||||
|
} elseif(!key_exists($dist[$destination], $dist)) {
|
||||||
$log[] = "<C>●</>{$admin['month']}월:거리가 멉니다. <G><b>{$destcity['name']}</b></>(으)로 강행 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:거리가 멉니다. <G><b>{$destcity['name']}</b></>(으)로 강행 실패. <1>$date</>";
|
||||||
} elseif($general['gold'] < $cost) {
|
} elseif($general['gold'] < $cost) {
|
||||||
$log[] = "<C>●</>{$admin['month']}월:자금이 부족합니다. <G><b>{$destcity['name']}</b></>(으)로 강행 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:자금이 부족합니다. <G><b>{$destcity['name']}</b></>(으)로 강행 실패. <1>$date</>";
|
||||||
@@ -1564,7 +1566,7 @@ function process_31($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$admin = MYDB_fetch_array($result);
|
$admin = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $general['city'], 2);
|
$dist = searchDistance($general['city'], 2, false);
|
||||||
$command = DecodeCommand($general['turn0']);
|
$command = DecodeCommand($general['turn0']);
|
||||||
$destination = $command[1];
|
$destination = $command[1];
|
||||||
|
|
||||||
@@ -1580,7 +1582,7 @@ function process_31($connect, &$general) {
|
|||||||
$log[] = "<C>●</>{$admin['month']}월:군량이 모자랍니다. <G><b>{$city['name']}</b></>에 첩보 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:군량이 모자랍니다. <G><b>{$city['name']}</b></>에 첩보 실패. <1>$date</>";
|
||||||
} elseif($general['nation'] == $city['nation']) {
|
} elseif($general['nation'] == $city['nation']) {
|
||||||
$log[] = "<C>●</>{$admin['month']}월:아국입니다. <G><b>{$city['name']}</b></>에 첩보 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:아국입니다. <G><b>{$city['name']}</b></>에 첩보 실패. <1>$date</>";
|
||||||
// } elseif($dist[$destination] > 3) {
|
// } elseif(!key_exists($destination, $dist)) {
|
||||||
// $log[] = "<C>●</>{$admin['month']}월:너무 멉니다. <G><b>{$city['name']}</b></>에 첩보 실패. <1>$date</>";
|
// $log[] = "<C>●</>{$admin['month']}월:너무 멉니다. <G><b>{$city['name']}</b></>에 첩보 실패. <1>$date</>";
|
||||||
} else {
|
} else {
|
||||||
$query = "select crew,crewtype from general where city='$destination' and nation='{$city['nation']}'";
|
$query = "select crew,crewtype from general where city='$destination' and nation='{$city['nation']}'";
|
||||||
@@ -1591,7 +1593,7 @@ function process_31($connect, &$general) {
|
|||||||
$gen = MYDB_fetch_array($result);
|
$gen = MYDB_fetch_array($result);
|
||||||
if($gen['crew'] != 0) { $typecount[$gen['crewtype']]++; $crew += $gen['crew']; }
|
if($gen['crew'] != 0) { $typecount[$gen['crewtype']]++; $crew += $gen['crew']; }
|
||||||
}
|
}
|
||||||
if($dist[$destination] > 2) {
|
if(!key_exists($destination, $dist)) {
|
||||||
$alllog[] = "<C>●</>{$admin['month']}월:누군가가 <G><b>{$city['name']}</b></>(을)를 살피는 것 같습니다.";
|
$alllog[] = "<C>●</>{$admin['month']}월:누군가가 <G><b>{$city['name']}</b></>(을)를 살피는 것 같습니다.";
|
||||||
$log[] = "<C>●</>{$admin['month']}월:<G><b>{$city['name']}</b></>의 소문만 들을 수 있었습니다. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:<G><b>{$city['name']}</b></>의 소문만 들을 수 있었습니다. <1>$date</>";
|
||||||
$log[] = "【<G>{$city['name']}</>】주민:{$city['pop']}, 민심:{$city['rate']}, 장수:$gencount, 병력:$crew";
|
$log[] = "【<G>{$city['name']}</>】주민:{$city['pop']}, 민심:{$city['rate']}, 장수:$gencount, 병력:$crew";
|
||||||
|
|||||||
@@ -930,7 +930,7 @@ function process_66($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$destcity = MYDB_fetch_array($result);
|
$destcity = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $nation['capital'], 1);
|
$nearCities = searchDistance($nation['capital'], 1, false);
|
||||||
$amount = $admin['develcost'] * 10;
|
$amount = $admin['develcost'] * 10;
|
||||||
|
|
||||||
$code = $nation["l{$general['level']}term"];
|
$code = $nation["l{$general['level']}term"];
|
||||||
@@ -950,7 +950,7 @@ function process_66($connect, &$general) {
|
|||||||
$log[] = "<C>●</>{$admin['month']}월:고립된 도시입니다. 천도 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:고립된 도시입니다. 천도 실패. <1>$date</>";
|
||||||
} elseif($destcity['nation'] != $general['nation']) {
|
} elseif($destcity['nation'] != $general['nation']) {
|
||||||
$log[] = "<C>●</>{$admin['month']}월:아국 영토가 아닙니다. 천도 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:아국 영토가 아닙니다. 천도 실패. <1>$date</>";
|
||||||
} elseif($dist[$destcity['city']] != 1) {
|
} elseif($destcity['city'] == $nation['capital'] || !key_exists($destcity['city'], $nearCities)){
|
||||||
$log[] = "<C>●</>{$admin['month']}월:인접도시가 아닙니다. 천도 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:인접도시가 아닙니다. 천도 실패. <1>$date</>";
|
||||||
} elseif($nation['capset'] == 1) {
|
} elseif($nation['capset'] == 1) {
|
||||||
$log[] = "<C>●</>{$admin['month']}월:다음 분기에 가능합니다. 천도 실패. <1>$date</>";
|
$log[] = "<C>●</>{$admin['month']}월:다음 분기에 가능합니다. 천도 실패. <1>$date</>";
|
||||||
|
|||||||
+10
-10
@@ -11,7 +11,7 @@ function process_32($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$admin = MYDB_fetch_array($result);
|
$admin = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $general['city'], 5);
|
$dist = searchDistance($general['city'], 5, false);
|
||||||
$command = DecodeCommand($general['turn0']);
|
$command = DecodeCommand($general['turn0']);
|
||||||
$destination = $command[1];
|
$destination = $command[1];
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ function process_32($connect, &$general) {
|
|||||||
if($nation['type'] == 9) { $ratio += 10; }
|
if($nation['type'] == 9) { $ratio += 10; }
|
||||||
|
|
||||||
// 거리보정
|
// 거리보정
|
||||||
$ratio /= $dist[$destination];
|
$ratio /= Util::array_get($dist[$destination], 99);
|
||||||
|
|
||||||
if($ratio > $ratio2) {
|
if($ratio > $ratio2) {
|
||||||
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>(이)가 불타고 있습니다.";
|
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>(이)가 불타고 있습니다.";
|
||||||
@@ -133,7 +133,7 @@ function process_33($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$admin = MYDB_fetch_array($result);
|
$admin = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $general['city'], 5);
|
$dist = searchDistance($general['city'], 5, false);
|
||||||
$command = DecodeCommand($general['turn0']);
|
$command = DecodeCommand($general['turn0']);
|
||||||
$destination = $command[1];
|
$destination = $command[1];
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@ function process_33($connect, &$general) {
|
|||||||
if($mynation['type'] == 9) { $ratio += 10; }
|
if($mynation['type'] == 9) { $ratio += 10; }
|
||||||
|
|
||||||
// 거리보정
|
// 거리보정
|
||||||
$ratio /= $dist[$destination];
|
$ratio /= Util::array_get($dist[$destination], 99);
|
||||||
|
|
||||||
if($ratio > $ratio2) {
|
if($ratio > $ratio2) {
|
||||||
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>에서 금과 쌀을 도둑맞았습니다.";
|
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>에서 금과 쌀을 도둑맞았습니다.";
|
||||||
@@ -280,7 +280,7 @@ function process_34($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$admin = MYDB_fetch_array($result);
|
$admin = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $general['city'], 5);
|
$dist = searchDistance($general['city'], 5, false);
|
||||||
$command = DecodeCommand($general['turn0']);
|
$command = DecodeCommand($general['turn0']);
|
||||||
$destination = $command[1];
|
$destination = $command[1];
|
||||||
|
|
||||||
@@ -351,7 +351,7 @@ function process_34($connect, &$general) {
|
|||||||
if($mynation['type'] == 9) { $ratio += 10; }
|
if($mynation['type'] == 9) { $ratio += 10; }
|
||||||
|
|
||||||
// 거리보정
|
// 거리보정
|
||||||
$ratio /= $dist[$destination];
|
$ratio /= Util::array_get($dist[$destination], 99);
|
||||||
|
|
||||||
if($ratio > $ratio2) {
|
if($ratio > $ratio2) {
|
||||||
$alllog[] = "<C>●</>{$admin['month']}월:누군가가 <G><b>{$destcity['name']}</b></>의 성벽을 허물었습니다.";
|
$alllog[] = "<C>●</>{$admin['month']}월:누군가가 <G><b>{$destcity['name']}</b></>의 성벽을 허물었습니다.";
|
||||||
@@ -402,7 +402,7 @@ function process_35($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$admin = MYDB_fetch_array($result);
|
$admin = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $general['city'], 5);
|
$dist = searchDistance($general['city'], 5, false);
|
||||||
$command = DecodeCommand($general['turn0']);
|
$command = DecodeCommand($general['turn0']);
|
||||||
$destination = $command[1];
|
$destination = $command[1];
|
||||||
|
|
||||||
@@ -475,7 +475,7 @@ function process_35($connect, &$general) {
|
|||||||
if($mynation['type'] == 9) { $ratio += 10; }
|
if($mynation['type'] == 9) { $ratio += 10; }
|
||||||
|
|
||||||
// 거리보정
|
// 거리보정
|
||||||
$ratio /= $dist[$destination];
|
$ratio /= Util::array_get($dist[$destination], 99);
|
||||||
|
|
||||||
if($ratio > $ratio2) {
|
if($ratio > $ratio2) {
|
||||||
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>의 백성들이 동요하고 있습니다.";
|
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>의 백성들이 동요하고 있습니다.";
|
||||||
@@ -527,7 +527,7 @@ function process_36($connect, &$general) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$admin = MYDB_fetch_array($result);
|
$admin = MYDB_fetch_array($result);
|
||||||
|
|
||||||
$dist = distance($connect, $general['city'], 5);
|
$dist = searchDistance($general['city'], 5, false);
|
||||||
$command = DecodeCommand($general['turn0']);
|
$command = DecodeCommand($general['turn0']);
|
||||||
$destination = $command[1];
|
$destination = $command[1];
|
||||||
|
|
||||||
@@ -603,7 +603,7 @@ function process_36($connect, &$general) {
|
|||||||
if($mynation['type'] == 9) { $ratio += 10; }
|
if($mynation['type'] == 9) { $ratio += 10; }
|
||||||
|
|
||||||
// 거리보정
|
// 거리보정
|
||||||
$ratio /= $dist[$destination];
|
$ratio /= Util::array_get($dist[$destination], 99);
|
||||||
|
|
||||||
if($ratio > $ratio2) {
|
if($ratio > $ratio2) {
|
||||||
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>(이)가 누군가에게 공격 받았습니다.";
|
$alllog[] = "<C>●</>{$admin['month']}월:<G><b>{$destcity['name']}</b></>(이)가 누군가에게 공격 받았습니다.";
|
||||||
|
|||||||
+40
-17
@@ -1819,27 +1819,50 @@ function ConquerCity($connect, $game, $general, $city, $nation, $destnation) {
|
|||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
//수도였으면 긴급 천도
|
//수도였으면 긴급 천도
|
||||||
if($destnation['capital'] == $city['city']) {
|
if($destnation['capital'] == $city['city']) {
|
||||||
$dist = distance($connect, $city['city']);
|
$distList = searchDistance($city['city'], 99, true);
|
||||||
|
|
||||||
$query = "select city,name,pop from city where nation='{$destnation['nation']}' and city!='{$city['city']}'";
|
$cities = [];
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
foreach(
|
||||||
$cityCount = MYDB_num_rows($result);
|
DB::db()->query(
|
||||||
$minDist = 99; $minCity = 0; $minCityPop = 0;
|
'SELECT city, pop FROM city WHERE nation=%i and city!=%i',
|
||||||
for($i=0; $i < $cityCount; $i++) {
|
$destnation['nation'],
|
||||||
$nextCap = MYDB_fetch_array($result);
|
$city['city']
|
||||||
if($minDist > $dist[$nextCap['city']]) {
|
) as $row
|
||||||
$minDist = $dist[$nextCap['city']];
|
){
|
||||||
$minCity = $nextCap['city'];
|
$cities[$row['city']] = $row;
|
||||||
$minCityPop = $nextCap['pop'];
|
};
|
||||||
$minCityName = $nextCap['name'];
|
|
||||||
} elseif($minDist == $dist[$nextCap['city']] && $minCityPop < $nextCap['pop']) {
|
$distKeys = array_keys($distList);
|
||||||
$minDist = $dist[$nextCap['city']];
|
sort($distKeys);
|
||||||
$minCity = $nextCap['city'];
|
|
||||||
$minCityPop = $nextCap['pop'];
|
$minCity = 0;
|
||||||
$minCityName = $nextCap['name'];
|
|
||||||
|
foreach($distKeys as $dist){
|
||||||
|
$hasTarget = false;
|
||||||
|
$maxCityPop = 0;
|
||||||
|
|
||||||
|
foreach($distList[$dist] as $cityID){
|
||||||
|
$city = $cities[$cityID];
|
||||||
|
if($city['nation'] != $destnation['nation']){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($city['pop'] <= $maxCityPop){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$hasTarget = true;
|
||||||
|
$minCity = $cityID;
|
||||||
|
$maxCityPop = $city['pop'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if($hasTarget){
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$minCityName = CityConst::byID($minCity)->name;
|
||||||
|
|
||||||
$history[] = "<C>●</>{$game['year']}년 {$game['month']}월:<M><b>【긴급천도】</b></><D><b>{$destnation['name']}</b></>(이)가 수도가 함락되어 <G><b>$minCityName</b></>으로 긴급천도하였습니다.";
|
$history[] = "<C>●</>{$game['year']}년 {$game['month']}월:<M><b>【긴급천도】</b></><D><b>{$destnation['name']}</b></>(이)가 수도가 함락되어 <G><b>$minCityName</b></>으로 긴급천도하였습니다.";
|
||||||
|
|
||||||
//아국 수뇌부에게 로그 전달
|
//아국 수뇌부에게 로그 전달
|
||||||
|
|||||||
+9
-17
@@ -716,7 +716,7 @@ function command_16($connect, $turn, $command) {
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 1);
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -755,7 +755,7 @@ function command_21($connect, $turn, $command) {
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 1);
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -1128,9 +1128,7 @@ echo "
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 3);
|
||||||
printCitysName($connect, $currentcity['city'], 2);
|
|
||||||
printCitysName($connect, $currentcity['city'], 3);
|
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -1173,8 +1171,7 @@ function command_31($connect, $turn, $command) {
|
|||||||
모든 도시가 가능하지만 많은 정보를 얻을 수 있는<br>
|
모든 도시가 가능하지만 많은 정보를 얻을 수 있는<br>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 2);
|
||||||
printCitysName($connect, $currentcity['city'], 2);
|
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -1212,8 +1209,7 @@ function command_32($connect, $turn, $command) {
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 2);
|
||||||
printCitysName($connect, $currentcity['city'], 2);
|
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -1251,8 +1247,7 @@ function command_33($connect, $turn, $command) {
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 2);
|
||||||
printCitysName($connect, $currentcity['city'], 2);
|
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -1290,8 +1285,7 @@ function command_34($connect, $turn, $command) {
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 2);
|
||||||
printCitysName($connect, $currentcity['city'], 2);
|
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -1329,8 +1323,7 @@ function command_35($connect, $turn, $command) {
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 2);
|
||||||
printCitysName($connect, $currentcity['city'], 2);
|
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
@@ -1368,8 +1361,7 @@ function command_36($connect, $turn, $command) {
|
|||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
|
|
||||||
printCitysName($connect, $currentcity['city'], 1);
|
printCitysName($currentcity['city'], 2);
|
||||||
printCitysName($connect, $currentcity['city'], 2);
|
|
||||||
|
|
||||||
ender();
|
ender();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user