setReadOnly(); $userID = Session::getUserID(); $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); increaseRefresh("토너먼트", 1); TurnExecutionHelper::executeAllCommand(); $me = $db->queryFirstRow('select no,tournament,con,turntime from general where owner=%i', $userID); $generalID = $session->generalID; $admin = $gameStor->getValues(['tournament', 'phase', 'turnterm', 'tnmt_msg', 'tnmt_type', 'develcost', 'tnmt_trig']); $turnTerm = $admin['turnterm']; $con = checkLimit($me['con']); if ($con >= 2) { printLimitMsg($me['turntime']); exit(); } switch ($admin['tnmt_type']) { case convertTournamentType('전력전'): $tnmt_type = "전력전"; $color = 'cyan'; $tp = "total"; $tp2 = "종합"; $tp3 = "total"; break; case convertTournamentType('통솔전'): $tnmt_type = "통솔전"; $color = 'cyan'; $tp = "leadership"; $tp2 = "통솔"; $tp3 = "leadership"; break; case convertTournamentType('일기토'): $tnmt_type = "일기토"; $color = 'cyan'; $tp = "strength"; $tp2 = "무력"; $tp3 = "strength"; break; case convertTournamentType('설전'): $tnmt_type = "설전"; $color = 'cyan'; $tp = "intel"; $tp2 = "지력"; $tp3 = "intel"; break; default: throw new \RuntimeException('invalid tnmt_type'); } $bettingID = $gameStor->last_tournament_betting_id ?? 0; if ($bettingID != 0) { $betting = $bettingID != 0 ? new Betting($bettingID) : null; $info = $betting->getInfo(); } else { $info = getDummyBettingInfo($tnmt_type); } $myBet = []; $globalBet = []; if ($bettingID != 0) { $betting = $bettingID != 0 ? new Betting($bettingID) : null; $info = $betting->getInfo(); foreach ($db->queryAllLists( 'SELECT general_id, user_id, amount, betting_type FROM ng_betting WHERE betting_id = %i', $bettingID ) as [$betGeneralID, $userID, $amount, $bettingTypeKey]) { $bettingKey = Json::decode($bettingTypeKey)[0]; if ($betGeneralID == $generalID) { $myBet[$bettingKey] = $amount; } if (key_exists($bettingKey, $globalBet)) { $globalBet[$bettingKey] += $amount; } else { $globalBet[$bettingKey] = $amount; } } } else { $info = getDummyBettingInfo($tnmt_type); } $myBetTotal = array_sum($myBet); $globalBetTotal = array_sum($globalBet); ?> <?= UniqueConst::$serverName ?>: 토너먼트
삼모전 토너먼트
userGrade >= 5) : ?> 0 && $me['tournament'] == 0 && $admin['tournament'] == 1) : ?> "; if ($admin['tournament'] >= 7 || $admin['tournament'] == 0) { printFighting($admin['tournament'], $admin['phase']); } echo " "; $num = array("一", "二", "三", "四", "五", "六", "七", "八"); for ($i = 0; $i < 8; $i++) { $grp = $i + 10; echo " "; } echo ""; if ($admin['tournament'] == 4 || $admin['tournament'] == 5) { printFighting($admin['tournament'], $admin['phase']); } echo " "; for ($i = 0; $i < 8; $i++) { $grp = $i; echo " "; } if ($admin['tournament'] == 2 || $admin['tournament'] == 3) { printFighting($admin['tournament'], $admin['phase']); } ?>
"; echo ""; break; case 2: echo ""; break; case 3: echo ""; break; case 4: echo ""; break; case 5: echo ""; break; case 6: echo ""; break; case 7: echo ""; break; case 8: echo ""; break; case 9: echo ""; break; case 10: echo ""; break; } ?>
운영자 메세지 :
()
16강 승자전
"; $generalList = $db->query('SELECT npc,name,win from tournament where grp>=60 order by grp, grp_no LIMIT 1'); while (count($generalList) < 1) { $generalList[] = [ 'name' => '-', 'npc' => 0, 'win' => 0 ]; } foreach ($generalList as $i => $general) { if ($general['name'] == "") { $general['name'] = "-"; } $general['name'] = formatName($general['name'], $general['npc']); echo ""; } echo " "; $cent = []; for ($i = 0; $i < 1; $i++) { $cent[$i] = ""; } $line = []; $gen = []; $generalList = $db->query('SELECT npc,name,win from tournament where grp>=50 order by grp, grp_no LIMIT 2'); while (count($generalList) < 2) { $generalList[] = [ 'name' => '-', 'npc' => 0, 'win' => 0 ]; } foreach ($generalList as $i => $general) { if ($general['name'] == "") { $general['name'] = "-"; } $general['name'] = formatName($general['name'], $general['npc']); if ($general['win'] > 0) { $line[$i] = ""; $cent[intdiv($i, 2)] = ""; } else { $line[$i] = ""; } $gen[$i] = $general['name']; } for ($i = 0; $i < 1; $i++) { $cent[$i] = $cent[$i] . "┻" . ""; $line[$i * 2] = $line[$i * 2] . "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" . ""; $line[$i * 2 + 1] = $line[$i * 2 + 1] . "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" . ""; echo ""; } echo " "; for ($i = 0; $i < 2; $i++) { echo ""; } echo " "; for ($i = 0; $i < 2; $i++) { $cent[$i] = ""; } $generalList = $db->query('SELECT npc,name,win from tournament where grp>=40 order by grp, grp_no LIMIT 4'); while (count($generalList) < 4) { $generalList[] = [ 'name' => '-', 'npc' => 0, 'win' => 0 ]; } foreach ($generalList as $i => $general) { if ($general['name'] == "") { $general['name'] = "-"; } $general['name'] = formatName($general['name'], $general['npc']); if ($general['win'] > 0) { $line[$i] = ""; $cent[intdiv($i, 2)] = ""; } else { $line[$i] = ""; } $gen[$i] = $general['name']; } for ($i = 0; $i < 2; $i++) { $cent[$i] = $cent[$i] . "┻" . ""; $line[$i * 2] = $line[$i * 2] . "┏━━━━━━━━━━━━━━━━━━" . ""; $line[$i * 2 + 1] = $line[$i * 2 + 1] . "━━━━━━━━━━━━━━━━━━┓" . ""; echo ""; } echo " "; for ($i = 0; $i < 4; $i++) { echo ""; } echo " "; for ($i = 0; $i < 4; $i++) { $cent[$i] = ""; } $generalList = $db->query('SELECT npc,name,win from tournament where grp>=30 order by grp, grp_no LIMIT 8'); while (count($generalList) < 8) { $generalList[] = [ 'name' => '-', 'npc' => 0, 'win' => 0 ]; } foreach ($generalList as $i => $general) { if ($general['name'] == "") { $general['name'] = "-"; } $general['name'] = formatName($general['name'], $general['npc']); if ($general['win'] > 0) { $line[$i] = ""; $cent[intdiv($i, 2)] = ""; } else { $line[$i] = ""; } $gen[$i] = $general['name']; } for ($i = 0; $i < 4; $i++) { $cent[$i] = $cent[$i] . "┻" . ""; $line[$i * 2] = $line[$i * 2] . "┏━━━━━━━━━" . ""; $line[$i * 2 + 1] = $line[$i * 2 + 1] . "━━━━━━━━━┓" . ""; echo ""; } echo " "; for ($i = 0; $i < 8; $i++) { echo ""; } echo " "; for ($i = 0; $i < 8; $i++) { $cent[$i] = ""; } $generalList = $db->query('SELECT npc,name,win from tournament where grp>=20 order by grp, grp_no LIMIT 16'); while (count($generalList) < 16) { $generalList[] = [ 'name' => '-', 'npc' => 0, 'win' => 0 ]; } foreach ($generalList as $i => $general) { if ($general['name'] == "") { $general['name'] = "-"; } $general['name'] = formatName($general['name'], $general['npc']); if ($general['win'] > 0) { $line[$i] = ""; $cent[intdiv($i, 2)] = ""; } else { $line[$i] = ""; } $gen[$i] = $general['name']; } for ($i = 0; $i < 8; $i++) { $cent[$i] = $cent[$i] . "┻" . ""; $line[$i * 2] = $line[$i * 2] . "┏━━━━" . ""; $line[$i * 2 + 1] = $line[$i * 2 + 1] . "━━━━┓" . ""; echo ""; } echo " "; for ($i = 0; $i < 16; $i++) { echo ""; } echo " "; $admin = $gameStor->getValues(['tournament', 'phase']); $bet = []; $gold = []; $keyMap = []; foreach ($info->candidates as $key => $candidate) { $keyMap[$candidate->aux['idx']] = $key; } foreach ($globalBet as $key => $amount) { if ($amount == 0) { $bet[$key] = "∞"; $gold[$key] = 0; } else { $rewardRatio = round($globalBetTotal / $amount, 2); $bet[$key] = $rewardRatio; $gold[$key] = $rewardRatio * ($myBet[$key] ?? 0); } } echo " "; foreach (range(0, 15) as $i) { $amount = $bet[$keyMap[$i] ?? -1] ?? 0; echo ""; } echo "
{$general['name']}
{$line[$i * 2]}{$cent[$i]}{$line[$i * 2 + 1]}
{$gen[$i]}
{$line[$i * 2]}{$cent[$i]}{$line[$i * 2 + 1]}
{$gen[$i]}
{$line[$i * 2]}{$cent[$i]}{$line[$i * 2 + 1]}
{$gen[$i]}
{$line[$i * 2]}{$cent[$i]}{$line[$i * 2 + 1]}
{$gen[$i]}
{$amount}
배당률이 낮을수록 베팅된 금액이 많고 유저들이 우승후보로 많이 선택한 장수입니다.
조별 본선 순위
"; $generalList = $db->query('SELECT npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp=%i order by gd desc, gl desc, seq', $grp); foreach ($generalList as $k => $general) { printRow($k, $general['npc'], $general['name'], $general[$tp], $general['game'], $general['win'], $general['draw'], $general['lose'], $general['gd'], $general['gl'], $general['prmt']); } foreach (Util::range(count($generalList), 4) as $idx) { printRow($idx, 0, '', '', '', '', '', '', '', '', ''); } echo "
{$num[$i]}조
장수{$tp2}
조별 예선 순위
"; $generalList = $db->query('SELECT npc,name,leadership,strength,intel,leadership+strength+intel as total,prmt,win+draw+lose as game,win,draw,lose,gl,win*3+draw as gd from tournament where grp=%i order by gd desc, gl desc, seq', $grp); foreach ($generalList as $k => $general) { printRow($k, $general['npc'], $general['name'], $general[$tp], $general['game'], $general['win'], $general['draw'], $general['lose'], $general['gd'], $general['gl'], $general['prmt']); } foreach (Util::range(count($generalList), 8) as $idx) { printRow($idx, 0, '', '', '', '', '', '', '', '', ''); } echo "
{$num[$i]}조
장수{$tp2}
ㆍ예선은 홈&어웨이 풀리그로 진행됩니다. (총 14경기)
ㆍ상위 4명이 본선에 진출하게 되며 조추첨을 통해 조가 배정됩니다.
ㆍ각 조1위가 시드1로 랜덤하게 조에 배정되며, 역시 각 조2위가 시드2로 랜덤하게 조에 배정됩니다.
ㆍ그후 남은 3, 4위는 완전 랜덤하게 모든 조에 랜덤하게 배정됩니다.
ㆍ본선은 개인당 3경기를 치르게 되며 승점(승3, 무1, 패0), 득실, 참가순서(시드)에 따라 순위를 매깁니다.
ㆍ각 조 1, 2위는 16강에 지정된 위치에 배정됩니다.
ㆍ16강부터는 1경기 토너먼트로 진행됩니다.
ㆍ참가비는 금20~140이며, 성적에 따라 금과 약간의 명성이 포상으로 주어집니다.
ㆍ16강자 100, 8강자 300, 4강자 600, 준우승자 1200, 우승자 2000 (220년 기준)
ㆍ즐거운 삼토!