// utils.js (function() { function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function generateNumbers() { let odd, even1, even2; // 生成一个奇数 do { odd = getRandomInt(1, 10); } while (odd % 2 === 0); // 生成两个偶数 do { even1 = getRandomInt(1, 10); } while (even1 % 2 !== 0); do { even2 = getRandomInt(1, 10); } while (even2 % 2 !== 0); console.log([odd, even1, even2]); return [odd, even1, even2]; } function generateFingerprint() { // 收集浏览器信息 const fingerprintData = { userAgent: navigator.userAgent, screenWidth: screen.width, screenHeight: screen.height, colorDepth: screen.colorDepth, language: navigator.language, timezone: new Date().getTimezoneOffset(), // 增加随机性 randomValue: Math.random(), // 添加一个随机数 performanceNow: performance.now(), // 添加性能时间戳 hardwareConcurrency: navigator.hardwareConcurrency || 'unknown', // 添加硬件并发数 deviceMemory: navigator.deviceMemory || 'unknown', // 添加设备内存 }; // 将指纹数据转换为字符串 const fingerprintString = JSON.stringify(fingerprintData); // 使用 SHA-256 哈希算法生成唯一标识符 const hash = CryptoJS.SHA256(fingerprintString).toString(); return hash; } async function restart(type) { try { const sessionId = localStorage.getItem('sessionId'); if (!sessionId) { window.alert("无效的会话,请刷新页面!"); return null; } console.log({"session_id": sessionId, "type": type}); const response = await fetch('/v2/chat/restart', { method: 'POST', headers: { 'Content-Type': 'application/json', "X-ACTCHAT-SESSION": sessionId, }, body: JSON.stringify({"session_id": sessionId, "type": type}), }); if (!response.ok) { console.error('Failed to send message:', response.statusText); } return await response.json() } catch (error) { console.error('Error sending message:', error); } return null; } async function games() { let games = null; try { const response = await fetch('/v2/chat/games', { method: 'GET', }); if (!response.ok) { console.error('Failed to send message:', response.statusText); } const jsonRes = await response.json(); if (jsonRes && jsonRes.status === 0) { games = jsonRes.data.games; if (games && games.length > 0) { for (let game of games) { let roles = game.roles; for (let [key, value] of Object.entries(roles)) { value.angerLevel = 0; value.proudLevel = 0; value.angerChange = 0; value.proudChange = 0; value.refId = key; } } } } } catch (error) { console.error('Error sending message:', error); } if (!games) { window.alert("获取游戏失败,请刷新页面!"); } return games; } async function history(type) { try { const sessionId = localStorage.getItem('sessionId'); if (!sessionId) { window.alert("无效的会话,请刷新页面!"); return null; } const url = "/v2/chat/history"; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', "X-ACTCHAT-SESSION": sessionId, }, body: JSON.stringify({"session_id": sessionId, "type": type}), }); if (!response.ok) { console.error('Failed to send message:', response.statusText); } return await response.json(); } catch (error) { console.error('Error sending message:', error); } return null; } async function stop(type) { try { const sessionId = localStorage.getItem('sessionId'); if (!sessionId) { window.alert("无效的会话,请刷新页面!"); return null; } const url = "/v2/chat/stop"; const response = await fetch(url, { method: 'DELETE', headers: { 'Content-Type': 'application/json', "X-ACTCHAT-SESSION": sessionId, }, body: JSON.stringify({"session_id": sessionId, "type": type}), }); if (!response.ok) { console.error('Failed to send message:', response.statusText); } return await response.json(); } catch (error) { console.error('Error sending message:', error); } return null; } async function send(messageData, user_tag, type) { try { const sessionId = localStorage.getItem('sessionId'); if (!sessionId) { window.alert("无效的会话,请刷新页面!"); return null; } const response = await fetch('/v2/chat/send', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-ACTCHAT-SESSION': sessionId, }, body: JSON.stringify({ session_id: sessionId, content: messageData, user_tag: user_tag, type: type }), }); if (response.ok) { return await response.json() } else { console.error('Failed to send message:', response.statusText); } } catch (error) { console.error('Error sending message:', error); } return null; } async function start(type) { if (!type || type < 1) { window.alert("游戏类型参数错误,请刷新页面!"); return null; } let headers = { 'Content-Type': 'application/json', }; const sessionId = localStorage.getItem('sessionId'); if (sessionId) { headers["X-ACTCHAT-SESSION"] = sessionId; } else { headers["Client-UUID"] = generateFingerprint(); } try { const response = await fetch('/v2/chat/start', { method: 'POST', headers: headers, body: JSON.stringify({type: type}), }); if (response.ok) { const responseHeaders = response.headers; const sessionId = responseHeaders.get('X-Actchat-Session'); if (sessionId) { localStorage.setItem('sessionId', sessionId); } return await response.json(); } } catch (error) { console.error('Error sending message:', error); } return null; } function getActiveGameType() { const activeGameType = localStorage.getItem('activeGameType'); if (activeGameType) { // 将字符串转换为数字 return Number(activeGameType); } else { // 如果没有值,可以返回一个默认的数字(例如 0 或 -1) return 0; // 或者根据需求返回其他默认值 } } function setActiveGameType(gameType) { try { if (gameType && gameType > 0) { localStorage.setItem('activeGameType', gameType); } } catch (error) { console.error('Error sending message:', error); } } async function forceEnd(type) { try { const sessionId = localStorage.getItem('sessionId'); if (!sessionId) { window.alert("无效的会话,请刷新页面!"); return null; } const url = "/v2/chat/force_end"; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', "X-ACTCHAT-SESSION": sessionId, }, body: JSON.stringify({"session_id": sessionId, "type": type}), }); if (!response.ok) { console.error('Failed to send message:', response.statusText); } return await response.json(); } catch (error) { console.error('Error sending message:', error); } return null; } function setDontShowConfirm(dontShowConfirm) { try { if (dontShowConfirm) { localStorage.setItem('dontShowConfirm', "1"); } else { localStorage.setItem('dontShowConfirm', "0"); } } catch (error) { console.error('Error sending message:', error); } } function getDontShowConfirm() { try { const val = localStorage.getItem('dontShowConfirm'); return val === "1"; } catch (error) { console.error('Error sending message:', error); } return false; } // 导出函数,以便其他文件可以调用 window.utils = { generateNumbers, generateFingerprint, restart, send, start, history, stop, getActiveGameType, setActiveGameType, games, forceEnd, setDontShowConfirm, getDontShowConfirm, }; })();