메시지 전송 시스템을 새 시스템에 맞게 수정

국가의 기본 정보를 중복 쿼리 없이 받아오는 함수 추가
  - 해당 함수를 위해 국가색, 건국 등의 국가 정보가 바뀌는 경우 refresh
새 메시지 시스템 적용을 위해 메인 페이지 틀 변경
This commit is contained in:
2018-02-22 02:04:54 +09:00
parent 2fb005ec6d
commit 34cd58d8f3
15 changed files with 180 additions and 226 deletions
+1
View File
@@ -234,6 +234,7 @@ switch($btn) {
}
break;
case "메세지 전달":
//TODO:새 갠메 시스템으로 변경
$date = date('Y-m-d H:i:s');
for($i=0; $i < sizeof($genlist); $i++) {
$query = "select msgindex from general where no='$genlist[$i]'";
+1
View File
@@ -116,6 +116,7 @@ switch($btn) {
}
break;
case "메세지 전달":
//TODO:새 갠메 시스템으로 변경
$date = date('Y-m-d H:i:s');
for($i=0; $i < sizeof($genlist); $i++) {
$query = "select msgindex from general where no='$genlist[$i]'";
+2 -8
View File
@@ -50,16 +50,10 @@ switch($btn) {
getDB()->query('update general set turn0=0,killturn=0,turntime=%s where no IN %li',$date, $genlist);
break;
case "메세지 전달":
//TODO:새 갠메 시스템으로 변경
$date = date('Y-m-d H:i:s');
$msg;
for($i=0; $i < sizeof($genlist); $i++) {
$query = "select msgindex from general where no='$genlist[$i]'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$you = MYDB_fetch_array($result);
// 상대에게 발송
$you['msgindex']++;
if($you['msgindex'] >= 10) { $you['msgindex'] = 0; }
$query = "update general set msgindex='{$you['msgindex']}',msg{$you['msgindex']}_type=10,msg{$you['msgindex']}='$msg',msg{$you['msgindex']}_who='$genlist[$i]'+10000,msg{$you['msgindex']}_when='$date',newmsg=1 where no='$genlist[$i]'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
break;
}
-139
View File
@@ -1,139 +0,0 @@
<?php
include "lib.php";
include "func.php";
// $msg, $genlist
//로그인 검사
CheckLogin(1);
$connect = dbConn();
increaseRefresh($connect, "서신전달", 1);
if(getBlockLevel() == 1 || getBlockLevel() == 3) {
$msg = "";
$genlist = 0;
}
$query = "select conlimit from game where no=1";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$admin = MYDB_fetch_array($result);
$query = "select no,name,nation,level,msgindex,userlevel,con,picture,imgsvr from general where owner='{$_SESSION['noMember']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$con = checkLimit($me['userlevel'], $me['con'], $admin['conlimit']);
if($con >= 2) {
//echo "<script>window.top.main.location.replace('index.php');</script>"; exit();
header('Content-Type: application/json');
echo json_encode([
'result' => false,
'reason' => '권한이 충분하지 않습니다.',
'redirect' => 'index.php',
'page_target' => 'top'
]);
echo 'index.php';//TODO:debug all and replace
}
$msg = str_replace("|", "", $msg);
$msg = trim($msg);
//TODO : 몰라서 임시로 값 세팅해봄. 추후에 용도를 확인하고 수정 필요
$s = 50;
$msg = _String::SubStrForWidth($msg, $s, 198);
$date = date('Y-m-d H:i:s');
// 전체 메세지
if($genlist == 9999 && str_replace(" ", "", $msg) != "") {
echo '<script>console.log('.$me['nation'].')</script>';
if($me['nation'] == 0) {
$nation['name'] = '재야';
$nation['color'] = 'FFFFFF';
} else {
$query = "select nation,name,color from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
}
PushMsg(1, 0, $me['picture'], $me['imgsvr'], "{$me['name']}:", $nation['color'], $nation['name'], $nation['color'], $msg);
// 국가 메세지
} elseif($genlist >= 9000 && $msg != "") {
if($me['nation'] == 0) {
$nation['name'] = '재야';
$nation['color'] = 'FFFFFF';
$nation['nation'] = 0;
} else {
$query = "select nation,name,color from nation where nation='{$me['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
}
$genlist -= 9000;
$query = "select nation,name,color from nation where nation='$genlist'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$dest = MYDB_fetch_array($result);
//$dest가 없다는건 수신도 재야.
if(empty($dest)){
$dest['name'] = '재야';
$dest['color'] = 'FFFFFF';
$dest['nation'] = 0;
}
if($nation['nation'] == $dest['nation']) {
PushMsg(2, $nation['nation'], $me['picture'], $me['imgsvr'], "{$me['name']}:", $nation['color'], $dest['name'], $dest['color'], $msg);
} else {
//타국에 보내는 경우
PushMsg(2, $nation['nation'], $me['picture'], $me['imgsvr'], "{$me['name']}:{$nation['name']}", $nation['color'], $dest['name'], $dest['color'], $msg);
// 수뇌이면 발송, 아니면 자국으로 돌림
if($me['level'] >= 5) {
PushMsg(3, $dest['nation'], $me['picture'], $me['imgsvr'], "{$me['name']}:{$nation['name']}", $nation['color'], $dest['name'], $dest['color'], $msg);
} else {
PushMsg(2, $nation['nation'], $me['picture'], $me['imgsvr'], "{$me['name']}:{$nation['name']}", $nation['color'], $dest['name'], $dest['color'], "반송");
}
}
// 개인 메세지
} elseif($genlist > 0 && $msg != "") {
$query = "select name,msgindex from general where no='$genlist'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$you = MYDB_fetch_array($result);
//발신, 수신인 코딩
$who = $me['no'] * 10000 + $genlist;
$msg = addslashes(SQ2DQ($msg));
$query = "select msg{$me['msgindex']}_when as priv_when from general where no='{$me['no']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$prev_msg = MYDB_fetch_array($result);
$diff_second = strtotime($date) - strtotime($prev_msg['priv_when']);
if($diff_second < 3) {
$who = 1 * 10000 + $me['no']; // 운영자가 본인에게
$msg = "개인메세지는 3초당 1건만 보낼 수 있습니다!";
//자신에게 표시
$me['msgindex']++;
if($me['msgindex'] >= 10) { $me['msgindex'] = 0; }
$query = "update general set msgindex='{$me['msgindex']}',msg{$me['msgindex']}='$msg',msg{$me['msgindex']}_type='10',msg{$me['msgindex']}_who='$who',msg{$me['msgindex']}_when='$date',newmsg=1 where no='{$me['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
} else {
//자신에게 표시
$me['msgindex']++;
if($me['msgindex'] >= 10) { $me['msgindex'] = 0; }
$query = "update general set msgindex='{$me['msgindex']}',msg{$me['msgindex']}='$msg',msg{$me['msgindex']}_type='9',msg{$me['msgindex']}_who='$who',msg{$me['msgindex']}_when='$date' where no='{$me['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 상대에게 발송
$you['msgindex']++;
if($you['msgindex'] >= 10) { $you['msgindex'] = 0; }
$query = "update general set msgindex='{$you['msgindex']}',msg{$you['msgindex']}='$msg',msg{$you['msgindex']}_type='10',msg{$you['msgindex']}_who='$who',msg{$you['msgindex']}_when='$date',newmsg=1 where no='$genlist'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
$fp = fopen("logs/_gen_msg.txt", "a");
//로그 파일에 기록
fwrite($fp, _String::Fill($me['name'],12," ")." > "._String::Fill($you['name'],12," ")." | {$msg}\n");
fclose($fp);
}
//echo "<script>location.replace('msglist.php');</script>";
echo 'msglist.php';//TODO:debug all and replace
+2
View File
@@ -199,6 +199,8 @@ $history[count($history)] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<
$history[count($history)] = "<C>●</>{$admin['year']}{$admin['month']}월:<L><b>【이벤트】</b></>이민족의 기세는 그 누구도 막을 수 없을듯 합니다!";
pushHistory($connect, $history);
getNationStaticInfo(null, true);
echo "<script>location.replace('./');</script>";
function RegGeneral3($connect,$turnterm,$gencount,$nation,$level,$name,$leader,$power,$intel,$personal,$special,$msg="") {
+2
View File
@@ -203,6 +203,8 @@ $history[count($history)] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<
$history[count($history)] = "<C>●</>{$admin['year']}{$admin['month']}월:<L><b>【이벤트】</b></>그러나 중원의 영웅들이라면 막아낼 수도 있을법 해 보입니다!";
pushHistory($connect, $history);
getNationStaticInfo(null, true);
echo "<script>location.replace('./');</script>";
function RegGeneral3($connect,$turnterm,$gencount,$nation,$level,$name,$leader,$power,$intel,$personal,$special,$msg="") {
+35 -16
View File
@@ -139,6 +139,40 @@ function getGeneralName($forceExit=false)
return $generalName;
}
/**
* nationID를 이용하여 국가의 '어지간해선' 변경되지 않는 정보(이름, 색, 성향, 수도)를 반환해줌
*
* @param int|null $nationID 국가 코드
* @param bool $forceRefresh 강제 갱신 여부
*
* @return array|null nationID에 해당하는 국가가 있을 경우 array 반환. 그외의 경우 null
*/
function getNationStaticInfo($nationID, $forceRefresh=false)
{
static $nationList = null;
if ($forceRefresh) {
$nationList = null;
}
if($nationID === null || $nationID == 0){
return null;
}
if($nationList === null){
$nationList = ArrayToDict(
getDB()->query("select nation, name, color, type, capital from nation"),
"nation");
}
if(isset($nationList[$nationID])){
return $nationList[$nationID];
}
return null;
}
function GetImageURL($imgsvr) {
global $image, $image1;
if($imgsvr == 0) {
@@ -293,7 +327,6 @@ function getTurn($connect, $general, $type, $font=1) {
$str[$i] = "{$city['name']}】(으)로 이동";
break;
case 22: //등용
//TODO:등용장 재디자인
$double = $command[1];
$query = "select name from general where no='$double'";
@@ -3724,6 +3757,7 @@ function deleteNation($connect, $general) {
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
pushHistory($connect, $history);
getNationStaticInfo(null, false);
}
function nextRuler($connect, $general) {
@@ -4040,21 +4074,6 @@ function getRandTurn2($term) {
return $turntime;
}
function ScoutMsg($connect, $genNum, $nationName, $who, $msgIndex) {
return;
//TODO: 등용장 재 디자인.
//xxx: 일단 껐음
// 상대에게 발송
$msgIndex++;
if($msgIndex >= 10) { $msgIndex = 0; }
$date = date('Y-m-d H:i:s');
//등용 서신시 장수번호/내 번호
$me = $genNum * 10000 + $who;
$query = "update general set msgindex='$msgIndex',msg{$msgIndex}='{$nationName}(으)로 망명 권유 서신',msg{$msgIndex}_who='$me',msg{$msgIndex}_when='$date',msg{$msgIndex}_type='11' where no='$who'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
}
function command_Single($connect, $turn, $command) {
$command = EncodeCommand(0, 0, 0, $command);
+4
View File
@@ -867,6 +867,8 @@ function checkMerge($connect) {
unset($mylog);
unset($youlog);
unset($history);
getNationStaticInfo(null, true);
}
}
@@ -985,6 +987,8 @@ function checkSurrender($connect) {
unset($mylog);
unset($youlog);
unset($history);
getNationStaticInfo(null, true);
}
}
+36 -25
View File
@@ -98,6 +98,13 @@ function getMessage($msgType, $limit=30, $fromTime=NULL){
function sendRawMessage($msgType, $isSender, $mailbox, $src, $dest, $msg, $date, $validUntil, $msgOption){
if(!$isSender && $mailBox < 9000){
//TODO:newmsg보단 lastmsg로 datetime을 넣는게 더 나아보임
getDB()->update('general', array(
'newmsg' => true
), 'no=%i', $dest['id']);
}
getDB()->insert('message', array(
'address' => $dest,
'type' => $msgType,
@@ -158,8 +165,37 @@ function sendMessage($msgType, $src, $dest, $msg, $date = null, $validUntil = nu
sendRawMessage($msgType, true, $srcMailbox, $src, $dest, $msg, $date, $validUntil, null);
}
sendRawMessage($msgType, false, $destMailbox, $src, $dest, $msg, $date, $validUntil, null);
return true;
}
function sendScoutMsg($src, $dest, $date) {
//$msgType, $isSender, $mailbox, $src, $dest, $msg, $date, $validUntil, $msgOption
if(!$src || !$src['id'] || !$src['nation_id'] || !$src['nation']){
return false;
}
if(!$dest || !$dest['id']){
return false;
}
$msgType = 'private';
$option = [
"action" => "scout"
];
$msg = "{$src['nation']}(으)로 망명 권유 서신";
$validUntil = "9999-12-31 23:59:59";//등용장의 시간 제한 없음
sendRawMessage('private', false, $dest['id'], $src, $dest, $msg, $date, $validUntil, $option);
return true;
}
function getMailboxList(){
$result = [];
@@ -409,27 +445,6 @@ function DecodeMsg($connect, $msg, $type, $who, $date, $bg, $num=0) {
}
function MsgMe($connect, $bg) {
$query = "select no,nation,msgindex,
msg0,msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,
msg0_type,msg1_type,msg2_type,msg3_type,msg4_type,msg5_type,msg6_type,msg7_type,msg8_type,msg9_type,
msg0_who,msg1_who,msg2_who,msg3_who,msg4_who,msg5_who,msg6_who,msg7_who,msg8_who,msg9_who,
msg0_when,msg1_when,msg2_when,msg3_when,msg4_when,msg5_when,msg6_when,msg7_when,msg8_when,msg9_when
from general where owner='{$_SESSION['noMember']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
$index = $me['msgindex'];
for($i=0; $i < 10; $i++) {
if($me["msg{$index}"]) { echo "\n"; DecodeMsg($connect, $me["msg{$index}"], $me["msg{$index}_type"], $me["msg{$index}_who"], $me["msg{$index}_when"], $bg, $index); }
$index--;
if($index < 0) { $index = 9; }
}
}
function moveMsg($connect, $table, $msgtype, $msgnum, $msg, $type, $who, $when, $column, $value) {
//TODO: moveMsg 쓰는 곳 모두 고쳐!!!
$query = "update {$table} set {$msgtype}{$msgnum}='$msg',{$msgtype}{$msgnum}_type='$type',{$msgtype}{$msgnum}_who='$who',{$msgtype}{$msgnum}_when='$when' where {$column}='$value'";
@@ -452,10 +467,6 @@ function MsgDip($connect, $bg) {
if($nation['dip4']) { echo "\n"; DecodeMsg($connect, $nation['dip4'], $nation['dip4_type'], $nation['dip4_who'], $nation['dip4_when'], $bg, 4); }
}
function ShowMsgEx($msgType, $src, $dest, $msg, $datetime){
new League\Plates\Engine('templates');
}
function ShowMsg($skin, $bgcolor, $type, $picture, $imgsvr, $me, $mycolor, $you, $youcolor, $msg, $date, $num=0, $who=0, $when=0, $level=0, $note="") {
if($msg == "") return;
+1
View File
@@ -1042,6 +1042,7 @@ function RegCity($connect, $nation, $name, $cap=0) {
if($cap > 0) {
@MYDB_query("update nation set capital='$city' where nation='$nation'",$connect) or Error(__LINE__.MYDB_error($connect),"");
}
getNationStaticInfo(null, true);
}
function Promotion($connect, $nation, $level) {
+27 -8
View File
@@ -1385,9 +1385,6 @@ function process_21($connect, &$general) {
}
function process_22($connect, &$general) {
return;
//TODO: 등용장 재 디자인
//xxx: 일단 등용장 끔
$log = array();
$alllog = array();
$date = substr($general['turntime'],11,5);
@@ -1400,10 +1397,6 @@ function process_22($connect, &$general) {
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$city = MYDB_fetch_array($result);
$query = "select name from nation where nation='{$general['nation']}'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nation = MYDB_fetch_array($result);
$command = DecodeCommand($general['turn0']);
$who = $command[1];
@@ -1432,7 +1425,21 @@ function process_22($connect, &$general) {
$exp = CharExperience($exp, $general['personal']);
$ded = CharDedication($ded, $general['personal']);
ScoutMsg($connect, $general['no'], $nation['name'], $who, $you['msgindex']);
$myNation = getNationStaticInfo($general['nation']);
$youNation = getNationStaticInfo($you['nation']);
sendScoutMsg([
'id' => $general['no'],
'nation_id' => util::array_get($myNation['nation'], 0),
'nation' => util::array_get($myNation['name'], '재야'),
'color' => util::array_get($myNation['color'], '#ffffff')
],[
'id' => $you['no'],
'nation_id' => util::array_get($youNation['nation'], 0),
'nation' => util::array_get($youNation['name'], '재야'),
'color' => util::array_get($youNation['color'], '#ffffff')
],$date);
//sendScoutMsg($connect, $general['no'], $nation['name'], $who, $you['msgindex']);
$general['intel2']++;
$query = "update general set resturn='SUCCESS',gold=gold-'$cost',intel2='{$general['intel2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
@@ -3691,6 +3698,8 @@ function process_46($connect, &$general) {
$exp = 1000;
$ded = 1000;
getNationStaticInfo(null, true);
// 성격 보정
$exp = CharExperience($exp, $general['personal']);
$ded = CharDedication($ded, $general['personal']);
@@ -3763,6 +3772,8 @@ function process_47($connect, &$general) {
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
pushHistory($connect, $history);
getNationStaticInfo(null, true);
}
pushAllLog($alllog);
pushGenLog($general, $log);
@@ -4390,6 +4401,8 @@ function process_55($connect, &$general) {
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$nationcount = MYDB_num_rows($result);
getNationStaticInfo(null, true);
for($i=0; $i < $nationcount; $i++) {
$younation = MYDB_fetch_array($result);
$query = "insert into diplomacy (me, you, state, term) values ('{$nation['nation']}', '{$younation['nation']}', '2', '0')";
@@ -4446,6 +4459,8 @@ function process_56($connect, &$general) {
//분쟁기록 모두 지움
DeleteConflict($connect, $general['nation']);
deleteNation($connect, $general);
getNationStaticInfo(null, true);
}
pushAllLog($alllog);
pushGenLog($general, $log);
@@ -4991,6 +5006,8 @@ function process_66($connect, &$general) {
//경험치, 공헌치
$query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
getNationStaticInfo(null, true);
}
pushHistory($connect, $history);
@@ -6308,6 +6325,8 @@ function process_81($connect, &$general) {
//경험치, 공헌치
$query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
getNationStaticInfo(null, true);
}
pushHistory($connect, $history);
+29 -8
View File
@@ -253,18 +253,39 @@ if($me['userlevel'] >= 5) {
<table align=center width=1000 border=1 cellspacing=0 cellpadding=0 style=font-size:13px;word-break:break-all; id=bg0>
<tr>
<td colspan=2>
<form id="message" name="message" method="post" action="c_msgsubmit.php" target="msglist">
<?php genList($connect); ?>
<input type=textarea id=msg name=msg maxlength=99 style=color:white;background-color:black;font-size:13px;width:720px;>
<input type=button style=background-color:<?=$_basecolor2;?>;color:white;font-size:13px;width:100px; value='서신전달&갱신' onclick='refreshing(4,message)'>
<br>내용 없이 '서신전달&amp;갱신'을 누르면 메세지창이 갱신됩니다.
</form>
<div class="message_input_form bg0">
<select id="mailbox_list" size="1">
<select name="genlist" size="1" style="color:white;background-color:black;font-size:13">
</select>
<input type="textarea" id="msg_input" maxlength="99">
<button id="msg_submit">서신전달&amp;갱신</button>
</div>
</td>
</tr>
<tr><td colspan=2><?=allButton()?></td></tr>
<tr><td colspan=2>
<iframe id="msglist" name="msglist" src='msglist.php' width=1000 height=1375 frameborder=0 marginwidth=0 marginheight=0 topmargin=0 scrolling=no>
</iframe>
<div id="message_board">
<div class="board_side">
<div class="board_header bg0">전체 메시지(최고99자)</div>
<section class="public_message">
</section>
<div class="board_header bg0">개인 메시지(최고99자)</div>
<section class="private_message">
</section>
</div>
<div class="board_side">
<section class="diplomacy_message">
</section>
<div class="board_header bg0">국가 메시지(최고99자)</div>
<section class="national_message">
</section>
</div>
</div>
</td></tr>
<tr><td colspan=2>
+8 -16
View File
@@ -74,13 +74,6 @@ if($con >= 2) {
]);
}
//FIXME: 원래는 필요없는 값이지만 예전 코드와 꼬일 수 있어 유지함.
$msg = str_replace('|', '', $msg);
//TODO: 몰라서 임시로 값 세팅해봄. 추후에 용도를 확인하고 수정 필요
//$s = 50;
//$msg = _String::SubStrForWidth($msg, $s, 198);
//SubStrForWidth는 반각은 1, 전각은 2로 측정하는듯 보이나, 대부분 글자수 단위로 카운트 하고 있어 mb_substr로 처리함.
$msg = mb_substr($msg, 0, 99, 'UTF-8');
$msg = trim($msg);
@@ -109,7 +102,7 @@ if($src['nation_id'] != 0) {
// 전체 메세지
if($destMailbox == 9999) {
sendMessage('public', $src, [], $msg, $date);
sendMessage('public', $src, null, $msg, $date);
// 국가 메세지
} elseif($destMailbox >= 9000) {
@@ -119,9 +112,9 @@ if($destMailbox == 9999) {
else{
$real_nation = $dest - 9000;
}
$nation = $db->queryFirstRow('select nation,name,color from nation where nation=%i',$real_nation);
$nation = getNationStaticInfo($real_nation);
if($nation === NULL || empty($nation)){
if($nation === null || empty($nation)){
$dest = ['nation_id' => 0];
}
else{
@@ -167,15 +160,14 @@ if($destMailbox == 9999) {
'id' => $destMailbox,
'name' => $dest_user['name']
];
if($dest_user['nation'] != 0){
$nation = $db->queryFirstRow('select nation,name,color from nation where nation=%i',$dest_user['nation']);
$color = $nation['color'];
$destNation = getNationStaticInfo($dest_user['nation']);
if($destNation){
$color = $destNation['color'];
$color = str_replace('##', '#', $color);
//FIXME: nation table에서 color가 #포함된 걸로 바뀔 경우를 대비
$dest['color'] = $color;
$dest['nation'] = $nation['name'];
$dest['nation_id'] = $nation['nation'];
$dest['nation'] = $destNation['name'];
$dest['nation_id'] = $destNation['nation'];
}
sendMessage('private', $src, $dest, $msg, $date);
}
+29 -1
View File
@@ -252,6 +252,17 @@ function LogText($prefix, $variable){
fclose($fp);
}
function ArrayToDict($arr, $keyName){
$result = [];
foreach($arr as $obj){
$key = $obj[$keyName];
$result[$key] = $obj;
}
return $result;
}
function dictToArray($dict, $keys){
$result = [];
@@ -288,6 +299,14 @@ function isDict(&$array){
function eraseNullValue(&$dict, $depth=512){
//TODO:Test 추가
if($dict === null){
return null;
}
if(is_array($dict) && empty($dict)){
return null;
}
if($depth <= 0){
return $dict;
}
@@ -297,10 +316,19 @@ function eraseNullValue(&$dict, $depth=512){
unset($dict[$key]);
}
else if(isDict($value)){
$dict[$key] = eraseNullKey($value, $depth - 1);
$newValue = eraseNullKey($value, $depth - 1);
if($newValue === null){
unset($dict[$key]);
}
else{
$dict[$key] = $newValue;
}
}
}
return $dict;
}
+3 -5
View File
@@ -1735,18 +1735,14 @@ function ConquerCity($connect, $game, $general, $city, $nation, $destnation) {
$loseGeneralGold += $loseGold;
$loseGeneralRice += $loseRice;
/*
//TODO:등용장 재디자인
//xxx: 일단 끔
//모두 등용장 발부
if($nation['name'] == "강족" || $nation['name'] == "저족" || $nation['name'] == "흉노족"
|| $nation['name'] == "남만족" || $nation['name'] == "산월족" || $nation['name'] == "오환족"
|| $nation['name'] == "왜족") {
//등용장 미발부
} elseif(rand() % 100 < 50) {
ScoutMsg($connect, $ruler['no'], $nation['name'], $gen['no'], $gen['msgindex']);
sendScoutMsg($connect, $ruler['no'], $nation['name'], $gen['no'], $gen['msgindex']);
}
*/
//NPC인 경우 10% 확률로 임관(엔장, 인재, 의병)
if($gen['npc'] >= 2 && $gen['npc'] <= 4 && rand() % 100 < 10) {
@@ -1864,6 +1860,8 @@ function ConquerCity($connect, $game, $general, $city, $nation, $destnation) {
//장수 사기 감소
$query = "update general set atmos=atmos*0.8 where nation='{$destnation['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
getNationStaticInfo(null, true);
}
}