토너먼트값, 전투, 계략값을 분리
This commit is contained in:
@@ -24,8 +24,6 @@ $btn = Util::getReq('btn');
|
||||
$minute = Util::getReq('minute', 'int');
|
||||
$minute2 = Util::getReq('minute2', 'int');
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
switch($btn) {
|
||||
|
||||
@@ -30,8 +30,6 @@ $maxgeneral = Util::getReq('maxgeneral', 'int', GameConst::$defaultMaxGeneral);
|
||||
$maxnation = Util::getReq('maxnation', 'int', GameConst::$defaultMaxNation);
|
||||
$startyear = Util::getReq('startyear', 'int', GameConst::$defaultStartYear);
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
|
||||
@@ -9,8 +9,6 @@ $item = Util::getReq('item', 'string');
|
||||
$genlist = Util::getReq('genlist', 'array_int');
|
||||
$msg = Util::getReq('msg', 'string');
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireLogin()->loginGame()->setReadOnly();
|
||||
|
||||
|
||||
@@ -15,8 +15,6 @@ $btn = Util::getReq('btn');
|
||||
$genlist = Util::getReq('genlist', 'array_int');
|
||||
$msg = Util::getReq('msg','string', '메시지');
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
//NOTE: 왜 기능이 admin2와 admin4가 같이 있는가?
|
||||
|
||||
@@ -14,8 +14,6 @@ if($type2 < 0 || $type2 > 6){
|
||||
$type2 = 0;
|
||||
}
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
|
||||
|
||||
@@ -7,8 +7,6 @@ include "func.php";
|
||||
$btn = Util::getReq('btn');
|
||||
$nation = Util::getReq('nation', 'int');
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
@@ -8,7 +8,6 @@ $type = Util::getReq('type', 'int', 0);
|
||||
if($type < 0 || $type > 4){
|
||||
$type = 0;
|
||||
}
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
|
||||
+61
-36
@@ -6,14 +6,31 @@ include "func.php";
|
||||
|
||||
$btn = Util::getReq('btn');
|
||||
$gen = Util::getReq('gen', 'int', 0);
|
||||
$type = Util::getReq('type', 'int', 0);
|
||||
$reqQueryType = Util::getReq('query_type', 'string', null);
|
||||
|
||||
if($type < 0 || $type > 3){
|
||||
$type = 0;
|
||||
// $queryTypeText, $reqArgType(0=>None, 1=>AdditionalColumn, 2=>rankVal, 3=>aux), $comp
|
||||
$queryMap = [
|
||||
'turntime' => ['최근턴', 0, function($lhs, $rhs){
|
||||
return -($lhs['turntime']<=>$rhs['turntime']);
|
||||
}],
|
||||
'recwar' => ['최근전투', 1, function($lhs, $rhs){
|
||||
return -($lhs['recwar']<=>$rhs['recwar']);
|
||||
}],
|
||||
'name' => ['장수명', 0, function($lhs, $rhs){
|
||||
if($lhs['npc'] !== $rhs['npc']){
|
||||
return $lhs['npc']<=>$rhs['npc'];
|
||||
}
|
||||
return $lhs['name']<=>$rhs['name'];
|
||||
}],
|
||||
'warnum' => ['전투수', 1, function($lhs, $rhs){
|
||||
return -($lhs['warnum']<=>$rhs['warnum']);
|
||||
}]
|
||||
];
|
||||
|
||||
if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
|
||||
$reqQueryType = Util::array_first_key($queryMap);
|
||||
}
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
|
||||
@@ -45,7 +62,39 @@ if($btn == '정렬하기') {
|
||||
$gen = 0;
|
||||
}
|
||||
|
||||
$sel[$type] = "selected";
|
||||
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
|
||||
if($reqArgType===0){
|
||||
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime FROM general');
|
||||
}
|
||||
else if($reqArgType===1){
|
||||
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime, %b FROM general', $reqQueryType);
|
||||
}
|
||||
else if($reqArgType===2){
|
||||
$generalBasicList = $db->query('SELECT no, name, nation, npc, turntime, value as %b
|
||||
FROM general LEFT JOIN rank_data
|
||||
ON general.no = rank_data.general_id
|
||||
WHERE rank_data.type = %b',
|
||||
$reqQueryType, $reqQueryType
|
||||
);
|
||||
}
|
||||
else if($reqArgType===3){
|
||||
$generalBasicList = array_map(function($arr){
|
||||
$arr['aux'] = Json::decode($arr['aux']);
|
||||
return $arr;
|
||||
}, $db->query('SELECT no, name, nation, npc, turntime, aux FROM general'));
|
||||
}
|
||||
else{
|
||||
throw new \sammo\MustNotBeReachedException();
|
||||
}
|
||||
|
||||
usort($generalBasicList, $comp);
|
||||
|
||||
if(!$gen){
|
||||
$gen = $generalBasicList[0]['no'];
|
||||
}
|
||||
|
||||
$generalObj = General::createGeneralObjFromDB($gen);
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -64,40 +113,16 @@ $sel[$type] = "selected";
|
||||
<form name=form1 method=post>
|
||||
정렬순서 :
|
||||
<select name=type size=1>
|
||||
<option <?=$sel[0]??''?> value=0>최근턴</option>
|
||||
<option <?=$sel[1]??''?> value=1>최근전투</option>
|
||||
<option <?=$sel[2]??''?> value=2>장수명</option>
|
||||
<option <?=$sel[3]??''?> value=3>전투수</option>
|
||||
<?php foreach($queryMap as $queryType => [$queryTypeText,]): ?>
|
||||
<option <?=$queryKey==$reqQueryType?'selected':''?> value='<?=$queryKey?>'><?=$queryTypeText?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<input type=submit name=btn value='정렬하기'>
|
||||
대상장수 :
|
||||
<select name=gen size=1>
|
||||
<?php
|
||||
switch($type) {
|
||||
case 0: $query = "select no,name,nation,turntime from general order by turntime desc"; break;
|
||||
case 1: $query = "select no,name,nation,turntime from general order by recwar desc"; break;
|
||||
case 2: $query = "select no,name,nation,turntime from general order by npc,binary(name)"; break;
|
||||
case 3: $query = "select no,name,nation,turntime from general order by warnum desc"; break;
|
||||
}
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($result);
|
||||
|
||||
for($i=0; $i < $gencount; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
|
||||
// 선택 없으면 맨 처음 장수
|
||||
if($gen == 0) {
|
||||
$gen = $general['no'];
|
||||
}
|
||||
|
||||
$selected = $gen == $general['no']?'selected':'';
|
||||
$nationName = getNationStaticInfo($general['nation'])['name'];
|
||||
$turntime = substr($general['turntime'], 11, 10);
|
||||
echo "<option {$selected} value={$general['no']}>{$nationName} - {$general['name']} ($turntime)</option>\n";
|
||||
|
||||
}
|
||||
$generalObj = General::createGeneralObjFromDB($gen);
|
||||
?>
|
||||
<?php foreach($generalBasicList as $general): ?>
|
||||
<option <?=$gen==$general['no']?'selected':''?>><?=getNationStaticInfo($general['nation'])['name']?> - <?=$general['name']?> (<?=$general['turntime']?>)</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<input type=submit name=btn value='조회하기'>
|
||||
</form>
|
||||
|
||||
@@ -8,8 +8,6 @@ $btn = Util::getReq('btn');
|
||||
$gen = Util::getReq('gen', 'int', 0);
|
||||
$type = 0;
|
||||
|
||||
extractMissingPostToGlobals();
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
|
||||
|
||||
+14
-10
@@ -161,7 +161,15 @@ $types = [
|
||||
}],
|
||||
];
|
||||
|
||||
$generals = array_map(function($general) use($nationColor, $nationName) {
|
||||
$generals = [];
|
||||
foreach($db->query(
|
||||
"SELECT nation,no,name,name2 as owner_name, owner, picture, imgsvr,
|
||||
experience, dedication,
|
||||
dex0, dex10, dex20, dex30, dex40,
|
||||
horse, weapon, book, item
|
||||
FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2") as $general
|
||||
){
|
||||
$generalID = $general['no'];
|
||||
$general['bgColor'] = $nationColor[$general['nation']]??GameConst::$basecolor4;
|
||||
$general['fgColor'] = newColor($general['bgColor']);
|
||||
$general['nationName'] = $nationName[$general['nation']];
|
||||
@@ -174,16 +182,12 @@ $generals = array_map(function($general) use($nationColor, $nationName) {
|
||||
$general['pictureFullPath'] = GetImageURL(0)."/default.jpg";
|
||||
}
|
||||
|
||||
return $general;
|
||||
}, $db->query(
|
||||
"SELECT nation,no,name,name2 as owner_name, owner, picture, imgsvr,
|
||||
experience, dedication, firenum, warnum, killnum, killcrew, deathcrew,
|
||||
dex0, dex10, dex20, dex30, dex40,
|
||||
ttw, ttd, ttl, tlw, tld, tll, tpw, tpd, tpl, tiw, tid, til,
|
||||
betgold, betwin, betwingold,
|
||||
horse, weapon, book, item
|
||||
FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2"));
|
||||
$generals[$generalID] = $general;
|
||||
}
|
||||
|
||||
foreach($db->queryAllLists('SELECT general_id, `type`, `value` FROM rank_data') as [$generalID, $typeKey, $value]){
|
||||
$generals[$generalID][$typeKey] = $value;
|
||||
}
|
||||
|
||||
$templates = new \League\Plates\Engine('templates');
|
||||
|
||||
|
||||
+66
-39
@@ -10,12 +10,37 @@ $v->rule('required', 'gen')
|
||||
|
||||
$btn = Util::getReq('btn');
|
||||
$gen = Util::getReq('gen', 'int', 0);
|
||||
$type = Util::getReq('type', 'int', 0);
|
||||
$reqQueryType = Util::getReq('query_type', 'string', null);
|
||||
|
||||
if ($type < 0 || $type > 3) {
|
||||
$type = 0;
|
||||
// $queryTypeText, $reqArgType(0=>None, 1=>AdditionalColumn, 2=>rankVal, 3=>aux), $comp
|
||||
$queryMap = [
|
||||
'turntime' => ['최근턴', 0, function($lhs, $rhs){
|
||||
return -($lhs['turntime']<=>$rhs['turntime']);
|
||||
}],
|
||||
'recwar' => ['최근전투', 1, function($lhs, $rhs){
|
||||
return -($lhs['recwar']<=>$rhs['recwar']);
|
||||
}],
|
||||
'name' => ['장수명', 0, function($lhs, $rhs){
|
||||
if($lhs['npc'] !== $rhs['npc']){
|
||||
return $lhs['npc']<=>$rhs['npc'];
|
||||
}
|
||||
return $lhs['name']<=>$rhs['name'];
|
||||
}],
|
||||
'warnum' => ['전투수', 1, function($lhs, $rhs){
|
||||
return -($lhs['warnum']<=>$rhs['warnum']);
|
||||
}]
|
||||
];
|
||||
|
||||
if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
|
||||
$reqQueryType = Util::array_first_key($queryMap);
|
||||
}
|
||||
|
||||
|
||||
if($reqQueryType === null || !key_exists($reqQueryType, $queryMap)){
|
||||
$reqQueryType = Util::array_first_key($queryMap);
|
||||
}
|
||||
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
@@ -66,9 +91,39 @@ if ($btn == '정렬하기') {
|
||||
$gen = 0;
|
||||
}
|
||||
|
||||
$sel = [];
|
||||
$sel[$type] = "selected";
|
||||
|
||||
[$queryTypeText, $reqArgType, $comp] = $queryMap[$reqQueryType];
|
||||
if($reqArgType===0){
|
||||
$generalBasicList = $db->query('SELECT no, name, npc, turntime FROM general');
|
||||
}
|
||||
else if($reqArgType===1){
|
||||
$generalBasicList = $db->query('SELECT no, name, npc, turntime, %b FROM general', $reqQueryType);
|
||||
}
|
||||
else if($reqArgType===2){
|
||||
$generalBasicList = $db->query('SELECT no, name, npc, turntime, value as %b
|
||||
FROM general LEFT JOIN rank_data
|
||||
ON general.no = rank_data.general_id
|
||||
WHERE rank_data.type = %b',
|
||||
$reqQueryType, $reqQueryType
|
||||
);
|
||||
}
|
||||
else if($reqArgType===3){
|
||||
$generalBasicList = array_map(function($arr){
|
||||
$arr['aux'] = Json::decode($arr['aux']);
|
||||
return $arr;
|
||||
}, $db->query('SELECT no, name, npc, turntime, aux FROM general'));
|
||||
}
|
||||
else{
|
||||
throw new \sammo\MustNotBeReachedException();
|
||||
}
|
||||
|
||||
|
||||
usort($generalBasicList, $comp);
|
||||
|
||||
if(!$gen){
|
||||
$gen = $generalBasicList[0]['no'];
|
||||
}
|
||||
$showGeneral = General::createGeneralObjFromDB($gen);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -94,44 +149,16 @@ $sel[$type] = "selected";
|
||||
<form name=form1 method=post>
|
||||
정렬순서 :
|
||||
<select name=type size=1>
|
||||
<option <?=$sel[0]??''?> value=0>최근턴</option>
|
||||
<option <?=$sel[1]??''?> value=1>최근전투</option>
|
||||
<option <?=$sel[2]??''?> value=2>장수명</option>
|
||||
<option <?=$sel[3]??''?> value=3>전투수</option>
|
||||
<?php foreach($queryMap as $queryType => [$queryTypeText,]): ?>
|
||||
<option <?=$queryKey==$reqQueryType?'selected':''?> value='<?=$queryKey?>'><?=$queryTypeText?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<input type=submit name=btn value='정렬하기'>
|
||||
대상장수 :
|
||||
<select name=gen size=1>
|
||||
<?php
|
||||
$orderBy = '';
|
||||
switch ($type) {
|
||||
default:
|
||||
case 0: $orderBy = 'order by turntime desc'; break;
|
||||
case 1: $orderBy = 'order by recwar desc'; break;
|
||||
case 2: $orderBy = 'order by npc,binary(name)'; break;
|
||||
case 3: $orderBy = 'order by warnum desc'; break;
|
||||
}
|
||||
|
||||
$generals = $db->query('SELECT no,name,npc FROM general WHERE nation = %i %l', $me['nation'], $orderBy);
|
||||
$npc = 0;
|
||||
foreach($generals as $general){
|
||||
// 선택 없으면 맨 처음 장수
|
||||
if ($gen == 0) {
|
||||
$gen = $general['no'];
|
||||
}
|
||||
if($gen == $general['no']){
|
||||
$npc = $general['npc'];
|
||||
}
|
||||
if ($gen == $general['no']) {
|
||||
echo "
|
||||
<option selected value={$general['no']}>{$general['name']}</option>";
|
||||
} else {
|
||||
echo "
|
||||
<option value={$general['no']}>{$general['name']}</option>";
|
||||
}
|
||||
}
|
||||
$showGeneral = General::createGeneralObjFromDB($gen);
|
||||
?>
|
||||
<?php foreach($generalBasicList as $general): ?>
|
||||
<option <?=$gen==$general['no']?'selected':''?>><?=$general['name']?> (<?=$general['turntime']?>)</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<input type=submit name=btn value='조회하기'>
|
||||
</form>
|
||||
|
||||
+18
-24
@@ -14,15 +14,18 @@ $connect=$db->get();
|
||||
increaseRefresh("베팅장", 1);
|
||||
TurnExecutionHelper::executeAllCommand();
|
||||
|
||||
$query = "select no,tournament,con,turntime,bet0+bet1+bet2+bet3+bet4+bet5+bet6+bet7+bet8+bet9+bet10+bet11+bet12+bet13+bet14+bet15 as bet from general where owner='{$userID}'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
||||
$me = MYDB_fetch_array($result);
|
||||
$generalID = $session->generalID;
|
||||
|
||||
$admin = $gameStor->getValues(['tournament','phase','tnmt_type','develcost','bet0','bet1','bet2','bet3','bet4','bet5','bet6','bet7','bet8','bet9','bet10','bet11','bet12','bet13','bet14','bet15']);
|
||||
$admin['bet'] =
|
||||
$admin['bet0'] + $admin['bet1'] + $admin['bet2'] + $admin['bet3'] + $admin['bet4'] +
|
||||
$admin['bet5'] + $admin['bet6'] + $admin['bet7'] + $admin['bet8'] + $admin['bet9'] +
|
||||
$admin['bet10'] + $admin['bet11'] + $admin['bet12'] + $admin['bet13'] + $admin['bet14'] + $admin['bet15'];
|
||||
//NOTE: general_id만 빼기 귀찮음.
|
||||
$myBet = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = %i', $generalID), -16);
|
||||
$globalBet = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = 0'), -16);
|
||||
|
||||
$me = $db->queryFirstRow('SELECT no,tournament,con,turntime from general where owner=%i', $userID);
|
||||
|
||||
$myBetTotal = array_sum($myBet);
|
||||
$globalBetTotal = array_sum($globalBet);
|
||||
|
||||
$admin = $gameStor->getValues(['tournament','phase','tnmt_type','develcost']);
|
||||
|
||||
$con = checkLimit($me['con']);
|
||||
if ($con >= 2) {
|
||||
@@ -62,6 +65,7 @@ if($str3){
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printJS('js/betting.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
@@ -74,7 +78,7 @@ if($str3){
|
||||
<table align=center width=1120 class='tb_layout bg0'>
|
||||
<tr><td colspan=16><input type=button value='갱신' onclick='location.reload()'></td></tr>
|
||||
<tr><td colspan=16 align=center><font color=white size=6><?=$tnmt_type?> (<?=$str1.$str2.$str3?>)</font></td></tr>
|
||||
<tr><td height=50 colspan=16 align=center id=bg2><font color=limegreen size=6>16강 상황</font><br><font color=orange size=3>(전체 금액 : <?=$admin['bet']?> / 내 투자 금액 : <?=$me['bet']?>)</font></td></tr>
|
||||
<tr><td height=50 colspan=16 align=center id=bg2><font color=limegreen size=6>16강 상황</font><br><font color=orange size=3>(전체 금액 : <?=$globalBetTotal?> / 내 투자 금액 : <?=$myBetTotal?>)</font></td></tr>
|
||||
</table>
|
||||
<table align=center width=1120 class='mimic_flex bg0' style='border:solid 1px gray;font-size:10px;'>
|
||||
<tr align=center><td height=10 colspan=16></td></tr>
|
||||
@@ -282,23 +286,16 @@ for ($i=0; $i < 16; $i++) {
|
||||
echo "<td width=70>{$gen[$i]}</td>";
|
||||
}
|
||||
|
||||
$query = "select bet0,bet1,bet2,bet3,bet4,bet5,bet6,bet7,bet8,bet9,bet10,bet11,bet12,bet13,bet14,bet15 from general where owner='{$userID}'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
||||
$me = MYDB_fetch_array($result);
|
||||
$myBet = [];
|
||||
$bet = [];
|
||||
$gold = [];
|
||||
|
||||
for ($i=0; $i < 16; $i++) {
|
||||
$myBet[$i] = $me["bet{$i}"];
|
||||
}
|
||||
|
||||
for ($i=0; $i < 16; $i++) {
|
||||
if($admin["bet{$i}"] == 0){
|
||||
if($globalBet[$i] == 0){
|
||||
$bet[$i] = "∞";
|
||||
}
|
||||
else{
|
||||
$bet[$i] = round($admin['bet'] / $admin["bet{$i}"], 2);
|
||||
$bet[$i] = round($globalBetTotal / $globalBet[$i], 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,13 +349,12 @@ echo "
|
||||
|
||||
if ($admin['tournament'] == 6) {
|
||||
echo "
|
||||
<form method=post action=c_betting.php>
|
||||
<tr align=center>";
|
||||
|
||||
for ($i=0; $i < 16; $i++) {
|
||||
echo "
|
||||
<td>
|
||||
<select size=1 name=gold{$i} style=color:white;background-color:black;>
|
||||
<select size=1 id='target_{$i}' style=color:white;background-color:black;>
|
||||
<option style=color:white; value=10>금10</option>
|
||||
<option style=color:white; value=20>금20</option>
|
||||
<option style=color:white; value=50>금50</option>
|
||||
@@ -376,12 +372,10 @@ if ($admin['tournament'] == 6) {
|
||||
|
||||
for ($i=0; $i < 16; $i++) {
|
||||
echo "
|
||||
<td><input type=submit name=btn{$i} value=베팅! style=width:100%;color:white;background-color:black;></td>";
|
||||
<td><input type=button class='submitBtn' data-target='{$i}' value=베팅! style=width:100%;color:white;background-color:black;></td>";
|
||||
}
|
||||
|
||||
echo "
|
||||
</tr>
|
||||
</form>";
|
||||
echo "</tr>";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
+24
-36
@@ -116,12 +116,26 @@ for($i=12; $i >= $lv; $i--) {
|
||||
$level[$levels['level']] = $levels;
|
||||
}
|
||||
|
||||
$query = "select name,picture,killnum from general where nation='{$nation['nation']}' order by killnum desc limit 5"; // 오호장군
|
||||
$tigerresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
$query = "select name,picture,firenum from general where nation='{$nation['nation']}' order by firenum desc limit 7"; // 건안칠자
|
||||
$eagleresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$tigers = $db->query('SELECT value, name
|
||||
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
||||
WHERE rank_data.nation_id = %i AND rank_data.type = "warnum" AND value > 0 ORDER BY value DESC LIMIT 5',
|
||||
$nation['nation']
|
||||
);// 오호장군
|
||||
$tigerstr = join(', ', array_map(function($arr){
|
||||
$number = number_format($arr['value']);
|
||||
return "{$arr['name']}【{$number}】";
|
||||
}, $tigers));
|
||||
|
||||
$eagles = $db->query('SELECT value, name
|
||||
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
||||
WHERE rank_data.nation_id = %i AND rank_data.type = "firenum" AND value > 0 ORDER BY value DESC LIMIT 7',
|
||||
$nation['nation']
|
||||
);// 건안칠자
|
||||
$eaglestr = join(', ', array_map(function($arr){
|
||||
$number = number_format($arr['value']);
|
||||
return "{$arr['name']}【{$number}】";
|
||||
}, $eagles));
|
||||
|
||||
echo "
|
||||
<table align=center width=1000 class='tb_layout bg0'>
|
||||
@@ -147,40 +161,14 @@ for($i=12; $i >= $lv; $i-=2) {
|
||||
<?php
|
||||
}
|
||||
|
||||
echo "
|
||||
<tr>
|
||||
<td width=98 align=center id=bg1>오호장군【승전】</td>
|
||||
<td colspan=5>
|
||||
";
|
||||
|
||||
$tigernum = MYDB_num_rows($tigerresult);
|
||||
for($i=0; $i < $tigernum; $i++) {
|
||||
$tiger = MYDB_fetch_array($tigerresult);
|
||||
|
||||
if($tiger['killnum'] > 0) {
|
||||
echo "{$tiger['name']}【{$tiger['killnum']}】, ";
|
||||
}
|
||||
}
|
||||
|
||||
echo "
|
||||
</td>
|
||||
?>
|
||||
<tr>
|
||||
<td width=98 align=center id=bg1>오호장군【승전】</td>
|
||||
<td colspan=5><?=$tigerstr?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width=98 align=center id=bg1>건안칠자【계략】</td>
|
||||
<td colspan=5>
|
||||
";
|
||||
|
||||
$eaglenum = MYDB_num_rows($eagleresult);
|
||||
for($i=0; $i < $eaglenum; $i++) {
|
||||
$eagle = MYDB_fetch_array($eagleresult);
|
||||
|
||||
if($eagle['firenum'] > 0) {
|
||||
echo "{$eagle['name']}【{$eagle['firenum']}】, ";
|
||||
}
|
||||
}
|
||||
|
||||
echo "
|
||||
</td>
|
||||
<td colspan=5><?=$eaglestr?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table align=center width=1000 class='tb_layout bg0'>
|
||||
@@ -190,7 +178,7 @@ echo "
|
||||
<tr>
|
||||
<td width=498 align=right id=bg1>대상 장수</td>
|
||||
<td width=498>
|
||||
";
|
||||
<?php
|
||||
|
||||
if($meLevel >= 5 && $nation["l{$meLevel}set"] == 0) {
|
||||
echo "
|
||||
|
||||
@@ -394,19 +394,16 @@ for ($i=0; $i < 16; $i++) {
|
||||
|
||||
echo"
|
||||
</tr>";
|
||||
|
||||
$betting = $gameStor->getValues(['tournament','bet0','bet1','bet2','bet3','bet4','bet5','bet6','bet7','bet8','bet9','bet10','bet11','bet12','bet13','bet14','bet15']);
|
||||
$betting['bet'] = 0;
|
||||
for($i=0;$i<16;$i+=1){
|
||||
$betting['bet'] += $betting['bet'.$i];
|
||||
}
|
||||
$globalBet = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = 0'), -16);
|
||||
$globalBetTotal = array_sum($globalBet);
|
||||
$admin = $gameStor->getValues(['tournament', 'phase']);
|
||||
$bet = [];
|
||||
for ($i=0; $i < 16; $i++) {
|
||||
if($betting["bet{$i}"] == 0){
|
||||
if($globalBet[$i] == 0){
|
||||
$bet[$i] = '∞';
|
||||
continue;
|
||||
}
|
||||
$bet[$i] = round($betting['bet'] / $betting["bet{$i}"], 2);
|
||||
$bet[$i] = round($globalBetTotal / $globalBet[$i], 2);
|
||||
}
|
||||
|
||||
echo "
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
|
||||
// $btn0~15, $gold0~15
|
||||
|
||||
//FIXME: 으악!!!!! 왜?! idx를 지정하고 gold를 지정하라고!
|
||||
$betTarget = -1;
|
||||
$betGold = -1;
|
||||
for($i=0;$i<16;$i++){
|
||||
$textBtn = "btn{$i}";
|
||||
$textGold = "gold{$i}";
|
||||
$btn = Util::getReq($textBtn);
|
||||
$gold = Util::getReq($textGold, 'int');
|
||||
if($btn === "베팅!" && $gold){
|
||||
$betTarget = $i;
|
||||
$betGold = $gold;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($betGold == -1){
|
||||
extractMissingPostToGlobals();
|
||||
}
|
||||
|
||||
|
||||
if($betTarget < 0 || $betGold < 10 || $betGold > 1000){
|
||||
header('Location: b_betting.php');
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
increaseRefresh("베팅", 1);
|
||||
|
||||
$tournament = $gameStor->tournament;
|
||||
if($tournament != 6) {
|
||||
header('Location: b_betting.php');
|
||||
exit();
|
||||
}
|
||||
|
||||
$bets = $db->queryFirstList('SELECT bet0,bet1,bet2,bet3,bet4,bet5,bet6,bet7,bet8,bet9,bet10,bet11,bet12,bet13,bet14,bet15,gold FROM general WHERE `owner`=%i', $userID);
|
||||
$myGold = array_pop($bets);
|
||||
$totalBet = array_sum($bets);
|
||||
|
||||
//NOTE: 위 코드에서 $betTarget은 0~15의 정수임이 보장된다.
|
||||
$oldBet = $bets[$betTarget];
|
||||
if($betGold + 500 <= $myGold && $betGold + $oldBet <= 1000 && $betGold + $totalBet <= 1000) {
|
||||
$db->update('general', [
|
||||
'gold'=>$db->sqleval('gold - %i', $betGold),
|
||||
"bet{$betTarget}"=>$db->sqleval("bet{$betTarget} + %i", $betGold),
|
||||
'betgold'=>$db->sqleval('betgold + %i', $betGold)
|
||||
], 'owner = %i', $userID);
|
||||
|
||||
$gameStor->setValue("bet{$betTarget}", $gameStor->getValue("bet{$betTarget}") + $betGold);//TODO: +로 증가하는 storage값은 별도로 분리
|
||||
}
|
||||
|
||||
header('location: b_betting.php');
|
||||
+93
-66
@@ -726,13 +726,13 @@ function generalInfo(General $generalObj) {
|
||||
<tr height=16>
|
||||
<td style='text-align:center;' class='bg1'><b>통솔</b></td>
|
||||
<td style='text-align:center;'> {$color}{$leadership}</font>{$lbonus} </td>
|
||||
<td style='text-align:center;' width=45>".bar(expStatus($generalObj->getVar('leadership_max')), 20)."</td>
|
||||
<td style='text-align:center;' width=45>".bar(expStatus($generalObj->getVar('leadership_exp')), 20)."</td>
|
||||
<td style='text-align:center;' class='bg1'><b>무력</b></td>
|
||||
<td style='text-align:center;'> {$color}{$strength}</font> </td>
|
||||
<td style='text-align:center;' width=45>".bar(expStatus($generalObj->getVar('strength_max')), 20)."</td>
|
||||
<td style='text-align:center;' width=45>".bar(expStatus($generalObj->getVar('strength_exp')), 20)."</td>
|
||||
<td style='text-align:center;' class='bg1'><b>지력</b></td>
|
||||
<td style='text-align:center;'> {$color}{$intel}</font> </td>
|
||||
<td style='text-align:center;' width=45>".bar(expStatus($generalObj->getVar('intel_max')), 20)."</td>
|
||||
<td style='text-align:center;' width=45>".bar(expStatus($generalObj->getVar('intel_exp')), 20)."</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='text-align:center;' class='bg1'><b>명마</b></td>
|
||||
@@ -794,8 +794,8 @@ function generalInfo(General $generalObj) {
|
||||
function generalInfo2(General $generalObj) {
|
||||
$general = $generalObj->getRaw();
|
||||
|
||||
$general['winrate'] = round($general['killnum']/max($general['warnum'],1), 2);
|
||||
$general['killrate'] = round($general['killcrew']/max($general['deathcrew'],1), 2);
|
||||
$winRate = round($generalObj->getRankVar('killnum')/max($generalObj->getRankVar('warnum'),1), 2);
|
||||
$killRate = round($generalObj->getRankVar('killcrew')/max($generalObj->getRankVar('deathcrew'),1), 2);
|
||||
|
||||
$experienceBonus = $generalObj->onCalcStat($generalObj, 'experience', 10000) - 10000;
|
||||
if($experienceBonus > 0){
|
||||
@@ -853,27 +853,27 @@ function generalInfo2(General $generalObj) {
|
||||
</tr>
|
||||
<tr>
|
||||
<td width=64 style='text-align:center;' class='bg1'><b>전투</b></td>
|
||||
<td width=132 style='text-align:center;'>{$general['warnum']}</td>
|
||||
<td width=132 style='text-align:center;'>{$generalObj->getRankVar('warnum')}</td>
|
||||
<td width=48 style='text-align:center;' class='bg1'><b>계략</b></td>
|
||||
<td width=98 style='text-align:center;'>{$general['firenum']}</td>
|
||||
<td width=98 style='text-align:center;'>{$generalObj->getRankVar('firenum')}</td>
|
||||
<td width=48 style='text-align:center;' class='bg1'><b>사관</b></td>
|
||||
<td width=98 style='text-align:center;'>{$general['belong']}년</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='text-align:center;' class='bg1'><b>승률</b></td>
|
||||
<td style='text-align:center;'>{$general['winrate']} %</td>
|
||||
<td style='text-align:center;'>{$winRate} %</td>
|
||||
<td style='text-align:center;' class='bg1'><b>승리</b></td>
|
||||
<td style='text-align:center;'>{$general['killnum']}</td>
|
||||
<td style='text-align:center;'>{$generalObj->getRankVar('killnum')}</td>
|
||||
<td style='text-align:center;' class='bg1'><b>패배</b></td>
|
||||
<td style='text-align:center;'>{$general['deathnum']}</td>
|
||||
<td style='text-align:center;'>{$generalObj->getRankVar('deathnum')}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='text-align:center;' class='bg1'><b>살상률</b></td>
|
||||
<td style='text-align:center;'>{$general['killrate']} %</td>
|
||||
<td style='text-align:center;'>{$killRate} %</td>
|
||||
<td style='text-align:center;' class='bg1'><b>사살</b></td>
|
||||
<td style='text-align:center;'>{$general['killcrew']}</td>
|
||||
<td style='text-align:center;'>{$generalObj->getRankVar('killcrew')}</td>
|
||||
<td style='text-align:center;' class='bg1'><b>피살</b></td>
|
||||
<td style='text-align:center;'>{$general['deathcrew']}</td>
|
||||
<td style='text-align:center;'>{$generalObj->getRankVar('deathcrew')}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width=498 class='tb_layout bg2'>
|
||||
@@ -1362,84 +1362,111 @@ function CheckHall($no) {
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
$types = array(
|
||||
"experience",
|
||||
"dedication",
|
||||
"firenum",
|
||||
"warnum",
|
||||
"killnum",
|
||||
"winrate",
|
||||
"killcrew",
|
||||
"killrate",
|
||||
"dex0",
|
||||
"dex10",
|
||||
"dex20",
|
||||
"dex30",
|
||||
"dex40",
|
||||
"ttrate",
|
||||
"tlrate",
|
||||
"tprate",
|
||||
"tirate",
|
||||
"betgold",
|
||||
"betwin",
|
||||
"betwingold",
|
||||
"betrate"
|
||||
);
|
||||
$types = [
|
||||
["experience", 'natural'],
|
||||
["dedication", 'natural'],
|
||||
["firenum", 'rank'],
|
||||
["warnum", 'rank'],
|
||||
["killnum", 'rank'],
|
||||
["winrate", 'rank'],
|
||||
["killcrew", 'rank'],
|
||||
["killrate", 'calc'],
|
||||
["dex0", 'natural'],
|
||||
["dex10", 'natural'],
|
||||
["dex20", 'natural'],
|
||||
["dex30", 'natural'],
|
||||
["dex40", 'natural'],
|
||||
["ttrate", 'calc'],
|
||||
["tlrate", 'calc'],
|
||||
["tprate", 'calc'],
|
||||
["tirate", 'calc'],
|
||||
["betgold", 'rank'],
|
||||
["betwin", 'rank'],
|
||||
["betwingold", 'rank'],
|
||||
["betrate", 'calc'],
|
||||
];//XXX: 순서가 DB에 박혀있다 ㅜㅜ
|
||||
|
||||
$general = $db->queryFirstRow('SELECT name,name2,owner,nation,picture,imgsvr,
|
||||
experience,dedication,warnum,firenum,killnum,
|
||||
killnum/warnum as winrate,killcrew,killcrew/deathcrew as killrate,
|
||||
dex0,dex10,dex20,dex30,dex40,
|
||||
ttw/(ttw+ttd+ttl) as ttrate, ttw+ttd+ttl as tt,
|
||||
tlw/(tlw+tld+tll) as tlrate, tlw+tld+tll as tl,
|
||||
tsw/(tsw+tsd+tsl) as tprate, tsw+tsd+tsl as ts,
|
||||
tiw/(tiw+tid+til) as tirate, tiw+tid+til as ti,
|
||||
betgold, betwin, betwingold, betwingold/betgold as betrate
|
||||
from general where no=%i', $no);
|
||||
$generalObj = General::createGeneralObjFromDB($no, null, 2);
|
||||
|
||||
if(!$general){
|
||||
$ttw = $generalObj->getRankVar('ttw');
|
||||
$ttd = $generalObj->getRankVar('ttd');
|
||||
$ttl = $generalObj->getRankVar('ttl');
|
||||
|
||||
$tlw = $generalObj->getRankVar('tlw');
|
||||
$tld = $generalObj->getRankVar('tld');
|
||||
$tll = $generalObj->getRankVar('tll');
|
||||
|
||||
$tsw = $generalObj->getRankVar('tsw');
|
||||
$tsd = $generalObj->getRankVar('tsd');
|
||||
$tsl = $generalObj->getRankVar('tsl');
|
||||
|
||||
$tiw = $generalObj->getRankVar('tiw');
|
||||
$tid = $generalObj->getRankVar('tid');
|
||||
$til = $generalObj->getRankVar('til');
|
||||
|
||||
$tt = max($ttw+$ttd+$ttl, 1);
|
||||
$tl = max($tlw+$tld+$tll, 1);
|
||||
$ts = max($tsw+$tsd+$tsl, 1);
|
||||
$ti = max($tiw+$tid+$til, 1);
|
||||
|
||||
$calcVar = [];
|
||||
$calcVar['ttrate'] = $ttw/$tt;
|
||||
$calcVar['tlrate'] = $tlw/$tl;
|
||||
$calcVar['tsrate'] = $tsw/$ts;
|
||||
$calcVar['tirate'] = $tiw/$ti;
|
||||
|
||||
if($generalObj instanceof DummyGeneral){
|
||||
return;
|
||||
}
|
||||
|
||||
$unitedDate = TimeUtil::now();
|
||||
$nation = getNationStaticInfo($general['nation']);
|
||||
$nation = $generalObj->getStaticNation();
|
||||
|
||||
$serverCnt = $db->queryFirstField('SELECT count(*) FROM ng_games');
|
||||
|
||||
[$scenarioIdx, $scenarioName, $startTime] = $gameStor->getValuesAsArray(['scenario', 'scenario_text', 'starttime']);
|
||||
|
||||
$ownerName = $general['name2'];
|
||||
if($general['owner']){
|
||||
$ownerName = RootDB::db()->queryFirstField('SELECT name FROM member WHERE no = %i', $general['owner']);
|
||||
$ownerName = $generalObj->getVar('name2');
|
||||
if($generalObj->getVar('owner')){
|
||||
$ownerName = RootDB::db()->queryFirstField('SELECT name FROM member WHERE no = %i', $generalObj->getVar('owner'));
|
||||
}
|
||||
|
||||
foreach($types as $idx=>$typeName) {
|
||||
foreach($types as $idx=>[$typeName, $valueType]) {
|
||||
|
||||
if($valueType === 'natural'){
|
||||
$value = $generalObj->getVar($typeName);
|
||||
}
|
||||
else if($valueType === 'rank'){
|
||||
$value = $generalObj->getRankVar($typeName);
|
||||
}
|
||||
else if($valueType === 'calc'){
|
||||
$value = $calcVar[$typeName];
|
||||
}
|
||||
|
||||
//승률,살상률인데 10회 미만 전투시 스킵
|
||||
if(($typeName === 'winrate' || $typeName === 'killrate') && $general['warnum']<10) { continue; }
|
||||
if(($typeName === 'winrate' || $typeName === 'killrate') && $generalObj->getRankVar('warnum')<10) { continue; }
|
||||
//토너승률인데 50회 미만시 스킵
|
||||
if($typeName === 'ttrate' && $general['tt'] < 50) { continue; }
|
||||
if($typeName === 'ttrate' && $tt < 50) { continue; }
|
||||
//토너승률인데 50회 미만시 스킵
|
||||
if($typeName === 'tlrate' && $general['tl'] < 50) { continue; }
|
||||
if($typeName === 'tlrate' && $tl < 50) { continue; }
|
||||
//토너승률인데 50회 미만시 스킵
|
||||
if($typeName === 'tsrate' && $general['ts'] < 50) { continue; }
|
||||
if($typeName === 'tsrate' && $ts < 50) { continue; }
|
||||
//토너승률인데 50회 미만시 스킵
|
||||
if($typeName === 'tirate' && $general['ti'] < 50) { continue; }
|
||||
if($typeName === 'tirate' && $ti < 50) { continue; }
|
||||
//수익률인데 1000미만시 스킵
|
||||
if($typeName === 'betrate' && $general['betgold'] < 1000) { continue; }
|
||||
if($typeName === 'betrate' && $generalObj->getRankVar('betgold') < 1000) { continue; }
|
||||
|
||||
if($general[$typeName]<=0){
|
||||
if($value<=0){
|
||||
continue;
|
||||
}
|
||||
|
||||
$aux = [
|
||||
'name'=>$general['name'],
|
||||
'name'=>$generalObj->getName(),
|
||||
'nationName'=>$nation['name'],
|
||||
'bgColor'=>$nation['color'],
|
||||
'fgColor'=>newColor($nation['color']),
|
||||
'picture'=>$general['picture'],
|
||||
'imgsvr'=>$general['imgsvr'],
|
||||
'picture'=>$generalObj->getVar('picture'),
|
||||
'imgsvr'=>$generalObj->getVar('imgsvr'),
|
||||
'startTime'=>$startTime,
|
||||
'unitedTime'=>$unitedDate,
|
||||
'owner_name'=>$ownerName,
|
||||
@@ -1456,14 +1483,14 @@ function CheckHall($no) {
|
||||
'scenario'=>$scenarioIdx,
|
||||
'general_no'=>$no,
|
||||
'type'=>$idx,
|
||||
'value'=>$general[$typeName]??0,
|
||||
'owner'=>$general['owner']??null,
|
||||
'value'=>$value,
|
||||
'owner'=>$generalObj->getVar('owner'),
|
||||
'aux'=>$jsonAux
|
||||
]);
|
||||
|
||||
if($db->affectedRows() == 0){
|
||||
$db->update('ng_hall', [
|
||||
'value'=>$general[$typeName]??0,
|
||||
'value'=>$value,
|
||||
'aux'=>$jsonAux
|
||||
],
|
||||
'server_id = %s AND scenario = %i AND general_no = %i AND type = %i AND value < %d',
|
||||
@@ -1471,7 +1498,7 @@ function CheckHall($no) {
|
||||
$scenarioIdx,
|
||||
$no,
|
||||
$idx,
|
||||
$general[$typeName]??0);
|
||||
$value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+21
-21
@@ -1114,7 +1114,7 @@ function checkStatistic() {
|
||||
}
|
||||
|
||||
foreach($db->queryAllLists(
|
||||
'SELECT crewtype, count(crewtype) AS cnt FROM general WHERE crew>=100 OR deathnum>0 GROUP BY crewtype'
|
||||
'SELECT crewtype, count(crewtype) AS cnt FROM general WHERE recwar != NULL GROUP BY crewtype'
|
||||
) as [$crewtype, $cnt]
|
||||
){
|
||||
$crewtypeHists[$crewtype] = $cnt;
|
||||
@@ -1272,27 +1272,27 @@ function checkEmperior() {
|
||||
$oldNationGenerals = $db->queryFirstColumn('SELECT `no` FROM general WHERE nation=%i', $nation['nation']);
|
||||
$oldNation['generals'] = $oldNationGenerals;
|
||||
|
||||
$query = "select name,picture,killnum from general where nation='{$nation['nation']}' order by killnum desc limit 5"; // 오호장군
|
||||
$tigerresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$tigernum = MYDB_num_rows($tigerresult);
|
||||
$tigerstr = '';
|
||||
for($i=0; $i < $tigernum; $i++) {
|
||||
$tiger = MYDB_fetch_array($tigerresult);
|
||||
if($tiger['killnum'] > 0) {
|
||||
$tigerstr .= "{$tiger['name']}【{$tiger['killnum']}】, ";
|
||||
}
|
||||
}
|
||||
$tigers = $db->query('SELECT value, name
|
||||
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
||||
WHERE rank_data.nation_id = %i AND rank_data.type = "warnum" AND value > 0 ORDER BY value DESC LIMIT 5',
|
||||
$nation['nation']
|
||||
);// 오호장군
|
||||
|
||||
$query = "select name,picture,firenum from general where nation='{$nation['nation']}' order by firenum desc limit 7"; // 건안칠자
|
||||
$eagleresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$eaglenum = MYDB_num_rows($eagleresult);
|
||||
$eaglestr = '';
|
||||
for($i=0; $i < $eaglenum; $i++) {
|
||||
$eagle = MYDB_fetch_array($eagleresult);
|
||||
if($eagle['firenum'] > 0) {
|
||||
$eaglestr .= "{$eagle['name']}【{$eagle['firenum']}】, ";
|
||||
}
|
||||
}
|
||||
$tigerstr = join(', ', array_map(function($arr){
|
||||
$number = number_format($arr['value']);
|
||||
return "{$arr['name']}【{$number}】";
|
||||
}, $tigers));
|
||||
|
||||
$eagles = $db->query('SELECT value, name
|
||||
FROM rank_data LEFT JOIN general ON rank_data.general_id = general.no
|
||||
WHERE rank_data.nation_id = %i AND rank_data.type = "firenum" AND value > 0 ORDER BY value DESC LIMIT 7',
|
||||
$nation['nation']
|
||||
);// 건안칠자
|
||||
|
||||
$eaglestr = join(', ', array_map(function($arr){
|
||||
$number = number_format($arr['value']);
|
||||
return "{$arr['name']}【{$number}】";
|
||||
}, $eagles));
|
||||
|
||||
$log = ["<C>●</>{$admin['year']}년 {$admin['month']}월: <D><b>{$nation['name']}</b></>{$josaYi} 전토를 통일하였습니다."];
|
||||
|
||||
|
||||
@@ -1509,7 +1509,7 @@ function process_76(&$general) {
|
||||
$type = Util::choiceRandomUsingWeight([
|
||||
'strength0'=>1,
|
||||
'strength1'=>1,
|
||||
'strength_max'=>1,
|
||||
'strength_exp'=>1,
|
||||
'intel'=>3,
|
||||
'neutral'=>0
|
||||
]);
|
||||
@@ -1526,7 +1526,7 @@ function process_76(&$general) {
|
||||
$intel = $stat_tier3;
|
||||
$dexVal = [$dexTotal/8, $dexTotal*5/8, $dexTotal/8, $dexTotal/8];
|
||||
break;
|
||||
case 'strength_max':
|
||||
case 'strength_exp':
|
||||
$leadership = $stat_tier1;
|
||||
$strength = $stat_tier2;
|
||||
$intel = $stat_tier3;
|
||||
|
||||
+154
-139
@@ -250,11 +250,11 @@ function startTournament($auto, $type) {
|
||||
$gameStor->tournament = 1;
|
||||
$gameStor->tnmt_type = $type;
|
||||
$gameStor->phase = 0;
|
||||
for($i=0;$i<16;$i+=1){
|
||||
$gameStor->setValue("bet{$i}", 0);
|
||||
}
|
||||
|
||||
$db->update('general', [
|
||||
'tournament'=>0,
|
||||
], true);
|
||||
$db->update('betting', [
|
||||
'bet0'=>0,
|
||||
'bet1'=>0,
|
||||
'bet2'=>0,
|
||||
@@ -641,10 +641,7 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
||||
|
||||
$admin = $gameStor->getValues(['year', 'month', 'develcost']);
|
||||
|
||||
$genNo = [];
|
||||
$genName = [];
|
||||
$genGold = [];
|
||||
$genCall = [];
|
||||
$resultHelper = [];
|
||||
|
||||
switch($tnmt_type) {
|
||||
case 0: $tp = "전력전"; $tp2 = "tt"; break;
|
||||
@@ -655,137 +652,147 @@ function setGift($tnmt_type, $tnmt, $phase) {
|
||||
|
||||
//16강자 명성 돈
|
||||
$cost = $admin['develcost'];
|
||||
$query = "select no,name from tournament where grp>=20 and grp<30";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
$query = "update general set experience=experience+25,gold=gold+'$cost',{$tp2}g={$tp2}g+1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
foreach($db->query('SELECT no, name, grp, grp_no FROM tournament WHERE grp>=20 AND grp<30 AND no > 0') as $general){
|
||||
$generalID = $general['no'];
|
||||
$db->update('general', [
|
||||
'experience'=>$db->sqleval('experience + 25'),
|
||||
'gold'=>$db->sqleval('gold + %i', $cost)
|
||||
], 'no=%i', $general['no']);
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}g" => $db->sqleval('%b + 1', "{$tp2}g")
|
||||
], 'general_id = %i', $general['no']);
|
||||
//포상 장수 이름, 금액
|
||||
$genNo[$i] = $general['no'];
|
||||
$genName[$i] = $general['name'];
|
||||
$genGold[$general['no']] = $cost;
|
||||
$genCall[$general['no']] = "<span class='ev_highlight'>16강 진출</span>";
|
||||
|
||||
$logger = new ActionLogger($generalID, 0, $admin['year'], $admin['month']);
|
||||
$resultHelper[$generalID] = [
|
||||
'id'=>$generalID,
|
||||
'grp'=>$general['grp'],
|
||||
'grp_no'=>$general['grp_no'],
|
||||
'reward'=>$cost,
|
||||
'msg'=>"<span class='ev_highlight'>16강 진출</span>",
|
||||
'logger'=>$logger
|
||||
];
|
||||
}
|
||||
//8강자 명성 돈
|
||||
$cost = $admin['develcost'] * 2;
|
||||
$query = "select no from tournament where grp>=30 and grp<40";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
$query = "update general set experience=experience+50,gold=gold+'$cost',{$tp2}g={$tp2}g+1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
foreach($db->query('SELECT no, name FROM tournament WHERE grp>=30 AND grp<40 AND no > 0') as $general){
|
||||
$generalID = $general['no'];
|
||||
$db->update('general', [
|
||||
'experience'=>$db->sqleval('experience + 50'),
|
||||
'gold'=>$db->sqleval('gold + %i', $cost)
|
||||
], 'no=%i', $general['no']);
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}g" => $db->sqleval('%b + 1', "{$tp2}g")
|
||||
], 'general_id = %i', $general['no']);
|
||||
|
||||
//포상 장수 이름, 금액
|
||||
$genGold[$general['no']] += $cost;
|
||||
$genCall[$general['no']] = "<span class='ev_highlight'>8강 진출</span>";
|
||||
$resultHelper[$generalID]['reward'] += $cost;
|
||||
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>8강 진출</span>";
|
||||
}
|
||||
//4강자 명성 돈
|
||||
$cost = $admin['develcost'] * 3;
|
||||
$query = "select no from tournament where grp>=40 and grp<50";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
$query = "update general set experience=experience+75,gold=gold+'$cost',{$tp2}g={$tp2}g+2 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
foreach($db->query('SELECT no, name FROM tournament WHERE grp>=40 AND grp<50 AND no > 0') as $general){
|
||||
$generalID = $general['no'];
|
||||
$db->update('general', [
|
||||
'experience'=>$db->sqleval('experience + 50'),
|
||||
'gold'=>$db->sqleval('gold + %i', $cost)
|
||||
], 'no=%i', $general['no']);
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}g" => $db->sqleval('%b + 2', "{$tp2}g")
|
||||
], 'general_id = %i', $general['no']);
|
||||
|
||||
//포상 장수 이름, 금액
|
||||
$genGold[$general['no']] += $cost;
|
||||
$genCall[$general['no']] = "<span class='ev_highlight'>4강 진출</span>";
|
||||
$resultHelper[$generalID]['reward'] += $cost;
|
||||
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>4강 진출</span>";
|
||||
}
|
||||
//결승자 명성 돈
|
||||
$cost = $admin['develcost'] * 6;
|
||||
$query = "select no from tournament where grp>=50 and grp<60";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
$query = "update general set experience=experience+150,gold=gold+'$cost',{$tp2}g={$tp2}g+2 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
foreach($db->query('SELECT no, name, lose FROM tournament WHERE grp>=50 AND grp<60 AND no > 0') as $general){
|
||||
$generalID = $general['no'];
|
||||
$db->update('general', [
|
||||
'experience'=>$db->sqleval('experience + 100'),
|
||||
'gold'=>$db->sqleval('gold + %i', $cost)
|
||||
], 'no=%i', $general['no']);
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}g" => $db->sqleval('%b + 2', "{$tp2}g")
|
||||
], 'general_id = %i', $general['no']);
|
||||
|
||||
//포상 장수 이름, 금액
|
||||
$genGold[$general['no']] += $cost;
|
||||
$genCall[$general['no']] = "<span class='ev_highlight'>준우승</span>으";
|
||||
$resultHelper[$generalID]['reward'] += $cost;
|
||||
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>준우승</span>으";
|
||||
if($general['lose'] > 0){
|
||||
$runnerUp = $general;
|
||||
}
|
||||
}
|
||||
//우승자 명성 돈
|
||||
$cost = $admin['develcost'] * 8;
|
||||
$query = "select no from tournament where grp>=60";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
$query = "update general set experience=experience+200,gold=gold+'$cost',{$tp2}g={$tp2}g+3,{$tp2}p={$tp2}p+1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
foreach($db->query('SELECT no, name FROM tournament WHERE grp>=6 AND no > 0') as $general){
|
||||
$generalID = $general['no'];
|
||||
$db->update('general', [
|
||||
'experience'=>$db->sqleval('experience + 200'),
|
||||
'gold'=>$db->sqleval('gold + %i', $cost)
|
||||
], 'no=%i', $general['no']);
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}g" => $db->sqleval('%b + 2', "{$tp2}g")
|
||||
], 'general_id = %i', $general['no']);
|
||||
|
||||
//포상 장수 이름, 금액
|
||||
$genGold[$general['no']] += $cost;
|
||||
$genCall[$general['no']] = "<span class='ev_highlight'>우승</span>으";
|
||||
$resultHelper[$generalID]['reward'] += $cost;
|
||||
$resultHelper[$generalID]['msg'] = "<span class='ev_highlight'>우승</span>으";
|
||||
$winner = $general;
|
||||
}
|
||||
//우승자 이름
|
||||
$query = "select no,name from tournament where grp=60";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
//준우승자 이름
|
||||
$query = "select no,name from tournament where grp=50 and lose=1";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$general2 = MYDB_fetch_array($result);
|
||||
|
||||
//자동진행 끝
|
||||
$gameStor->tnmt_auto = 0;
|
||||
|
||||
//장수열전 기록
|
||||
$query = "select no from general where no={$general['no']}";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gen1 = MYDB_fetch_array($result);
|
||||
$query = "select no from general where no={$general2['no']}";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gen2 = MYDB_fetch_array($result);
|
||||
pushGeneralHistory($gen1, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>{$tp}</> 대회에서 우승");
|
||||
pushGeneralHistory($gen2, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>{$tp}</> 대회에서 준우승");
|
||||
/** @var ActionLogger */
|
||||
$winnerLogger = $resultHelper[$winner['no']]['logger'];
|
||||
$winnerLogger->pushGeneralHistoryLog("<C>{$tp}</> 대회에서 우승");
|
||||
/** @var ActionLogger */
|
||||
$runnerUpLogger = $resultHelper[$runnerUp['no']]['logger'];
|
||||
$runnerUpLogger->pushGeneralHistoryLog("<C>{$tp}</> 대회에서 준우승");
|
||||
|
||||
$cost = $admin['develcost'] * 20;
|
||||
$cost2 = $admin['develcost'] * 12;
|
||||
|
||||
$josaYi1 = JosaUtil::pick($general['name'], '이');
|
||||
$josaYi2 = JosaUtil::pick($general2['name'], '이');
|
||||
$history = [
|
||||
"<S>◆</>{$admin['year']}년 {$admin['month']}월: <C>{$tp}</> 대회에서 <Y>{$general['name']}</>{$josaYi1} <C>우승</>, <Y>{$general2['name']}</>{$josaYi2} <C>준우승</>을 차지하여 천하에 이름을 떨칩니다!",
|
||||
"<S>◆</>{$admin['year']}년 {$admin['month']}월: <C>{$tp}</> 대회의 <S>우승자</>에게는 <C>{$cost}</>, <S>준우승자</>에겐 <C>{$cost2}</>의 <S>상금</>과 약간의 <S>명성</>이 주어집니다!"
|
||||
];
|
||||
pushWorldHistory($history, $admin['year'], $admin['month']);
|
||||
|
||||
|
||||
for($i=0; $i < count($genNo); $i++) {
|
||||
$general['no'] = $genNo[$i];
|
||||
$general['name'] = $genName[$i];
|
||||
pushGenLog($general, ["<S>◆</><C>{$tp}</> 대회의 {$genCall[$genNo[$i]]}로 <C>{$genGold[$genNo[$i]]}</>의 <S>상금</>, 약간의 <S>명성</> 획득!"]);
|
||||
$winnerRewardText = number_format($resultHelper[$winner['no']]['reward']);
|
||||
$runnerUpRewardText = number_format($resultHelper[$runnerUp['no']]['reward']);
|
||||
|
||||
$josaYiWinner = JosaUtil::pick($winner['name'], '이');
|
||||
$josaYiRunnerUp = JosaUtil::pick($runnerUp['name'], '이');
|
||||
|
||||
$winnerLogger->pushGlobalHistoryLog("<C>{$tp}</> 대회에서 <Y>{$winner['name']}</>{$josaYiWinner} <C>우승</>, <Y>{$runnerUp['name']}</>{$josaYiRunnerUp} <C>준우승</>을 차지하여 천하에 이름을 떨칩니다!", ActionLogger::EVENT_YEAR_MONTH);
|
||||
$winnerLogger->pushGlobalHistoryLog("<C>{$tp}</> 대회의 <S>우승자</>에게는 <C>{$winnerRewardText}</>, <S>준우승자</>에겐 <C>{$runnerUpRewardText}</>의 <S>상금</>과 약간의 <S>명성</>이 주어집니다!", ActionLogger::EVENT_YEAR_MONTH);
|
||||
|
||||
foreach($resultHelper as $general){
|
||||
$rewardText = number_format($general['reward']);
|
||||
/** @var ActionLogger */
|
||||
$logger = $general['logger'];
|
||||
$logger->pushGeneralActionLog("<C>{$tp}</> 대회의 {$general['msg']}로 <C>{$rewardText}</>의 <S>상금</>, 약간의 <S>명성</> 획득!", ActionLogger::EVENT_PLAIN);
|
||||
}
|
||||
|
||||
//우승자 번호
|
||||
$query = "select no from tournament where grp=60";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
//16강 목록에서 검색
|
||||
$query = "select grp,grp_no from tournament where grp>=20 and grp<30 and no='{$general['no']}'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
$no = ($general['grp'] - 20) * 2 + $general['grp_no'];
|
||||
|
||||
|
||||
$admin = $gameStor->getValues(['bet0','bet1','bet2','bet3','bet4','bet5','bet6','bet7','bet8','bet9','bet10','bet11','bet12','bet13','bet14','bet15']);
|
||||
$admin['bet'] = array_sum($admin);
|
||||
$bet = @round($admin['bet'] / $admin["bet{$no}"], 2);
|
||||
$winnerGrp = $resultHelper[$winner['no']]['grp'];
|
||||
$winnerGrpNo = $resultHelper[$winner['no']]['grp_no'];
|
||||
$winnerSlot = ($winnerGrp - 20) * 2 + $winnerGrpNo;
|
||||
|
||||
//당첨칸에 베팅한 사람들만
|
||||
$query = "select no,name,gold,bet{$no} as bet from general where bet{$no}>0";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$gen = MYDB_fetch_array($result);
|
||||
$gold = Util::round($gen['bet'] * $bet);
|
||||
//금 지급
|
||||
$query = "update general set gold=gold+'$gold',betwingold=betwingold+'$gold',betwin=betwin+1 where no='{$gen['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
//로그
|
||||
pushGenLog($gen, ["<S>◆</><C>{$tp}</> 대회의 베팅 당첨으로 <C>{$gold}</>의 <S>금</> 획득!"]);
|
||||
$globalBet = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = 0'), -16);
|
||||
$globalBetTotal = array_sum($globalBet);
|
||||
$rewardRate = round($globalBetTotal / max($globalBet[$winnerSlot], 1), 2);
|
||||
|
||||
$betKey = "bet{$winnerSlot}";
|
||||
$gambleResult = Util::convertArrayToDict($db->query('SELECT no, %b as bet FROM betting WHERE %b > 0', $betKey, $betKey), 'no');
|
||||
|
||||
foreach(General::createGeneralObjListFromDB(Util::squeezeFromArray($gambleResult, 'no'), ['gold'], 1) as $gambler){
|
||||
$reward = Util::round($gambleResult[$gambler->getID()]['bet'] * $rewardRate);
|
||||
$gambler->increaseVar('gold', $reward);
|
||||
$gambler->increaseRankVar('betwingold', $reward);
|
||||
$gambler->increaseRankVar('betwin', 1);
|
||||
$rewardText = number_format($reward);
|
||||
$gambler->getLogger()->pushGeneralActionLog("<C>{$tp}</> 대회의 베팅 당첨으로 <C>{$rewardText}</>의 <S>금</> 획득!", ActionLogger::EVENT_PLAIN);
|
||||
$gambler->applyDB($db);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -796,20 +803,18 @@ function setRefund() {
|
||||
|
||||
//16강자 명성 돈
|
||||
$cost = $gameStor->develcost;
|
||||
$query = "select no from tournament where grp<10";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
$query = "update general set gold=gold+'$cost' where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
$generalIDList = $db->queryFirstColumn('SELECT no FROM tournament WHERE grp<10 AND no >0');
|
||||
$db->update('general', [
|
||||
'gold'=>$db->sqleval('gold + %i', $cost)
|
||||
], 'no IN %li', $generalIDList);
|
||||
|
||||
//베팅금 환수
|
||||
$db->update(['general', [
|
||||
'gold'=>$db->sqleval('gold + (SELECT bet0+bet1+bet2+bet3+bet4+bet5+bet6+bet7+bet8+bet9+bet10+bet11+bet12+bet13+bet14+bet15 FROM betting WHERE general_id = general.no)')
|
||||
]], true);
|
||||
|
||||
//자동진행 끝
|
||||
$gameStor->tnmt_auto = 0;
|
||||
//베팅금 환수
|
||||
$query = "update general set gold=gold+bet0+bet1+bet2+bet3+bet4+bet5+bet6+bet7+bet8+bet9+bet10+bet11+bet12+bet13+bet14+bet15";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
|
||||
//10차이 1.1, 50 차이 1.17, 100차이 1.2
|
||||
@@ -1063,14 +1068,12 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
||||
$query = "update tournament set lose=lose+1,gl=gl-'$gl' where grp='$group' and grp_no='$g2'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
if($general1['gl'] > $general2['gl']) { $gl1 = "+1"; $gl2 = "+0"; }
|
||||
elseif($general1['gl'] == $general2['gl']) { $gl1 = "+2"; $gl2 = "-1"; }
|
||||
else { $gl1 = "+3"; $gl2 = "-2"; }
|
||||
if($general1['gl'] > $general2['gl']) { $gl1 = 1; $gl2 = 0; }
|
||||
elseif($general1['gl'] == $general2['gl']) { $gl1 = 2; $gl2 = -1; }
|
||||
else { $gl1 = 3; $gl2 = -2; }
|
||||
|
||||
$query = "update general set {$tp2}w={$tp2}w+1,{$tp2}g={$tp2}g{$gl1} where no='{$gen1['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$query = "update general set {$tp2}l={$tp2}l+1,{$tp2}g={$tp2}g{$gl2} where no='{$gen2['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gen1resKey = 'w';
|
||||
$gen2resKey = 'l';
|
||||
break;
|
||||
case 1:
|
||||
$log[] = "<S>●</> <Y>{$gen2['name']}</> <S>승리</>!";
|
||||
@@ -1081,14 +1084,12 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
||||
$query = "update tournament set lose=lose+1,gl=gl-'$gl' where grp='$group' and grp_no='$g1'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
if($general2['gl'] > $general1['gl']) { $gl2 = "+1"; $gl1 = "+0"; }
|
||||
elseif($general2['gl'] == $general1['gl']) { $gl2 = "+2"; $gl1 = "-1"; }
|
||||
else { $gl2 = "+3"; $gl1 = "-2"; }
|
||||
if($general2['gl'] > $general1['gl']) { $gl2 = 1; $gl1 = 0; }
|
||||
elseif($general2['gl'] == $general1['gl']) { $gl2 = 2; $gl1 = -1; }
|
||||
else { $gl2 = 3; $gl1 = -2; }
|
||||
|
||||
$query = "update general set {$tp2}l={$tp2}l+1,{$tp2}g={$tp2}g{$gl1} where no='{$gen1['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$query = "update general set {$tp2}w={$tp2}w+1,{$tp2}g={$tp2}g{$gl2} where no='{$gen2['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gen1resKey = 'l';
|
||||
$gen2resKey = 'w';
|
||||
break;
|
||||
case 2:
|
||||
$log[] = "<S>●</> 무승부!";
|
||||
@@ -1096,17 +1097,31 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
|
||||
$query = "update tournament set draw=draw+1 where grp='$group' and (grp_no='$g1' or grp_no='$g2')";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
if($general1['gl'] > $general2['gl']) { $gl2 = "-1"; $gl1 = "+1"; }
|
||||
elseif($general1['gl'] == $general2['gl']) { $gl2 = "+0"; $gl1 = "+0"; }
|
||||
else { $gl2 = "+1"; $gl1 = "-1"; }
|
||||
if($general1['gl'] > $general2['gl']) { $gl2 = -1; $gl1 = 1; }
|
||||
elseif($general1['gl'] == $general2['gl']) { $gl2 = 0; $gl1 = 0; }
|
||||
else { $gl2 = +1; $gl1 = -1; }
|
||||
|
||||
$query = "update general set {$tp2}d={$tp2}d+1,{$tp2}g={$tp2}g{$gl1} where no='{$gen1['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$query = "update general set {$tp2}d={$tp2}d+1,{$tp2}g={$tp2}g{$gl2} where no='{$gen2['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gen1resKey = 'd';
|
||||
$gen2resKey = 'd';
|
||||
break;
|
||||
}
|
||||
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}{$gen1resKey}" => $db->sqleval('%b + 1', "{$tp2}{$gen1resKey}")
|
||||
], 'no=%i',$gen1['no']);
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}g" => $db->sqleval('%b + %i', "{$tp2}g", $gl1)
|
||||
], 'no=%i',$gen1['no']);
|
||||
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}{$gen2resKey}" => $db->sqleval('%b + 1', "{$tp2}{$gen2resKey}")
|
||||
], 'no=%i',$gen2['no']);
|
||||
$db->update('rank_data', [
|
||||
"{$tp2}g" => $db->sqleval('%b + %i', "{$tp2}g", $gl2)
|
||||
], 'no=%i',$gen2['no']);
|
||||
|
||||
|
||||
|
||||
if(($tnmt == 2 && $phs < 55) || ($tnmt == 4 && $phs < 5)) {
|
||||
$cand = getTwo($tnmt, $phs+1);
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
$betTarget = Util::getReq('target', 'int', -1);
|
||||
$betGold = Util::getReq('amount', 'int', 0);
|
||||
|
||||
|
||||
if($betTarget < 0 || $betTarget >= 16 || $betGold < 10 || $betGold > 1000){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'올바르지 않은 입력입니다'
|
||||
]);
|
||||
}
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
$generalID = $session->generalID;
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
increaseRefresh("베팅", 1);
|
||||
|
||||
$tournament = $gameStor->tournament;
|
||||
if($tournament != 6) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'베팅 기간이 아닙니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$myGold = $db->queryFirstField('SELECT gold FROM general WHERE no = %i', $generalID);
|
||||
$bets = array_splice($db->queryFirstList('SELECT * FROM betting WHERE general_id = %i', $generalID), -16);
|
||||
$totalBet = array_sum($bets);
|
||||
$oldBet = $bets[$betTarget];
|
||||
|
||||
$targetKey = "bet{$betTarget}";
|
||||
|
||||
if($myGold - $betGold < 500){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'여유 자금이 부족합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($betGold + $totalBet > 1000){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'베팅 허용 금액을 초과했습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$db->update('betting', [
|
||||
$targetKey=>$db->sqleval('%b + %i', $targetKey, $betGold),
|
||||
], 'general_id = %i', $generalID);
|
||||
$db->update('general', [
|
||||
'gold'=>$db->sqleval('gold - %i', $betGold),
|
||||
], 'no = %i', $generalID);
|
||||
$db->update('rank_data', [
|
||||
'value'=>$db->sqleval('value + %i', $betGold)
|
||||
], 'general_id = %i AND type = "betgold"', $generalID);
|
||||
$db->update('betting', [
|
||||
$targetKey=>$db->sqleval('%b + %i', $targetKey, $betGold)
|
||||
], 'general_id = 0');
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'SUCCESS'
|
||||
]);
|
||||
@@ -82,15 +82,14 @@ $rawDefenderNation = $query['defenderNation'];
|
||||
$generalCheck = [
|
||||
'required'=>[
|
||||
'no', 'name', 'nation', 'turntime', 'personal', 'special2', 'crew', 'crewtype', 'atmos', 'train',
|
||||
'intel', 'intel_max', 'book', 'strength', 'strength_max', 'weapon', 'injury', 'leadership', 'leadership_max', 'horse', 'item',
|
||||
'intel', 'intel_exp', 'book', 'strength', 'strength_exp', 'weapon', 'injury', 'leadership', 'leadership_exp', 'horse', 'item',
|
||||
'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex0', 'dex10', 'dex20', 'dex30', 'dex40',
|
||||
'warnum', 'killnum', 'deathnum', 'killcrew', 'deathcrew', 'recwar'
|
||||
'recwar'
|
||||
],
|
||||
'integer'=>[
|
||||
'no', 'nation', 'personal', 'special2', 'crew', 'crewtype', 'atmos', 'train',
|
||||
'intel', 'intel_max', 'book', 'strength', 'strength_max', 'weapon', 'injury', 'leadership', 'leadership_max', 'horse', 'item',
|
||||
'intel', 'intel_exp', 'book', 'strength', 'strength_exp', 'weapon', 'injury', 'leadership', 'leadership_exp', 'horse', 'item',
|
||||
'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex0', 'dex10', 'dex20', 'dex30', 'dex40',
|
||||
'warnum', 'killnum', 'deathnum', 'killcrew', 'deathcrew'
|
||||
],
|
||||
'min'=>[
|
||||
['no', 1],
|
||||
@@ -276,8 +275,9 @@ function simulateBattle(
|
||||
$defenderList, $rawDefenderCity, $rawDefenderNation,
|
||||
$startYear, $year, $month, $cityRate
|
||||
){
|
||||
|
||||
$attacker = new WarUnitGeneral(
|
||||
new General($rawAttacker, $rawAttackerCity, $year, $month),
|
||||
new General($rawAttacker, null, $rawAttackerCity, $year, $month),
|
||||
$rawAttackerNation,
|
||||
true
|
||||
);
|
||||
@@ -317,7 +317,7 @@ function simulateBattle(
|
||||
$defenderRice += $rawGeneral['rice'];
|
||||
|
||||
$retVal = new WarUnitGeneral(
|
||||
new General($rawGeneral, $rawDefenderCity, $year, $month),
|
||||
new General($rawGeneral, null, $rawDefenderCity, $year, $month),
|
||||
$rawDefenderNation,
|
||||
false
|
||||
);
|
||||
|
||||
@@ -264,6 +264,15 @@ foreach(range(0, GameConst::$maxTurn - 1) as $turnIdx){
|
||||
];
|
||||
}
|
||||
$db->insert('general_turn', $turnRows);
|
||||
|
||||
foreach(General::RANK_COLUMN as $rankColumn){
|
||||
$db->insert('rank_data', [
|
||||
'general_id'=>$generalID,
|
||||
'nation_id'=>0,
|
||||
'type'=>$rankColumn,
|
||||
'value'=>0
|
||||
]);
|
||||
}
|
||||
$cityname = CityConst::byID($city)->name;
|
||||
|
||||
$me = [
|
||||
|
||||
@@ -365,20 +365,15 @@ jQuery(function($){
|
||||
city: (generalData.no)<=1 ? 1 : 3,
|
||||
turntime:'2018-08-26 12:00',
|
||||
special:defaultSpecialDomestic,
|
||||
leadership_max:0,
|
||||
strength_max:0,
|
||||
intel_max:0,
|
||||
leadership_exp:0,
|
||||
strength_exp:0,
|
||||
intel_exp:0,
|
||||
|
||||
gold:10000,
|
||||
|
||||
dedication:0,
|
||||
warnum:0,
|
||||
killnum:0,
|
||||
deathnum:0,
|
||||
|
||||
killcrew:20000,
|
||||
deathcrew:20000,
|
||||
recwar:'SUCCESS',
|
||||
recwar:'2018-08-26 12:00',
|
||||
experience:Math.pow(generalData.explevel, 2),
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
jQuery(function($){
|
||||
$('.submitBtn').click(function(){
|
||||
var $this = $(this);
|
||||
var target = parseInt($this.data('target'));
|
||||
var amount = $('target_{0}'.format(target)).val();
|
||||
|
||||
$.post({
|
||||
url:'j_betting.php',
|
||||
dataType:'json',
|
||||
data:{
|
||||
target:target,
|
||||
amount:amount
|
||||
}
|
||||
}).then(function(data){
|
||||
if(!data){
|
||||
return quickReject('베팅을 실패했습니다.');
|
||||
}
|
||||
if(!data.result){
|
||||
return quickReject('베팅을 실패했습니다. : '+data.reason);
|
||||
}
|
||||
|
||||
location.reload();
|
||||
|
||||
}, errUnknown)
|
||||
.fail(function(reason){
|
||||
alert(reason);
|
||||
location.reload();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
@@ -27,7 +27,6 @@ function submitArticle(){
|
||||
if(!data){
|
||||
$title.val(title);
|
||||
$text.val(text);
|
||||
alert()
|
||||
return quickReject('글을 올리는데 실패했습니다.');
|
||||
}
|
||||
if(!data.result){
|
||||
@@ -70,7 +69,6 @@ function submitComment(){
|
||||
}).then(function(data){
|
||||
if(!data){
|
||||
$text.val(text);
|
||||
alert()
|
||||
return quickReject('댓글을 다는데 실패했습니다.');
|
||||
}
|
||||
if(!data.result){
|
||||
|
||||
@@ -65,7 +65,6 @@ function repondLetter(letterNo, isAgree, reason){
|
||||
}
|
||||
}).then(function(data){
|
||||
if(!data){
|
||||
alert()
|
||||
return quickReject('응답을 실패했습니다.');
|
||||
}
|
||||
if(!data.result){
|
||||
@@ -99,7 +98,6 @@ function rollbackLetter(letterNo){
|
||||
}
|
||||
}).then(function(data){
|
||||
if(!data){
|
||||
alert()
|
||||
return quickReject('회수를 실패했습니다.');
|
||||
}
|
||||
if(!data.result){
|
||||
@@ -128,7 +126,6 @@ function destroyLetter(letterNo){
|
||||
}
|
||||
}).then(function(data){
|
||||
if(!data){
|
||||
alert()
|
||||
return quickReject('파기를 실패했습니다.');
|
||||
}
|
||||
if(!data.result){
|
||||
|
||||
-35
@@ -56,38 +56,3 @@ function LogText($prefix, $variable)
|
||||
$text = sprintf('%s : %s'."\r\n", $prefix, var_export($variable, true));
|
||||
file_put_contents(ROOT.'/d_log/dbg_logs.txt', $text, FILE_APPEND);
|
||||
}
|
||||
|
||||
function extractMissingPostToGlobals()
|
||||
{
|
||||
$result = [];
|
||||
if (isset($_POST) && count($_POST) > 0) {
|
||||
foreach($_POST as $key=>$val){
|
||||
if(is_numeric($key)){
|
||||
continue;
|
||||
}
|
||||
if(isset($GLOBALS[$key])){
|
||||
continue;
|
||||
}
|
||||
$result[$key]=$val;
|
||||
$GLOBALS[$key]=$val;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET) && count($_GET) > 0) {
|
||||
foreach($_GET as $key=>$val){
|
||||
if(is_numeric($key)){
|
||||
continue;
|
||||
}
|
||||
if(isset($GLOBALS[$key])){
|
||||
continue;
|
||||
}
|
||||
$result[$key]=$val;
|
||||
$GLOBALS[$key]=$val;
|
||||
}
|
||||
}
|
||||
|
||||
if($result){
|
||||
LogText($_SERVER['REQUEST_URI'], $result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-4
@@ -33,10 +33,8 @@ function processWar(General $attackerGeneral, array $rawAttackerNation, array $r
|
||||
|
||||
$city = new WarUnitCity($rawDefenderCity, $rawDefenderNation, $year, $month, $cityRate);
|
||||
|
||||
$defenderList = [];
|
||||
foreach ($db->query('SELECT no,name,nation,turntime,personal,special,special2,crew,crewtype,atmos,train,intel,intel_max,book,strength,strength_max,weapon,injury,leadership,leadership_max,horse,item,explevel,experience,dedication,level,gold,rice,dex0,dex10,dex20,dex30,dex40,warnum,killnum,deathnum,killcrew,deathcrew,recwar,defence_train FROM general WHERE nation=%i AND city=%i AND nation!=0 and crew > 0 and rice>(crew/100) and train>=defence_train and atmos>=defence_train', $city->getVar('nation'), $city->getVar('city')) as $rawGeneral){
|
||||
$defenderList[] = new General($rawGeneral, $rawDefenderCity, $year, $month);
|
||||
}
|
||||
$defenderIDList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND city=%i AND nation!=0 and crew > 0 and rice>(crew/100) and train>=defence_train and atmos>=defence_train', $city->getVar('nation'), $city->getVar('city'));
|
||||
$defenderList = General::createGeneralObjListFromDB($defenderIDList, null, 2);
|
||||
|
||||
usort($defenderList, function(General $lhs, General $rhs){
|
||||
return -(extractBattleOrder($lhs) <=> extractBattleOrder($rhs));
|
||||
|
||||
@@ -149,7 +149,7 @@ class che_강행 extends Command\GeneralCommand{
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$general->increaseVarWithLimit('gold', -$reqGold, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
$general->applyDB($db);
|
||||
|
||||
@@ -77,13 +77,13 @@ class che_견문 extends Command\GeneralCommand{
|
||||
$exp += 60;
|
||||
}
|
||||
if($type & SightseeingMessage::IncLeadership){
|
||||
$general->increaseVar('leadership_max', 2);
|
||||
$general->increaseVar('leadership_exp', 2);
|
||||
}
|
||||
if($type & SightseeingMessage::IncStrength){
|
||||
$general->increaseVar('strength_max', 2);
|
||||
$general->increaseVar('strength_exp', 2);
|
||||
}
|
||||
if($type & SightseeingMessage::IncIntel){
|
||||
$general->increaseVar('intel_max', 2);
|
||||
$general->increaseVar('intel_exp', 2);
|
||||
}
|
||||
if($type & SightseeingMessage::IncGold){
|
||||
$general->increaseVar('gold', 300);
|
||||
|
||||
@@ -158,9 +158,9 @@ class che_군량매매 extends Command\GeneralCommand{
|
||||
$ded = $general->onCalcStat($general, 'dedication', $ded);
|
||||
|
||||
$incStat = Util::choiceRandomUsingWeight([
|
||||
'leadership_max'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_max'=>$general->getStrength(false, false, false, false),
|
||||
'intel_max'=>$general->getIntel(false, false, false, false)
|
||||
'leadership_exp'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_exp'=>$general->getStrength(false, false, false, false),
|
||||
'intel_exp'=>$general->getIntel(false, false, false, false)
|
||||
]);
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
|
||||
@@ -102,7 +102,7 @@ class che_귀환 extends Command\GeneralCommand{
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
$general->applyDB($db);
|
||||
|
||||
@@ -126,7 +126,7 @@ class che_기술연구 extends che_상업투자{
|
||||
$general->increaseVarWithLimit('gold', -$this->reqGold, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar(static::$statKey.'_max', 1);
|
||||
$general->increaseVar(static::$statKey.'_exp', 1);
|
||||
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
|
||||
@@ -116,9 +116,9 @@ class che_단련 extends Command\GeneralCommand{
|
||||
$general->addDex($general->getCrewTypeObj(), $score, false);
|
||||
|
||||
$incStat = Util::choiceRandomUsingWeight([
|
||||
'leadership_max'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_max'=>$general->getStrength(false, false, false, false),
|
||||
'intel_max'=>$general->getIntel(false, false, false, false)
|
||||
'leadership_exp'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_exp'=>$general->getStrength(false, false, false, false),
|
||||
'intel_exp'=>$general->getIntel(false, false, false, false)
|
||||
]);
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ class che_등용 extends Command\GeneralCommand{
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->increaseVarWithLimit('gold', -$reqGold, 0);
|
||||
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
|
||||
@@ -111,9 +111,9 @@ class che_물자조달 extends Command\GeneralCommand{
|
||||
$ded = $general->onCalcStat($general, 'dedication', $ded);
|
||||
|
||||
$incStat = Util::choiceRandomUsingWeight([
|
||||
'leadership_max'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_max'=>$general->getStrength(false, false, false, false),
|
||||
'intel_max'=>$general->getIntel(false, false, false, false)
|
||||
'leadership_exp'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_exp'=>$general->getStrength(false, false, false, false),
|
||||
'intel_exp'=>$general->getIntel(false, false, false, false)
|
||||
]);
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
|
||||
@@ -100,7 +100,7 @@ class che_사기진작 extends Command\GeneralCommand{
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
@@ -198,7 +198,7 @@ class che_상업투자 extends Command\GeneralCommand{
|
||||
$general->increaseVarWithLimit('gold', -$this->reqGold, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar(static::$statKey.'_max', 1);
|
||||
$general->increaseVar(static::$statKey.'_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
@@ -147,7 +147,7 @@ class che_이동 extends Command\GeneralCommand{
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$general->increaseVarWithLimit('gold', -$reqGold, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
$general->applyDB($db);
|
||||
|
||||
@@ -129,9 +129,9 @@ class che_인재탐색 extends Command\GeneralCommand{
|
||||
$logger->pushGeneralActionLog("인재를 찾을 수 없었습니다. <1>$date</>");
|
||||
|
||||
$incStat = Util::choiceRandomUsingWeight([
|
||||
'leadership_max'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_max'=>$general->getStrength(false, false, false, false),
|
||||
'intel_max'=>$general->getIntel(false, false, false, false)
|
||||
'leadership_exp'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_exp'=>$general->getStrength(false, false, false, false),
|
||||
'intel_exp'=>$general->getIntel(false, false, false, false)
|
||||
]);
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
@@ -290,9 +290,9 @@ class che_인재탐색 extends Command\GeneralCommand{
|
||||
$logger->pushGeneralHistoryLog("<Y>$npcName</>{$josaRa}는 <C>인재</>를 {$scoutType}");
|
||||
|
||||
$incStat = Util::choiceRandomUsingWeight([
|
||||
'leadership_max'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_max'=>$general->getStrength(false, false, false, false),
|
||||
'intel_max'=>$general->getIntel(false, false, false, false)
|
||||
'leadership_exp'=>$general->getLeadership(false, false, false, false),
|
||||
'strength_exp'=>$general->getStrength(false, false, false, false),
|
||||
'intel_exp'=>$general->getIntel(false, false, false, false)
|
||||
]);
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ class che_전투태세 extends Command\GeneralCommand{
|
||||
|
||||
$general->addDex($general->getCrewTypeObj(), $crew / 100 * 3, false);
|
||||
|
||||
$general->increaseVar('leadership_max', 3);
|
||||
$general->increaseVar('leadership_exp', 3);
|
||||
$general->setResultTurn($turnResult);
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
@@ -183,7 +183,7 @@ class che_정착장려 extends Command\GeneralCommand{
|
||||
$general->increaseVarWithLimit('rice', -$this->reqRice, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar(static::$statKey.'_max', 1);
|
||||
$general->increaseVar(static::$statKey.'_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
@@ -181,7 +181,7 @@ class che_주민선정 extends Command\GeneralCommand{
|
||||
$general->increaseVarWithLimit('rice', -$this->reqRice, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar(static::$statKey.'_max', 1);
|
||||
$general->increaseVar(static::$statKey.'_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
@@ -153,7 +153,7 @@ class che_증여 extends Command\GeneralCommand{
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
|
||||
@@ -106,7 +106,7 @@ class che_집합 extends Command\GeneralCommand{
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
@@ -207,7 +207,7 @@ class che_징병 extends Command\GeneralCommand{
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVarWithLimit('gold', -$reqGold, 0);
|
||||
$general->increaseVarWithLimit('rice', -$reqRice, 0);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
@@ -195,7 +195,7 @@ class che_첩보 extends Command\GeneralCommand{
|
||||
$general->increaseVarWithLimit('rice', -$reqRice, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
$general->applyDB($db);
|
||||
|
||||
@@ -133,7 +133,7 @@ class che_헌납 extends Command\GeneralCommand{
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
|
||||
@@ -273,7 +273,7 @@ class che_화계 extends Command\GeneralCommand{
|
||||
$general->increaseVarWithLimit('rice', -$reqRice, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar($statType.'_max', 1);
|
||||
$general->increaseVar($statType.'_exp', 1);
|
||||
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
@@ -310,8 +310,8 @@ class che_화계 extends Command\GeneralCommand{
|
||||
$general->increaseVarWithLimit('rice', -$reqRice, 0);
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar($statType.'_max', 1);
|
||||
$general->increaseVar('firenum', 1);
|
||||
$general->increaseVar($statType.'_exp', 1);
|
||||
$general->increaseRankVar('firenum', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
$general->applyDB($db);
|
||||
|
||||
@@ -104,7 +104,7 @@ class che_훈련 extends Command\GeneralCommand{
|
||||
|
||||
$general->increaseVar('experience', $exp);
|
||||
$general->increaseVar('dedication', $ded);
|
||||
$general->increaseVar('leadership_max', 1);
|
||||
$general->increaseVar('leadership_exp', 1);
|
||||
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
|
||||
$general->checkStatChange();
|
||||
tryUniqueItemLottery($general);
|
||||
|
||||
+147
-20
@@ -18,6 +18,11 @@ class General implements iAction{
|
||||
protected $raw = [];
|
||||
protected $rawCity = null;
|
||||
|
||||
|
||||
protected $rankVarRead = [];
|
||||
protected $rankVarIncrease = [];
|
||||
protected $rankVarSet = [];
|
||||
|
||||
/** @var \sammo\ActionLogger */
|
||||
protected $logger;
|
||||
|
||||
@@ -35,6 +40,13 @@ class General implements iAction{
|
||||
protected $lastTurn = null;
|
||||
protected $resultTurn = null;
|
||||
|
||||
const RANK_COLUMN = [
|
||||
'firenum'=>1, 'warnum'=>1, 'killnum'=>1, 'deathnum'=>1, 'killcrew'=>1, 'deathcrew'=>1,
|
||||
'ttw'=>1, 'ttd'=>1, 'ttl'=>1, 'ttg'=>1, 'ttp'=>1, 'tlw'=>1, 'tld'=>1, 'tll'=>1, 'tlg'=>1, 'tlp'=>1,
|
||||
'tsw'=>1, 'tsd'=>1, 'tsl'=>1, 'tsg'=>1, 'tsp'=>1, 'tiw'=>1, 'tid'=>1, 'til'=>1, 'tig'=>1, 'tip'=>1,
|
||||
'betwin'=>1, 'betgold'=>1, 'betwingold'=>1,
|
||||
];
|
||||
|
||||
const TURNTIME_FULL_MS = -1;
|
||||
const TURNTIME_FULL = 0;
|
||||
const TURNTIME_HMS = 1;
|
||||
@@ -67,7 +79,7 @@ class General implements iAction{
|
||||
* @param int $month 게임 월
|
||||
* @param bool $fullConstruct iAction, 및 ActionLogger 초기화 여부, false인 경우 no, name, city, nation, level 정도로 초기화 가능
|
||||
*/
|
||||
public function __construct(array $raw, ?array $city, ?int $year, ?int $month, bool $fullConstruct=true){
|
||||
public function __construct(array $raw, ?array $rawRank, ?array $city, ?int $year, ?int $month, bool $fullConstruct=true){
|
||||
//TODO: 밖에서 가져오도록 하면 버그 확률이 높아짐. 필요한 raw 값을 직접 구해야함.
|
||||
|
||||
$staticNation = getNationStaticInfo($raw['nation']);
|
||||
@@ -99,6 +111,10 @@ class General implements iAction{
|
||||
$this->itemObjs['weapon'] = buildItemClass($raw['weapon']);
|
||||
$this->itemObjs['book'] = buildItemClass($raw['book']);
|
||||
$this->itemObjs['item'] = buildItemClass($raw['item']);
|
||||
|
||||
if($rawRank){
|
||||
$this->rankVarRead = $rawRank;
|
||||
}
|
||||
}
|
||||
|
||||
function initLogger(int $year, int $month){
|
||||
@@ -427,10 +443,6 @@ class General implements iAction{
|
||||
$this->setVar('injury', 0);
|
||||
$this->multiplyVar('experience', 0.5);
|
||||
$this->multiplyVar('dedication', 0.5);
|
||||
$this->setVar('firenum', 0);
|
||||
$this->setVar('warnum', 0);
|
||||
$this->setVar('killnum', 0);
|
||||
$this->setVar('killcrew', 0);
|
||||
$this->setVar('age', 20);
|
||||
$this->setVar('specage', 0);
|
||||
$this->setVar('specage2', 0);
|
||||
@@ -440,12 +452,70 @@ class General implements iAction{
|
||||
$this->multiplyVar('dex30', 0.5);
|
||||
$this->multiplyVar('dex40', 0.5);
|
||||
|
||||
$this->setRankVar('firenum', 0);
|
||||
$this->setRankVar('warnum', 0);
|
||||
$this->setRankVar('killnum', 0);
|
||||
$this->setRankVar('killcrew', 0);
|
||||
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
$logger->pushGlobalActionLog("{$generalName}</>{$josaYi} <R>은퇴</>하고 그 자손이 유지를 이어받았습니다.");
|
||||
$logger->pushGeneralActionLog('나이가 들어 <R>은퇴</>하고 자손에게 자리를 물려줍니다.', ActionLogger::PLAIN);
|
||||
$logger->pushGeneralHistoryLog('나이가 들어 은퇴하고, 자손에게 관직을 물려줌');
|
||||
}
|
||||
|
||||
function increaseRankVar(string $key, int $value){
|
||||
if(!key_exists($key, static::RANK_COLUMN)){
|
||||
throw new \InvalidArgumentException('올바르지 않은 인자 :'.$key);
|
||||
}
|
||||
|
||||
if(key_exists($key, $this->rankVarSet)){
|
||||
$this->rankVarSet[$key] += $value;
|
||||
return;
|
||||
}
|
||||
|
||||
if(key_exists($key, $this->rankVarRead)){
|
||||
$this->rankVarSet[$key] = $this->rankVarRead[$key] + $value;
|
||||
unset($this->rankVarRead[$key]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(key_exists($key, $this->rankVarIncrease)){
|
||||
$this->rankVarIncrease[$key] += $value;
|
||||
return;
|
||||
}
|
||||
|
||||
$this->rankVarIncrease[$key] = $value;
|
||||
}
|
||||
|
||||
function setRankVar(string $key, int $value){
|
||||
if(!key_exists($key, static::RANK_COLUMN)){
|
||||
throw new \InvalidArgumentException('올바르지 않은 인자 :'.$key);
|
||||
}
|
||||
|
||||
if(key_exists($key, $this->rankVarRead)){
|
||||
unset($this->rankVarRead[$key]);
|
||||
}
|
||||
else if(key_exists($key, $this->rankVarIncrease)){
|
||||
unset($this->rankVarIncrease[$key]);
|
||||
}
|
||||
$this->rankVarSet[$key]=$value;
|
||||
}
|
||||
|
||||
function getRankVar(string $key):int{
|
||||
if(!key_exists($key, static::RANK_COLUMN)){
|
||||
throw new \InvalidArgumentException('올바르지 않은 인자 :'.$key);
|
||||
}
|
||||
|
||||
if(key_exists($key, $this->rankVarSet)){
|
||||
return $this->rankVarSet[$key];
|
||||
}
|
||||
|
||||
if(!key_exists($key, $this->rankVarRead)){
|
||||
throw new \RuntimeException('인자가 없음 : '.$key);
|
||||
}
|
||||
|
||||
return $this->rankVarRead[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \MeekroDB $db
|
||||
@@ -459,8 +529,30 @@ class General implements iAction{
|
||||
if(!$updateVals){
|
||||
return false;
|
||||
}
|
||||
|
||||
$generalID = $this->getID();
|
||||
|
||||
$db->update('general', $updateVals, 'no=%i', $this->raw['no']);
|
||||
$db->update('general', $updateVals, 'no=%i', $generalID);
|
||||
if(key_exists('nation', $updateVals)){
|
||||
$db->update('rank_data', [
|
||||
'nation_id'=>$updateVals['nation']
|
||||
], 'general_id = %i', $generalID);
|
||||
}
|
||||
|
||||
foreach($this->rankVarIncrease as $rankKey => $rankVal){
|
||||
$db->update('rank_data', [
|
||||
'value'=>$db->sqleval('value + %i', $rankVal)
|
||||
], 'general_id = %i AND type = %s', $generalID, $rankKey);
|
||||
}
|
||||
foreach($this->rankVarSet as $rankKey => $rankVal){
|
||||
$db->update('rank_data', [
|
||||
'value'=>$rankVal
|
||||
], 'general_id = %i AND type = %s', $generalID, $rankKey);
|
||||
$this->rankVarRead[$rankKey] = $rankVal;
|
||||
}
|
||||
$this->rankVarIncrease = [];
|
||||
$this->rankVarSet = [];
|
||||
|
||||
$this->getLogger()->flush();
|
||||
return $db->affectedRows() > 0;
|
||||
}
|
||||
@@ -478,7 +570,7 @@ class General implements iAction{
|
||||
$result = false;
|
||||
|
||||
foreach($table as [$statNickName, $statName]){
|
||||
$statExpName = $statName.'_max';
|
||||
$statExpName = $statName.'_exp';
|
||||
|
||||
if($this->getVar($statExpName) < 0){
|
||||
$logger->pushGeneralActionLog("<R>{$statNickName}</>이 <C>1</> 떨어졌습니다!", ActionLogger::PLAIN);
|
||||
@@ -664,7 +756,7 @@ class General implements iAction{
|
||||
|
||||
//TODO:createGeneralObjListFromDB로, 조건으로 select query나 generalIDList가 들어가는 녀석이 필요할 수 있음
|
||||
|
||||
static private function mergeQueryColumn(?array $column=null, int $constructMode=2):array{
|
||||
static private function mergeQueryColumn(?array $reqColumns=null, int $constructMode=2):array{
|
||||
$minimumColumn = ['no', 'name', 'city', 'nation', 'level'];
|
||||
$defaultEventColumn = [
|
||||
'no', 'name', 'city', 'nation', 'level',
|
||||
@@ -673,24 +765,35 @@ class General implements iAction{
|
||||
];
|
||||
$fullColumn = [
|
||||
'no', 'name', 'name2', 'picture', 'imgsvr', 'nation', 'city', 'troop', 'injury', 'affinity',
|
||||
'leadership', 'leadership_max', 'strength', 'strength_max', 'intel', 'intel_max', 'weapon', 'book', 'horse', 'item',
|
||||
'leadership', 'leadership_exp', 'strength', 'strength_exp', 'intel', 'intel_exp', 'weapon', 'book', 'horse', 'item',
|
||||
'experience', 'dedication', 'level', 'gold', 'rice', 'crew', 'crewtype', 'train', 'atmos', 'turntime',
|
||||
'makelimit', 'killturn', 'block', 'dedlevel', 'explevel', 'age', 'startage', 'belong',
|
||||
'personal', 'special', 'special2', 'defence_train', 'tnmt', 'npc', 'npc_org', 'deadyear', 'npcmsg',
|
||||
'dex0', 'dex10', 'dex20', 'dex30', 'dex40',
|
||||
'warnum', 'firenum', 'killnum', 'deathnum', 'killcrew', 'deathcrew', 'recwar', 'last_turn', 'myset',
|
||||
'recwar', 'last_turn', 'myset',
|
||||
'specage', 'specage2', 'con', 'connect', 'owner', 'aux'
|
||||
];
|
||||
|
||||
if($column === null){
|
||||
return $fullColumn;
|
||||
if($reqColumns === null){
|
||||
return [$fullColumn, static::RANK_COLUMN];
|
||||
}
|
||||
else if($constructMode > 1){
|
||||
return array_unique(array_merge($defaultEventColumn, $column));
|
||||
|
||||
$rankColumn = [];
|
||||
$subColumn = [];
|
||||
foreach($reqColumns as $column){
|
||||
if(key_exists($column, static::RANK_COLUMN)){
|
||||
$rankColumn[] = $column;
|
||||
}
|
||||
else{
|
||||
$subColumn[] = $column;
|
||||
}
|
||||
}
|
||||
else{
|
||||
return array_unique(array_merge($minimumColumn, $column));
|
||||
|
||||
if($constructMode > 1){
|
||||
return [array_unique(array_merge($defaultEventColumn, $subColumn)), $rankColumn];
|
||||
}
|
||||
|
||||
return [array_unique(array_merge($minimumColumn, $subColumn)), $rankColumn];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -715,20 +818,35 @@ class General implements iAction{
|
||||
$month = null;
|
||||
}
|
||||
|
||||
$column = static::mergeQueryColumn($column, $constructMode);
|
||||
[$column, $rankColumn] = static::mergeQueryColumn($column, $constructMode);
|
||||
|
||||
$rawGenerals = Util::convertArrayToDict(
|
||||
$db->queryFirstRow('SELECT %l FROM general WHERE no IN %li', Util::formatListOfBackticks($column), $generalIDList),
|
||||
'no'
|
||||
);
|
||||
|
||||
$rawRanks = [];
|
||||
if($rankColumn){
|
||||
$rawValue = $db->queryAllLists(
|
||||
'SELECT `general_id`, `type`, `value` FROM rank_data WHERE general_id IN %li AND `type` IN %ls',
|
||||
$generalIDList,
|
||||
$rankColumn
|
||||
);
|
||||
foreach($rawValue as [$generalID, $rankType, $rankValue]){
|
||||
if(!key_exists($generalID, $rawRanks)){
|
||||
$rawRanks[$generalID] = [];
|
||||
}
|
||||
$rawRanks[$generalID][$rankType] = $rankValue;
|
||||
}
|
||||
}
|
||||
|
||||
$result = [];
|
||||
foreach($generalIDList as $generalID){
|
||||
if(!key_exists($generalID, $rawGenerals)){
|
||||
$result[$generalID] = new DummyGeneral($constructMode > 0);
|
||||
continue;
|
||||
}
|
||||
$result[$generalID] = new static($rawGenerals[$generalID], null, $year, $month, $constructMode > 1);
|
||||
$result[$generalID] = new static($rawGenerals[$generalID], $rawRanks[$generalID], null, $year, $month, $constructMode > 1);
|
||||
}
|
||||
|
||||
return $result;
|
||||
@@ -745,14 +863,23 @@ class General implements iAction{
|
||||
$month = null;
|
||||
}
|
||||
|
||||
$column = static::mergeQueryColumn($column, $constructMode);
|
||||
[$column, $rankColumn] = static::mergeQueryColumn($column, $constructMode);
|
||||
|
||||
$rawGeneral = $db->queryFirstRow('SELECT %l FROM general WHERE no = %i', Util::formatListOfBackticks($column), $generalID);
|
||||
if(!$rawGeneral){
|
||||
return new DummyGeneral($constructMode > 0);
|
||||
}
|
||||
|
||||
$general = new static($rawGeneral, null, $year, $month, $constructMode > 1);
|
||||
$rawRankValues = [];
|
||||
if($rankColumn){
|
||||
$rawValue = $db->queryAllLists('SELECT `type`, `value` FROM rank_data WHERE general_id = %i AND `type` IN %ls', $generalID, $rankColumn);
|
||||
foreach($rawValue as [$rankType, $rankValue]){
|
||||
$rawRankValues[$rankType] = $rankValue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$general = new static($rawGeneral, $rawRankValues, null, $year, $month, $constructMode > 1);
|
||||
|
||||
return $general;
|
||||
}
|
||||
|
||||
@@ -1355,8 +1355,8 @@ class GeneralAI{
|
||||
);//기본 병종
|
||||
$baseArmCost = $general->onCalcDomestic('징병', 'cost', $baseArmCost);
|
||||
$baseArmRice = $general->getLeadership(false) / 2 * $crewType->rice * getTechCost($tech);
|
||||
if($general->getVar('deathcrew') > 500 && $general->getVar('killcrew') > 500){
|
||||
$baseArmRice *= $general->getVar('killcrew') / $general->getVar('deathcrew');
|
||||
if($general->getRankVar('deathcrew') > 500 && $general->getRankVar('killcrew') > 500){
|
||||
$baseArmRice *= $general->getRankVar('killcrew') / $general->getRankVar('deathcrew');
|
||||
}
|
||||
|
||||
return [$baseArmCost, $baseArmRice];
|
||||
|
||||
@@ -282,6 +282,15 @@ class ResetHelper{
|
||||
];
|
||||
}
|
||||
$db->insert('general_turn', $turnRows);
|
||||
|
||||
foreach(General::RANK_COLUMN as $rankColumn){
|
||||
$db->insert('rank_data', [
|
||||
'general_id'=>$generalID,
|
||||
'nation_id'=>0,
|
||||
'type'=>$rankColumn,
|
||||
'value'=>0
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
foreach($env as $key=>$value){
|
||||
|
||||
@@ -358,6 +358,15 @@ class NPC{
|
||||
}
|
||||
$db->insert('general_turn', $turnRows);
|
||||
|
||||
foreach(\sammo\General::RANK_COLUMN as $rankColumn){
|
||||
$db->insert('rank_data', [
|
||||
'general_id'=>$this->generalID,
|
||||
'nation_id'=>0,
|
||||
'type'=>$rankColumn,
|
||||
'value'=>0
|
||||
]);
|
||||
}
|
||||
|
||||
return true; //생성되었다.
|
||||
}
|
||||
}
|
||||
@@ -113,7 +113,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
|
||||
function addWin(){
|
||||
$general = $this->general;
|
||||
$general->increaseVar('killnum', 1);
|
||||
$general->increaseRankVar('killnum', 1);
|
||||
$general->multiplyVarWithLimit('atmos', 1.1, null, GameConst::$maxAtmosByWar);
|
||||
|
||||
$this->addStatExp(1);
|
||||
@@ -122,11 +122,11 @@ class WarUnitGeneral extends WarUnit{
|
||||
function addStatExp(int $value = 1){
|
||||
$general = $this->general;
|
||||
if($this->crewType->armType == GameUnitConst::T_WIZARD) { // 귀병
|
||||
$general->increaseVar('intel_max', $value);
|
||||
$general->increaseVar('intel_exp', $value);
|
||||
} elseif($this->crewType->armType == GameUnitConst::T_SIEGE) { // 차병
|
||||
$general->increaseVar('leadership_max', $value);
|
||||
$general->increaseVar('leadership_exp', $value);
|
||||
} else {
|
||||
$general->increaseVar('strength_max', $value);
|
||||
$general->increaseVar('strength_exp', $value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
|
||||
function addLose(){
|
||||
$general = $this->general;
|
||||
$general->increaseVar('deathnum', 1);
|
||||
$general->increaseRankVar('deathnum', 1);
|
||||
$this->addStatExp(1);
|
||||
}
|
||||
|
||||
@@ -310,8 +310,8 @@ class WarUnitGeneral extends WarUnit{
|
||||
$this->isFinished = true;
|
||||
$general = $this->general;
|
||||
|
||||
$general->increaseVar('killcrew', $this->killed);
|
||||
$general->increaseVar('deathcrew', $this->dead);
|
||||
$general->increaseRankVar('killcrew', $this->killed);
|
||||
$general->increaseRankVar('deathcrew', $this->dead);
|
||||
|
||||
$general->updateVar('rice', Util::round($general->getVar('rice')));
|
||||
$general->updateVar('experience', Util::round($general->getVar('experience')));
|
||||
|
||||
+3
-4
@@ -9,10 +9,6 @@ DROP TABLE IF EXISTS `nation_turn`;
|
||||
DROP TABLE IF EXISTS board;
|
||||
DROP TABLE IF EXISTS comment;
|
||||
|
||||
# 회의실 테이블 삭제
|
||||
DROP TABLE IF EXISTS board;
|
||||
DROP TABLE IF EXISTS comment;
|
||||
|
||||
# 도시 테이블 삭제
|
||||
DROP TABLE IF EXISTS city;
|
||||
|
||||
@@ -52,6 +48,9 @@ DROP TABLE IF EXISTS general_public_record;
|
||||
|
||||
DROP TABLE IF EXISTS select_npc_token;
|
||||
|
||||
DROP TABLE IF EXISTS betting;
|
||||
DROP TABLE IF EXISTS rank_data;
|
||||
|
||||
DROP TABLE IF EXISTS reserved_open;
|
||||
CREATE TABLE `reserved_open` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
|
||||
+40
-48
@@ -25,11 +25,11 @@ CREATE TABLE `general` (
|
||||
`city` INT(6) NOT NULL DEFAULT '3',
|
||||
`troop` INT(6) NOT NULL DEFAULT '0',
|
||||
`leadership` INT(3) NOT NULL DEFAULT '50',
|
||||
`leadership_max` INT(3) NOT NULL DEFAULT '0',
|
||||
`leadership_exp` INT(3) NOT NULL DEFAULT '0',
|
||||
`strength` INT(3) NOT NULL DEFAULT '50',
|
||||
`strength_max` INT(3) NOT NULL DEFAULT '0',
|
||||
`strength_exp` INT(3) NOT NULL DEFAULT '0',
|
||||
`intel` INT(3) NOT NULL DEFAULT '50',
|
||||
`intel_max` INT(3) NOT NULL DEFAULT '0',
|
||||
`intel_exp` INT(3) NOT NULL DEFAULT '0',
|
||||
`injury` INT(2) NOT NULL DEFAULT '0',
|
||||
`experience` INT(6) NOT NULL DEFAULT '0',
|
||||
`dedication` INT(6) NOT NULL DEFAULT '0',
|
||||
@@ -60,12 +60,6 @@ CREATE TABLE `general` (
|
||||
`block` INT(1) NULL DEFAULT '0',
|
||||
`dedlevel` INT(2) NULL DEFAULT '0',
|
||||
`explevel` INT(2) NULL DEFAULT '0',
|
||||
`firenum` INT(3) NULL DEFAULT '0',
|
||||
`warnum` INT(3) NULL DEFAULT '0',
|
||||
`killnum` INT(3) NULL DEFAULT '0',
|
||||
`deathnum` INT(3) NULL DEFAULT '0',
|
||||
`killcrew` INT(7) NULL DEFAULT '0',
|
||||
`deathcrew` INT(7) NULL DEFAULT '0',
|
||||
`age` INT(3) NULL DEFAULT '20',
|
||||
`startage` INT(3) NULL DEFAULT '20',
|
||||
`history` MEDIUMTEXT NULL DEFAULT '',
|
||||
@@ -82,45 +76,6 @@ CREATE TABLE `general` (
|
||||
`tournament` INT(1) NULL DEFAULT '0',
|
||||
`vote` INT(1) NULL DEFAULT '0',
|
||||
`newvote` INT(1) NULL DEFAULT '0',
|
||||
`ttw` INT(4) NULL DEFAULT '0',
|
||||
`ttd` INT(4) NULL DEFAULT '0',
|
||||
`ttl` INT(4) NULL DEFAULT '0',
|
||||
`ttg` INT(4) NULL DEFAULT '0',
|
||||
`ttp` INT(4) NULL DEFAULT '0',
|
||||
`tlw` INT(4) NULL DEFAULT '0',
|
||||
`tld` INT(4) NULL DEFAULT '0',
|
||||
`tll` INT(4) NULL DEFAULT '0',
|
||||
`tlg` INT(4) NULL DEFAULT '0',
|
||||
`tlp` INT(4) NULL DEFAULT '0',
|
||||
`tsw` INT(4) NULL DEFAULT '0',
|
||||
`tsd` INT(4) NULL DEFAULT '0',
|
||||
`tsl` INT(4) NULL DEFAULT '0',
|
||||
`tsg` INT(4) NULL DEFAULT '0',
|
||||
`tsp` INT(4) NULL DEFAULT '0',
|
||||
`tiw` INT(4) NULL DEFAULT '0',
|
||||
`tid` INT(4) NULL DEFAULT '0',
|
||||
`til` INT(4) NULL DEFAULT '0',
|
||||
`tig` INT(4) NULL DEFAULT '0',
|
||||
`tip` INT(4) NULL DEFAULT '0',
|
||||
`bet0` INT(8) NULL DEFAULT '0',
|
||||
`bet1` INT(8) NULL DEFAULT '0',
|
||||
`bet2` INT(8) NULL DEFAULT '0',
|
||||
`bet3` INT(8) NULL DEFAULT '0',
|
||||
`bet4` INT(8) NULL DEFAULT '0',
|
||||
`bet5` INT(8) NULL DEFAULT '0',
|
||||
`bet6` INT(8) NULL DEFAULT '0',
|
||||
`bet7` INT(8) NULL DEFAULT '0',
|
||||
`bet8` INT(8) NULL DEFAULT '0',
|
||||
`bet9` INT(8) NULL DEFAULT '0',
|
||||
`bet10` INT(8) NULL DEFAULT '0',
|
||||
`bet11` INT(8) NULL DEFAULT '0',
|
||||
`bet12` INT(8) NULL DEFAULT '0',
|
||||
`bet13` INT(8) NULL DEFAULT '0',
|
||||
`bet14` INT(8) NULL DEFAULT '0',
|
||||
`bet15` INT(8) NULL DEFAULT '0',
|
||||
`betwin` INT(8) NULL DEFAULT '0',
|
||||
`betgold` INT(8) NULL DEFAULT '0',
|
||||
`betwingold` INT(8) NULL DEFAULT '0',
|
||||
`last_turn` TEXT NOT NULL DEFAULT '{}',
|
||||
`aux` TEXT NOT NULL DEFAULT '{}' COMMENT 'JSON',
|
||||
`penalty` TEXT NULL DEFAULT '',
|
||||
@@ -642,3 +597,40 @@ CREATE TABLE IF NOT EXISTS `storage` (
|
||||
)
|
||||
COLLATE='utf8mb4_general_ci'
|
||||
ENGINE=Aria;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `betting` (
|
||||
`general_id` INT(11) NOT NULL,
|
||||
`bet0` INT(11) NOT NULL,
|
||||
`bet1` INT(11) NOT NULL,
|
||||
`bet2` INT(11) NOT NULL,
|
||||
`bet3` INT(11) NOT NULL,
|
||||
`bet4` INT(11) NOT NULL,
|
||||
`bet5` INT(11) NOT NULL,
|
||||
`bet6` INT(11) NOT NULL,
|
||||
`bet7` INT(11) NOT NULL,
|
||||
`bet8` INT(11) NOT NULL,
|
||||
`bet9` INT(11) NOT NULL,
|
||||
`bet10` INT(11) NOT NULL,
|
||||
`bet11` INT(11) NOT NULL,
|
||||
`bet12` INT(11) NOT NULL,
|
||||
`bet13` INT(11) NOT NULL,
|
||||
`bet14` INT(11) NOT NULL,
|
||||
`bet15` INT(11) NOT NULL,
|
||||
PRIMARY KEY (`general_id`)
|
||||
)
|
||||
ENGINE=Aria;
|
||||
|
||||
CREATE TABLE `rank_data` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`nation_id` INT(11) NOT NULL DEFAULT 0,
|
||||
`general_id` INT(11) NOT NULL,
|
||||
`type` VARCHAR(20) NOT NULL,
|
||||
`value` INT(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `by_general` (`general_id`, `type`),
|
||||
INDEX `by_type` (`type`, `value`),
|
||||
INDEX `by_nation` (`nation_id`, `type`, `value`)
|
||||
)
|
||||
COLLATE='utf8mb4_general_ci'
|
||||
ENGINE=Aria
|
||||
;
|
||||
@@ -339,6 +339,20 @@ class Session
|
||||
return $obj->userID;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getGeneralID(bool $requireLogin = false, string $exitPath = '..')
|
||||
{
|
||||
if ($requireLogin) {
|
||||
$obj = self::requireLogin($exitPath);
|
||||
} else {
|
||||
$obj = self::getInstance();
|
||||
}
|
||||
|
||||
return $obj->generalID??0;
|
||||
}
|
||||
|
||||
public function isLoggedIn(bool $ignoreOTP = false): bool
|
||||
{
|
||||
if(!$ignoreOTP){
|
||||
|
||||
@@ -720,4 +720,11 @@ class Util extends \utilphp\util
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
function isPowerOfTwo(int $number):bool{
|
||||
if($number <= 0){
|
||||
return false;
|
||||
}
|
||||
return ($number & ($number - 1)) == 0;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user