[GC | BETA] - Bilge Dice Keyboard Controls

Keyboard controls for Bilge Dice. Streak tracking removed after it was implemented on-site.

目前为 2024-01-04 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name [GC | BETA] - Bilge Dice Keyboard Controls
  3. // @namespace https://greasyfork.org/en/users/1225524-kaitlin
  4. // @match https://www.grundos.cafe/games/bilgedice/*
  5. // @license MIT
  6. // @version 2.2
  7. // @grant GM_getValue
  8. // @grant GM_setValue
  9. // @author Cupkait
  10. // @description Keyboard controls for Bilge Dice. Streak tracking removed after it was implemented on-site.
  11. // ==/UserScript==
  12.  
  13. const activeGame = document.querySelector("#bilge-dice-user-wrapper");
  14. const gameStart = document.querySelector("form.mt-1");
  15.  
  16. function indexElements(elements, type) {
  17. if (elements) {
  18. const maxCount = Math.min(elements.length, 6);
  19.  
  20. elements.forEach((element, index) => {
  21. const key = (index + 1).toString();
  22.  
  23. const label = document.createElement('label');
  24. label.textContent = key;
  25. label.style.fontWeight = 'bold';
  26. label.style.fontSize = '10px';
  27. label.style.color = 'black';
  28. label.style.background = 'EEEEEE';
  29. label.style.marginRight = '1px';
  30.  
  31. element.parentNode.insertBefore(label, element);
  32. });
  33. }
  34. }
  35.  
  36. if (activeGame) {
  37. indexElements(activeGame.querySelectorAll('input[type="checkbox"]'), 'dice');
  38.  
  39. document.addEventListener('keydown', event => {
  40. const key = event.key;
  41.  
  42. if (key >= '1' && key <= '6') {
  43. const index = parseInt(key) - 1;
  44. const checkboxes = activeGame.querySelectorAll('input[type="checkbox"]');
  45. if (checkboxes.length > 0 && index < checkboxes.length) {
  46. checkboxes[index].checked = !checkboxes[index].checked;
  47. checkboxes[index].dispatchEvent(new Event('change', {
  48. bubbles: true
  49. }));
  50. }
  51. }
  52.  
  53. if (key === 'Enter') {
  54. const submitButton = activeGame.querySelector('input[type="submit"]');
  55. if (submitButton) {
  56. submitButton.click();
  57. }
  58. }
  59. });
  60. } else if (gameStart) {
  61. indexElements(gameStart.querySelectorAll('input[type="submit"]'), 'ante');
  62.  
  63. document.addEventListener('keydown', event => {
  64. const key = event.key;
  65.  
  66. if (key >= '1' && key <= '6') {
  67. const index = parseInt(key) - 1;
  68. const placeAnte = document.querySelectorAll('#page_content > div:nth-child(5) > form input[type="submit"]');
  69. if (placeAnte.length > 0 && index < placeAnte.length) {
  70. placeAnte[index].click();
  71. }
  72. }
  73. });
  74. } else {
  75. document.addEventListener('keydown', event => {
  76. const key = event.key;
  77.  
  78. if (key === 'Enter') {
  79. const endGame = document.querySelector('#page_content');
  80. const submitButton = endGame.querySelector('input[type="submit"]');
  81. if (submitButton) {
  82. submitButton.click();
  83. }
  84. }
  85. });
  86. }