您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Calculates how lucky you are with your drops.
当前为
// ==UserScript== // @name IdlePixel Lucky // @namespace com.missnobody.idlepixel.lucky // @version 1.0.75 // @description Calculates how lucky you are with your drops. // @author MissNobody // @license MIT // @match *://idle-pixel.com/login/play* // @grant none // @require https://gf.qytechs.cn/scripts/441206-idlepixel/code/IdlePixel+.js // ==/UserScript== (function() { 'use strict'; let loaded = false; let hooked = false; const mapping = { "Chicken": [ "var_chicken_kills", [ "var_chicken_bones", 1, 1, 1 ], [ "var_chicken_raw_chicken", 1, 1, 1 ], [ "var_chicken_feathers", 5, 15, 1 ], [ "var_chicken_dotted_green_leaf", 1, 1, 3 ], [ "var_chicken_green_leaf", 1, 1, 10 ], [ "var_chicken_lime_leaf", 1, 1, 25 ], [ "var_chicken_gold_leaf", 1, 1, 96 ], [ "var_chicken_sigil", 1, 1, 1000 ], ], "Rat": [ "var_rat_kills", [ "var_rat_bones", 1, 1, 1 ], [ "var_rat_cheese", 1, 1, 2 ], [ "var_rat_dotted_green_leaf", 1, 1, 3 ], [ "var_rat_green_leaf", 1, 1, 10 ], [ "var_rat_lime_leaf", 1, 1, 25 ], [ "var_rat_gold_leaf", 1, 1, 96 ], [ "var_rat_gold_leaf", 1, 1, 1000 ] ], "Spider": [ "var_spider_kills", [ "var_spider_string", 1, 4, 1 ], [ "var_spider_dotted_green_leaf", 1, 1, 3 ], [ "var_spider_green_leaf", 1, 1, 10 ], [ "var_spider_lime_leaf", 1, 1, 25 ], [ "var_spider_gold_leaf", 1, 1, 96 ], [ "var_spider_sigil", 1, 1, 1000 ] ], "Bee": [ "var_bee_kills", [ "var_bee_honey", 1, 2, 1 ], [ "var_bee_stinger", 1, 1, 1 ], [ "var_bee_sigil", 1, 1, 1000 ] ], }; class LuckyPlugin extends IdlePixelPlusPlugin { /* */ constructor() { super("Lucky", { about: { name: GM_info.script.name, version: GM_info.script.version, author: GM_info.script.author, description: GM_info.script.description } }); } luckFactor(K, minA, maxA, N, L) { K = parseFloat(K); minA = parseFloat(minA); maxA = parseFloat(maxA); N = parseFloat(N); L = parseFloat(L); if (L === 0) return K <= N ? 0.0 : -Math.min(Math.log2(K/N), 10); if (minA === maxA) { let Lavg = K*minA/N; return (L - Lavg)/Lavg; } let Lmin = K*minA/N; let Lmax = K*maxA/N; let Lavg = (Lmin + Lmax)/2.0; if (L > Lmax) return (L - Lmax)/Lmax + 1.0; if (L > Lavg) return (L - Lavg)/(Lmax - Lavg); let f_num = (a, L, Lavg) => 2.0/(1 + Math.exp(Math.max(-a*(L - Lavg), -100))) - 1; let eq_num = (a) => f_num(a, Lmax, Lavg) - 1; let a = 0.1; let fx = eq_num(a); let dfx; let epsilon = 1e-7; for (let i = 0; i < 100; i++) { if (Math.abs(fx) < epsilon) break; dfx = (eq_num(a + epsilon) - fx)/epsilon; a = a - fx/dfx; fx = eq_num(a); } return f_num(a, L, Lavg); } updateCombat(calc) { try { let enemy = $('#modal-monster-lookup-content').find('center').first().text(); let kills = $('#combat-log-body tr:has(td:contains("' + enemy + '")) td:nth-child(4)').text().replace(" Kills", "").replace(/\D/g,''); let table = $('.combat-log-table'); let header = table.find('th:contains("Luck")'); let rows = table.find("tr"); let column; if (header.length <= 0) { column = rows.first().children().length; rows.first().append('<th style="background-color:#DEDEED;padding:10px;text-align:center;">Luck</th>'); } else { column = header.parent().children().index(header); header.text("0.0"); } $.each(rows, function(index, row) { if (index > 0) { let columns = $(row).find('td'); let looted = $(columns[4]).text(); let amounts = $(columns[2]).text().split(' - '); let minAmount, maxAmount; switch (amounts.length) { case 1: minAmount = maxAmount = amounts[0]; break; case 2: minAmount = 1.0*amounts[0]; maxAmount = 1.0*amounts[1]; break; default: minAmount = maxAmount = 1; } let chance = $(columns[3]).text(); let factor; if (chance === "Always") { factor = calc(kills, minAmount, maxAmount, 1, looted); factor = (Math.round(factor*100.0)/100.0).toFixed(2); } else { let chances = chance.split('/'); switch (chances.length) { case 2: { factor = calc(kills, minAmount, maxAmount, chances[1].replace(/\D/g,''), looted); factor = (Math.round(factor*100.0)/100.0).toFixed(2); break; } default: factor = "N/A"; } } let rank; if (factor < -10.0) rank = "Insanely unlucky"; else if (factor < -5.0) rank = "Extremely unlucky"; else if (factor < -2.0) rank = "Very unlucky"; else if (factor < -1.0) rank = "Unlucky"; else if (factor < -0.5) rank = "Somewhat unlucky"; else if (factor < -0.25) rank = "Slightly unlucky"; else if (factor < 0.25) rank = "Average luck"; else if (factor < 0.5) rank = "Slightly lucky"; else if (factor < 1.0) rank = "Somewhat lucky"; else if (factor < 2.0) rank = "Lucky"; else if (factor < 5.0) rank = "Very lucky"; else if (factor < 10.0) rank = "Extremely lucky"; else rank = "Insanely lucky"; let final = rank + '<br/>(' + factor + ')'; if (column >= columns.length) { $(row).append('<td>' + final + '</td>'); } else { $(columns[column]).html(final); } } }); } catch (error) { console.error(error); } } onLogin() { loaded = true; } onPanelChanged(before, after) { if (before != after) { if (!hooked && after === 'combat-log') { hooked = true; let calc = this.luckFactor; let update = this.updateCombat; let lookup = $('#modal-monster-lookup'); if (lookup.length > 0) { let observer = new MutationObserver(function(mutations) { update(calc); }); observer.observe(lookup[0], { attributes: true }); } } } } } const plugin = new LuckyPlugin(); IdlePixelPlus.registerPlugin(plugin); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址