loginGame()->setReadOnly(); if($session->userGrade < 5) { header('location:_admin2.php'); } $generalID = $session->generalID; if(!$generalID){ header('location:_admin2.php'); die(); } $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); $src = MessageTarget::buildQuick($session->generalID); $genObjList = []; $env = []; if($genlist){ $genObjList = General::createGeneralObjListFromDB($genlist); $env = $gameStor->cacheAll(); } switch($btn) { case "전체 접속허용": $db->update('general', [ 'con'=>0 ], true); break; case "전체 접속제한": $db->update('general', [ 'con'=>1000 ], true); break; case "블럭 해제": $db->update('general', [ 'block'=>0 ], '`no` IN %li', $genlist); DB::db()->query('update general set block=0 where no IN %li', $genlist); break; case "1단계 블럭": $date = TimeUtil::now(); $db->update('general', [ 'block'=>1, 'killturn'=>24 ], '`no` IN %li', $genlist); $uid = $db->queryFirstColumn('SELECT `owner` FROM general WHERE `no` IN %li', $genlist); RootDB::db()->update('member',[ 'block_num'=>$db->sqleval('block_num+1'), 'block_date'=>$date ], 'id IN %li', $uid); break; case "2단계 블럭": $date = TimeUtil::now(); $db->update('general', [ 'gold'=>0, 'rice'=>0, 'block'=>2, 'killturn'=>24 ], '`no` IN %li', $genlist); $uid = $db->queryFirstColumn('select owner from general where no IN %li', $genlist); RootDB::db()->update('member',[ 'block_num'=>$db->sqleval('block_num+1'), 'block_date'=>$date ], 'id IN %li', $uid); break; case "3단계 블럭": $date = TimeUtil::now(); $db->update('general', [ 'gold'=>0, 'rice'=>0, 'block'=>3, 'killturn'=>24 ], '`no` IN %li', $genlist); $uid = $db->queryFirstColumn('SELECT `owner` from general where no IN %li', $genlist); RootDB::db()->update('member',[ 'block_num'=>$db->sqleval('block_num+1'), 'block_date'=>$date ], 'id IN %li', $uid); break; case "무한삭턴": $db->update('general', [ 'killturn'=>8000 ], '`no` IN %li', $genlist); break; case "강제 사망": $date = TimeUtil::now(true); $db->update('general', [ 'killturn'=>0, 'turntime'=>$date, ], '`no` IN %li', $genlist); $db->update('general_turn', [ 'action'=>'휴식', 'arg'=>'{}', 'brief'=>'휴식', ], 'general_id IN %li AND turn_idx = 0', $genlist); break; case "특기 부여": [$year, $month] = $gameStor->getValuesAsArray(['year', 'month']); $text = "특기 부여!"; foreach($db->query("SELECT `no`,leadership,strength,intel,dex1,dex2,dex3,dex4,dex5 FROM general WHERE `no` IN %li", $genlist) as $general){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($general['no']), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); $specialWar = SpecialityHelper::pickSpecialWar($general); $db->update('general', [ 'specage2'=>$db->sqleval('age'), 'special2'=>$specialWar ], 'no=%i', $general['no']); $specialWarName = buildGeneralSpecialWarClass($specialWar)->getName(); $josaUl = JosaUtil::pick($specialWarName, '을'); pushGeneralHistory($general['no'], ["●{$year}년 {$month}월:특기 【{$specialWarName}】{$josaUl} 습득"]); pushGenLog($general['no'], ["●특기 【{$specialWarName}】{$josaUl} 익혔습니다!"]); } break; case "경험치1000": $text = $btn." 지급!"; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } $db->update('general',[ 'experience'=>$db->sqleval('experience+1000') ], '`no` IN %li', $genlist); break; case "공헌치1000": $text = $btn." 지급!"; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } $db->update('general',[ 'dedication'=>$db->sqleval('dedication+1000') ], '`no` IN %li', $genlist); break; case "보숙10000": $text = "보병숙련도+10000 지급!"; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } $db->update('general',[ 'dex1'=>$db->sqleval('dex1+10000') ], '`no` IN %li', $genlist); break; case "궁숙10000": $text = "궁병숙련도+10000 지급!"; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } $db->update('general',[ 'dex2'=>$db->sqleval('dex2+10000') ], '`no` IN %li', $genlist); break; case "기숙10000": $src = MessageTarget::buildQuick($session->generalID); $text = "기병숙련도+10000 지급!"; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } $db->update('general',[ 'dex3'=>$db->sqleval('dex3+10000') ], '`no` IN %li', $genlist); break; case "귀숙10000": $src = MessageTarget::buildQuick($session->generalID); $text = "귀병숙련도+10000 지급!"; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } $db->update('general',[ 'dex4'=>$db->sqleval('dex4+10000') ], '`no` IN %li', $genlist); break; case "차숙10000": $src = MessageTarget::buildQuick($session->generalID); $text = "차병숙련도+10000 지급!"; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } $db->update('general',[ 'dex5'=>$db->sqleval('dex5+10000') ], '`no` IN %li', $genlist); break; case "접속 허용": $db->update('general',[ 'con'=>0 ], '`no` IN %li', $genlist); break; case "접속 제한": $db->update('general',[ 'con'=>1000 ], '`no` IN %li', $genlist); break; case "메세지 전달": $text = $msg??''; foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } break; case "무기지급": if($item == 'None') { $text = "무기 회수!"; } else { $text = getItemName($item)." 지급!"; } foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } if($item === 'None'){ $db->update('general', [ 'weapon'=>'None' ], '`no` IN %li', $genlist); } else{ $db->update('general', [ 'weapon'=>$item ], '`no` IN %li', $genlist, $item); } break; case "책지급": if($item == 'None') { $text = "책 회수!"; } else { $text = getItemName($item)." 지급!"; } foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } if($item == 'None'){ $db->update('general', [ 'book'=>'None' ], '`no` IN %li', $genlist); } else{ $db->update('general', [ 'book'=>$item ], '`no` IN %li', $genlist); } break; case "말지급": if($item == 'None') { $text = "말 회수!"; } else { $text = getItemName($item)." 지급!"; } foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } if($item == 'None'){ $db->update('general', [ 'horse'=>'None' ], '`no` IN %li', $genlist); } else{ $db->update('general', [ 'horse'=>$item ], '`no` IN %li', $genlist); } break; case "도구지급": if($item == 'None') { $text = "특수도구 회수!"; } else { $text = getItemName($item)." 지급!"; } foreach($genlist as $generalID){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($generalID), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); } if($item == 'None'){ $db->update('general', [ 'item'=>'None' ], '`no` IN %li', $genlist); } else{ $db->update('general', [ 'item'=>$item ], '`no` IN %li AND item < %i', $genlist, $item); } break; case "하야입력": $db->update('general_turn', [ 'action'=>'che_하야', 'arg'=>'{}', 'brief'=>'하야', ], 'general_id IN %li AND turn_idx = 0', $genlist); break; case "방랑해산": $db->update('general_turn', [ 'action'=>'che_방랑', 'arg'=>'{}', 'brief'=>'방랑', ], 'general_id IN %li AND turn_idx = 0', $genlist); $db->update('general_turn', [ 'action'=>'che_해산', 'arg'=>'{}', 'brief'=>'해산', ], 'general_id IN %li AND turn_idx = 1', $genlist); break; case "00턴": $turnterm = $gameStor->turnterm; foreach($genlist as $generalID){ $turntime = getRandTurn($turnterm); $cutTurn = cutTurn($turntime, $turnterm); $db->update('general', [ 'turntime'=>$curTurn ], '`no` IN %li', $genlist); } break; case "랜덤턴": foreach($genlist as $generalID){ $turntime = getRandTurn($turnterm); $db->update('general', [ 'turntime'=>$turntime ], '`no` IN %li', $genlist); } break; } header('location:_admin2.php');