Kongregate Flash games fixer add-on - default swf player setting

Sets the Kongregate Flash games fixer's default swf player to whatever you prefer.

当前为 2023-07-26 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Kongregate Flash games fixer add-on - default swf player setting
  3. // @version 1
  4. // @author Matrix4348
  5. // @namespace https://greasyfork.org/users/4818
  6. // @description Sets the Kongregate Flash games fixer's default swf player to whatever you prefer.
  7. // @license MIT
  8. // @match *://www.kongregate.com/games/*/*
  9. // @run-at document-end
  10. // @grant GM_setValue
  11. // @grant GM_getValue
  12. // ==/UserScript==
  13.  
  14. function FlashSupport(){
  15. var np=navigator.plugins, npl=np.length;
  16. for(var k=0;k<npl;k++){ if((np[k].name=="Shockwave Flash")&(np[k].filename!="ruffle.js")){return true;} }
  17. return false;
  18. }
  19.  
  20. function return_default_behaviour(){
  21. if(FlashSupport()==true){ return "Flash"; }
  22. else if(navigator.userAgent.search("Windows")>-1){ return "SuperNova"; } // At least while Ruffle is not finished.
  23. else if(navigator.userAgent.search("Windows")==-1){ return "Ruffle"; } // Because SuperNova only works on Windows.
  24. else { return "Flash"; }
  25. }
  26.  
  27. function open_settings(){
  28. var default_player=prompt("Which swf player must be used by default (when a page loads, not when buttons are clicked on): Flash, SuperNova or Ruffle?\n\n Note: Typing anything else will be treated like "+return_default_behaviour()+".");
  29. switch(default_player.toLowerCase()) {
  30. case null:
  31. break;
  32. case "flash":
  33. GM_setValue("default_swf_player","Flash");
  34. break;
  35. case "supernova":
  36. GM_setValue("default_swf_player","SuperNova");
  37. break;
  38. case "ruffle":
  39. GM_setValue("default_swf_player","Ruffle");
  40. break;
  41. default:
  42. GM_setValue("default_swf_player",return_default_behaviour());
  43. }
  44. document.getElementById("default swf player setting button").innerHTML="Set default swf player <br> <i>Currently: "+GM_getValue( "default_swf_player", return_default_behaviour() )+"</i>";
  45. }
  46.  
  47. function create_settings_button(){
  48. var b=document.createElement("button");
  49. b.id="default swf player setting button";
  50. b.innerHTML="Set default swf player <br> <i>Currently: "+GM_getValue( "default_swf_player", return_default_behaviour() )+"</i>";
  51. b.onclick=open_settings;
  52. b.style.borderWidth="1px";
  53. var h=50,w=150;
  54. b.style.height=h+"px";
  55. b.style.width=w+"px";
  56. b.style.position="relative";
  57. b.style.top=document.getElementById("maingame").clientHeight*(-1)+"px";
  58. b.style.left=document.getElementById("maingame").clientWidth*(-1/2)-w*1/2+"px";
  59. document.getElementById("floating_game_holder").appendChild(b);
  60. }
  61.  
  62. function main_function(){
  63. var ql=document.getElementById("quicklinks");
  64. var is_Flash_game, everything_ready;
  65. if( document.readyState=="complete" && typeof(active_user)!="undefined" && typeof(activateGame)!="undefined" && typeof(holodeck)!="undefined" && ql!==null ){
  66. if(typeof(active_user.gameType)!="undefined"){
  67. if(active_user.gameType()=="flash"){ is_Flash_game=true; } else{ is_Flash_game=false; }
  68. }
  69. else{ is_Flash_game=-1; }
  70. if(typeof(LoadFrame4348)!="undefined"){ everything_ready=true; }
  71. else{ everything_ready=false; }
  72. }
  73.  
  74. if(is_Flash_game==true&&everything_ready){
  75. create_settings_button();
  76. var swf_player=GM_getValue( "default_swf_player", return_default_behaviour() );
  77. LoadFrame4348(swf_player);
  78. }
  79. else if(is_Flash_game!=false){ setTimeout(function(){ main_function(); },1000); }
  80. }
  81.  
  82. main_function();