gen123 => officer432

This commit is contained in:
2019-10-05 02:45:20 +09:00
parent cd25aaaca6
commit 1e7e01b6b0
27 changed files with 299 additions and 486 deletions
+62 -279
View File
@@ -123,121 +123,50 @@ function getRandGenName() {
function cityInfo() {
function cityInfo(General $generalObj) {
$db = DB::db();
$connect=$db->get();
$userID = Session::getUserID();
$query = "select no,city from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
// 도시 정보
$city = getCity($me['city']);
$city = $generalObj->getRawCity();
$nation = getNationStaticInfo($city['nation']);
$pop = $city['pop'] / $city['pop2'] * 100;
$trust = $city['trust'];
$agri = $city['agri'] / $city['agri2'] * 100;
$comm = $city['comm'] / $city['comm2'] * 100;
$secu = $city['secu'] / $city['secu2'] * 100;
$def = $city['def'] / $city['def2'] * 100;
$wall = $city['wall'] / $city['wall2'] * 100;
if($city['trade'] === null) {
$trade = 0;
$tradeStr = "상인없음";
} else {
$trade = ($city['trade']-95) * 10;
$tradeStr = $city['trade'] . "%";
}
if(!$nation){
$nation = getNationStaticInfo(0);
}
if($nation['color'] == "" ) { $nation['color'] = "#000000"; }
echo "<table style='width:100%;' class='tb_layout bg2'>
<tr><td colspan=8 style=text-align:center;height:20px;color:".newColor($nation['color']).";background-color:{$nation['color']};font-weight:bold;font-size:13px;>【 ".CityConst::$regionMap[$city['region']]." | ".CityConst::$levelMap[$city['level']]."{$city['name']}</td></tr>
<tr><td colspan=8 style=text-align:center;height:20px;color:".newColor($nation['color']).";background-color:{$nation['color']}><b>";
$city['nationName'] = $nation['name'];
$city['nationTextColor'] = newColor($nation['color']);
$city['nationColor'] = $nation['color'];
$city['region'] = CityConst::$regionMap[$city['region']];
$city['level'] = CityConst::$levelMap[$city['level']];
if($city['nation'] == 0) {
echo "공 백 지";
} else {
echo "지배 국가 【 {$nation['name']}";
$officerQuery = [];
$officerName = [
2=>'-',
3=>'-',
4=>'-'
];
if ($city['officer4'] > 0) {
$officerQuery[] = $city['officer4'];
}
if ($city['officer3'] > 0) {
$officerQuery[] = $city['officer3'];
}
if ($city['officer2'] > 0) {
$officerQuery[] = $city['officer2'];
}
if($city['gen1'] > 0) {
$query = "select name from general where no='{$city['gen1']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen1 = MYDB_fetch_array($result);
} else {
$gen1 = ['name'=>'-'];
if($officerQuery){
foreach($db->query('SELECT `level`, `name` FROM general WHERE `no` IN %li', $officerQuery) as $genOfficer){
$officerName[$genOfficer['level']] = $genOfficer['name'];
}
}
$city['officerName'] = $officerName;
if($city['gen2'] > 0) {
$query = "select name from general where no='{$city['gen2']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen2 = MYDB_fetch_array($result);
} else {
$gen2 = ['name'=>'-'];
}
if($city['gen3'] > 0) {
$query = "select name from general where no='{$city['gen3']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gen3 = MYDB_fetch_array($result);
} else {
$gen3 = ['name'=>'-'];
}
echo "
</b></td>
</tr>
<tr>
<td rowspan=2 style='text-align:center;' class='bg1'><b>주민</b></td>
<td height=7 colspan=3>".bar($pop)."</td>
<td rowspan=2 style='text-align:center;' class='bg1'><b>민심</b></td>
<td height=7>".bar($trust)."</td>
<td rowspan=2 style='text-align:center;' class='bg1'><b>태수</b></td>
<td rowspan=2 style='text-align:center;'>{$gen1['name']}</td>
</tr>
<tr>
<td colspan=3 style='text-align:center;'>{$city['pop']}/{$city['pop2']}</td>
<td style='text-align:center;'>".round($city['trust'], 1)."</td>
</tr>
<tr>
<td width=50 rowspan=2 style='text-align:center;' class='bg1'><b>농업</b></td>
<td width=100 height=7>".bar($agri)."</td>
<td width=50 rowspan=2 style='text-align:center;' class='bg1'><b>상업</b></td>
<td width=100 height=7>".bar($comm)."</td>
<td width=50 rowspan=2 style='text-align:center;' class='bg1'><b>치안</b></td>
<td width=100 height=7>".bar($secu)."</td>
<td width=50 rowspan=2 style='text-align:center;' class='bg1'><b>군사</b></td>
<td rowspan=2 style='text-align:center;'>{$gen2['name']}</td>
</tr>
<tr>
<td style='text-align:center;'>{$city['agri']}/{$city['agri2']}</td>
<td style='text-align:center;'>{$city['comm']}/{$city['comm2']}</td>
<td style='text-align:center;'>{$city['secu']}/{$city['secu2']}</td>
</tr>
<tr>
<td rowspan=2 style='text-align:center;' class='bg1'><b>수비</b></td>
<td height=7>".bar($def)."</td>
<td rowspan=2 style='text-align:center;' class='bg1'><b>성벽</b></td>
<td height=7>".bar($wall)."</td>
<td rowspan=2 style='text-align:center;' class='bg1'><b>시세</b></td>
<td height=7>".bar($trade)."</td>
<td rowspan=2 style='text-align:center;' class='bg1'><b>종사</b></td>
<td rowspan=2 style='text-align:center;'>{$gen3['name']}</td>
</tr>
<tr>
<td style='text-align:center;'>{$city['def']}/{$city['def2']}</td>
<td style='text-align:center;'>{$city['wall']}/{$city['wall2']}</td>
<td style='text-align:center;'>{$tradeStr}</td>
</tr>
</table>
";
$templates = new \League\Plates\Engine('templates');
$templates->registerFunction('bar', '\sammo\bar');
return $templates->render('mainCityInfo', $city);
}
function myNationInfo() {
@@ -610,10 +539,6 @@ function chiefCommandTable() {
";
}
function myInfo(General $generalObj) {
generalInfo($generalObj);
}
function generalInfo(General $generalObj) {
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
@@ -651,11 +576,7 @@ function generalInfo(General $generalObj) {
$levelText = getLevelText($generalLevel, $nation['level']);
if(2 <= $generalLevel && $generalLevel <= 4){
$cityOfficerKey = [
2=>'gen3',
3=>'gen2',
4=>'gen1'
][$generalLevel];
$cityOfficerKey = 'officer'.$generalLevel;
$cityOfficerName = $db->queryFirstField('SELECT name FROM city where %b = %i',$cityOfficerKey, $generalObj->getID());
$levelText = "{$cityOfficerName} {$levelText}";
}
@@ -805,42 +726,32 @@ function generalInfo(General $generalObj) {
</table>";
}
function myInfo2() {
$db = DB::db();
$connect=$db->get();
$userID = Session::getUserID();
$query = "select no from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
generalInfo2($me['no']);
}
function generalInfo2($no) {
$db = DB::db();
$connect=$db->get();
$query = "select personal,experience,dedication,firenum,warnum,killnum,deathnum,killcrew,deathcrew,belong,killnum*100/warnum as winrate,killcrew/deathcrew*100 as killrate,dex0,dex10,dex20,dex30,dex40 from general where no='$no'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
function generalInfo2(General $generalObj) {
$general = $generalObj->getRaw();
$general['winrate'] = round($general['winrate'], 2);
$general['killrate'] = round($general['killrate'], 2);
switch($general['personal']) {
case 0: case 1; case 6:
$experience = "<font color=cyan>".getHonor($general['experience'])." ({$general['experience']})</font>"; break;
case 4: case 5: case 7: case 10:
$experience = "<font color=magenta>".getHonor($general['experience'])." ({$general['experience']})</font>"; break;
default:
$experience = getHonor($general['experience'])." ({$general['experience']})"; break;
$experienceBonus = $generalObj->onCalcStat($generalObj, 'experience', 10000) - 10000;
if($experienceBonus > 0){
$experience = "<font color=cyan>".getHonor($general['experience'])." ({$general['experience']})</font>";
}
switch($general['personal']) {
case 10:
$dedication = "<font color=magenta>".getDed($general['dedication'])." ({$general['dedication']})</font>"; break;
default:
$dedication = getDed($general['dedication'])." ({$general['dedication']})"; break;
else if($experienceBonus < 0){
$experience = "<font color=magenta>".getHonor($general['experience'])." ({$general['experience']})</font>";
}
else{
$experience = getHonor($general['experience'])." ({$general['experience']})";
}
$dedicationBonus = $generalObj->onCalcStat($generalObj, 'dedication', 10000) - 10000;
if($dedicationBonus > 0){
$dedication = "<font color=cyan>".getHonor($general['dedication'])." ({$general['dedication']})</font>";
}
else if($dedicationBonus < 0){
$dedication = "<font color=magenta>".getHonor($general['dedication'])." ({$general['dedication']})</font>";
}
else{
$dedication = getHonor($general['dedication'])." ({$general['dedication']})";
}
$dex0 = $general['dex0'] / GameConst::$dexLimit * 100;
@@ -1741,118 +1652,6 @@ function uniqueItem($general, $log, $vote=0) {
return $log;
}
function checkAbilityEx(int $generalID, ActionLogger $actLog){
$db = DB::db();
$general = $db->queryFirstRow('SELECT leadership,leadership2,strength,strength2,intel,intel2 FROM general WHERE no = %i',$generalID);
if(!$general){
return;
}
if($general['leadership2'] < 0){
$db->update('general',[
'leadership2'=>$db->sqleval('leadership2 + %i', GameConst::$upgradeLimit),
'leadership'=>$db->sqleval('leadership - 1')
], 'no=%i', $generalID);
$actLog->pushGeneralActionLog('<R>통솔</>이 <C>1</> 떨어졌습니다!', ActionLogger::PLAIN);
return;
}
if($general['strength2'] < 0){
$db->update('general',[
'strength2'=>$db->sqleval('strength2 + %i', GameConst::$upgradeLimit),
'strength'=>$db->sqleval('strength - 1')
], 'no=%i', $generalID);
$actLog->pushGeneralActionLog('<R>무력</>이 <C>1</> 떨어졌습니다!', ActionLogger::PLAIN);
return;
}
if($general['intel2'] < 0){
$db->update('general',[
'intel2'=>$db->sqleval('intel2 + %i', GameConst::$upgradeLimit),
'intel'=>$db->sqleval('intel - 1')
], 'no=%i', $generalID);
$actLog->pushGeneralActionLog('<R>지력</>이 <C>1</> 떨어졌습니다!', ActionLogger::PLAIN);
return;
}
if($general['leadership2'] >= GameConst::$upgradeLimit){
$db->update('general',[
'leadership2'=>$db->sqleval('leadership2 - %i', GameConst::$upgradeLimit),
'leadership'=>$db->sqleval('leadership + 1')
], 'no=%i', $generalID);
$actLog->pushGeneralActionLog('<S>통솔</>이 <C>1</> 올랐습니다!', ActionLogger::PLAIN);
return;
}
if($general['strength2'] >= GameConst::$upgradeLimit){
$db->update('general',[
'strength2'=>$db->sqleval('strength2 - %i', GameConst::$upgradeLimit),
'strength'=>$db->sqleval('strength + 1')
], 'no=%i', $generalID);
$actLog->pushGeneralActionLog('<S>무력</>이 <C>1</> 올랐습니다!', ActionLogger::PLAIN);
return;
}
if($general['intel2'] >= GameConst::$upgradeLimit){
$db->update('general',[
'intel2'=>$db->sqleval('intel2 - %i', GameConst::$upgradeLimit),
'intel'=>$db->sqleval('intel + 1')
], 'no=%i', $generalID);
$actLog->pushGeneralActionLog('<S>지력</>이 <C>1</> 올랐습니다!', ActionLogger::PLAIN);
return;
}
}
function checkAbility($general, $log) {
$db = DB::db();
$connect=$db->get();
$limit = GameConst::$upgradeLimit;
$query = "select no,leadership,leadership2,strength,strength2,intel,intel2 from general where no='{$general['no']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
if($general['leadership2'] < 0) {
$query = "update general set leadership2='$limit'+leadership2,leadership=leadership-1 where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$log[] = "<C>●</><R>통솔</>이 <C>1</> 떨어졌습니다!";
} elseif($general['leadership2'] >= $limit) {
$query = "update general set leadership2=leadership2-'$limit',leadership=leadership+1 where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$log[] = "<C>●</><S>통솔</>이 <C>1</> 올랐습니다!";
}
if($general['strength2'] < 0) {
$query = "update general set strength2='$limit'+strength2,strength=strength-1 where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$log[] = "<C>●</><R>무력</>이 <C>1</> 떨어졌습니다!";
} elseif($general['strength2'] >= $limit) {
$query = "update general set strength2=strength2-'$limit',strength=strength+1 where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$log[] = "<C>●</><S>무력</>이 <C>1</> 올랐습니다!";
}
if($general['intel2'] < 0) {
$query = "update general set intel2='$limit'+intel2,intel=intel-1 where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$log[] = "<C>●</><R>지력</>이 <C>1</> 떨어졌습니다!";
} elseif($general['intel2'] >= $limit) {
$query = "update general set intel2=intel2-'$limit',intel=intel+1 where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$log[] = "<C>●</><S>지력</>이 <C>1</> 올랐습니다!";
}
return $log;
}
function checkDedication($general, $log) {
$db = DB::db();
$connect=$db->get();
@@ -1901,18 +1700,6 @@ function getAdmin() {
return $gameStor->getAll();
}
function getMe() {
$db = DB::db();
$connect=$db->get();
$userID = Session::getUserID();
$query = "select * from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error("접속자가 많아 접속을 중단합니다. 잠시후 갱신해주세요.<br>getMe : ".MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
return $me;
}
function getCity($city, $sel="*") {
$db = DB::db();
$connect=$db->get();
@@ -1962,9 +1749,9 @@ function deleteNation(General $general) {
$db->update('city', [
'nation'=>0,
'front'=>0,
'gen1'=>0,
'gen2'=>0,
'gen3'=>0,
'officer4'=>0,
'officer3'=>0,
'officer2'=>0,
], 'nation=%i', $nationID);
// 부대 삭제
$db->delete('troop', 'nation=%i', $nationID);
@@ -1997,7 +1784,7 @@ function nextRuler(General $general) {
//npc or npc유저인 경우 후계 찾기
if($general->getVar('npc') > 0) {
$candidate = $db->queryFirstRow(
'SELECT no,name,nation,IF(ABS(affinity-%i)>75,150-ABS(affinity-%i),ABS(affinity-%i)) as npcmatch2 from general where nation=%i and level!=12 and npc>0 order by npcmatch2,rand() LIMIT 1',
'SELECT no,name,nation,level,IF(ABS(affinity-%i)>75,150-ABS(affinity-%i),ABS(affinity-%i)) as npcmatch2 from general where nation=%i and level!=12 and npc>0 order by npcmatch2,rand() LIMIT 1',
$general->getVar('affinity'),
$general->getVar('affinity'),
$nationID
@@ -2005,13 +1792,13 @@ function nextRuler(General $general) {
}
if(!$candidate){
$candidate = $db->queryFirstRow(
'SELECT no,name,npc FROM general WHERE nation=%i and level!= 12 AND level >= 9 ORDER BY level DESC LIMIT 1',
'SELECT no,name,npc,level FROM general WHERE nation=%i and level!= 12 AND level >= 9 ORDER BY level DESC LIMIT 1',
$nationID
);
}
if(!$candidate){
$candidate = $db->queryFirstRow(
'SELECT no,name,npc FROM general WHERE nation=%i and level!= 12 ORDER BY dedication DESC LIMIT 1',
'SELECT no,name,npc,level FROM general WHERE nation=%i and level!= 12 ORDER BY dedication DESC LIMIT 1',
$nationID
);
}
@@ -2031,15 +1818,11 @@ function nextRuler(General $general) {
$db->update('general', [
'level'=>12
], 'no=%i', $nextRulerID);
$db->update('city', [
'gen1'=>0
], 'gen1=%i', $nextRulerID);
$db->update('city', [
'gen2'=>0
], 'gen2=%i', $nextRulerID);
$db->update('city', [
'gen3'=>0
], 'gen3=%i', $nextRulerID);
if(2 <= $candidate['level'] && $candidate['level'] <= 4){
$db->update('city', [
'officer'.$candidate['level']=>0
], "officer{$candidate['level']}=%i", $nextRulerID);
}
$josaYi = JosaUtil::pick($nextRulerName, '이');