Merge commit 'f6eae2274f6d56403c0644829042ce4d72b80ec9' into ng_turn

This commit is contained in:
2019-04-07 23:45:17 +09:00
7 changed files with 100 additions and 70 deletions
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
if($session->userGrade < 5) {
die('권한 부족');
}
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
if(!$gameStor->isunited){
die('아직 천통하지 않았습니다');
}
foreach($db->queryFirstColumn(
'SELECT no FROM general WHERE npc != 0 and age >= %i',
GameConst::$retirementYear
) as $generalNo){
CheckHall($generalNo);
}
+34 -22
View File
@@ -30,6 +30,13 @@ if ($type <= 0 || $type > 15) {
$type = 9; $type = 9;
} }
$ownerNameList = [];
if($gameStor->isunited){
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
$ownerNameList[$ownerID] = $ownerName;
}
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@@ -82,26 +89,26 @@ foreach (getAllNationStaticInfo() as $nation) {
$nationlevel[$nation['nation']] = $nation['level']; $nationlevel[$nation['nation']] = $nation['level'];
} }
switch ($type) { //FIXME: $query 처리 조심.
case 1: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by nation"; break; [$orderKey, $orderDesc] = [
case 2: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by leader desc"; break; 1=>['nation', false],
case 3: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by power desc"; break; 2=>['leader', true],
case 4: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by intel desc"; break; 3=>['power', true],
case 5: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break; 4=>['intel', true],
case 6: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by dedication desc"; break; 5=>['experience', true],
case 7: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by level desc"; break; 6=>['dedication', true],
case 8: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by killturn"; break; 7=>['level', true],
default: 8=>['killturn', false],
case 9: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by connect desc"; break; 9=>['connect', true],
case 10: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break; 10=>['experience', true],
case 11: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by personal"; break; 11=>['personal', true],
case 12: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special desc"; break; 12=>['special', true],
case 13: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special2 desc"; break; 13=>['special2', true],
case 14: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by age desc"; break; 14=>['age', true],
case 15: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by npc desc"; break; 15=>['npc', true],
} ][$type];
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
$gencount = MYDB_num_rows($genresult); $generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by %b %l', $orderKey, $orderDesc?'desc':'');
echo" echo"
<table align=center width=1000 class='tb_layout bg0'> <table align=center width=1000 class='tb_layout bg0'>
@@ -122,8 +129,7 @@ echo"
<td width=45 align=center id=bg1>삭턴</td> <td width=45 align=center id=bg1>삭턴</td>
<td width=70 align=center id=bg1>벌점</td> <td width=70 align=center id=bg1>벌점</td>
</tr>"; </tr>";
for ($j=0; $j < $gencount; $j++) { foreach($generalList as $general){
$general = MYDB_fetch_array($genresult);
$nation = $nationname[$general['nation']]; $nation = $nationname[$general['nation']];
if ($general['level'] == 12) { if ($general['level'] == 12) {
@@ -152,6 +158,8 @@ for ($j=0; $j < $gencount; $j++) {
$intel = "{$general['intel']}"; $intel = "{$general['intel']}";
} }
if ($general['npc'] >= 2) { if ($general['npc'] >= 2) {
$name = "<font color=cyan>{$general['name']}</font>"; $name = "<font color=cyan>{$general['name']}</font>";
} elseif ($general['npc'] == 1) { } elseif ($general['npc'] == 1) {
@@ -160,6 +168,10 @@ for ($j=0; $j < $gencount; $j++) {
$name = "{$general['name']}"; $name = "{$general['name']}";
} }
if(key_exists($general['owner'], $ownerNameList)){
$name = $name.'<br><small>('.$ownerNameList[$general['owner']].')</small>';
}
$general['connect'] = Util::round($general['connect'] / 10) * 10; $general['connect'] = Util::round($general['connect'] / 10) * 10;
$imageTemp = GetImageURL($general['imgsvr']); $imageTemp = GetImageURL($general['imgsvr']);
+34 -44
View File
@@ -14,6 +14,7 @@ $session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID(); $userID = Session::getUserID();
$db = DB::db(); $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get(); $connect=$db->get();
increaseRefresh("세력장수", 1); increaseRefresh("세력장수", 1);
@@ -29,6 +30,14 @@ if($me['level'] == 0) {
$sel = [$type => "selected"]; $sel = [$type => "selected"];
$ownerNameList = [];
if($gameStor->isunited){
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
$ownerNameList[$ownerID] = $ownerName;
}
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@@ -74,48 +83,26 @@ $sel = [$type => "selected"];
<?php <?php
$nationLevel = DB::db()->queryFirstField('select level from nation where nation = %i', $me['nation']); $nationLevel = DB::db()->queryFirstField('select level from nation where nation = %i', $me['nation']);
$orderByText = '';//FIXME: 쿼리 재작성
switch($type) { [$orderKey, $orderDesc] = [
case 1: $orderByText = " order by level desc"; break; 1=>['level', true],
case 2: $orderByText = " order by dedication desc"; break; 2=>['dedication', true],
case 3: $orderByText = " order by experience desc"; break; 3=>['experience', true],
case 4: $orderByText = " order by leader desc"; break; 4=>['leader', true],
case 5: $orderByText = " order by power desc"; break; 5=>['power', true],
case 6: $orderByText = " order by intel desc"; break; 6=>['intel', true],
case 7: $orderByText = " order by gold desc"; break; 7=>['gold', true],
case 8: $orderByText = " order by rice desc"; break; 8=>['rice', true],
case 9: $orderByText = " order by crew desc"; break; 9=>['crew', true],
case 10: $orderByText = " order by connect desc"; break; 10=>['connect', true],
case 11: $orderByText = " order by personal"; break; 11=>['personal', true],
case 12: $orderByText = " order by special desc"; break; 12=>['special', true],
case 13: $orderByText = " order by special2 desc"; break; 13=>['special2', true],
case 14: $orderByText = " order by belong desc"; break; 14=>['belong', true],
case 15: $orderByText = " order by npc desc"; break; 15=>['npc', true],
} ][$type];
$query =
"select $generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect,gold,rice,crew,belong from general where nation = %i order by %b %l', $me['nation'], $orderKey, $orderDesc?'desc':'');
npc,
special,
special2,
personal,
picture,
imgsvr,
name,
level,
dedication,
experience,
injury,
leader,
power,
intel,
gold,
rice,
belong,
connect,
killturn
from general where nation='{$me['nation']}' ".$orderByText;
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$gencount = MYDB_num_rows($genresult);
echo" echo"
<table align=center class='tb_layout bg0'> <table align=center class='tb_layout bg0'>
@@ -136,8 +123,7 @@ echo"
<td width=48 align=center id=bg1>사 관</td> <td width=48 align=center id=bg1>사 관</td>
<td width=70 align=center id=bg1>벌점</td> <td width=70 align=center id=bg1>벌점</td>
</tr>"; </tr>";
for($j=0; $j < $gencount; $j++) { foreach($generalList as $general){
$general = MYDB_fetch_array($genresult);
if($general['level'] == 12) { if($general['level'] == 12) {
$lbonus = $nationLevel * 2; $lbonus = $nationLevel * 2;
@@ -169,6 +155,10 @@ for($j=0; $j < $gencount; $j++) {
elseif($general['npc'] == 1) { $name = "<font color=skyblue>{$general['name']}</font>"; } elseif($general['npc'] == 1) { $name = "<font color=skyblue>{$general['name']}</font>"; }
else { $name = "{$general['name']}"; } else { $name = "{$general['name']}"; }
if(key_exists($general['owner'], $ownerNameList)){
$name = $name.'<br><small>('.$ownerNameList[$general['owner']].')</small>';
}
$imageTemp = GetImageURL($general['imgsvr']); $imageTemp = GetImageURL($general['imgsvr']);
echo " echo "
<tr> <tr>
+1 -1
View File
@@ -1495,7 +1495,7 @@ function CheckHall($no) {
'value'=>$general[$typeName]??0, 'value'=>$general[$typeName]??0,
'aux'=>$jsonAux 'aux'=>$jsonAux
], ],
'server_id = %s AND scenario = %i AND general_no = %i AND type = %i AND value < %?', 'server_id = %s AND scenario = %i AND general_no = %i AND type = %i AND value < %d',
UniqueConst::$serverID, UniqueConst::$serverID,
$scenarioIdx, $scenarioIdx,
$no, $no,
+5 -1
View File
@@ -309,9 +309,13 @@ function process_29(&$general) {
$gen_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc <= 2 AND nation = %i', $general['nation']); $gen_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc <= 2 AND nation = %i', $general['nation']);
$npc_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE 3 <= npc AND npc <= 4 AND nation = %i', $general['nation']); $npc_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE 3 <= npc AND npc <= 4 AND nation = %i', $general['nation']);
$nation_cnt = $db->queryFirstField('SELECT count(`nation`) FROM nation WHERE `level` > 0');
$curr_cnt = Util::toInt($total_gen_cnt + $total_npc_cnt / 2); $curr_cnt = Util::toInt($total_gen_cnt + $total_npc_cnt / 2);
$remain_slot = $max_gen_cnt - $curr_cnt; $remain_slot = $max_gen_cnt - $curr_cnt;
$avg_cnt = $curr_cnt / $nation_cnt;
$found_prop_main = pow($remain_slot / $max_gen_cnt, 6); $found_prop_main = pow($remain_slot / $max_gen_cnt, 6);
$found_prop_small = 1 / ($total_npc_cnt / 3 + 1); $found_prop_small = 1 / ($total_npc_cnt / 3 + 1);
$found_prop_big = 1 / $max_gen_cnt; $found_prop_big = 1 / $max_gen_cnt;
@@ -355,7 +359,7 @@ function process_29(&$general) {
$name = "{$name}{$count}"; $name = "{$name}{$count}";
} }
$join_prop = 0.3 + 0.7 * (($gen_cnt + $npc_cnt / 2) / $curr_cnt); $join_prop = 0.55 * $avg_cnt / ($gen_cnt + $npc_cnt / 2);
if($nation['scout'] != 0 || !Util::randBool($join_prop)) { if($nation['scout'] != 0 || !Util::randBool($join_prop)) {
$scoutType = "발견"; $scoutType = "발견";
-2
View File
@@ -26,8 +26,6 @@ define('STEP_LOG', true);
define('PROCESS_LOG', true); define('PROCESS_LOG', true);
ob_start(); ob_start();
session_cache_limiter('nocache');//NOTE: 캐시가 가능하도록 설정해야 할 수도 있음. 주의!
//FIXME: 이곳에서 설정하면 안될 듯 하다. 옮기자.
// 에러 메세지 출력 // 에러 메세지 출력
function Error($message='', $url="") function Error($message='', $url="")
+1
View File
@@ -21,6 +21,7 @@ class WebUtil
{ {
if (!headers_sent()) { if (!headers_sent()) {
header('Expires: Wed, 01 Jan 2014 00:00:00 GMT'); header('Expires: Wed, 01 Jan 2014 00:00:00 GMT');
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false); header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache'); header('Pragma: no-cache');