general.turn0 기반 코드 일부를 general_turn 기반으로 변경

This commit is contained in:
2018-10-04 01:18:23 +09:00
parent f5212b4aa1
commit 9b4bf148cc
8 changed files with 55 additions and 122 deletions
+3 -3
View File
@@ -113,12 +113,12 @@ for($i=0; $i < 27; $i++) {
<td><input type=submit name=btn value='접속 허용'><input type=submit name=btn value='접속 제한'></td> <td><input type=submit name=btn value='접속 허용'><input type=submit name=btn value='접속 제한'></td>
</tr> </tr>
<tr> <tr>
<td align=center>턴설정</td> <td align=center>턴 시각 설정</td>
<td><input type=submit name=btn value='00턴'><input type=submit name=btn value='랜덤턴'></td> <td><input type=submit name=btn value='00턴'><input type=submit name=btn value='랜덤턴'></td>
</tr> </tr>
<tr> <tr>
<td align=center>NPC해제</td> <td align=center>명령 설정</td>
<td><input type=submit name=btn value='NPC해제'><input type=submit name=btn value='하야입력'><input type=submit name=btn value='방랑해산'><input type=submit name=btn value='NPC설정'></td> <td><input type=submit name=btn value='하야입력'><input type=submit name=btn value='방랑해산'></td>
</tr> </tr>
<tr> <tr>
<td align=center>메세지 전달</td> <td align=center>메세지 전달</td>
+17 -19
View File
@@ -93,12 +93,15 @@ switch($btn) {
], '`no` IN %li', $genlist); ], '`no` IN %li', $genlist);
break; break;
case "강제 사망": case "강제 사망":
$date = TimeUtil::now(); $date = TimeUtil::now(true);
$db->update('general', [ $db->update('general', [
'turn0'=>EncodeCommand(0, 0, 0, 0),
'killturn'=>0, 'killturn'=>0,
'turntime'=>$date, 'turntime'=>$date,
], '`no` IN %li', $genlist); ], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'휴식',
'arg'=>'{}'
], 'general_id IN %li AND turn_idx = 0', $genlist);
break; break;
case "특기 부여": case "특기 부여":
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']); [$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
@@ -309,26 +312,21 @@ switch($btn) {
], '`no` IN %li AND item < %i', $genlist, $weap); ], '`no` IN %li AND item < %i', $genlist, $weap);
} }
break; break;
case "NPC해제":
$db->update('general', [
'npc'=>1
], '`no` IN %li', $genlist);
break;
case "하야입력": case "하야입력":
$db->update('general', [ $db->update('general_turn', [
'turn0'=>EncodeCommand(0, 0, 0, 45) 'action'=>'che_하야',
], '`no` IN %li', $genlist); 'arg'=>'{}'
], 'general_id IN %li AND turn_idx = 0', $genlist);
break; break;
case "방랑해산": case "방랑해산":
$db->update('general', [ $db->update('general_turn', [
'turn0'=>EncodeCommand(0, 0, 0, 47), 'action'=>'che_방랑',
'turn1'=>EncodeCommand(0, 0, 0, 56) 'arg'=>'{}'
], '`no` IN %li', $genlist); ], 'general_id IN %li AND turn_idx = 0', $genlist);
break; $db->update('general_turn', [
case "NPC설정": 'action'=>'che_해산',
$db->update('general', [ 'arg'=>'{}'
'npc'=>2 ], 'general_id IN %li AND turn_idx = 1', $genlist);
], '`no` IN %li', $genlist);
break; break;
case "00턴": case "00턴":
$turnterm = $gameStor->turnterm; $turnterm = $gameStor->turnterm;
+9 -2
View File
@@ -51,8 +51,15 @@ switch($btn) {
DB::db()->query('update general set killturn=8000 where no IN %li',$genlist); DB::db()->query('update general set killturn=8000 where no IN %li',$genlist);
break; break;
case "강제 사망": case "강제 사망":
$date = TimeUtil::now(); $date = TimeUtil::now(true);
DB::db()->query('update general set turn0=%s,killturn=0,turntime=%s where no IN %li',EncodeCommand(0, 0, 0, 0),$date, $genlist); $db->update('general', [
'killturn'=>0,
'turntime'=>$date,
], '`no` IN %li', $genlist);
$db->update('general_turn', [
'action'=>'휴식',
'arg'=>'{}'
], 'general_id IN %li AND turn_idx = 0', $genlist);
break; break;
case "메세지 전달": case "메세지 전달":
//TODO:새 갠메 시스템으로 변경 //TODO:새 갠메 시스템으로 변경
+3 -77
View File
@@ -14,8 +14,6 @@ $double = Util::getReq('double', 'int', 0);
$third = Util::getReq('third', 'int', 0); $third = Util::getReq('third', 'int', 0);
$fourth = Util::getReq('fourth', 'int', 0); $fourth = Util::getReq('fourth', 'int', 0);
extractMissingPostToGlobals();
if(!$turn){ if(!$turn){
$turn = [0]; $turn = [0];
} }
@@ -28,8 +26,10 @@ if(!$turn){
$session = Session::requireGameLogin()->setReadOnly(); $session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID(); $userID = Session::getUserID();
//TODO: 삭제. 새로 짜
throw new \sammo\NotImplementedException();
$db = DB::db(); $db = DB::db();
$connect=$db->get();
if($command < 0) { $command = 0; } if($command < 0) { $command = 0; }
if($double < 0) { $double = 0; } if($double < 0) { $double = 0; }
@@ -39,74 +39,20 @@ if($command > 99) { $command = 0; }
if($double > 9999) { $double = 9999; } if($double > 9999) { $double = 9999; }
if($fourth > 9999) { $fourth = 9999; } if($fourth > 9999) { $fourth = 9999; }
$comStr = EncodeCommand($fourth, $third, $double, $command);
// 건국 // 건국
if($command == 46) { if($command == 46) {
$name = StringUtil::neutralize($name);
if($name == "") { $name = "무명"; }
$db->update('general', [
'makenation'=>$name
], 'owner=%i', $userID);
$query = [];
foreach($turn as $turnIdx){
$query['turn'.$turnIdx] = $comStr;
}
$db->update('general', $query, 'owner=%i', $userID);
header('Location:./');
die(); die();
} }
//통합제의 //통합제의
if($command == 53) { if($command == 53) {
$query = "select nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if($me['level'] >= 5) {
$nationname = StringUtil::neutralize($nationname, 18);
if($nationname == "") { $nationname = "무명"; }
$db->update('general', [
'makenation'=>$nationname
], 'level>=5 and nation=%i', $me['nation']);
$count = count($turn);
$str = "type=type";
for($i=0; $i < $count; $i++) {
$str .= ",l{$me['level']}turn{$turn[$i]}='{$comStr}'";
}
$query = "update nation set {$str} where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
header('location:b_chiefcenter.php'); header('location:b_chiefcenter.php');
die(); die();
} }
//불가침 //불가침
if($command == 61) { if($command == 61) {
$query = "select nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if($me['level'] >= 5) {
$note = StringUtil::neutralize($note, 90);
$query = "update diplomacy set reserved='{$note}' where me='{$me['nation']}' and you='$double'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$count = count($turn);
$str = "type=type";
for($i=0; $i < $count; $i++) {
$str .= ",l{$me['level']}turn{$turn[$i]}='{$comStr}'";
}
$query = "update nation set {$str} where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
header('location:b_chiefcenter.php'); header('location:b_chiefcenter.php');
die(); die();
} }
@@ -116,30 +62,10 @@ if($command == 61) {
//백성동원, 수몰, 허보, 피장파장, 의병모집, 이호경식, 급습 //백성동원, 수몰, 허보, 피장파장, 의병모집, 이호경식, 급습
//국기변경 //국기변경
if($command == 23 || $command == 24 || $command == 27 || $command == 51 || $command == 52 || $command > 60) { if($command == 23 || $command == 24 || $command == 27 || $command == 51 || $command == 52 || $command > 60) {
$query = "select no,nation,level from general where owner='{$userID}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
if(($command == 23 || $command == 24 || $command == 27) && $me['no'] == $third) {
// 자기자신에게 악용 금지
} elseif($me['level'] >= 5) {
$count = count($turn);
$str = "type=type";
for($i=0; $i < $count; $i++) {
$str .= ",l{$me['level']}turn{$turn[$i]}='{$comStr}'";
}
$query = "update nation set {$str} where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
header('location:b_chiefcenter.php'); header('location:b_chiefcenter.php');
die(); die();
} }
//일반 턴 //일반 턴
$query = [];
foreach($turn as $turnIdx){
$query['turn'.$turnIdx] = $comStr;
}
$db->update('general', $query, 'owner=%i', $userID);
header('Location:./'); header('Location:./');
+17 -8
View File
@@ -796,9 +796,14 @@ function checkMerge() {
} else { } else {
$resignCount = Util::round($npccount2*(rand()%21+90)/100); $resignCount = Util::round($npccount2*(rand()%21+90)/100);
} }
$resignCommand = EncodeCommand(0, 0, 0, 45); //하야
$query = "update general set turn0='$resignCommand' where nation='{$you['nation']}' and npc>=2 order by rand() limit {$resignCount}"; $npcList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND npc>=2 AND npc != 5 ORDER BY rand() LIMIT %i', $you['nation'], $resignCount);
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); if($npcList){
$db->update('general_turn', [
'action'=>'che_하야',
'arg'=>null
], 'general_id IN %li AND turn_idx = 0');
}
pushGenLog($me, $mylog); pushGenLog($me, $mylog);
pushGenLog($you, $youlog); pushGenLog($you, $youlog);
@@ -847,11 +852,11 @@ function checkSurrender() {
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$mynation = MYDB_fetch_array($result); $mynation = MYDB_fetch_array($result);
//양국 NPC수 //양국 NPC수
$query = "select no from general where nation='{$you['nation']}' and npc>=2"; $query = "select no from general where nation='{$you['nation']}' and npc>=2 and npc != 5";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$npccount = MYDB_num_rows($result); $npccount = MYDB_num_rows($result);
//양국 NPC수 //양국 NPC수
$query = "select no from general where nation='{$me['nation']}' and npc>=2"; $query = "select no from general where nation='{$me['nation']}' and npc>=2 and npc != 5";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$npccount2 = MYDB_num_rows($result); $npccount2 = MYDB_num_rows($result);
@@ -944,9 +949,13 @@ function checkSurrender() {
} else { } else {
$resignCount = Util::round($npccount2*(rand()%21+90)/100); $resignCount = Util::round($npccount2*(rand()%21+90)/100);
} }
$resignCommand = EncodeCommand(0, 0, 0, 45); //하야 $npcList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND npc>=2 AND npc != 5 ORDER BY rand() LIMIT %i', $you['nation'], $resignCount);
$query = "update general set turn0='$resignCommand' where nation='{$you['nation']}' and npc>=2 order by rand() limit {$resignCount}"; if($npcList){
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $db->update('general_turn', [
'action'=>'che_하야',
'arg'=>null
], 'general_id IN %li AND turn_idx = 0');
}
pushGenLog($me, $mylog); pushGenLog($me, $mylog);
pushGenLog($you, $youlog); pushGenLog($you, $youlog);
+2 -4
View File
@@ -561,10 +561,8 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
} }
//NPC인 경우 10% 확률로 임관(엔장, 인재, 의병) //NPC인 경우 10% 확률로 임관(엔장, 인재, 의병)
if($gen['npc'] >= 2 && $gen['npc'] <= 8 && rand() % 100 < 10) { if($gen['npc'] >= 2 && $gen['npc'] <= 8 && $gen['npc'] != 5 && rand() % 100 < 10) {
$commissionCommand = EncodeCommand(0, 0, $nation['nation'], 25); //임관 setGeneralCommand($gen['no'], [0], 'che_임관', ['destNationID'=>$nation['nation']]);
$query = "update general set turn0='$commissionCommand' where no={$gen['no']}";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
} }
} }
unset($genlog[1]); unset($genlog[1]);
+1 -6
View File
@@ -188,12 +188,7 @@ function command_99($turn) {
$me = MYDB_fetch_array($result); $me = MYDB_fetch_array($result);
if($me['level'] >= 5) { if($me['level'] >= 5) {
$command = EncodeCommand(0, 0, 0, 99); setNationCommand($me['nation'], $me['level'], [0], 'che_휴식');
for($i=0; $i < count($turn); $i++) {
$query = "update nation set l{$me['level']}turn{$turn[$i]}='{$command}' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
} }
header('location:b_chiefcenter.php'); header('location:b_chiefcenter.php');
+3 -3
View File
@@ -211,7 +211,7 @@ WHERE turntime < %s ORDER BY turntime ASC, `no` ASC',
} }
$generalCommand = $generalWork['action']; $generalCommand = $generalWork['action'];
$generalArg = $generalWork['arg']; $generalArg = Json::decode($generalWork['arg'])??[];
unset($generalWork['action']); unset($generalWork['action']);
unset($generalWork['arg']); unset($generalWork['arg']);
@@ -225,11 +225,11 @@ WHERE turntime < %s ORDER BY turntime ASC, `no` ASC',
$lastNationTurnKey = "turn_last_{$generalWork['nation']}_{$generalWork['level']}"; $lastNationTurnKey = "turn_last_{$generalWork['nation']}_{$generalWork['level']}";
$lastNationTurn = $nationStor->getDBValue($lastNationTurnKey)??[]; $lastNationTurn = $nationStor->getDBValue($lastNationTurnKey)??[];
//수뇌 몇 없는데 매번 left join 하는건 낭비인것 같다. //수뇌 몇 없는데 매번 left join 하는건 낭비인것 같다.
$rawNationTurn = $db->queryFirstRow( $rawNationTurn = Json::decode($db->queryFirstRow(
'SELECT action, arg FROM nation_turn WHERE nation_id = %i AND level = %i AND turn_idx =0', 'SELECT action, arg FROM nation_turn WHERE nation_id = %i AND level = %i AND turn_idx =0',
$generalWork['nation'], $generalWork['nation'],
$generalWork['level'] $generalWork['level']
); ))??[];
$hasNationTurn = true; $hasNationTurn = true;
} }