Lichess Chess.com Full Pack

gg

  1. // ==UserScript==
  2. // @name Lichess Chess.com Full Pack
  3. // @namespace http://example.com
  4. // @description gg
  5. // @include http://*.lichess.org/*
  6. // @version 1.4
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. var Move = new Audio();
  11. Move.src = 'http://images.chesscomfiles.com/chess-themes/sounds/_MP3_/default/move-self.mp3';
  12. Move.volume = 0.5;
  13. var Take = new Audio();
  14. Take.src = 'http://images.chesscomfiles.com/chess-themes/sounds/_MP3_/default/capture.mp3';
  15. Take.volume = 0.5;
  16. var Dong = new Audio();
  17. Dong.src = 'http://images.chesscomfiles.com/chess-themes/sounds/_MP3_/default/notify.mp3';
  18. Dong.volume = 0.5;
  19. var Lowtime = new Audio();
  20. Lowtime.src = 'http://ralphschuler.ch/ChessCubeSoundPack/Chesscube_gamestart.wav';
  21. Lowtime.volume = 0.5;
  22.  
  23.  
  24. $.sound = (function() {
  25. var baseUrl = $('body').data('sound-dir') + '/';
  26. Howler.volume(lichess.storage.get('sound-volume') || 0.7);
  27. var names = {
  28. dong: 'dong',
  29. move: 'move',
  30. take: 'take',
  31. explode: 'explosion',
  32. lowtime: 'lowtime'
  33. };
  34. var volumes = {
  35. lowtime: 0.5,
  36. explode: 0.35
  37. };
  38. var get = new $.lazy(function(k) {
  39. return new Howl({
  40. src: ['ogg', 'mp3'].map(function(ext) {
  41. return baseUrl + names[k] + '.' + ext;
  42. }),
  43. volume: volumes[k] || 1
  44. });
  45. });
  46. var $control = $('#sound_control');
  47. var $toggle = $('#sound_state');
  48. var enabled = function() {
  49. return lichess.storage.get('sound') !== 'no';
  50. };
  51. $control.add($toggle).toggleClass('sound_state_on', enabled());
  52. var player = function(s) {
  53. return function() {
  54. if (enabled()) get(s).play();
  55. };
  56. }
  57. var play = {};
  58. Object.keys(names).forEach(function(name) {
  59. play[name] = function() {
  60. if (enabled()) Move.play();
  61. }
  62. });
  63. var setVolume = function(v) {
  64. lichess.storage.set('sound-volume', v);
  65. Howler.volume(v);
  66. };
  67. var manuallySetVolume = $.fp.debounce(function(v) {
  68. setVolume(v);
  69. play.move(true);
  70. }, 50);
  71. $toggle.click(function() {
  72. var enab = !enabled();
  73. lichess.storage.set('sound', enab ? 'yes' : 'no');
  74. $control.add($toggle).toggleClass('sound_state_on', enab);
  75. play.dong();
  76. return false;
  77. });
  78. $toggle.one('mouseover', function() {
  79. $toggle.parent().find('.slider').slider({
  80. orientation: "vertical",
  81. min: 0,
  82. max: 1,
  83. range: 'min',
  84. step: 0.01,
  85. value: Howler.volume(),
  86. slide: function(e, ui) {
  87. manuallySetVolume(ui.value);
  88. }
  89. });
  90. });
  91.  
  92. return play;
  93. })();
  94.  
  95.  
  96.  
  97.  
  98. function addGlobalStyle(css) {
  99. var head, style;
  100. head = document.getElementsByTagName('head')[0];
  101. if (!head) { return; }
  102. style = document.createElement('style');
  103. style.type = 'text/css';
  104. style.innerHTML = css;
  105. head.appendChild(style);
  106. };
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. addGlobalStyle('.cg-piece.knight.black { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/bn.png")!important;} ');
  115. addGlobalStyle('.cg-piece.bishop.black { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/bb.png")!important;} ');
  116. addGlobalStyle('.cg-piece.queen.black { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/bq.png")!important;} ');
  117. addGlobalStyle('.cg-piece.rook.black { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/br.png")!important;} ');
  118. addGlobalStyle('.cg-piece.pawn.black { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/bp.png")!important;} ');
  119. addGlobalStyle('.cg-piece.king.black { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/bk.png")!important;} ');
  120. addGlobalStyle('.cg-piece.knight.white { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/wn.png")!important;} ');
  121. addGlobalStyle('.cg-piece.bishop.white { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/wb.png")!important;} ');
  122. addGlobalStyle('.cg-piece.queen.white { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/wq.png")!important;} ');
  123. addGlobalStyle('.cg-piece.rook.white { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/wr.png")!important;} ');
  124. addGlobalStyle('.cg-piece.pawn.white { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/wp.png")!important;} ');
  125. addGlobalStyle('.cg-piece.king.white { background-image: url("http://images.chesscomfiles.com/chess-themes/pieces/classic/80/wk.png")!important;} ');
  126.  
  127.  
  128. //addGlobalStyle('.cg-board { background-image: url("http://images.chesscomfiles.com/chess-themes/boards/translucent/80.png")!important;} ');
  129.  
  130. addGlobalStyle('.cg-square.last-move { background-color:rgba(255, 0, 0, 0.41) !important;box-sizing:border-box;border:2px solid red;} ');
  131.  
  132. addGlobalStyle('.cg-square.check {background-color:red !important;}');
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. $('.cg-board').css({"border-color": "#ccc",
  140. "border-width":"3px",
  141. "border-style":"solid"});
  142.  
  143.  
  144.