Animation Script

a script to support animated skins on Jstris

As of 2019-06-13. See the latest version.

  1. // ==UserScript==
  2. // @name Animation Script
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description a script to support animated skins on Jstris
  6. // @author Oki
  7. // @match https://*.jstris.jezevec10.com/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. /**************************
  12. Animation Script
  13. **************************/
  14.  
  15. (function() {
  16. window.addEventListener('load', function(){
  17.  
  18. localStorage.animSpeed = localStorage.animSpeed || '100';
  19. localStorage.animToggle = localStorage.animToggle || 'b'
  20. var animationRunning = false;
  21.  
  22. //Add toggle key option
  23. var animationKey = document.createElement("tr");
  24. animationKey.innerHTML = '<td>Toggle animation:</td><td><input maxlength="1" id="input420" type="text" size="7" value="'+localStorage.animToggle+'"></td><td id="kc420">0</td>'
  25. tab_controls.children[2].appendChild(animationKey);
  26.  
  27. //Add speed option
  28. var animOption = document.createElement("tr");
  29. animOption.innerHTML = '<td>Animation speed:</td><td><input onchange="localStorage.animSpeed=parseInt(this.value)||100" size="10" id="animSpeed" type="text" value="'+localStorage.animSpeed+'"></td>'
  30. tab_settings.children[1].appendChild(animOption);
  31.  
  32. //Custom skin here
  33. var animatedSkin = [
  34. ["https://cdn.discordapp.com/attachments/429007833992790036/564703035196964864/ppt_crayon_1.png",36],
  35. ["https://cdn.discordapp.com/attachments/429007833992790036/564703064234131464/ppt_crayon_2.png",36],
  36. ["https://cdn.discordapp.com/attachments/429007833992790036/564703091375734804/ppt_crayon_3.png",36],
  37. ["https://cdn.discordapp.com/attachments/429007833992790036/564703116331843584/ppt_crayon_4.png",36]]
  38.  
  39. var intervals = []
  40.  
  41. function stopAnim() {
  42. for (var i=0; i < intervals.length; i++) {
  43. clearInterval(intervals[i]);
  44. }
  45. }
  46.  
  47. function startAnim() {
  48. var animLength = animatedSkin.length*localStorage.animSpeed
  49. animatedSkin.map((x,i)=>{
  50. setTimeout(()=>{intervals.push(setInterval(()=>{loadSkin(x[0],x[1])}, animLength))}, i*(animLength/animatedSkin.length));
  51. })
  52. }
  53.  
  54.  
  55. window.onkeyup = function(e) {
  56. if(e.target.id == "input420") {
  57. event.preventDefault()
  58. input420.value=e.key
  59. kc420.innerHTML=e.keyCode
  60. localStorage.animToggle=e.key
  61. } else {
  62. if (e.key == localStorage.animToggle) {
  63. if(animationRunning) {
  64. stopAnim();
  65. } else {
  66. startAnim();
  67. }
  68. animationRunning ^= 1
  69. }
  70. }
  71. "input421"==e.target.id?(e.preventDefault(),input421.value=e.key,kc421.innerHTML=e.keyCode,localStorage.randomizeKey=e.key):e.key==localStorage.randomizeKey&&deployRandomSkin();
  72. }
  73.  
  74. })})()