권한 허용 방법 (HTTPS/localhost):
- 주소창의 🔒 자물쇠 클릭 → 마이크 허용
⚠️ IP 주소(http://...) 로 접속 시: (크롬, 엣지, 웨일, Epic 등 크롬 기반 브라우저)
1. 주소창에 chrome://flags 입력 & 이동
2. 검색창에 insecure 검색
3. Insecure origins treated as secure 항목을 Enabled로 변경
4. 옆 칸에 서버 주소 입력 (예: http://192.168.0.5:3000)
5. 하단 Relaunch 버튼을 눌러 재시작
도끼자루 게임 로비
접속자: 0명 | 대기실: 0개
개설된 방이 없습니다. 방을 만들어보세요!
♠ Poker: Stud, Omaha & Dealer's Choice (v24.1) ♠
아바타를 선택하세요
Loading Avatars... (If you see this, JS hasn't run yet)
게임 설정 (Game
Config)
회 (기본 2)
이하일 때 버튼 활성화
충전 금액: 초기 자금 (고정)
별 1개당 칩, 최대 칩
1★ 칩 / 2★ 칩 / 3★+ 칩
게임 종목:
시작 머니:
Raise 횟수 (선수당·BR당):
베팅 한도:
Low 족보:
독식(Sweep) 규칙:
Rebuy:
방장이 게임을 시작하면 자동으로 입장됩니다.
7-Card Stud High-Low
최소 2명이 필요합니다
Ver: SplitRules_v4 (Syntax
Fixed)
High Winner가 다음 게임을 시작합니다...
다른 선수들을 기다리는 중...
카드 선택
버릴 카드를 선택하세요 (빨강)
승부 방식을 선택하세요
👑 Dealer's Choice 👑
당신이 딜러입니다! 게임 종목을 선택하세요.
Chat(Drag & Resize)
Raise: 0 (Max: 0)
// [New] Toggle Sit Function
function toggleSit() {
if (!currentState || !currentState.players) return;
const me = currentState.players.find(p => p.id === myId);
if (!me) return;
if (me.isSittingOut) {
socket.emit('sit_in');
} else {
if (confirm("정말로 휴식하시겠습니까? (다음 게임부터 제외됩니다)")) {
socket.emit('sit_out');
}
}
}
// [New] Scale-to-Fit Logic
function resizeTable() {
const table = document.getElementById('table');
if (!table || table.style.display === 'none') return;
const baseWidth = 1500; // Increased from 1000 to fit wider player circle
const baseHeight = 1000; // Increased from 600
const padding = 20;
const availableWidth = window.innerWidth - padding;
const availableHeight = window.innerHeight - padding;
const scaleX = availableWidth / baseWidth;
const scaleY = availableHeight / baseHeight;
const scale = Math.min(scaleX, scaleY, 1.2); // Cap zoom at 1.2x
table.style.transform = `translate(-50%, -50%) scale(${scale})`;
}
window.addEventListener('resize', resizeTable);
// Call on load and periodically in case of layout shifts
setInterval(resizeTable, 500);
// [New] Omaha Auto Declaration Handler
socket.on('omaha_eval_result', (data) => {
const decUi = document.getElementById('declaration-ui');
decUi.dataset.omahaChecked = 'true';
decUi.dataset.canLow = data.canLow; // [Fix] Store result
if (data.canLow) {
// Restore UI Buttons
renderDecButtons(decUi);
} else {
// Auto High
const reason = (data.reason === 'quad') ? "Quad Auto Sweep!" : "No Low - Auto High";
decUi.innerHTML = `
${reason}
`;
setTimeout(() => {
// Auto-Select and Emit
if (typeof selectDeclaration === 'function') selectDeclaration('high');
if (typeof confirmDeclaration === 'function') confirmDeclaration();
else {
// Fallback if functions not found (safeguard)
socket.emit('declare', 'high');
decUi.style.display = 'none';
}
}, 1000);
}
});
function renderDecButtons(decUi) {
decUi.innerHTML = `
승부 방식을 선택하세요
`;
}
// [Fix] Clear check flag on reset
socket.on('system_message', (msg) => {
if (msg === 'Next Game!' || msg === 'Game Start!') {
const decUi = document.getElementById('declaration-ui');
if (decUi) decUi.dataset.omahaChecked = '';
}
});
// [New] Dynamic Rules Window
function openRules() {
let url = 'rules.html';
if (currentState && currentState.config && currentState.config.gameType === 'omaha') {
url = 'rules_omaha.html';
}
// If config.gameType is 'choice', maybe check currentState.currentGameType?
if (currentState && currentState.currentGameType === 'omaha') {
url = 'rules_omaha.html';
}
const width = 900;
const height = 800;
const left = (window.screen.width - width) / 2;
const top = (window.screen.height - height) / 2;
window.open(url, 'GameRules', `width=${width},height=${height},top=${top},left=${left}`);
}