Kongquer

Adds a number of commands to Kongregate chat

  1. // ==UserScript==
  2. // @name Kongquer
  3. // @namespace http://alphaoverall.com
  4. // @version 1.25
  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. // Kongquer
  12. // http://alphaoverall.com
  13. // by AlphaOverall (http://www.kongregate.com/accounts/AlphaOverall)
  14. // Inspired by Kongregate Get (http://userscripts-mirror.org/scripts/review/56432)
  15. //==========
  16.  
  17. var dom = (typeof unsafeWindow === "undefined"?window:unsafeWindow);
  18.  
  19. function init_kongquer(){
  20. function makeLink(user){
  21. return '<a href="#" onclick="holodeck.showMiniProfile(\'' + user + '\'); return false;">' + user + '</a>';
  22. }
  23. var holodeck = dom.holodeck;
  24. ChatDialogue = dom.ChatDialogue;
  25. //
  26. //Test command so you don't look stupid if script doesn't load
  27. //
  28. holodeck.addChatCommand("test", function(l,n){
  29. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Script is active! Have fun...", {"class":"whisper received_whisper"}, {non_user: true});
  30. return false;
  31. });
  32. //
  33. //From original Kongregate Get script (http://userscripts-mirror.org/scripts/review/56432)
  34. //
  35. holodeck.addChatCommand("avg", function(l,n){
  36. var roomDetails = l.chatWindow().activeRoom();
  37. var allUsers = roomDetails.users();
  38. var allLevels = 0;
  39. for(var i=0; i < allUsers.length; i++){
  40. allLevels += allUsers[i]._level;
  41. }
  42. var avgLevel = Math.round(allLevels/allUsers.length*10)/10;
  43. l.activeDialogue().displayUnsanitizedMessage("Average Level in Room", avgLevel , {"class":"whisper received_whisper"}, {non_user: true});
  44. return false;
  45. });
  46. if(holodeck && ChatDialogue && !holodeck._chat_commands.mostplayed) {
  47. //Credit goes entirely to Ventero for this command. Thanks for fixing the command after the Kongregate update, Vent :)
  48. holodeck.addChatCommand("mostplayed", function(l,n){
  49. var matchArr = n.match(/\/\S+\s+(\d+)/),
  50. dialog = l.activeDialogue(),
  51. gamesCount = 5,
  52. userList = dom.$A(l.chatWindow().activeRoom().users()),
  53. usersCount = userList.length;
  54. if(matchArr && matchArr[1]) gamesCount = matchArr[1];
  55. function p(count){
  56. return count == 1?"":"s";
  57. }
  58. var games = dom.$H();
  59. userList.each(function(user){
  60. console.log(user);
  61. var o = user._game_url;
  62. if(!games.get(o)){
  63. games.set(o, {
  64. title: user._game_title,
  65. count: 0,
  66. user: "",
  67. url: o
  68. });
  69. }
  70. games.get(o).count++;
  71. games.get(o).user = user.username;
  72. });
  73.  
  74. var countArr = games.values().sort(function(a,b){
  75. return +b.count - +a.count;
  76. }).slice(0, gamesCount);
  77. var totalCount = games.size();
  78.  
  79. dialog.displayUnsanitizedMessage("Kong Bot", usersCount+" user"+p(usersCount)+" playing "+totalCount+" different game" + p(totalCount), {"class":"whisper received_whisper"}, {non_user: true});
  80. dialog.displayUnsanitizedMessage("Kong Bot", gamesCount + " most played game" + p(gamesCount) + ":", {"class":"whisper received_whisper"}, {non_user: true});
  81. countArr.each(function(obj){
  82. dialog.displayUnsanitizedMessage("Kong Bot",
  83. obj.count + " user" + p(obj.count) + " (" +
  84. (obj.count > 1 ? "" : makeLink(obj.user) + ", ") +
  85. (100*obj.count/usersCount).toFixed(1) + "%) " +
  86. (obj.count > 1 ? "are" : "is") + ' playing <a href="' +
  87. obj.url + '">' + obj.title + "</a>", {"class":"whisper received_whisper"}, {non_user: true});
  88. });
  89. return false;
  90. });
  91. holodeck._chat_commands.mp = holodeck._chat_commands.getmp = holodeck._chat_commands.mostplayed;
  92. }
  93. //
  94. //Rest by AlphaOverall
  95. //
  96. holodeck.addChatCommand("highlvl", function(l,n){
  97. var roomDetails = l.chatWindow().activeRoom();
  98. var allUsers = roomDetails.users();
  99. var highLevels = "";
  100. var highestLevel = 0;
  101. var count = 0;
  102. for(var i=0; i < allUsers.length; i++){
  103. if (allUsers[i]._level > highestLevel){
  104. highestLevel = allUsers[i]._level;
  105. highLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  106. count = 1;
  107. }
  108. else if (allUsers[i]._level == highestLevel){
  109. highLevels = highLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  110. count+=1;
  111. }
  112. }
  113. l.activeDialogue().displayUnsanitizedMessage("Highest Level in Room", highestLevel + ", Usercount: " + count + ", Users: " + highLevels, {"class":"whisper received_whisper"}, {non_user: true});
  114. return false;
  115. });
  116.  
  117. holodeck.addChatCommand("lowlvl", function(l,n){
  118. var roomDetails = l.chatWindow().activeRoom();
  119. var allUsers = roomDetails.users();
  120. var lowLevels = "";
  121. var lowestLevel = Infinity; //Just to makes sure :P
  122. var count = 0;
  123. for(var i=0; i < allUsers.length; i++){
  124. if (allUsers[i]._level < lowestLevel){
  125. lowestLevel = allUsers[i]._level;
  126. lowLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  127. count = 1;
  128. }
  129. else if (allUsers[i]._level == lowestLevel){
  130. count+=1;
  131. lowLevels = lowLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  132. }
  133. }
  134. l.activeDialogue().displayUnsanitizedMessage("Lowest Level in Room", lowestLevel + ", Usercount: " + count + ", Users: " + lowLevels, {"class":"whisper received_whisper"}, {non_user: true});
  135. return false;
  136. });
  137.  
  138. holodeck.addChatCommand("list", function(l,n){
  139. var roomDetails = l.chatWindow().activeRoom();
  140. var allUsers = roomDetails.users();
  141. var userList = "";
  142. var word = n.match(/^\/\S+\s+(.+)/);
  143. var count = 0;
  144. if (word){
  145. var toFind = word[1];
  146. for(var i=0; i < allUsers.length; i++){
  147. if (allUsers[i].username.toLowerCase().includes(toFind.toLowerCase())){
  148. if (userList == ""){
  149. userList = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  150. count = 1;
  151. }
  152. else{
  153. count+=1;
  154. userList = userList + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  155. }
  156. }
  157. }
  158. l.activeDialogue().displayUnsanitizedMessage("Usernames Containing " + word[1], "Usercount: " + count + ", Users: " + userList, {"class":"whisper received_whisper"}, {non_user: true});
  159. }
  160. else{
  161. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Please use this command like " + n + " cat", {"class":"whisper received_whisper"}, {non_user: true});
  162. }
  163. return false;
  164. });
  165. holodeck.addChatCommand("levels", function(l,n){
  166. var z = n.match(/^\/\S+\s+(.+)/);
  167. var roomDetails = l.chatWindow().activeRoom();
  168. var allUsers = roomDetails.users();
  169. if (z){
  170. var userLevels = "";
  171. var levelCount = [];
  172. var displaymessage = "";
  173. if (z[1].includes("-")){
  174. var inbetween = z[1].split("-");
  175. console.log(inbetween[0]);
  176. console.log(inbetween[1]);
  177. if (inbetween[0] < inbetween[1]){
  178. for (var a=inbetween[0]; a <= inbetween[1]; a++){
  179. levelCount.push(a);
  180. }
  181. }
  182. else{
  183. for (var a=inbetween[1]; a <= inbetween[0]; a++){
  184. levelCount.push(a);
  185. }
  186. }
  187. displaymessage = z[1];
  188. }
  189. else{
  190. var levelCount = z[1].split(" ");
  191. displaymessage = levelCount.join(", ");
  192. }
  193. console.log(levelCount);
  194. var count = 0;
  195. for (var b=0; b <= levelCount.length; b++){
  196. for(var i=0; i < allUsers.length; i++){
  197. if (allUsers[i]._level == levelCount[b] && userLevels == ""){
  198. userLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  199. count = 1;
  200. }
  201. else if (allUsers[i]._level == levelCount[b]){
  202. count+=1;
  203. userLevels = userLevels + ", <img src=\"" + allUsers[i]._chat_avatar_url + "\">" + makeLink(allUsers[i].username);
  204. }
  205. }
  206. }
  207. l.activeDialogue().displayUnsanitizedMessage("Level " + displaymessage, "Usercount: " + count + ", Users: " + userLevels, {"class":"whisper received_whisper"}, {non_user: true});
  208. return false;
  209. }
  210. else{
  211. var levelsList = [l._active_user._attributes._object.level];
  212. for(var j=0; j < allUsers.length; j++){
  213. for (var k=0; k <= allUsers[j]._level; k++){
  214. if (allUsers[j]._level == k){
  215. if (levelsList.indexOf(k) < 0){
  216. levelsList.push(k);
  217. }
  218. }
  219. }
  220. }
  221. levelsList.sort(function(a, b){return a-b});
  222. l.activeDialogue().displayUnsanitizedMessage("Levels", levelsList.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  223. return false;
  224. }
  225. });
  226. holodeck.addChatCommand("developer", function(l,n){
  227. var roomDetails = l.chatWindow().activeRoom();
  228. var allUsers = roomDetails.users();
  229. var devs = [];
  230. for(var i=0; i < allUsers.length; i++){
  231. if (allUsers[i]._developer){
  232. devs.push(makeLink(allUsers[i].username));
  233. }
  234. }
  235. l.activeDialogue().displayUnsanitizedMessage("Developers in room", devs.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  236. return false;
  237. });
  238.  
  239. holodeck.addChatCommand("admin", function(l,n){
  240. var roomDetails = l.chatWindow().activeRoom();
  241. var allUsers = roomDetails.users();
  242. var admins = [];
  243. for(var i=0; i < allUsers.length; i++){
  244. if (allUsers[i]._admin){
  245. admins.push(makeLink(allUsers[i].username));
  246. }
  247. }
  248. l.activeDialogue().displayUnsanitizedMessage("Admins in room", admins.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  249. return false;
  250. });
  251. holodeck.addChatCommand("moderator", function(l,n){
  252. var roomDetails = l.chatWindow().activeRoom();
  253. var allUsers = roomDetails.users();
  254. var mods = [];
  255. for(var i=0; i < allUsers.length; i++){
  256. if (allUsers[i]._moderator_room_ids.length > 0 || allUsers[i]._moderator_game_ids.length > 0){
  257. mods.push(allUsers[i].username);
  258. }
  259. }
  260. l.activeDialogue().displayUnsanitizedMessage("Mods in room", mods.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  261. return false;
  262. });
  263. //Simple commands that will show up in user info also
  264. holodeck.addChatCommand("id", function(l,n){
  265. var user = l._active_user._attributes._object;
  266. l.activeDialogue().displayUnsanitizedMessage("ID", user.id, {"class":"whisper received_whisper"}, {non_user: true});
  267. return false;
  268. });
  269. holodeck.addChatCommand("username", function(l,n){
  270. var user = l._active_user._attributes._object;
  271. l.activeDialogue().displayUnsanitizedMessage("Username", makeLink(user.username), {"class":"whisper received_whisper"}, {non_user: true});
  272. return false;
  273. });
  274. holodeck.addChatCommand("kreds", function(l,n){
  275. var user = l._active_user._attributes._object;
  276. l.activeDialogue().displayUnsanitizedMessage("Kreds", user.kreds_balance, {"class":"whisper received_whisper"}, {non_user: true});
  277. return false;
  278. });
  279. holodeck.addChatCommand("level", function(l,n){
  280. var user = l._active_user._attributes._object;
  281. l.activeDialogue().displayUnsanitizedMessage("Level", user.level, {"class":"whisper received_whisper"}, {non_user: true});
  282. return false;
  283. });
  284. holodeck.addChatCommand("age", function(l,n){
  285. var user = l._active_user._attributes._object;
  286. l.activeDialogue().displayUnsanitizedMessage("Age", user.age, {"class":"whisper received_whisper"}, {non_user: true});
  287. return false;
  288. });
  289. holodeck.addChatCommand("email", function(l,n){
  290. var user = l._active_user._attributes._object;
  291. l.activeDialogue().displayUnsanitizedMessage("Name/Email", user.sender_name_or_email, {"class":"whisper received_whisper"}, {non_user: true});
  292. return false;
  293. });
  294. holodeck.addChatCommand("user", function(l,n){
  295. var z = n.match(/^\/\S+\s+(.+)/);
  296. if (z){
  297. var roomDetails = l.chatWindow().activeRoom();
  298. var allUsers = roomDetails.users();
  299. for(var i=0; i < allUsers.length; i++){
  300. if (i == allUsers.length-1 && allUsers[i].username != z[1]){
  301. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "User not in chat... Opening mini profile", {"class":"whisper received_whisper"}, {non_user: true});
  302. holodeck.showMiniProfile(z[1]);
  303. return false;
  304. }
  305. if (allUsers[i].username == z[1]){
  306. var user = allUsers[i];
  307. l.activeDialogue().displayUnsanitizedMessage("Username", "<img src=\""+user._chat_avatar_url+"\"></img>" + makeLink(user.username), {"class":"whisper received_whisper"}, {non_user: true});
  308. l.activeDialogue().displayUnsanitizedMessage("Level", user._level, {"class":"whisper received_whisper"}, {non_user: true});
  309. if (user._moderator_room_ids.length == 0 && user._moderator_game_ids.length == 0){
  310. l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/false/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true});
  311. }
  312. else{
  313. l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/true/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true});
  314. if (!user._admin) {
  315. l.activeDialogue().displayUnsanitizedMessage("Moderator Game Ids", user._moderator_game_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  316. l.activeDialogue().displayUnsanitizedMessage("Moderator Room Ids", user._moderator_room_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  317. }
  318. }
  319. 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});
  320. l.activeDialogue().displayUnsanitizedMessage("Presence", user._presence, {"class":"whisper received_whisper"}, {non_user: true});
  321. l.activeDialogue().displayUnsanitizedMessage("Role", user._role, {"class":"whisper received_whisper"}, {non_user: true});
  322. return false;
  323. }
  324. }
  325. }
  326. else {
  327. var user = l._active_user._attributes._object;
  328. l.activeDialogue().displayUnsanitizedMessage("Username", "<img src=\""+user.avatar_url+"\">" + makeLink(user.username), {"class":"whisper received_whisper"}, {non_user: true});
  329. l.activeDialogue().displayUnsanitizedMessage("Age", user.age, {"class":"whisper received_whisper"}, {non_user: true});
  330. l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user.admin+"/"+user.moderator+"/"+user.developer+"/"+user.premium, {"class":"whisper received_whisper"}, {non_user: true});
  331. l.activeDialogue().displayUnsanitizedMessage("ID", user.id, {"class":"whisper received_whisper"}, {non_user: true});
  332. l.activeDialogue().displayUnsanitizedMessage("Level", user.level, {"class":"whisper received_whisper"}, {non_user: true});
  333. l.activeDialogue().displayUnsanitizedMessage("Points for Next Level", user.points_away, {"class":"whisper received_whisper"}, {non_user: true});
  334. l.activeDialogue().displayUnsanitizedMessage("Total Points", user.points, {"class":"whisper received_whisper"}, {non_user: true});
  335. l.activeDialogue().displayUnsanitizedMessage("Last Level Up", user.last_levelup_at, {"class":"whisper received_whisper"}, {non_user: true});
  336. l.activeDialogue().displayUnsanitizedMessage("Kreds", user.kreds_balance, {"class":"whisper received_whisper"}, {non_user: true});
  337. l.activeDialogue().displayUnsanitizedMessage("Gameplays", user.gameplays_count, {"class":"whisper received_whisper"}, {non_user: true});
  338. l.activeDialogue().displayUnsanitizedMessage("Game Ratings", user.ratings_count, {"class":"whisper received_whisper"}, {non_user: true});
  339. l.activeDialogue().displayUnsanitizedMessage("BOTD Earned This Week", user.botds_this_week, {"class":"whisper received_whisper"}, {non_user: true});
  340. l.activeDialogue().displayUnsanitizedMessage("Name/Email", user.sender_name_or_email, {"class":"whisper received_whisper"}, {non_user: true});
  341. return false;
  342. }
  343. });
  344.  
  345. holodeck.addChatCommand("available", function(l,n){
  346. var z = n.match(/^\/\S+\s+(.+)/);
  347. if (z){
  348. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Availability of " + z[1] + ":<iframe src=\"httP://www.kongregate.com/accounts/availability?username=" + z[1] + "\" width=\"100%\" height=\"30\"></iframe>", {"class":"whisper received_whisper"}, {non_user: true});
  349. }
  350. return false;
  351. });
  352. holodeck.addChatCommand("info", function(l,n){
  353. var info = l._chat_window._active_room;
  354. var room = info._room;
  355. l.activeDialogue().displayUnsanitizedMessage("Room Name", room.name, {"class":"whisper received_whisper"}, {non_user: true});
  356. l.activeDialogue().displayUnsanitizedMessage("Room ID", room.id, {"class":"whisper received_whisper"}, {non_user: true});
  357. 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});
  358. l.activeDialogue().displayUnsanitizedMessage("Room Type", room.type, {"class":"whisper received_whisper"}, {non_user: true});
  359. l.activeDialogue().displayUnsanitizedMessage("Favorite Room", info._favorite_room, {"class":"whisper received_whisper"}, {non_user: true});
  360. l.activeDialogue().displayUnsanitizedMessage("Users In Room", info._number_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true});
  361. l.activeDialogue().displayUnsanitizedMessage("Guests In Room", info._guests_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true});
  362. return false;
  363. });
  364.  
  365. holodeck.addChatCommand("botd", function(l,n){
  366. var kbotd = l._active_user._attributes._object;
  367. var typeOf = "(easy)";
  368. if (kbotd.botd_reward_points == 5){//Do nothing
  369. }
  370. else if (kbotd.botd_reward_points == 15) {typeOf = "(medium)";}
  371. else if (kbotd.botd_reward_points == 30){typeOf = "(hard)";}
  372. else if (kbotd.botd_reward_points == 60){typeOf = "(impossible)";}
  373. else {typeOf = "Points: " + kbotd.botd_reward_points;} //Just in case
  374. 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});
  375. return false;
  376. });
  377.  
  378. holodeck.addChatCommand("friends", function(l,n){
  379. var kongfriends = l._chat_window._friends;
  380. var final = [];
  381. for(var friend in kongfriends){
  382. final.push("<a href=\"http://www.kongregate.com/accounts/" + friend + "\" target=\"_blank\">" + friend + "</a>");
  383. }
  384. l.activeDialogue().displayUnsanitizedMessage("Friends", final.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
  385. return false;
  386. });
  387.  
  388. holodeck.addChatCommand("online", function(l,n){
  389. var online = document.getElementsByClassName("chat_actions_list")[0].childNodes[5];
  390. online.click();
  391. return false;
  392. });
  393.  
  394. holodeck.addChatCommand("exit", function(l,n){
  395. close();
  396. return false;
  397. });
  398.  
  399. holodeck.addChatCommand("open", function(l,n){
  400. var z = n.match(/^\/\S+\s+(.+)/);
  401. if (z[1]) {
  402. m = z[1].split(" ");
  403. if (m[0] == "accounts"){
  404. if (m[1]){
  405. open("http://www.kongregate.com/accounts/" + m[1], "_blank");
  406. }
  407. else{
  408. open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username);
  409. }
  410. }
  411. else if (m[0] == "games"){
  412. if (m[1]) {
  413. if (m[2]){
  414. open("http://www.kongregate.com/games/" + m[1] + "/" + m[2], "_blank");
  415. }
  416. else{
  417. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game", {"class":"whisper received_whisper"}, {non_user: true});
  418. }
  419. }
  420. else{
  421. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game creator", {"class":"whisper received_whisper"}, {non_user: true});
  422. }
  423. }
  424. else {
  425. open("http://www.kongregate.com/search?q=" + z[1], "_blank");
  426. }
  427. }
  428. else {
  429. open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username);
  430. }
  431. return false;
  432. });
  433.  
  434. holodeck.addChatCommand("khelp", function(l,n){
  435. open("http://www.kongregate.com/pages/help", "_blank");
  436. return false;
  437. });
  438. holodeck.addChatCommand("kong", function(l,n){
  439. open("http://www.kongregate.com", "_blank");
  440. return false;
  441. });
  442. holodeck.addChatCommand("help", function(l,n){
  443. open("http://www.alphaoverall.com", "_blank");
  444. return false;
  445. });
  446. holodeck.addChatCommand("signup", function(l,n){
  447. lightbox.prototype.initializeKongregateLightboxFromAjax('/accounts/new/behind_login?game_id=' + active_user.gameId(), { afterStaticContentLoad:lightbox.prototype.toggleRegistration });
  448. return false;
  449. });
  450. holodeck.addChatCommand("login", function(l,n){
  451. active_user.activateInlineLogin();
  452. return false;
  453. });
  454. holodeck.addChatCommand("signout", function(l,n){
  455. signoutFromSite();
  456. return false;
  457. });
  458. holodeck.addChatCommand("google", function(l,n){
  459. var z = n.match(/^\/\S+\s+(.+)/);
  460. if (z) {
  461. open("https://www.google.com/search?q=" + z[1], "_blank");
  462. }
  463. else {
  464. open("https://www.google.com", "_blank");
  465. }
  466. return false;
  467. });
  468. holodeck.addChatCommand("bing", function(l,n){
  469. var z = n.match(/^\/\S+\s+(.+)/);
  470. if (z) {
  471. open("https://www.bing.com/search?q=" + z[1], "_blank");
  472. }
  473. else {
  474. open("https://www.bing.com", "_blank");
  475. }
  476. return false;
  477. });
  478. holodeck.addChatCommand("yahoo", function(l,n){
  479. var z = n.match(/^\/\S+\s+(.+)/);
  480. if (z) {
  481. open("https://search.yahoo.com/search;_ylt=Aq7xBwaF.DQZx151DcVK87ybvZx4?p=" + z[1], "_blank");
  482. }
  483. else {
  484. open("https://www.yahoo.com", "_blank");
  485. }
  486. return false;
  487. });
  488. holodeck.addChatCommand("url", function(l,n){
  489. var z = n.match(/^\/\S+\s+(.+)/);
  490. if (z) {
  491. if (!z[1].includes("http://") && !z[1].includes("https://")){
  492. open("http://"+z[1], "_blank");
  493. }
  494. else {
  495. open(z[1], "_blank");
  496. }
  497. }
  498. else {
  499. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Please use command like " + n + " https://www.google.com", {"class":"whisper received_whisper"}, {non_user: true});
  500. }
  501. return false;
  502. });
  503. holodeck.addChatCommand("calculator", function(l,n){
  504. var z = n.match(/^\/\S+\s+(.+)/);
  505. var output = "Nothing happened";
  506. if (z) {
  507. /*jshint multistr: true */
  508. if (z[1] == "help"){
  509. l.activeDialogue().displayUnsanitizedMessage("Math Commands", "+,-,*,<br>Math.abs(a) = absolute value of a<br>Math.acos(a) = arc cosine of a<br>\
  510. Math.asin(a) = arc sine of a<br>Math.atan(a) = arc tangent of a<br>Math.atan2(a,b) = arc tangent of a/b<br>Math.ceil(a) = integer closest to a and not less than a<br>\
  511. Math.cos(a) = cosine of a<br>Math.exp(a) = exponent of a (Math.E to the power a)<br>Math.floor(a) = integer closest to a, not greater than a<br>Math.log(a) = log of a base e<br>\
  512. Math.max(a,b) = the maximum of a and b<br>Math.min(a,b) = the minimum of a and b<br>Math.pow(a,b) = a to the power b<br>Math.random() = pseudorandom number 0 to 1<br>\
  513. Math.round(a) = integer closest to a <br> Math.sin(a) = sine of a<br>Math.sqrt(a) = square root of a<br>Math.tan(a) = tangent of a", {"class":"whisper received_whisper"}, {non_user: true});
  514. }
  515. else{
  516. try {
  517. output = eval(z[1]); //I know, I know, eval is evil
  518. l.activeDialogue().displayUnsanitizedMessage("Calculation", z[1] + " = " + output, {"class":"whisper received_whisper"}, {non_user: true});
  519. }
  520. catch (err){
  521. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", err, {"class":"whisper received_whisper"}, {non_user: true});
  522. }
  523. }
  524. }
  525. else {
  526. l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "Please use command like " + n + " 4+3-8*9/3^.5", {"class":"whisper received_whisper"}, {non_user: true});
  527. }
  528. console.log(output);
  529. return false;
  530. });
  531. holodeck.addChatCommand("youtube", function(l,n){
  532. var z = n.match(/^\/\S+\s+(.+)/);
  533. if (z) {
  534. var m = z[1].split(" ");
  535. if (m[0] == "embed"){
  536. var chatWindow = document.getElementsByClassName("chat_message_window");
  537. var chatWin;
  538. if (chatWindow[2] != undefined && chatWindow[2].offsetHeight > chatWindow[1].offsetHeight){
  539. chatWin = chatWindow[2];
  540. }
  541. else {
  542. chatWin = chatWindow[1];
  543. }
  544. var h = chatWin.offsetHeight;
  545. if (chatWin.offsetWidth > chatWin.offsetHeight) {
  546. h = chatWin.offsetHeight;
  547. }
  548. else{
  549. h = chatWin.offsetWidth*9/16; //YouTube 16:9 aspect ratio
  550. }
  551. if (m[1].includes("youtu.be/")){
  552. l.activeDialogue().displayUnsanitizedMessage("YouTube", "<iframe src=\"https://www.youtube.com/embed/" + m[1].split("youtu.be/")[1] + "\" width=\"100%\" height=\"" + h +"\"></iframe>", {"class":"whisper received_whisper"}, {non_user: true});
  553. }
  554. else if (m[1].includes("youtube.com/watch?v=")){
  555. l.activeDialogue().displayUnsanitizedMessage("YouTube", "<iframe src=\"https://www.youtube.com/embed/" + m[1].split("youtube.com/watch?v=")[1] + "\" width=\"100%\" height=\"" + h + "\"></iframe>", {"class":"whisper received_whisper"}, {non_user: true});
  556. }
  557. else{
  558. l.activeDialogue().displayUnsanitizedMessage("YouTube", "Invalid YouTube video url", {"class":"whisper received_whisper"}, {non_user: true});
  559. }
  560. }
  561. else {
  562. open("https://www.youtube.com/results?search_query=" + z[1], "_blank");
  563. }
  564. }
  565. else {
  566. open("https://www.youtube.com", "_blank");
  567. }
  568. return false;
  569. });
  570. holodeck.addChatCommand("mp3", function(l,n){
  571. var z = n.match(/^\/\S+\s+(.+)/);
  572. if (z) {
  573. l.activeDialogue().displayUnsanitizedMessage("MP3 Container", "<audio src=\"" + z[1] + "\" controls><embed src=\"" + z[1] + "\" width=\"100%\" height=\"90\" loop=\"false\" autostart=\"true\"/>" +
  574. "</audio>", {"class":"whisper received_whisper"}, {non_user: true});
  575. }
  576. else {
  577. l.activeDialogue().displayUnsanitizedMessage("MP3 Container", "Invalid mp3 url", {"class":"whisper received_whisper"}, {non_user: true});
  578. }
  579. return false;
  580. });
  581. holodeck.addChatCommand("time", function(l,n){
  582. var today = new Date();
  583. var format = today.getDate() + "/" + (today.getMonth()+1) + "/" + today.getFullYear() + ", " + today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
  584. l.activeDialogue().displayUnsanitizedMessage("Date/Time", format, {"class":"whisper received_whisper"}, {non_user: true});
  585. return false;
  586. });
  587. holodeck.addChatCommand("reload", function(l,n){
  588. location.reload();
  589. return false;
  590. });
  591. holodeck.addChatCommand("clear", function(l,n){
  592. holodeck._active_dialogue.clear();
  593. return false;
  594. });
  595. holodeck._chat_commands.lol = holodeck._chat_commands.hi = holodeck._chat_commands.hmm = holodeck._chat_commands.test;
  596. holodeck._chat_commands.userlist = holodeck._chat_commands.username = holodeck._chat_commands.list;
  597. holodeck._chat_commands.date = holodeck._chat_commands.datetime = holodeck._chat_commands.now = holodeck._chat_commands.time;
  598. holodeck._chat_commands.math = holodeck._chat_commands.calc = holodeck._chat_commands.calculator;
  599. holodeck._chat_commands.goto = holodeck._chat_commands.http = holodeck._chat_commands.www = holodeck._chat_commands.url;
  600. holodeck._chat_commands.lvl = holodeck._chat_commands.level;
  601. holodeck._chat_commands.konghelp = holodeck._chat_commands.kongregatehelp = holodeck._chat_commands.khelp;
  602. holodeck._chat_commands.kongregate = holodeck._chat_commands.kong;
  603. holodeck._chat_commands.avglvl = holodeck._chat_commands.alvl = holodeck._chat_commands.avg;
  604. holodeck._chat_commands.close = holodeck._chat_commands.exit;
  605. holodeck._chat_commands.roominfo = holodeck._chat_commands.info;
  606. holodeck._chat_commands.friendsonline = holodeck._chat_commands.online;
  607. holodeck._chat_commands.u = holodeck._chat_commands.me = holodeck._chat_commands.user;
  608. holodeck._chat_commands.admins = holodeck._chat_commands.administrator = holodeck._chat_commands.administrators = holodeck._chat_commands.admin;
  609. holodeck._chat_commands.dev = holodeck._chat_commands.devs = holodeck._chat_commands.developers = holodeck._chat_commands.developer;
  610. holodeck._chat_commands.mod = holodeck._chat_commands.mods = holodeck._chat_commands.moderators = holodeck._chat_commands.moderator;
  611. holodeck._chat_commands.hlvl = holodeck._chat_commands.highlevel = holodeck._chat_commands.hlevel = holodeck._chat_commands.highlvl;
  612. holodeck._chat_commands.llvl = holodeck._chat_commands.lowlevel = holodeck._chat_commands.llevel = holodeck._chat_commands.lowlvl;
  613. holodeck._chat_commands.mp = holodeck._chat_commands.getmp = holodeck._chat_commands.mostplayed;
  614. }
  615.  
  616. function check(){
  617. var injectScript = dom.injectScript||(document.getElementById("injectScriptDiv")?document.getElementById("injectScriptDiv").onclick():0);
  618. if(injectScript){
  619. injectScript(init_kongquer, 0);
  620. }
  621. else if(!dom._promptedFramework && !/Chrome/i.test(navigator.appVersion)){
  622. if(confirm("You don't have the latest version of the framework-script!\n" +
  623. "Please install it, otherwise the King Kongregate script won't work.\n" +
  624. "Clicking ok will open a new tab where you can install the script"))
  625. window.open("http://userscripts-mirror.org/scripts/show/54245", "_blank");
  626. dom._promptedFramework = true;
  627. }
  628. }
  629.  
  630. setTimeout(check, 0);