Advertisement
LGPvS

LudwigOS's Autoplayer

Jun 26th, 2017
641
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         LudwigOS's Autoplayer
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.1
  5. // @description  try to take over the world!
  6. // @author       You
  7. // @match        http://www.multiplayerpiano.com/*
  8. // @grant        none
  9. // ==/UserScript==
  10. JSNMPBautoplayer = [];
  11. JSNMPBautoplayer.songs = [];
  12. JSNMPBautoplayer.songList = [];
  13. JSNMPBautoplayer.cmd = [];
  14. JSNMPBautoplayer.cmd.prefix = "!";
  15. JSNMPBautoplayer.isEnabled = false;
  16. JSNMPBautoplayer.cmd.isEnabled = true;
  17. JSNMPBautoplayer.ownername = "LudwigOS";
  18. JSNMPBautoplayer.admins = [];
  19. JSNMPBautoplayer.songsUploaded = [];
  20. JSNMPBautoplayer.songsCanPlays = true;
  21. JSNMPBautoplayer.sendArray = function(arr){
  22. };
  23. JSNMPBautoplayer.pianopress=function(id,vol){
  24. MPP.press(id,vol);
  25. };
  26. JSNMPBautoplayer.welcomeEnable = function(){
  27. };
  28.  
  29. JSNMPBautoplayer.welcomeDisable = function(){
  30. MPP.client._events["participant added"][2]="";
  31. };
  32.  
  33. var currentSongName;
  34. songDelay1=50;
  35. songDelay2=300;
  36. JSNMPBautoplayer.changeTempo=function(num){
  37. songDelay1=150-num;
  38. songDelay2=400-num;
  39. };
  40.  
  41. var songClockInt;
  42. var stopSongClockInt;
  43.  
  44. localStorage.defaultRoomName = "JSNMPB Room";
  45.  
  46.  
  47. formatMSeconds=function(mseconds)
  48. {
  49.  
  50.     var date = new Date(0,0,1970);
  51.      date.setMilliseconds(mseconds);
  52.     return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
  53. };
  54.  
  55. notes = {
  56. "z":"a1","a":"gs1","s":"as1","f":"cs2","g":"ds2","x":"b1","c":"c2","v":"d2","b":"e2","n":"f2","j":"fs2","k":"gs2","1":"gs2","l":"as2","2":"as2","m":"g2",",":"a2",".":"b2","/":"c3","'":"cs3","q":"a2","w":"b2","e":"c3","4":"cs3","5":"ds3","7":"fs3","8":"gs3","9":"as3",
  57. "-":"cs4","=":"ds4","r":"d3","t":"e3","y":"f3","u":"g3","i":"a3","o":"b3","p":"c4","[":"d4","]":"e4","Z":"a2","A":"gs2","S":"as2",
  58. "F":"cs3","G":"ds3","X":"b2","C":"c3","V":"d3","B":"e3","N":"f3","J":"fs3","K":"gs3","!":"gs3","L":"as3","@":"as3","M":"g3","<":"a3",
  59. ">":"b3",'"':"cs4","?":"c4","Q":"a3","W":"b3","E":"c4","$":"cs4","%":"ds4","&":"fs4","*":"gs4",
  60. "(":"as4","_":"cs5","+":"ds5","R":"d4","T":"e4","Y":"f4","U":"g4","I":"a4","O":"b4","P":"c5","{":"d5","}":"e5"
  61.                         };
  62.  
  63.  
  64. T=300;
  65. h=300;
  66. playnotes = function(songnotes){
  67. songnoteslength = songnotes.length;
  68. notesNum=0;
  69. T=0;
  70. h=300;
  71.     stopSong=false;
  72. timeoutn=[];
  73.  
  74.  
  75.                                 //MPP.client.sendArray([{m:"userset", set:{name:JSNMPBautoplayer.ownername+" ["+formatMSeconds(0)+"]"}}]);
  76.  
  77.                                 songFor:for(var i = 0; i<songnoteslength; i++){
  78.  //setTimeout(function(i) { songMPPpress(notes[songnotes[i]], 1); /*console.log(songnotes[i]);*/ }, T, i);
  79.  
  80.  
  81. if(songnotes[i]==""){T+=songDelay1; h=songDelay1;}
  82. else if(songnotes[i] == " "){T+=songDelay2; h=songDelay2;}
  83.  
  84.                                                    
  85.  
  86.              timeoutn.push(setTimeout(function (i) {
  87.         if (stopSong==true) {
  88.             timeoutn.forEach(function (number) {
  89.                 clearTimeout(number);
  90.             });
  91.             timeoutn = [];
  92.             console.log("Stopped!");
  93.             stopSong = false;
  94.             return;
  95.  
  96.         }
  97.  
  98.  
  99.  
  100.                  JSNMPBautoplayer.pianopress(notes[songnotes[notesNum]], 1);
  101.     notesNum+=1;
  102.                 //console.log(h);
  103.  
  104.                  //console.log(notesNum);
  105.              }, T,i));
  106.  
  107.                                 }
  108.  
  109.  
  110. ii=0;
  111. MPP.client.sendArray([{m:"userset", set:{name:JSNMPBautoplayer.ownername+" ["+formatMSeconds(ii)+" | "+formatMSeconds(T+2100)+"]"}}]);
  112.                                 songClockInt=setInterval(function(){ii+=2100; MPP.client.sendArray([{m:"userset", set:{name:JSNMPBautoplayer.ownername+" ["+formatMSeconds(ii)+" | "+formatMSeconds(T+2100)+"]"}}]); MPP.client.sendArray([{m:"userset", set:{name:JSNMPBautoplayer.ownername+" ["+formatMSeconds(ii)+"]"}}]);},2100);
  113.  
  114.                                 stopSongClockInt=setInterval(function(){ if(ii>T){clearInterval(songClockInt); clearInterval(stopSongClockInt); setTimeout(function(){MPP.client.sendArray([{m:"userset", set:{name:JSNMPBautoplayer.ownername}}]); JSNMPBautoplayer.changeTempo(100);},2000);}},-Infinity);
  115.  
  116.                                };
  117.  
  118. var stop = false;
  119. var timeoutn = [];
  120.  
  121.  
  122.  
  123. MPP.client.on("a", function (msg) {
  124.     a = msg.a.split(' ');
  125.     b = a[0];
  126.     input = msg.a.substring(b.length).trim();
  127.  
  128.     if(JSNMPBautoplayer.isEnabled===true){
  129.     if ((JSNMPBautoplayer.admins.indexOf(msg.p._id) > - 1) || (msg.p._id==MPP.client.getOwnParticipant()._id)){
  130.     if (b == JSNMPBautoplayer.cmd.prefix + "on")
  131. {
  132. JSNMPBautoplayer.cmd.isEnabled=true;
  133. MPP.chat.send("Enabled Commands");
  134.  
  135. }}
  136. if ((JSNMPBautoplayer.admins.indexOf(msg.p._id) > - 1) || (msg.p._id==MPP.client.getOwnParticipant()._id)){
  137.  
  138. if (b== JSNMPBautoplayer.cmd.prefix + "off"){
  139. JSNMPBautoplayer.cmd.isEnabled=false;
  140. MPP.chat.send("Disabled Commands");
  141. }}
  142.  var msgArr = msg.a.split(' ');
  143.     if ((JSNMPBautoplayer.admins.indexOf(msg.p._id) > - 1) || (msg.p._id==MPP.client.getOwnParticipant()._id)){ if (msgArr[0] == JSNMPBautoplayer.cmd.prefix+'js' ) { try { MPP.chat.send('Console: '+JSON.stringify(eval(msg.a.substr(msgArr[0].length).trim()))); } catch (error) { MPP.chat.send(error); } } }
  144.    if ((JSNMPBautoplayer.admins.indexOf(msg.p._id) > - 1) || (msg.p._id==MPP.client.getOwnParticipant()._id)){if(b==JSNMPBautoplayer.cmd.prefix+"prefix"){
  145.        if(!input){
  146.        MPP.chat.send("Usage: "+JSNMPBautoplayer.cmd.prefix+"prefix [text].");
  147.        } else {
  148.        MPP.chat.send("Prefix changed to "+input);
  149.        JSNMPBautoplayer.cmd.prefix = input;
  150.        }
  151.        }}
  152.  
  153. if(JSNMPBautoplayer.cmd.isEnabled===true){
  154.  
  155.  
  156.     if(b==JSNMPBautoplayer.cmd.prefix+"help"|b==JSNMPBautoplayer.cmd.prefix+"h"){MPP.chat.send("Commands: "+JSNMPBautoplayer.cmd.prefix+"help ("+JSNMPBautoplayer.cmd.prefix+"h), "+JSNMPBautoplayer.cmd.prefix+"play ("+JSNMPBautoplayer.cmd.prefix+"p), "+JSNMPBautoplayer.cmd.prefix+"stop, "+JSNMPBautoplayer.cmd.prefix+"upload ("+JSNMPBautoplayer.cmd.prefix+"u), "+JSNMPBautoplayer.cmd.prefix+"list, "+JSNMPBautoplayer.cmd.prefix+"tempo");}
  157.     if(b==JSNMPBautoplayer.cmd.prefix+"u"||b==JSNMPBautoplayer.cmd.prefix+"upload"){
  158.    if (!input) { MPP.chat.send("Usage: "+JSNMPBautoplayer.cmd.prefix+"upload [Song name + Song notes]. Use ''\\'' as space between song notes and song name. Example: "+JSNMPBautoplayer.cmd.prefix+"upload furelise\\t 5 t 5 t w r e q");
  159.                } else {
  160. if(!input.split("\\")[1]){MPP.chat.send("You forget something.");
  161.                          } else {
  162.                           MPP.chat.send("You uploaded song");
  163.  
  164. JSNMPBautoplayer.songs[input.split("\\")[0]] = [];
  165. JSNMPBautoplayer.songs[input.split("\\")[0]].notes = ""+input.split("\\")[1]+"";
  166. JSNMPBautoplayer.songs[input.split("\\")[0]].name = ""+input.split("\\")[0]+"";
  167. JSNMPBautoplayer.songsUploaded.push(input.split("\\")[0]);
  168.                          }
  169. }
  170. }
  171.  
  172.  if(b ==JSNMPBautoplayer.cmd.prefix+"play"||b== JSNMPBautoplayer.cmd.prefix+"p"){
  173.  
  174.      if (!input) {
  175.     MPP.chat.send("Usage: "+JSNMPBautoplayer.cmd.prefix+"play [Song Name].");
  176.                }else{
  177.  
  178.  
  179. if (!JSNMPBautoplayer.songs[input]) {
  180. MPP.chat.send("Not Found");
  181.  
  182.                }else{
  183.  
  184.          
  185. playnotes(JSNMPBautoplayer.songs[input].notes);
  186. currentSongName=input;
  187.      MPP.chat.send("Reading song. Name: "+JSNMPBautoplayer.songs[input].name+" ["+formatMSeconds(T+2100)+"]");
  188.  
  189.                }
  190.  }}
  191.  
  192.  
  193.  if(b ==JSNMPBautoplayer.cmd.prefix+"list"){
  194.     MPP.chat.send("Songs: "+JSNMPBautoplayer.songsUploaded);
  195.  }
  196.  
  197. if(b ==JSNMPBautoplayer.cmd.prefix+"stop"){
  198. stopSong=true;
  199. ii=T+1;
  200. }
  201.  
  202. if(b ==JSNMPBautoplayer.cmd.prefix+"tempo"){
  203. if(!input){
  204. MPP.chat.send("Usage: "+JSNMPBautoplayer.cmd.prefix+"tempo [number].");
  205. }else{
  206. stopSong=true;
  207. ii=T+1;
  208.  
  209.  
  210.  
  211. setTimeout(function(){JSNMPBautoplayer.changeTempo(input); playnotes(JSNMPBautoplayer.songs[currentSongName].notes); MPP.chat.send("Tempo: "+input+"% ["+formatMSeconds(T+2100)+"].");},3000);
  212. }
  213. }
  214. }
  215. }
  216. });
  217.  
  218. $("body #bottom .relative").append('<div id="jsnmpbautoplaybtn" class="ugly-button 2_btn" style="position: fixed;bottom: 7px;right: 550px;width: 115px;">JSNMPB AutoPlayer</div>');
  219.  
  220. $("#jsnmpbautoplaybtn").click(function(){
  221. MPP.client.emit("notification", { title: "Title", html: `<input id='JSNMPBinputRoom' value='`+localStorage.defaultRoomName+`' onclick='JSNMPBroomPrompt = prompt(), localStorage.defaultRoomName=JSNMPBroomPrompt' style="width: 245px; height: 15px;"> <br><button id='JSNMPBbuttonConnect' onclick='JSNMPBautoplayer.isEnabled=true, document.getElementById("JSNMPBinputRoom").value=localStorage.defaultRoomName, MPP.client.setChannel(localStorage.defaultRoomName)'>Connect</button><button id='JSNMPBbuttonDisconnect' onclick='JSNMPBautoplayer.isEnabled=false'>Disconnect</button></br><br><input type="checkbox" id="visiblejsnmpb" checked/> Visible <input type="checkbox" id="chatjsnmpb" checked/> Chat <input type="checkbox" id="solojsnmpb"> Solo <input type="checkbox" id="welcomesjsnmpb"> Welcomes <input type="color" id="colorRoomjsnmpb" style="width: 14px; height: 20px;"><button id='setclrbtn' onclick='JSNMPBautoplayer.sendArray([{m: "chset", set: {color:document.getElementById("colorRoomjsnmpb").value}}])'>Set Color</button></br>`,duration:-1,target:"#jsnmpbautoplaybtn"});
  222. var visiblejsnmpb = document.querySelector('#visiblejsnmpb');
  223. visiblejsnmpb.onclick = function() {
  224. JSNMPBautoplayer.sendArray([{m: "chset", set: {visible:false}}]);
  225.  if (visiblejsnmpb.checked) {
  226. JSNMPBautoplayer.sendArray([{m: "chset", set: {visible:true}}]);
  227.  }
  228. };
  229.  
  230. var chatjsnmpb = document.querySelector('#chatjsnmpb');
  231. chatjsnmpb.onclick = function() {
  232. JSNMPBautoplayer.sendArray([{m: "chset", set: {chat:false}}]);
  233.  if (chatjsnmpb.checked) {
  234. JSNMPBautoplayer.sendArray([{m: "chset", set: {chat:true}}]);
  235.  }
  236. };
  237.  
  238. var solojsnmpb = document.querySelector('#solojsnmpb');
  239. solojsnmpb.onclick = function() {
  240. JSNMPBautoplayer.sendArray([{m: "chset", set: {crownsolo:false}}]);
  241.  if (solojsnmpb.checked) {
  242. JSNMPBautoplayer.sendArray([{m: "chset", set: {crownsolo:true}}]);
  243.  }
  244. };
  245.  
  246.     var welcomesjsnmpb = document.querySelector('#welcomesjsnmpb');
  247.  
  248.     //JSNMPBautoplayer.welcomeEnable
  249.     //JSNMPBautoplayer.isEnabled=true;
  250. welcomesjsnmpb.onclick = function() {
  251. JSNMPBautoplayer.welcomeDisable();
  252.  if (welcomesjsnmpb.checked) {
  253. JSNMPBautoplayer.welcomeEnable();
  254.  }
  255. };
  256.  
  257.     console.log("test");
  258. });
  259.  
  260. setInterval(function(){if(MPP.client.channel._id==localStorage.defaultRoomName,JSNMPBautoplayer.isEnabled==true){
  261. JSNMPBautoplayer.sendArray = function(arr){
  262. MPP.client.sendArray(arr);
  263. };
  264. JSNMPBautoplayer.welcomeEnable = function(){
  265. MPP.client._events["participant added"][2] = function(jomom){MPP.chat.send("Welcome, "+jomom.name+" ("+jomom.color+"). Use "+JSNMPBautoplayer.cmd.prefix+"help for the command list.");};
  266. };
  267. }
  268.  
  269. if(MPP.client.channel._id!==localStorage.defaultRoomName,JSNMPBautoplayer.isEnabled==false){
  270. JSNMPBautoplayer.sendArray = function(arr){
  271. JSNMPBautoplayer.welcomeEnable=function(){};
  272. };
  273. }},-Infinity);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement