feat: 장수명 무작위 생성 모드 가능

This commit is contained in:
2022-10-30 15:16:40 +09:00
parent 35a017c1dc
commit 48c77bd6a2
8 changed files with 39 additions and 11 deletions
+1
View File
@@ -114,6 +114,7 @@ if ($session->userGrade < 5 && !$allowReset) {
<div class="col-sm-9"> <div class="col-sm-9">
<div id="block_general_create" class="btn-group btn-group-toggle" data-bs-toggle="buttons"> <div id="block_general_create" class="btn-group btn-group-toggle" data-bs-toggle="buttons">
<input type="radio" class="btn-check" id="block_general_create_0" name="block_general_create" value="0" checked><label for="block_general_create_0" class="btn btn-secondary">가능</label> <input type="radio" class="btn-check" id="block_general_create_0" name="block_general_create" value="0" checked><label for="block_general_create_0" class="btn btn-secondary">가능</label>
<input type="radio" class="btn-check" id="block_general_create_2" name="block_general_create" value="2"><label for="block_general_create_2" class="btn btn-secondary">장수명무작위</label>
<input type="radio" class="btn-check" id="block_general_create_1" name="block_general_create" value="1"><label for="block_general_create_1" class="btn btn-secondary">불가</label> <input type="radio" class="btn-check" id="block_general_create_1" name="block_general_create" value="1"><label for="block_general_create_1" class="btn btn-secondary">불가</label>
</div> </div>
</div> </div>
+1 -1
View File
@@ -109,7 +109,7 @@ $scenario = (int)$_POST['scenario'];
$fiction = (int)$_POST['fiction']; $fiction = (int)$_POST['fiction'];
$extend = (int)$_POST['extend']; $extend = (int)$_POST['extend'];
$npcmode = (int)$_POST['npcmode']; $npcmode = (int)$_POST['npcmode'];
$block_general_create = (bool)$_POST['block_general_create']; $block_general_create = (int)$_POST['block_general_create'];
$show_img_level = (int)$_POST['show_img_level']; $show_img_level = (int)$_POST['show_img_level'];
$tournament_trig = !!(int)$_POST['tournament_trig']; $tournament_trig = !!(int)$_POST['tournament_trig'];
$join_mode = $_POST['join_mode']; $join_mode = $_POST['join_mode'];
+2 -2
View File
@@ -56,7 +56,7 @@ if(file_exists(__DIR__.'/.htaccess')){
'scenarioName'=>$options['scenarioName'], 'scenarioName'=>$options['scenarioName'],
'turnterm'=>$options['turnterm'], 'turnterm'=>$options['turnterm'],
'fictionMode'=>($options['fiction']?'가상':'사실'), 'fictionMode'=>($options['fiction']?'가상':'사실'),
'block_general_create'=>(!!$options['block_general_create']), 'block_general_create'=>Util::toInt($options['block_general_create']),
'npcMode'=>([0=>'불가',1=>'가능',2=>'선택 생성'][$options['npcmode']]), 'npcMode'=>([0=>'불가',1=>'가능',2=>'선택 생성'][$options['npcmode']]),
'openDatetime'=>$reserved['date'], 'openDatetime'=>$reserved['date'],
'starttime'=>$options['starttime'], 'starttime'=>$options['starttime'],
@@ -90,7 +90,7 @@ $admin['scenario'] = $admin['scenario_text'];
$admin['userCnt'] = $genCnt; $admin['userCnt'] = $genCnt;
$admin['npcCnt'] = $npcCnt; $admin['npcCnt'] = $npcCnt;
$admin['nationCnt'] = $nationCnt; $admin['nationCnt'] = $nationCnt;
$admin['block_general_create'] = !!$admin['block_general_create']; $admin['block_general_create'] = $admin['block_general_create'];
$admin['npcMode'] = [0=>'불가',1=>'가능',2=>'선택 생성'][$admin['npcMode']]; $admin['npcMode'] = [0=>'불가',1=>'가능',2=>'선택 생성'][$admin['npcMode']];
$admin['fictionMode'] = $admin['fiction']?'가상':'사실'; $admin['fictionMode'] = $admin['fiction']?'가상':'사실';
+19 -1
View File
@@ -4,6 +4,7 @@ namespace sammo\API\General;
use Ds\Set; use Ds\Set;
use sammo\ActionLogger; use sammo\ActionLogger;
use sammo\Auction;
use sammo\CityConst; use sammo\CityConst;
use sammo\DB; use sammo\DB;
use sammo\Enums\RankColumn; use sammo\Enums\RankColumn;
@@ -154,9 +155,16 @@ class Join extends \sammo\BaseAPI
$db = DB::db(); $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env'); $gameStor = KVStorage::getStorage($db, 'game_env');
$gameStor->cacheValues(['year', 'month', 'maxgeneral', 'scenario', 'show_img_level', 'turnterm', 'turntime', 'genius', 'npcmode']); $gameStor->cacheValues(['year', 'month', 'maxgeneral', 'scenario', 'show_img_level', 'block_general_create', 'turnterm', 'turntime', 'genius', 'npcmode']);
########## 동일 정보 존재여부 확인. ########## ########## 동일 정보 존재여부 확인. ##########
$block_general_create = $gameStor->getValue('block_general_create');
if($block_general_create & 1){
return '장수 직접 생성이 불가능한 모드입니다.';
}
$blockCustomGeneralName = $gameStor->getValue('block_general_create') & 2;
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc<2'); $gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc<2');
$oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID); $oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID);
$oldName = $db->queryFirstField('SELECT `no` FROM general WHERE `name`=%s', $name); $oldName = $db->queryFirstField('SELECT `no` FROM general WHERE `name`=%s', $name);
@@ -377,6 +385,10 @@ class Join extends \sammo\BaseAPI
$betray += 2; $betray += 2;
} }
if($blockCustomGeneralName){
$name = bin2hex(random_bytes(5));
}
########## 회원정보 테이블에 입력값을 등록한다. ########## ########## 회원정보 테이블에 입력값을 등록한다. ##########
$db->insert('general', [ $db->insert('general', [
'owner' => $userID, 'owner' => $userID,
@@ -415,6 +427,12 @@ class Join extends \sammo\BaseAPI
'special2' => $special2 'special2' => $special2
]); ]);
$generalID = $db->insertId(); $generalID = $db->insertId();
if($blockCustomGeneralName){
//XXX: 클래스가 이게 맞나?
$name = Auction::genObfuscatedName($generalID);
}
$turnRows = []; $turnRows = [];
foreach (Util::range(GameConst::$maxTurn) as $turnIdx) { foreach (Util::range(GameConst::$maxTurn) as $turnIdx) {
$turnRows[] = [ $turnRows[] = [
+1 -1
View File
@@ -160,7 +160,7 @@ class ResetHelper{
int $scenario, int $scenario,
int $fiction, int $fiction,
int $extend, int $extend,
bool $block_general_create, int $block_general_create,
int $npcmode, int $npcmode,
int $show_img_level, int $show_img_level,
bool $tournament_trig, bool $tournament_trig,
+9 -1
View File
@@ -62,7 +62,8 @@
<div class="row"> <div class="row">
<div class="col col-md-4 col-3 a-right align-self-center">장수명</div> <div class="col col-md-4 col-3 a-right align-self-center">장수명</div>
<div class="col col-md-3 col-9 align-self-center"> <div class="col col-md-3 col-9 align-self-center">
<input v-model="args.name" class="form-control" /> <input v-if="!blockCustomGeneralName" v-model="args.name" class="form-control" />
<span v-else>무작위</span>
</div> </div>
<div class="col col-md-1 col-3 a-right align-self-center">전콘 사용</div> <div class="col col-md-1 col-3 a-right align-self-center">전콘 사용</div>
<div class="col col-md-4 col-9 align-self-center"> <div class="col col-md-4 col-9 align-self-center">
@@ -267,6 +268,11 @@ declare const staticValues: {
imgsvr: 0 | 1; imgsvr: 0 | 1;
}; };
config: {
show_img_level: number;
blockCustomGeneralName: boolean;
}
serverID: string; serverID: string;
inheritTotalPoint: number; inheritTotalPoint: number;
}; };
@@ -294,6 +300,8 @@ const { serverID, member, turnterm } = staticValues;
const nationList = ref(shuffle(staticValues.nationList)); const nationList = ref(shuffle(staticValues.nationList));
const args = ref<JoinArgs>(); const args = ref<JoinArgs>();
const blockCustomGeneralName = staticValues.config.blockCustomGeneralName;
const stats = ref({ const stats = ref({
min: 50, min: 50,
max: 50, max: 50,
+3 -3
View File
@@ -98,7 +98,7 @@ type ReservedGameInfo = {
scenarioName: string, scenarioName: string,
turnterm: number, turnterm: number,
fictionMode: '가상' | '사실', fictionMode: '가상' | '사실',
block_general_create: boolean, block_general_create: number,
npcMode: '불가' | '가능' | '선택 생성', npcMode: '불가' | '가능' | '선택 생성',
openDatetime: string, openDatetime: string,
starttime: string, starttime: string,
@@ -119,7 +119,7 @@ type GameInfo = {
turntime: string, turntime: string,
join_mode: string, join_mode: string,
fictionMode: '가상' | '사실', fictionMode: '가상' | '사실',
block_general_create: boolean, block_general_create: number,
autorun_user: string, autorun_user: string,
userCnt: number, userCnt: number,
npcCnt: number, npcCnt: number,
@@ -271,7 +271,7 @@ async function Entrance_drawServerList(serverInfos: ServerResponseItem[]) {
$serverHtml.append( $serverHtml.append(
TemplateEngine(serverCreateTemplate, { TemplateEngine(serverCreateTemplate, {
serverPath: serverPath, serverPath: serverPath,
canCreate: !game.block_general_create, canCreate: !(game.block_general_create & 1),
canSelectNPC: game.npcMode == '가능', canSelectNPC: game.npcMode == '가능',
canSelectPool: game.npcMode == '선택 생성' canSelectPool: game.npcMode == '선택 생성'
}) })
+3 -2
View File
@@ -24,7 +24,7 @@ $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env'); $gameStor = KVStorage::getStorage($db, 'game_env');
$admin = $gameStor->getValues(['block_general_create', 'show_img_level', 'maxgeneral', 'turnterm']); $admin = $gameStor->getValues(['block_general_create', 'show_img_level', 'maxgeneral', 'turnterm']);
if ($admin['block_general_create']) { if ($admin['block_general_create'] & 1) {
die(WebUtil::errorBackMsg("잘못된 접근입니다!!!")); die(WebUtil::errorBackMsg("잘못된 접근입니다!!!"));
} }
@@ -65,7 +65,8 @@ foreach ($scoutMsgs as $destNationID => $scoutMsg) {
'serverID' => UniqueConst::$serverID, 'serverID' => UniqueConst::$serverID,
'nationList' => array_values($nationList), 'nationList' => array_values($nationList),
'config' => [ 'config' => [
'show_img_level' => $admin['show_img_level'] 'show_img_level' => $admin['show_img_level'],
'blockCustomGeneralName' => ($admin['block_general_create'] & 2),
], ],
'member' => [ 'member' => [
'name' => $member['name'], 'name' => $member['name'],