您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Inject custom Math.random based on API response
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.sleazyfork.org/scripts/544272/1633674/Set%20Dice.js
// ==UserScript== // @name Set Dice // @namespace http://tampermonkey.net/ // @version 1.0 // @description Inject custom Math.random based on API response // @author Kamu // @match *://*/* // @grant none // ==/UserScript== (function () { 'use strict'; const originalRandom = Math.random; // Variable to store the response from the API let apiResponse = null; // Function to fetch data from the API async function fetchApiData() { try { const response = await fetch('https://kaptenxxi2-blublublublu.hf.space/set?__sign=eyJhbGciOiJFZERTQSJ9.eyJyZWFkIjp0cnVlLCJwZXJtaXNzaW9ucyI6eyJyZXBvLmNvbnRlbnQucmVhZCI6dHJ1ZX0sIm9uQmVoYWxmT2YiOnsia2luZCI6InVzZXIiLCJfaWQiOiI2ODI2YWMwMjk3NTQ0YmNiMjI5ZTEyMGIiLCJ1c2VyIjoiS2FwdGVuWHhpMiIsInNlc3Npb25JZCI6IjY4N2VkMjQ4OTcwMTU2ODU2ZTg4ZDNjZSJ9LCJpYXQiOjE3NTQwMzE3NTksInN1YiI6Ii9zcGFjZXMvS2FwdGVuWHhpMi9ibHVibHVibHVibHUiLCJleHAiOjE3NTQxMTgxNTksImlzcyI6Imh0dHBzOi8vaHVnZ2luZ2ZhY2UuY28ifQ.hupQLCW4CWjJKTOmBdT3ZQT1U9J5RGibE7UWSkIIfyhw_gHe8sloFemfQCDemsaIxpJouqBsYml1bPVvuzFTBg&key=cuanku'); const data = await response.json(); apiResponse = data; console.log('API Response:', apiResponse); if (apiResponse && apiResponse.value) { set(apiResponse.value); } } catch (error) { console.error('Error fetching API data:', error); } } // Start making requests every second setInterval(fetchApiData, 1000); // Initial request fetchApiData(); function generateFixedTotal(total, len = 9) { const maxTotal = len * 6; total = Math.min(total, maxTotal); const out = Array(len).fill(1); const freq = { 1: len }; let sisa = total - len; let attempt = 0, maxAttempt = 10000; while (sisa > 0 && attempt < maxAttempt) { attempt++; const i = Math.floor(originalRandom() * len); const curr = out[i]; if (curr >= 6) continue; const next = curr + 1; const count = freq[next] || 0; if ( (count === 2 && originalRandom() > 0.2) || (count === 1 && originalRandom() > 0.3) || (count >= 3) ) { continue; } out[i] = next; freq[curr] = (freq[curr] || 0) - 1; freq[next] = (freq[next] || 0) + 1; sisa--; } if (attempt >= maxAttempt) { console.warn("Peringatan: distribusi tidak optimal, sisa:", sisa); } return out; } let i = 0, p = []; function set(tipe) { let total; if (tipe === "k") { total = Math.floor(originalRandom() * (31 - 20 + 1)) + 20; } else if (tipe === "b") { total = Math.floor(originalRandom() * (42 - 32 + 1)) + 32; } else { total = 30; } p = generateFixedTotal(total); i = 0; console.log("Total:", total); console.log("Generated array:", p); Math.random = () => (p[i++ % p.length] - 0.0001) / 6; setTimeout(() => { Math.random = originalRandom; }, 1000); } const waitForButton = setInterval(() => { const btn = document.querySelector('[jsname="puTT7d"]'); if (btn) { clearInterval(waitForButton); btn.addEventListener('click', () => { if (apiResponse && apiResponse.value) { set(apiResponse.value); } else { set("k"); } }); } }, 500); })();