Greasy Fork 支持简体中文。

Strong Kong

Adds a number of commands to Kongregate chat

目前為 2015-05-16 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Strong Kong
  3. // @namespace http://alphaoverall.com
  4. // @version 0.1
  5. // @description Adds a number of commands to Kongregate chat
  6. // @author AlphaOverall
  7. // @match http://www.kongregate.com/games/*/*
  8. // ==/UserScript==
  9.  
  10. //==========
  11. // Strong Kong
  12. // http://...
  13. // by AlphaOverall (http://www.kongregate.com/accounts/AlphaOverall)
  14. // Inspired by Kongregate Get
  15. //==========
  16.  
  17. var dom = (typeof unsafeWindow === "undefined"?window:unsafeWindow);
  18.  
  19. function init_strongKong(){
  20. var holodeck = dom.holodeck;
  21. ChatDialogue = dom.ChatDialogue;
  22.  
  23. //From original Kongregate Get script (http://userscripts-mirror.org/scripts/review/56432)
  24. holodeck.addChatCommand("avg", function(l,n){
  25. var roomDetails = l.chatWindow().activeRoom();
  26. var allUsers = roomDetails.users();
  27. var allLevels = 0;
  28. for(var i=0; i < allUsers.length; i++)
  29. {
  30. allLevels += allUsers[i]._level;
  31. }
  32. var avgLevel = Math.round(allLevels/allUsers.length*10)/10;
  33. l.activeDialogue().displayUnsanitizedMessage("Average Level in Room", avgLevel , {"class":"whisper received_whisper"}, {non_user: true});
  34. return false;
  35. });
  36.  
  37. holodeck.addChatCommand("highlvl", function(l,n){
  38. var roomDetails = l.chatWindow().activeRoom();
  39. var allUsers = roomDetails.users();
  40. var highLevels = "";
  41. var highestLevel = 0;
  42. for(var i=0; i < allUsers.length; i++)
  43. {
  44. if (allUsers[i]._level > highestLevel)
  45. {
  46. highestLevel = allUsers[i]._level;
  47. highLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\"><a href=\"http://www.kongregate.com/accounts/" + allUsers[i].username + "\" target=\"_blank\">" + allUsers[i].username + "</a></img>";
  48. }
  49. else if (allUsers[i]._level == highestLevel)
  50. {
  51. highLevels = highLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\"><a href=\"http://www.kongregate.com/accounts/" + allUsers[i].username + "\" target=\"_blank\">" + allUsers[i].username + "</a></img>";
  52. }
  53. }
  54. l.activeDialogue().displayUnsanitizedMessage("Highest Level in Room", highestLevel + ", Users: " + highLevels, {"class":"whisper received_whisper"}, {non_user: true});
  55. return false;
  56. });
  57.  
  58. holodeck.addChatCommand("lowlvl", function(l,n){
  59. var roomDetails = l.chatWindow().activeRoom();
  60. var allUsers = roomDetails.users();
  61. var lowLevels = "";
  62. var lowestLevel = Infinity; //Just to makes sure :P
  63. for(var i=0; i < allUsers.length; i++)
  64. {
  65. if (allUsers[i]._level < lowestLevel)
  66. {
  67. lowestLevel = allUsers[i]._level;
  68. lowLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\"><a href=\"http://www.kongregate.com/accounts/" + allUsers[i].username + "\" target=\"_blank\">" + allUsers[i].username + "</a>";
  69. }
  70. else if (allUsers[i]._level == lowestLevel)
  71. {
  72. lowLevels = lowLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\"><a href=\"http://www.kongregate.com/accounts/" + allUsers[i].username + "\" target=\"_blank\">" + allUsers[i].username + "</a>";
  73. }
  74. }
  75. l.activeDialogue().displayUnsanitizedMessage("Lowest Level in Room", lowestLevel + ", Users: " + lowLevels, {"class":"whisper received_whisper"}, {non_user: true});
  76. return false;
  77. });
  78.  
  79. holodeck.addChatCommand("developer", function(l,n){
  80. var roomDetails = l.chatWindow().activeRoom();
  81. var allUsers = roomDetails.users();
  82. var devs = [];
  83. for(var i=0; i < allUsers.length; i++)
  84. {
  85. if (allUsers[i]._developer)
  86. {
  87. devs.push(allUsers[i].username);
  88. }
  89. }
  90. l.activeDialogue().displayUnsanitizedMessage("Developers in room", devs.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  91. return false;
  92. });
  93.  
  94. holodeck.addChatCommand("admin", function(l,n){
  95. var roomDetails = l.chatWindow().activeRoom();
  96. var allUsers = roomDetails.users();
  97. var admins = [];
  98. for(var i=0; i < allUsers.length; i++)
  99. {
  100. if (allUsers[i]._admin)
  101. {
  102. admins.push(allUsers[i].username);
  103. }
  104. }
  105. l.activeDialogue().displayUnsanitizedMessage("Admins in room", admins.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  106. return false;
  107. });
  108.  
  109. holodeck.addChatCommand("user", function(l,n){
  110. var z = n.match(/^\/\S+\s+(.+)/);
  111. if (z)
  112. {
  113. var roomDetails = l.chatWindow().activeRoom();
  114. var allUsers = roomDetails.users();
  115. for(var i=0; i < allUsers.length; i++)
  116. {
  117. if (i == allUsers.length-1 && allUsers[i].username != z)
  118. {
  119. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No user of specified name in chat", {"class":"whisper received_whisper"}, {non_user: true});
  120. return false;
  121. }
  122. if (allUsers[i].username == z[1])
  123. {
  124. var user = allUsers[i];
  125.  
  126. l.activeDialogue().displayUnsanitizedMessage("Username", "<img src=\""+user._chat_avatar_url+"\"></img><a href=\"http://www.kongregate.com/accounts/" + user.username+"\" target=\"_blank\">"+ user.username+"</a>", {"class":"whisper received_whisper"}, {non_user: true});
  127. l.activeDialogue().displayUnsanitizedMessage("Level", user._level, {"class":"whisper received_whisper"}, {non_user: true});
  128. if (user._moderator_room_ids.length == 0 && user._moderator_game_ids.length == 0)
  129. {
  130. l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/false/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true});
  131. }
  132. else
  133. {
  134. l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/true/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true});
  135. l.activeDialogue().displayUnsanitizedMessage("Moderator Game Ids", user._moderator_game_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  136. l.activeDialogue().displayUnsanitizedMessage("Moderator Room Ids", user._moderator_room_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  137. }
  138. l.activeDialogue().displayUnsanitizedMessage("Playing", "<a href=\"http://www.kongregate.com" + user._game_url + "\" target=\"_blank\">" + user._game_title + "</a>", {"class":"whisper received_whisper"}, {non_user: true});
  139. l.activeDialogue().displayUnsanitizedMessage("Presence", user._presence, {"class":"whisper received_whisper"}, {non_user: true});
  140. l.activeDialogue().displayUnsanitizedMessage("Role", user._role, {"class":"whisper received_whisper"}, {non_user: true});
  141. return false;
  142. }
  143. }
  144. }
  145. else {
  146. var user = l._active_user._attributes._object;
  147. l.activeDialogue().displayUnsanitizedMessage("Username", "<img src=\""+user.avatar_url+"\"></img><a href=\"http://www.kongregate.com/accounts/" + user.username+"\" target=\"_blank\">"+ user.username+"</a>", {"class":"whisper received_whisper"}, {non_user: true});
  148. l.activeDialogue().displayUnsanitizedMessage("Age", user.age, {"class":"whisper received_whisper"}, {non_user: true});
  149. l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user.admin+"/"+user.moderator+"/"+user.developer+"/"+user.premium, {"class":"whisper received_whisper"}, {non_user: true});
  150. l.activeDialogue().displayUnsanitizedMessage("ID", user.id, {"class":"whisper received_whisper"}, {non_user: true});
  151. l.activeDialogue().displayUnsanitizedMessage("Level", user.level, {"class":"whisper received_whisper"}, {non_user: true});
  152. l.activeDialogue().displayUnsanitizedMessage("Points for Next Level", user.points_away, {"class":"whisper received_whisper"}, {non_user: true});
  153. l.activeDialogue().displayUnsanitizedMessage("Total Points", user.points, {"class":"whisper received_whisper"}, {non_user: true});
  154. l.activeDialogue().displayUnsanitizedMessage("Last Level Up", user.last_levelup_at, {"class":"whisper received_whisper"}, {non_user: true});
  155. l.activeDialogue().displayUnsanitizedMessage("Kreds", user.kreds_balance, {"class":"whisper received_whisper"}, {non_user: true});
  156. l.activeDialogue().displayUnsanitizedMessage("Gameplays", user.gameplays_count, {"class":"whisper received_whisper"}, {non_user: true});
  157. l.activeDialogue().displayUnsanitizedMessage("Game Ratings", user.ratings_count, {"class":"whisper received_whisper"}, {non_user: true});
  158. l.activeDialogue().displayUnsanitizedMessage("BOTD Earned This Week", user.botds_this_week, {"class":"whisper received_whisper"}, {non_user: true});
  159. l.activeDialogue().displayUnsanitizedMessage("Name/Email", user.sender_name_or_email, {"class":"whisper received_whisper"}, {non_user: true});
  160. return false;
  161. }
  162. });
  163.  
  164. holodeck.addChatCommand("info", function(l,n){
  165. var info = l._chat_window._active_room;
  166. var room = info._room;
  167. l.activeDialogue().displayUnsanitizedMessage("Room Name", room.name, {"class":"whisper received_whisper"}, {non_user: true});
  168. l.activeDialogue().displayUnsanitizedMessage("Room ID", room.id, {"class":"whisper received_whisper"}, {non_user: true});
  169. l.activeDialogue().displayUnsanitizedMessage("Room Owner", "<a href=\"http://www.kongregate.com/accounts/" + room.owner + "\" target=\"_blank\">" + room.owner + "</a>", {"class":"whisper received_whisper"}, {non_user: true});
  170. l.activeDialogue().displayUnsanitizedMessage("Room Type", room.type, {"class":"whisper received_whisper"}, {non_user: true});
  171. l.activeDialogue().displayUnsanitizedMessage("Favorite Room", info._favorite_room, {"class":"whisper received_whisper"}, {non_user: true});
  172. l.activeDialogue().displayUnsanitizedMessage("Users In Room", info._number_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true});
  173. l.activeDialogue().displayUnsanitizedMessage("Guests In Room", info._guests_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true});
  174. return false;
  175. });
  176.  
  177. holodeck.addChatCommand("botd", function(l,n){
  178. var kbotd = l._active_user._attributes._object;
  179. var typeOf = "(easy)";
  180. if (kbotd.botd_reward_points == 5){//Do nothing
  181. }
  182. else if (kbotd.botd_reward_points == 15) {typeOf = "(medium)";}
  183. else if (kbotd.botd_reward_points == 30){typeOf = "(hard)";}
  184. else if (kbotd.botd_reward_points == 60){typeOf = "(impossible)";}
  185. else {typeOf = "Points: " + kbotd.botd_reward_points;} //Just in case
  186. l.activeDialogue().displayUnsanitizedMessage("BOTD", "<img src=\""+kbotd.botd_icon_uri+"\"></img>" + "<a href=\"" + kbotd.botd_game_uri + "\" target=\"_blank\">" + kbotd.botd_game_name + " - " + kbotd.botd_description + "</a> " + typeOf, {"class":"whisper received_whisper"}, {non_user: true});
  187. return false;
  188. });
  189.  
  190. holodeck.addChatCommand("friends", function(l,n){
  191. var kongfriends = l._chat_window._friends;
  192. var final = [];
  193. for(var friend in kongfriends)
  194. {
  195. final.push("<a href=\"http://www.kongregate.com/accounts/" + friend + "\" target=\"_blank\">" + friend + "</a>");
  196. }
  197. l.activeDialogue().displayUnsanitizedMessage("Friends", final.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  198. return false;
  199. });
  200.  
  201. holodeck.addChatCommand("online", function(l,n){
  202. var online = document.getElementsByClassName("chat_actions_list")[0].childNodes[5];
  203. online.click();
  204. return false;
  205. });
  206.  
  207. holodeck.addChatCommand("exit", function(l,n){
  208. close();
  209. return false;
  210. });
  211.  
  212. holodeck.addChatCommand("open", function(l,n){
  213. var z = n.match(/^\/\S+\s+(.+)/);
  214. if (z[1]) {
  215. m = z[1].split(" ");
  216. if (m[0] == "accounts"){
  217. if (m[1]){
  218. open("http://www.kongregate.com/accounts/" + m[1], "_blank");
  219. }
  220. else{
  221. open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username);
  222. }
  223. }
  224. else if (m[0] == "games"){
  225. if (m[1]) {
  226. if (m[2]){
  227. open("http://www.kongregate.com/games/" + m[1] + "/" + m[2], "_blank");
  228. }
  229. else{
  230. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game", {"class":"whisper received_whisper"}, {non_user: true});
  231. }
  232. }
  233. else{
  234. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game creator", {"class":"whisper received_whisper"}, {non_user: true});
  235. }
  236. }
  237. else {
  238. open("http://www.kongregate.com/search?q=" + z[1], "_blank");
  239. }
  240. }
  241. else {
  242. open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username);
  243. }
  244. return false;
  245. });
  246. holodeck.addChatCommand("help", function(l,n){
  247. open("http://www.kongregate.com/pages/help", "_blank");
  248. return false;
  249. });
  250.  
  251. holodeck._chat_commands.close = holodeck._chat_commands.exit;
  252. holodeck._chat_commands.roominfo = holodeck._chat_commands.info;
  253. holodeck._chat_commands.friendsonline = holodeck._chat_commands.online;
  254. holodeck._chat_commands.u = holodeck._chat_commands.me = holodeck._chat_commands.user;
  255. holodeck._chat_commands.admins = holodeck._chat_commands.administrator = holodeck._chat_commands.administrators = holodeck._chat_commands.admin;
  256. holodeck._chat_commands.dev = holodeck._chat_commands.devs = holodeck._chat_commands.developers = holodeck._chat_commands.developer;
  257. holodeck._chat_commands.hlvl = holodeck._chat_commands.highlevel = holodeck._chat_commands.hlevel = holodeck._chat_commands.highlvl;
  258. holodeck._chat_commands.llvl = holodeck._chat_commands.lowlevel = holodeck._chat_commands.llevel = holodeck._chat_commands.lowlvl;
  259. holodeck._chat_commands.mp = holodeck._chat_commands.getmp = holodeck._chat_commands.mostplayed;
  260. }
  261.  
  262. function check(){
  263. var injectScript = dom.injectScript||(document.getElementById("injectScriptDiv")?document.getElementById("injectScriptDiv").onclick():0);
  264. if(injectScript){
  265. injectScript(init_strongKong, 0);
  266. } else if(!dom._promptedFramework && !/Chrome/i.test(navigator.appVersion)){
  267. if(confirm("You don't have the latest version of the framework-script!\n" +
  268. "Please install it, otherwise Strong Kong script won't work.\n" +
  269. "Clicking ok will open a new tab where you can install the script"))
  270. window.open("http://userscripts-mirror.org/scripts/show/54245", "_blank");
  271. dom._promptedFramework = true;
  272. }
  273. }
  274.  
  275. setTimeout(check, 0);