버그 수정

This commit is contained in:
2020-04-22 02:01:16 +09:00
parent da1273c135
commit 21a956eca8
14 changed files with 85 additions and 73 deletions
+1 -2
View File
@@ -56,7 +56,6 @@ if($session->userGrade < 5) {
}
$db = DB::db();
$connect=$db->get();
if($btn == '정렬하기') {
$gen = 0;
@@ -112,7 +111,7 @@ $generalObj = General::createGeneralObjFromDB($gen);
<tr><td>
<form name=form1 method=post>
정렬순서 :
<select name=type size=1>
<select name='query_type' size=1>
<?php foreach($queryMap as $queryType => [$queryTypeText,]): ?>
<option <?=$queryType==$reqQueryType?'selected':''?> value='<?=$queryType?>'><?=$queryTypeText?></option>
<?php endforeach; ?>
-5
View File
@@ -36,11 +36,6 @@ if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
}
if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
$reqQueryType = Util::array_first_key($queryMap);
}
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
+12 -15
View File
@@ -187,10 +187,6 @@ if($city['trade'] === null) {
$city['trade'] = "- ";
}
$query = "select npc,defence_train,no,picture,imgsvr,name,injury,leadership,strength,intel,officer_level,nation,crewtype,crew,train,atmos from general where city='{$city['city']}' order by dedication desc"; // 장수 목록
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
$generals = $db->query(
'SELECT npc,defence_train,no,picture,imgsvr,name,injury,leadership,strength,intel,officer_level,nation,crewtype,crew,train,atmos from general where city=%i order by name',
$city['city']
@@ -198,17 +194,20 @@ $generals = $db->query(
$generalTurnList = [];
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($generals, 'no')
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
if($generals){
foreach($db->queryAllLists(
'SELECT general_id, turn_idx, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id ASC, turn_idx ASC',
array_column($generals, 'no')
) as [$generalID, $turnIdx, $brief]
){
if(!key_exists($generalID, $generalTurnList)){
$generalTurnList[$generalID] = [];
}
$generalTurnList[$generalID][$turnIdx] = $brief;
}
$generalTurnList[$generalID][$turnIdx] = $brief;
}
$nationname = [];
$nationlevel = [];
foreach(getAllNationStaticInfo() as $nation){
@@ -220,9 +219,7 @@ foreach(getAllNationStaticInfo() as $nation){
$generalsFormat = [];
for($j=0; $j < $gencount; $j++) {
$general = MYDB_fetch_array($genresult);
foreach($generals as $general){
$nationInfo = getNationStaticInfo($general['nation']);
if($general['nation'] != 0 && $general['nation'] == $myNation['nation']){
+29 -28
View File
@@ -193,7 +193,7 @@ if($meLevel >= 5 && $nation["l{$meLevel}set"] == 0) {
continue;
}
echo "
<option data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} <small>({$general['leadership']}/{$general['strength']}/{$general['intel']}, {$general['killturn']}턴)</small></option>";
<option data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} <small>({$general['leadership']}/{$general['strength']}/{$general['intel']}, {$general['killturn']}턴)</small></option>";
}
echo "
@@ -230,11 +230,11 @@ if($meLevel >= 5 && $nation['l11set'] == 0) {
for($i=0; $i < $gencount; $i++) {
$general = MYDB_fetch_array($result);
if($general['officer_level'] == 11) {
echo "<option style=color:red; selected data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:red; selected data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} elseif($general['officer_level'] > 1) {
echo "<option style=color:orange; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:orange; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} else {
echo "<option data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
}
}
@@ -284,11 +284,11 @@ for($i=10; $i >= $lv; $i--) {
for($k=0; $k < $gencount; $k++) {
$general = MYDB_fetch_array($result);
if($general['officer_level'] == $i) {
echo "<option style=color:red; selected data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:red; selected data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} elseif($general['officer_level'] > 1) {
echo "<option style=color:orange; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:orange; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} else {
echo "<option data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
}
}
@@ -371,7 +371,7 @@ if($meLevel >= 5) {
echo "
</select>
<select id='genlist_4' size=1 style=color:white;background-color:black;>
<option value=0 data-officer_level='0' data-name='' data-officer_level_text='{$officerLevelText}'>____공석____</option>
<option value=0 data-officer_level='0' data-name=''>____공석____</option>
";
$query = "select no,name,officer_level,city from general where nation='{$nationID}' and officer_level!='12' and strength>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
@@ -380,17 +380,17 @@ if($meLevel >= 5) {
for($i=0; $i < $count; $i++) {
$general = MYDB_fetch_array($result);
if($general['officer_level'] == 4) {
echo "<option style=color:red; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:red; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} elseif($general['officer_level'] > 1) {
echo "<option style=color:orange; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:orange; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} else {
echo "<option data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
}
}
echo "
</select>
<input class='btn_appoint' type=$btn data-officer_level='4' value=임명>
<input class='btn_appoint' type=$btn data-officer_level='4' data-officer_level_text='{$officerLevelText}' value=임명>
</td>
</tr>";
$officerLevelText = getOfficerLevelText(3, $nation['level']);
@@ -423,7 +423,7 @@ if($meLevel >= 5) {
echo "
</select>
<select id='genlist_3' size=1 style=color:white;background-color:black;>
<option value=0 data-officer_level='0' data-name='' data-officer_level_text='{$officerLevelText}'>____공석____</option>
<option value=0 data-officer_level='0' data-name=''>____공석____</option>
";
$query = "select no,name,officer_level,city from general where nation='{$nationID}' and officer_level!='12' and intel>='".GameConst::$chiefStatMin."' order by npc,binary(name)";
@@ -432,17 +432,17 @@ if($meLevel >= 5) {
for($i=0; $i < $count; $i++) {
$general = MYDB_fetch_array($result);
if($general['officer_level'] == 3) {
echo "<option style=color:red; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:red; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} elseif($general['officer_level'] > 1) {
echo "<option style=color:orange; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:orange; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} else {
echo "<option data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
}
}
echo "
</select>
<input class='btn_appoint' type=$btn data-officer_level='3' value=임명>
<input class='btn_appoint' type=$btn data-officer_level='3' data-officer_level_text='{$officerLevelText}' value=임명>
</td>
</tr>";
$officerLevelText = getOfficerLevelText(2, $nation['level']);
@@ -475,7 +475,7 @@ if($meLevel >= 5) {
echo "
</select>
<select id='genlist_2' size=1 style=color:white;background-color:black;>
<option value=0>____<span class='name_field' data-officer_level_text='{$officerLevelText}'>공석</span>____</option>
<option value=0>____<span class='name_field'>공석</span>____</option>
";
$query = "select no,name,officer_level,city from general where nation='{$nationID}' and officer_level!='12' order by npc,binary(name)";
@@ -484,17 +484,17 @@ if($meLevel >= 5) {
for($i=0; $i < $count; $i++) {
$general = MYDB_fetch_array($result);
if($general['officer_level'] == 2) {
echo "<option style=color:red; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:red; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} elseif($general['officer_level'] > 1) {
echo "<option style=color:orange; data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option style=color:orange; data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
} else {
echo "<option data-officer_level='{$general['officer_level']} data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
echo "<option data-officer_level='{$general['officer_level']}' data-name='{$general['name']}' value={$general['no']}>{$general['name']} 【".CityConst::byID($general['city'])->name."】</option>";
}
}
echo "
</select>
<input class='btn_appoint' type=$btn data-officer_level='2' value=임명>
<input class='btn_appoint' type=$btn data-officer_level='2' data-officer_level_text='{$officerLevelText}' value=임명>
</td>
</tr>
<tr><td colspan=5>※ <font color=red>빨간색</font>은 현재 임명중인 장수, <font color=orange>노란색</font>은 다른 관직에 임명된 장수, 하얀색은 일반 장수를 뜻합니다.</td></tr>
@@ -534,20 +534,21 @@ foreach($db->query('SELECT city,name,level,region,officer4set,officer3set,office
$cityID = $city['city'];
$cityOfficerList = $officerList[$cityID]??[];
?>
<?php if($region != $city['region']): ?>
<tr><td colspan=5 height=3 id=bg1></td></tr>
<tr><td colspan=5 id=bg1><font size=4 color=skyblue> 【 <?=CityConst::$regionMap[$city['region']]?> 】 </font></td></tr>
<?php endif; $region = $city['region']; ?>
<tr>
<td width=78 align=center style='color:<?=$textColor?>;background-color:<?=$nationColor?>;font-size:1.2em;'>【<?=$citylevel[$city['level']]?>】</td>
<td width=78 align=right style='color:<?=$textColor?>;background-color:<?=$nationColor?>;font-size:1.2em;'><?=$city['name']?>&nbsp;&nbsp;</td>
<?php if($region != $city['region']): ?>
<tr><td colspan=5 height=3 id=bg1></td></tr>
<tr><td colspan=5 id=bg1><font size=4 color=skyblue> 【 <?=CityConst::$regionMap[$city['region']]?> 】 </font></td></tr>";
<?php endif; $region = $city['region']; ?>
<?php foreach(Util::range(4, 1, -1) as $officerLevel): ?>
<?php if(key_exists($officerLevel, $cityOfficerList)):
$officer = $cityOfficerList[$officerLevel];
?>
<?=$officer['name']?>(<?=$officer['belong']?>년) 【<?=CityConst::byID($officer['city'])->name?>】
<td><?=$officer['name']?>(<?=$officer['belong']?>년) 【<?=CityConst::byID($officer['city'])->name?>】</td>
<?php else: ?>
-
<td>-</td>
<?php endif; ?>
<?php endforeach; ?>
</tr>
+14
View File
@@ -10,6 +10,9 @@ $tnmt = Util::getReq('tnmt', 'int', 1);
//$detachNPC = Util::getReq('detachNPC', 'bool');
$detachNPC = false;
$showDieImmediatelyBtn = false;
$availableDieImmediately = false;
if ($defence_train <= 60) {
$defence_train = 60;
}
@@ -82,6 +85,17 @@ if (($btn == "설정저장" || $detachNPC) && $myset > 0) {
}
$me->applyDB($db);
if($gameStor->turntime <= $gameStor->opentime){
//서버 가오픈시 할 수 있는 행동
if($me['npc'] == 0){
$showDieImmediatelyBtn = true;
if(addTurn($me['lastrefresh'], $gameStor->turnterm, 2) <= TimeUtil::DatetimeNow()){
$availableDieImmediately = true;
}
}
}
?>
<!DOCTYPE html>
<html>
+1
View File
@@ -1089,6 +1089,7 @@ function checkStatistic() {
}
$nationHists[$nation['type']]++;
}
unset($nation);
$auxData['nations']['all'] = $nations;
+4 -1
View File
@@ -19,7 +19,7 @@ $gameStor->cacheValues(['startyear','year','month','scenario']);
$me = $db->queryFirstRow('SELECT no,nation,officer_level from general where owner=%i', $userID);
$myOfficerLevel = $me['officer_level'];
$nationID = $nationID;
$nationID = $me['nation'];
//수뇌가 아니면 아무것도 할 수 없음
if($myOfficerLevel < 5){
@@ -113,6 +113,7 @@ function do수뇌임명(General $general, int $targetOfficerLevel):?string{
$db->update('nation', [
"l{$targetOfficerLevel}set"=>1,
], 'nation=%i', $nationID);
$general->applyDB($db);
return null;
}
@@ -152,6 +153,7 @@ function do도시임명(General $general, int $cityID, int $targetOfficerLevel):
], 'city=%i AND nation=%i', $cityID, $nationID);
$general->setVar('officer_level', $targetOfficerLevel);
$general->setVar('officer_city', $cityID);
$general->applyDB($db);
return null;
}
@@ -299,6 +301,7 @@ function do추방(General $general, int $myOfficerLevel):?string{
}
$logger->pushGeneralHistoryLog("<D>{$nation['name']}</>에서 추방됨");
$general->applyDB($db);
return null;
}
+8 -8
View File
@@ -118,8 +118,8 @@ $(function(){
var officerLevelText = $btn.data('officer_level_text');
var cityID = 0;
var cityName = '_';
var $generalSelect = $('.genlist_{0} option:selected'.format(officerLevel));
var $citySelect = $('.citylist_{0} option:selected'.format(officerLevel));
var $generalSelect = $('#genlist_{0} option:selected'.format(officerLevel));
var $citySelect = $('#citylist_{0} option:selected'.format(officerLevel));
var generalID = $generalSelect.val();
var generalName = $generalSelect.data('name');
@@ -133,12 +133,12 @@ $(function(){
}
}
else if(generalOfficerLevel >= 5){
if(!confirm('이미 수뇌인 {0} {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))){
if(!confirm('이미 수뇌인 {0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))){
return false;
}
}
else{
if(!confirm('{0} {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))){
if(!confirm('{0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))){
return false;
}
}
@@ -157,12 +157,12 @@ $(function(){
}
}
else if(generalOfficerLevel >= 5){
if(!confirm('수뇌인 {0} {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))){
if(!confirm('수뇌인 {0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))){
return false;
}
}
else{
if(!confirm('{0} {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))){
if(!confirm('{0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))){
return false;
}
}
@@ -187,8 +187,8 @@ $(function(){
return false;
}
if(destGeneralID){
alert('{0} 임명했습니다.'.format(generalName));
if(generalID){
alert('{0}을(를) 임명했습니다.'.format(generalName));
}
else{
alert('관직을 비웠습니다.');
+2 -1
View File
@@ -16,7 +16,7 @@ function processWar(General $attackerGeneral, array $rawAttackerNation, array $r
'capital'=>0,
'level'=>0,
'gold'=>0,
'rice'=>2000,
'rice'=>10000,
'type'=>GameConst::$neutralNationType,
'tech'=>0,
'gennum'=>1
@@ -714,6 +714,7 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
foreach($nearNationsID as $nationNationID){
SetNationFront($nationNationID);
}
SetNationFront($conquerNation);
pushGenLog($general['no'], $log);
pushGeneralPublicRecord($alllog, $year, $month);
+4 -4
View File
@@ -27,14 +27,14 @@ class AutorunNationPolicy {
static $NPC몰수 = 'NPC몰수';
// 군주 행동
static $선 = '선';
static $선전포고 = '선전포고';
static $천도 = '천도';
//실제 행동
static public $defaultPriority = [
'선',
'선전포고',
'천도',
'유저장긴급포상',
@@ -103,8 +103,8 @@ class AutorunNationPolicy {
public $canNPC포상 = true;
public $canNPC몰수 = true;
public $can선 = false;
public $can천도 = false;
public $can선전포고 = true;
public $can천도 = true;
//Policy Variables
public $reqNationGold = 10000;
+2 -4
View File
@@ -47,7 +47,7 @@ class che_출병 extends Command\GeneralCommand{
$general = $this->generalObj;
$this->setCity();
$this->setNation(['war', 'gennum', 'tech', 'gold', 'rice']);
$this->setNation(['war', 'gennum', 'tech', 'gold', 'rice', 'color', 'type', 'level', 'capital']);
$this->setDestCity($this->arg['destCityID'], null);
[$reqGold, $reqRice] = $this->getCost();
@@ -196,9 +196,7 @@ class che_출병 extends Command\GeneralCommand{
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->applyDB($db);
//TODO: 장기적으로 통합해야함
$attackerNation = $db->queryFirstRow('SELECT nation, name, color, type, level, capital, tech, gennum from nation WHERE nation = %i', $attackerNationID);
processWar($general, $attackerNation, $this->destCity);
processWar($general, $this->nation, $this->destCity);
tryUniqueItemLottery($general);
$general->applyDB($db);
+2 -4
View File
@@ -1068,9 +1068,6 @@ class GeneralAI
}
//국고와 '충분한 금액'의 기하평균
$payAmount = sqrt(($enoughMoney - $targetUserGeneral->getVar($resName)) * $resVal);
if($payAmount < $this->nationPolicy->minimumResourceActionAmount){
continue;
}
if ($resVal < $payAmount / 2) {
continue;
@@ -1513,7 +1510,7 @@ class GeneralAI
// 군주 행동
protected function do선(LastTurn $lastTurn): ?NationCommand
protected function do선전포고(LastTurn $lastTurn): ?NationCommand
{
$general = $this->general;
@@ -2843,6 +2840,7 @@ class GeneralAI
}
$nationCities[$cityID] = &$nationCity;
unset($nationCity);
}
$this->nationCities = $nationCities;
+5
View File
@@ -369,4 +369,9 @@ class WarUnit{
//전특, 병종에 따라 필살 데미지가 달라질지도 모르므로 static 함수는 아닌 것으로
return Util::randRange(1.3, 2.0);
}
function applyDB(\MeekroDB $db):bool{
throw new MustNotBeReachedException('Must be WarUnitCity or WarUnitGeneral');
return false;
}
}
+1 -1
View File
@@ -23,7 +23,7 @@ class WarUnitCity extends WarUnit{
$this->logger = $general->getLogger();
$this->crewType = GameUnitConst::byID(GameUnitConst::CREWTYPE_CASTLE);
$this->hp = $this->getVar('def') * 10;
$this->hp = $this->getCityVar('def') * 10;
//수비자 보정
if($this->getCityVar('level') == 1){