Dailies By web crawler 85 installs Rating 0.0 (0) approved

Neopets - Lottomatic

Generate lotto numbers with minimal overlap.
https://www.scriptneo.com/script/neopets-lottomatic

Version selector


SHA256
e47df83b2421b31ce698a05662de7de7edf2d9f0d18c59d9a0de5759e86b9fe7
No scan flags on this version.

Source code

// ==UserScript==
// @name         Neopets - Lottomatic
// @version      0.1.2
// @description  Generate lotto numbers with minimal overlap
// @author       msjanny
// @namespace    https://www.scriptneo.com/
// @match        https://www.neopets.com/games/lottery.phtml*
// @grant        GM_setValue
// @grant        GM_getValue
// @downloadURL  https://www.scriptneo.com/scripts/download.php?id=9
// @updateURL    https://www.scriptneo.com/scripts/download.php?id=9
// ==/UserScript==

// originally https://www.andrew.cmu.edu/user/kmliu/neopets/lottery.html , used with permission

(function() {
    'use strict';
    /* globals $:false */

    var numbers = GM_getValue("numbers", "");

    function shuffle(o) {
        for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
        return o;
    };

    function leaf(a, b) {
        var res = new Array();
        for (var i = 0; i < a.length; i++) {
            res[i * 2] = a[i];
            res[i * 2 + 1] = b[i];
        }
        return res;
    };

    function generate() {
        var arr = new Array();
        for (var i = 0; i < 30; i++)
            arr[i] = i + 1;

        var arr1 = shuffle(arr);
        var arr2 = leaf(arr1.slice(0, 15), arr1.slice(15, 30))
        var arr3 = leaf(arr2.slice(0, 15), arr2.slice(15, 30))
        var arr4 = leaf(arr3.slice(0, 15), arr3.slice(15, 30))
        var marr = arr1.concat(arr2, arr3, arr4);

        numbers = new Array();
        for (i = 0; i < 20; i++)
            numbers[i] = [marr[6 * i], marr[6 * i + 1], marr[6 * i + 2], marr[6 * i + 3], marr[6 * i + 4], marr[6 * i + 5]];
        GM_setValue('numbers', numbers);
        populate();
    };

    function refresh() {
        $('.tickets').remove();
        numbers = [];
        generate();
    };

    function populate() {
        var radiodiv = $('<div class="tickets" style="font-size: 0.8em">');
        numbers.forEach((ticket, idx) => {
            radiodiv.append(`<div><input type="radio" id="${idx+1}" name="ticket" value="${idx}">
                <label for="${idx+1}">${idx+1}: ${ticket.join(', ')}</label></div>`);
        });
        $('td[width=160]').append(radiodiv);
        $('.tickets input').change(function() {
            var ticket = numbers[$(this).val()];
            $('input[name="one"]').val(ticket[0]);
            $('input[name="two"]').val(ticket[1]);
            $('input[name="three"]').val(ticket[2]);
            $('input[name="four"]').val(ticket[3]);
            $('input[name="five"]').val(ticket[4]);
            $('input[name="six"]').val(ticket[5]);
        });
        $('label').click(function() {
            let id = $(this).prop("for");
            $("#" + id).click();
        });
    }

    $('document').ready(function() {
        var refreshbtn = $('<a>тно</a>')
        refreshbtn.click(function() {
            refresh();
        });
        $('td[width=160]').append(refreshbtn);

        if (!numbers)
            generate();
        else
            populate();
    });
})();