您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Better dropdown and checkbox selection for Animal Husbandry
- // ==UserScript==
- // @name FV - Stud selector
- // @version 0.3.1
- // @description Better dropdown and checkbox selection for Animal Husbandry
- // @author msjanny (#7302)
- // @match https://www.furvilla.com/career/breeder/*
- // @match https://www.furvilla.com/career/stables/*
- // @match https://www.furvilla.com/career/forest/*
- // @grant GM_setValue
- // @grant GM_getValue
- // @namespace https://greasyfork.org/users/319295
- // ==/UserScript==
- var stud = GM_getValue('stud', '');
- var findfem = GM_getValue('findfem', false);
- var lastChecked = null;
- (function () {
- 'use strict';
- /* globals $:false */
- function loadScripts(func) {
- //check every 300ms if modal has loaded before continuing
- if ($('#modal').prop('style').display != 'block' || $('#modal').find('img[src="/img/loading.gif"]').length) {
- setTimeout(function () {
- loadScripts(func);
- }, 300);
- } else func();
- }
- function selectStud() {
- var studbtn = $(
- '<a class="btn" style="margin-left: 20px">Remember Stud</a>'
- );
- studbtn.click(function () {
- stud = $('.stable-select select[name=male_id]').val();
- GM_setValue('stud', stud);
- });
- $("h2:contains('Male')").append(studbtn);
- var findfem_cb = $(
- '<input type="checkbox" class="form-check-input" style="height: 24px; width: 24px; margin-left: 20px">'
- );
- if (findfem) {
- findfem_cb.prop('checked', true);
- }
- findfem_cb.change(function () {
- findfem = !findfem;
- GM_setValue('findfem', findfem);
- if (findfem) findFem();
- });
- $("h2:contains('Female')").append(findfem_cb);
- if (stud) {
- $('.stable-select select[name=male_id]').val(stud);
- var option = $(`.stable-select select option[value=${stud}]`);
- if (option.length) {
- updateStablePreview(option);
- if (findfem) findFem();
- }
- }
- }
- function findFem() {
- var species = $('.stable-select select[name=male_id] option:selected')
- .text()
- .match(/\b[a-zA-Z\-]+$/g);
- var females = $(
- `.stable-select select[name=female_id] option:contains(${species})`
- );
- if (!females.length) {
- return;
- }
- var female = females.eq(0);
- updateStablePreview(female);
- $('.stable-select select[name=female_id]').val(female.attr('value'));
- }
- function imAnimals() {
- $('.modal .pagination a').click(function () {
- loadScripts(imAnimals);
- });
- checkAll();
- checkRTB();
- }
- function imStables() {
- $('.modal .pagination a').click(function () {
- loadScripts(imStables);
- });
- checkAll();
- }
- function forest() {
- $('.modal .pagination a').click(function () {
- loadScripts(forest);
- });
- // ctrl+select
- $('#modal .css-checkbox').click(function (e) {
- if (e.ctrlKey || e.shiftKey) {
- var from = $('#modal .css-checkbox').index(this);
- var to = $('#modal .css-checkbox').index(lastChecked);
- if (to < 0) to = from;
- var start = Math.min(from, to) + 1;
- var end = Math.max(from, to) + 1;
- if (from < to) end--;
- $('#modal .css-checkbox')
- .slice(start, end)
- .click();
- }
- lastChecked = $(this);
- });
- // check common males
- var RTBbtn = $(
- '<a class="pull-right label label-primary" style="margin-right: 10px;"><i class="fas fa-mars"></i> Check Common Males</a>'
- );
- RTBbtn.click(function () {
- $('.modal .inventory-table tr').each(function () {
- var txt = $(this).find('td:nth-child(2)').text();
- if (
- txt.includes('(Male)') &&
- $(this).find('br + span > .label-default').length
- ) {
- $(this).find('.css-checkbox').click();
- }
- });
- });
- $('.modal-body .serpent-all').after(RTBbtn);
- $('.modal-body .serpent-all').after(document.createTextNode('Use ctrl + click to select range.'));
- }
- function checkAll() {
- // create check all button
- var cbbtn = $(
- '<a class="pull-right label label-primary" style="margin-bottom: 15px;"><i class="fa fa-check-square-o"></i> Check All</a>'
- );
- cbbtn.click(function () {
- $('#modal .css-checkbox').click();
- });
- $('.modal-body > .clearfix').prepend(cbbtn);
- $('.modal-body > .clearfix').prepend(document.createTextNode('Use ctrl + click to select range.'));
- // ctrl+select
- $('#modal .css-checkbox').click(function (e) {
- if (e.ctrlKey || e.shiftKey) {
- var from = $('#modal .css-checkbox').index(this);
- var to = $('#modal .css-checkbox').index(lastChecked);
- if (to < 0) to = from;
- var start = Math.min(from, to) + 1;
- var end = Math.max(from, to) + 1;
- if (from < to) end--;
- $('#modal .css-checkbox')
- .slice(start, end)
- .click();
- }
- lastChecked = $(this);
- });
- }
- function checkRTB() {
- // create check all button
- var RTBbtn = $(
- '<a class="pull-right label label-primary" style="margin-right: 10px; margin-bottom: 15px;"><i class="fas fa-venus"></i> Check RTB</a>'
- );
- RTBbtn.click(function () {
- $('.modal .inventory-table tr').each(function () {
- var txt = $(this).find('td:nth-child(2)').text();
- if (txt.includes('(Female)') && txt.includes('Breedable Now')) {
- $(this).find('.css-checkbox').click();
- }
- });
- });
- $('.modal-body .inventory-table').before(RTBbtn);
- }
- function stables() {
- // ctrl+select
- $('.css-checkbox').click(function (e) {
- if (e.ctrlKey || e.shiftKey) {
- // get the column
- var cbclass = $(this).prop('class').includes("export-animal-input") ? ".export-animal-input" : ".export-stable-input";
- var from = $(cbclass).index(this);
- var to = $(cbclass).index(lastChecked);
- if (to < 0) to = from;
- var start = Math.min(from, to) + 1;
- var end = Math.max(from, to) + 1;
- if (from < to) end--;
- $(cbclass)
- .slice(start, end)
- .click();
- }
- lastChecked = $(this);
- });
- $('h1 + p').text($('h1 + p').text() + ' Use ctrl + click to select range.');
- // select all buttons
- var tr = $('<tr> <td colspan="2" class="text-right"> Select All </td> <td align="center" class="tooltipster tooltipstered"> <a class="label label-primary all-stables" data-action=""><i class="fa fa-check-square-o"></i></a> </td> <td align="center" class="tooltipster tooltipstered"> <a class="label label-primary all-animals" data-action="storage"><i class="fa fa-check-square-o"></i></a> </td> </tr>');
- $('.stables-list tbody').append(tr);
- $('.all-animals').click(function () {
- $('.export-animal-input').prop('checked', true);
- });
- $('.all-stables').click(function () {
- $('.export-stable-input').prop('checked', true);
- });
- }
- $(document).ready(function () {
- var url = window.location.href;
- if (url.includes('breeder')) {
- $('.breed-a').click(function () {
- loadScripts(selectStud);
- });
- $('.import-animals-btn').click(function () {
- loadScripts(imAnimals);
- });
- $('.import-stables-btn').click(function () {
- loadScripts(imStables);
- });
- } else if (url.includes('stables')) {
- stables();
- } else if (url.includes('forest')) {
- $('.import-animals-btn').click(function () {
- loadScripts(forest);
- });
- }
- });
- })();