anonymous 見守り隊補助ツール
No License JavaScript
1 時間前
コピー クローン
  1. window.extractedGames = window.extractedGames || {};
  2. window.processedFetchId = 0;
  3. // 観戦欄から肉球、プロマークの付いたプレイヤーのいる試合を抜き出します
  4. // コンソールには"名前 開始時刻 uuid"とログが残ります
  5. // 左クリックしたときに自動的に実行されます
  6. window.extractGames = () => {
  7. const Inst = uiscript.UI_Ob.Inst;
  8. if (Inst.fetch_id === window.processedFetchId) return;
  9. window.processedFetchId = Inst.fetch_id;
  10. const live_datas = Inst.live_datas;
  11. if (live_datas.length === 0) return;
  12. const toTimeStr = ms => new Date(ms).toTimeString().slice(0, 5);
  13. outerloop:
  14. for (let i = live_datas.length - 1; i >= 0; i--) {
  15. const GameLiveHead = live_datas[i];
  16. for (const player of GameLiveHead.players) {
  17. // マークが付いていても観戦欄から消したいときは
  18. // ここにコードを追加してください
  19. // if (player.account_id === 73343254) continue; // ウヒョ助
  20. // if (player.account_id === 71333623) continue; // 獅子ヶ谷フレア
  21. if (!player.verified) continue;
  22. const uuid = GameLiveHead.uuid;
  23. if (!extractedGames[uuid]) {
  24. extractedGames[uuid] = GameLiveHead;
  25. console.log(
  26. player.nickname + ["", "🐾", "𝙋"][player.verified],
  27. toTimeStr(GameLiveHead.start_time * 1000),
  28. uuid,
  29. );
  30. }
  31. // マークが付いたプレイヤーが2人以上同卓しているときは
  32. // 1人のプレイヤーのみログが残る仕様です
  33. continue outerloop;
  34. }
  35. live_datas.splice(i, 1);
  36. }
  37. Inst.onShowDataChange();
  38. };
  39. window.onclick = () => {setTimeout(extractGames, 500)};
  40. // 観戦欄から流れて見られなくなった試合は
  41. // ゲーム画面を右クリックして、uuid(を含む文字列)を入力すると観戦できます
  42. // 数分前に終局した試合を観戦したときに
  43. // ロード画面で止まることがあります(要再起動)
  44. // 試合中はバグるので実行しないでください
  45. window.watchGame = uuidstr => {
  46. const result = `${uuidstr}`.match(/[0-9a-f-]{43}/);
  47. if (!result) return;
  48. const uuid = result[0];
  49. uiscript.UI_Live_Broadcast1.fetchInfo(uuid,
  50. Laya.Handler.create(uiscript.UI_Ob.Inst, e => {
  51. uiscript.UI_Ob.Inst._locking = false;
  52. // goToWatchの第二引数にaccount_idを設定すると視点変更の手間が省けます
  53. e.success && uiscript.UI_Live_Broadcast1.goToWatch(uuid, 0)
  54. })
  55. );
  56. };
  57. window.oncontextmenu = () => {watchGame(prompt("uuid"))};
  58. // 観戦欄にあるプルダウンの値を、クリックせずに切り替えます
  59. // そして、観戦中でも関係なく観戦欄のデータを取得・更新できます
  60. // changeGameMode("玉南");
  61. // changeGameMode("三金東");
  62. window.changeGameMode = str => {
  63. const Inst = uiscript.UI_Ob.Inst;
  64. Inst.dropdown0._choosed_index = /玉/.test(str) + /王/.test(str) * 2;
  65. Inst.dropdown1._choosed_index = /南/.test(str) + /三/.test(str) * 2;
  66. Inst.refresh_content();
  67. setTimeout(extractGames, 500);
  68. };
window.extractedGames = window.extractedGames || {};
window.processedFetchId = 0;



// 観戦欄から肉球、プロマークの付いたプレイヤーのいる試合を抜き出します
// コンソールには"名前 開始時刻 uuid"とログが残ります

// 左クリックしたときに自動的に実行されます

window.extractGames = () => {
    const Inst = uiscript.UI_Ob.Inst;

    if (Inst.fetch_id === window.processedFetchId) return;
    window.processedFetchId = Inst.fetch_id;

    const live_datas = Inst.live_datas;
    if (live_datas.length === 0) return;

    const toTimeStr = ms => new Date(ms).toTimeString().slice(0, 5);

    outerloop:
    for (let i = live_datas.length - 1; i >= 0; i--) {
        const GameLiveHead = live_datas[i];

        for (const player of GameLiveHead.players) {

            // マークが付いていても観戦欄から消したいときは
            // ここにコードを追加してください

            // if (player.account_id === 73343254) continue; // ウヒョ助
            // if (player.account_id === 71333623) continue; // 獅子ヶ谷フレア

            if (!player.verified) continue;

            const uuid = GameLiveHead.uuid;

            if (!extractedGames[uuid]) {
                extractedGames[uuid] = GameLiveHead;
                console.log(
                    player.nickname + ["", "🐾", "𝙋"][player.verified],
                    toTimeStr(GameLiveHead.start_time * 1000),
                    uuid,
                );
            }

            // マークが付いたプレイヤーが2人以上同卓しているときは
            // 1人のプレイヤーのみログが残る仕様です

            continue outerloop;
        }
        live_datas.splice(i, 1);
    }
    Inst.onShowDataChange();
};

window.onclick = () => {setTimeout(extractGames, 500)};





// 観戦欄から流れて見られなくなった試合は
// ゲーム画面を右クリックして、uuid(を含む文字列)を入力すると観戦できます

// 数分前に終局した試合を観戦したときに
// ロード画面で止まることがあります(要再起動)

// 試合中はバグるので実行しないでください

window.watchGame = uuidstr => {

    const result = `${uuidstr}`.match(/[0-9a-f-]{43}/);
    if (!result) return;
    const uuid = result[0];

    uiscript.UI_Live_Broadcast1.fetchInfo(uuid,
        Laya.Handler.create(uiscript.UI_Ob.Inst, e => {
            uiscript.UI_Ob.Inst._locking = false;

            // goToWatchの第二引数にaccount_idを設定すると視点変更の手間が省けます

            e.success && uiscript.UI_Live_Broadcast1.goToWatch(uuid, 0)
        })
    );
};

window.oncontextmenu = () => {watchGame(prompt("uuid"))};





// 観戦欄にあるプルダウンの値を、クリックせずに切り替えます
// そして、観戦中でも関係なく観戦欄のデータを取得・更新できます

// changeGameMode("玉南");
// changeGameMode("三金東");

window.changeGameMode = str => {
    const Inst = uiscript.UI_Ob.Inst;
    Inst.dropdown0._choosed_index = /玉/.test(str) + /王/.test(str) * 2;
    Inst.dropdown1._choosed_index = /南/.test(str) + /三/.test(str) * 2;
    Inst.refresh_content();
    setTimeout(extractGames, 500);
};
以前の補助ツールについて
conditional breakpointはすべて削除してください(煩わしくてすいませんでした)
現在、コメントはありません。
実行結果