diff --git a/.phan/config.php b/.phan/config.php index b808b9ed..e14e398c 100644 --- a/.phan/config.php +++ b/.phan/config.php @@ -83,7 +83,6 @@ return [ 'hwe/j_board_article_add.php', 'hwe/j_board_comment_add.php', 'hwe/j_board_get_articles.php', - 'hwe/j_die_immediately.php', 'hwe/j_diplomacy_destroy_letter.php', 'hwe/j_diplomacy_get_letter.php', 'hwe/j_diplomacy_respond_letter.php', diff --git a/hwe/b_myPage.php b/hwe/b_myPage.php index 697d2a94..e78c63de 100644 --- a/hwe/b_myPage.php +++ b/hwe/b_myPage.php @@ -5,8 +5,8 @@ namespace sammo; include "lib.php"; include "func.php"; -$showDieImmediatelyBtn = false; -$availableDieImmediately = false; +$showDieOnPrestart = false; +$availableDieOnPrestart = false; //로그인 검사 $session = Session::requireGameLogin()->setReadOnly(); @@ -32,9 +32,9 @@ $targetTime = addTurn($me->getVar('lastrefresh'), $gameStor->turnterm, 2); if ($gameStor->turntime <= $gameStor->opentime) { //서버 가오픈시 할 수 있는 행동 if ($me->getNPCType() == 0) { - $showDieImmediatelyBtn = true; + $showDieOnPrestartBtn = true; if ($targetTime <= TimeUtil::now()) { - $availableDieImmediately = true; + $availableDieOnPrestart = true; } } } @@ -51,7 +51,7 @@ $use_auto_nation_turn = $me->getAuxVar('use_auto_nation_turn') ?? 1; <?= UniqueConst::$serverName ?>: 내정보 $availableDieImmediately, + 'availableDieOnPrestart' => $availableDieOnPrestart, 'staticValues' => [ 'items' => Util::mapWithKey(fn (string $key, BaseItem $item) => [ 'name' => $item->getName(), @@ -122,9 +122,9 @@ $use_auto_nation_turn = $me->getAuxVar('use_auto_nation_turn') ?? 1; - + 가오픈 기간 내 장수 삭제 ( 부터)
-

+

npcmode == 2 && $me->getNPCType() == 0) : ?> diff --git a/hwe/j_die_immediately.php b/hwe/j_die_immediately.php deleted file mode 100644 index 86063d0f..00000000 --- a/hwe/j_die_immediately.php +++ /dev/null @@ -1,61 +0,0 @@ -queryFirstRow('SELECT no,name,owner_name,npc,lastrefresh FROM general WHERE owner=%i AND npc = 0', $userID); - -if(!$general){ - Json::die([ - 'result'=>false, - 'reason'=>'장수가 없습니다.' - ]); -} - -increaseRefresh("장수 삭제", 1); -$gameStor->cacheValues(['turnterm', 'opentime', 'turntime', 'year', 'month']); - -if($gameStor->turntime > $gameStor->opentime){ - Json::die([ - 'result'=>false, - 'reason'=>'이미 서버가 시작되었습니다.' - ]); -} - - -$targetTime = addTurn($general['lastrefresh'], $gameStor->turnterm, 2); -if($targetTime > TimeUtil::now()){ - $targetTimeShort = substr($targetTime, 0, 19); - Json::die([ - 'result'=>false, - 'reason'=>"아직 삭제할 수 없습니다. {$targetTimeShort} 부터 가능합니다." - ]); -} - - -$generalObj = General::createGeneralObjFromDB($general['no']); -if($generalObj instanceof DummyGeneral){ - trigger_error("올바르지 않은 삭제 프로세스 $userID", E_USER_WARNING); -} -$generalName = $generalObj->getName(); -$josaYi = JosaUtil::pick($generalName, '이'); -$generalObj->kill($db, true, "{$generalName}{$josaYi} 이 홀연히 모습을 감추었습니다"); - -$session->logoutGame(); -Json::die([ - 'result'=>true, - 'reason'=>'success' -]); \ No newline at end of file diff --git a/hwe/sammo/API/General/DieOnPrestart.php b/hwe/sammo/API/General/DieOnPrestart.php new file mode 100644 index 00000000..d0e61386 --- /dev/null +++ b/hwe/sammo/API/General/DieOnPrestart.php @@ -0,0 +1,71 @@ +userID; + + + $db = DB::db(); + $gameStor = KVStorage::getStorage($db, 'game_env'); + $gameStor->cacheValues(['turnterm', 'opentime', 'turntime', 'year', 'month']); + + $general = $db->queryFirstRow('SELECT no,name,owner_name,npc,lastrefresh FROM general WHERE owner=%i AND npc = 0', $userID); + + if (!$general) { + return '장수가 없습니다'; + } + + increaseRefresh("장수 삭제", 1); + + + if ($gameStor->turntime > $gameStor->opentime) { + return '게임이 시작되었습니다.'; + } + + //서버 가오픈시 할 수 있는 행동 + $targetTime = addTurn($general['lastrefresh'], $gameStor->turnterm, 2); + if ($targetTime > TimeUtil::now()) { + $targetTimeShort = substr($targetTime, 0, 19); + return "아직 삭제할 수 없습니다. {$targetTimeShort} 부터 가능합니다."; + } + + $generalObj = General::createGeneralObjFromDB($general['no']); + if ($generalObj instanceof DummyGeneral) { + trigger_error("올바르지 않은 삭제 프로세스 $userID", E_USER_WARNING); + } + + $generalName = $generalObj->getName(); + $josaYi = JosaUtil::pick($generalName, '이'); + $generalObj->kill($db, true, "{$generalName}{$josaYi} 이 홀연히 모습을 감추었습니다"); + + $session->logoutGame(); + return null; + } +} diff --git a/hwe/ts/SammoAPI.ts b/hwe/ts/SammoAPI.ts index 04e36d78..95d7a654 100644 --- a/hwe/ts/SammoAPI.ts +++ b/hwe/ts/SammoAPI.ts @@ -125,6 +125,7 @@ const apiRealPath = { DropItem: PUT as APICallT<{ itemType: ItemTypeKey; }>, + DieOnPrestart: POST as APICallT, }, Global: { GeneralList: GET as APICallT, diff --git a/hwe/ts/myPage.ts b/hwe/ts/myPage.ts index 4be1f0e1..7b1cb17c 100644 --- a/hwe/ts/myPage.ts +++ b/hwe/ts/myPage.ts @@ -130,22 +130,15 @@ $(function ($) { }); - $('#die_immediately').on('click', async function (e) { + $('#dieOnPrestart').on('click', async function (e) { e.preventDefault(); if (!confirm('정말로 삭제하시겠습니까?')) { return false; } - let result: InvalidResponse; - try { - const response = await axios({ - url: 'j_die_immediately.php', - method: 'post', - responseType: 'json', - }); - result = response.data; + await SammoAPI.General.DieOnPrestart(); } catch (e) { console.log(e); @@ -154,12 +147,6 @@ $(function ($) { return; } - if (!result.result) { - alert(`실패했습니다: ${result.reason}`); - location.reload(); - return; - } - location.replace('..'); });