Strong Kong

Adds a number of commands to Kongregate chat

اعتبارا من 16-05-2015. شاهد أحدث إصدار.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل Stylus لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتتمكن من تثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

(لدي بالفعل مثبت أنماط للمستخدم، دعني أقم بتثبيته!)

// ==UserScript==
// @name         Strong Kong
// @namespace    http://alphaoverall.com
// @version      0.1
// @description  Adds a number of commands to Kongregate chat
// @author       AlphaOverall
// @match        http://www.kongregate.com/games/*/*
// ==/UserScript==

//==========
// Strong Kong
// http://...
// by AlphaOverall (http://www.kongregate.com/accounts/AlphaOverall)
// Inspired by Kongregate Get
//==========

var dom = (typeof unsafeWindow === "undefined"?window:unsafeWindow);

function init_strongKong(){
    var holodeck = dom.holodeck;
    ChatDialogue = dom.ChatDialogue;

    //From original Kongregate Get script (http://userscripts-mirror.org/scripts/review/56432)
    holodeck.addChatCommand("avg", function(l,n){
        var roomDetails = l.chatWindow().activeRoom();
        var allUsers = roomDetails.users();
        var allLevels = 0;
        for(var i=0; i < allUsers.length; i++)
        {
            allLevels += allUsers[i]._level;
        }
        var avgLevel = Math.round(allLevels/allUsers.length*10)/10;
        l.activeDialogue().displayUnsanitizedMessage("Average Level in Room", avgLevel , {"class":"whisper received_whisper"}, {non_user: true});
        return false;
    });

    holodeck.addChatCommand("highlvl", function(l,n){
        var roomDetails = l.chatWindow().activeRoom();
        var allUsers = roomDetails.users();
        var highLevels = "";
        var highestLevel = 0;
        for(var i=0; i < allUsers.length; i++)
        {
            if (allUsers[i]._level > highestLevel)
            {
                highestLevel = allUsers[i]._level;
                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>";
            }
            else if (allUsers[i]._level == highestLevel)
            {
                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>";
            }
        }
        l.activeDialogue().displayUnsanitizedMessage("Highest Level in Room", highestLevel + ", Users: " + highLevels, {"class":"whisper received_whisper"}, {non_user: true});
        return false;
    });

    holodeck.addChatCommand("lowlvl", function(l,n){
        var roomDetails = l.chatWindow().activeRoom();
        var allUsers = roomDetails.users();
        var lowLevels = "";
        var lowestLevel = Infinity; //Just to makes sure :P
        for(var i=0; i < allUsers.length; i++)
        {
            if (allUsers[i]._level < lowestLevel)
            {
                lowestLevel = allUsers[i]._level;
                lowLevels = "<img src=\"" + allUsers[i]._chat_avatar_url + "\"><a href=\"http://www.kongregate.com/accounts/" + allUsers[i].username + "\" target=\"_blank\">" + allUsers[i].username + "</a>";
            }
            else if (allUsers[i]._level == lowestLevel)
            {
                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>";
            }
        }
        l.activeDialogue().displayUnsanitizedMessage("Lowest Level in Room", lowestLevel + ", Users: " + lowLevels, {"class":"whisper received_whisper"}, {non_user: true});
        return false;
    });

    holodeck.addChatCommand("developer", function(l,n){
        var roomDetails = l.chatWindow().activeRoom();
        var allUsers = roomDetails.users();
        var devs = [];
        for(var i=0; i < allUsers.length; i++)
        {
            if (allUsers[i]._developer)
            {
                devs.push(allUsers[i].username);
            }
        }
        l.activeDialogue().displayUnsanitizedMessage("Developers in room", devs.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
        return false;
    });

    holodeck.addChatCommand("admin", function(l,n){
        var roomDetails = l.chatWindow().activeRoom();
        var allUsers = roomDetails.users();
        var admins = [];
        for(var i=0; i < allUsers.length; i++)
        {
            if (allUsers[i]._admin)
            {
                admins.push(allUsers[i].username);
            }
        }
        l.activeDialogue().displayUnsanitizedMessage("Admins in room", admins.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
        return false;
    });

    holodeck.addChatCommand("user", function(l,n){
        var z = n.match(/^\/\S+\s+(.+)/);
        if (z)
        {
            var roomDetails = l.chatWindow().activeRoom();
            var allUsers = roomDetails.users();
            for(var i=0; i < allUsers.length; i++)
            {
                if (i == allUsers.length-1 && allUsers[i].username != z)
                {
                    l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No user of specified name in chat", {"class":"whisper received_whisper"}, {non_user: true});
                    return false;
                }
                if (allUsers[i].username == z[1])
                {
                    var user = allUsers[i];

                    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});
                    l.activeDialogue().displayUnsanitizedMessage("Level", user._level, {"class":"whisper received_whisper"}, {non_user: true});
                    if (user._moderator_room_ids.length == 0 && user._moderator_game_ids.length == 0)
                    {
                        l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/false/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true});
                    }
                    else
                    {
                        l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user._admin+"/true/"+user._developer+"/"+user._premium, {"class":"whisper received_whisper"}, {non_user: true});
                        l.activeDialogue().displayUnsanitizedMessage("Moderator Game Ids", user._moderator_game_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
                        l.activeDialogue().displayUnsanitizedMessage("Moderator Room Ids", user._moderator_room_ids.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
                    }
                    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});
                    l.activeDialogue().displayUnsanitizedMessage("Presence", user._presence, {"class":"whisper received_whisper"}, {non_user: true});
                    l.activeDialogue().displayUnsanitizedMessage("Role", user._role, {"class":"whisper received_whisper"}, {non_user: true});
                    return false;
                }
            }
        }
        else {
            var user = l._active_user._attributes._object;
            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});
            l.activeDialogue().displayUnsanitizedMessage("Age", user.age, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Admin/Moderator/Developer/Premium",user.admin+"/"+user.moderator+"/"+user.developer+"/"+user.premium, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("ID", user.id, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Level", user.level, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Points for Next Level", user.points_away, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Total Points", user.points, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Last Level Up", user.last_levelup_at, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Kreds", user.kreds_balance, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Gameplays", user.gameplays_count, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Game Ratings", user.ratings_count, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("BOTD Earned This Week", user.botds_this_week, {"class":"whisper received_whisper"}, {non_user: true});
            l.activeDialogue().displayUnsanitizedMessage("Name/Email", user.sender_name_or_email, {"class":"whisper received_whisper"}, {non_user: true});
            return false;
        }
    });

    holodeck.addChatCommand("info", function(l,n){
        var info = l._chat_window._active_room;
        var room = info._room;
        l.activeDialogue().displayUnsanitizedMessage("Room Name", room.name, {"class":"whisper received_whisper"}, {non_user: true});
        l.activeDialogue().displayUnsanitizedMessage("Room ID", room.id, {"class":"whisper received_whisper"}, {non_user: true});
        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});
        l.activeDialogue().displayUnsanitizedMessage("Room Type", room.type, {"class":"whisper received_whisper"}, {non_user: true});
        l.activeDialogue().displayUnsanitizedMessage("Favorite Room", info._favorite_room, {"class":"whisper received_whisper"}, {non_user: true});
        l.activeDialogue().displayUnsanitizedMessage("Users In Room", info._number_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true});
        l.activeDialogue().displayUnsanitizedMessage("Guests In Room", info._guests_in_room_node.innerText, {"class":"whisper received_whisper"}, {non_user: true});
        return false;
    });

    holodeck.addChatCommand("botd", function(l,n){
        var kbotd = l._active_user._attributes._object;
        var typeOf = "(easy)";
        if (kbotd.botd_reward_points == 5){//Do nothing
        }
        else if (kbotd.botd_reward_points == 15) {typeOf = "(medium)";}
        else if (kbotd.botd_reward_points == 30){typeOf = "(hard)";}
        else if (kbotd.botd_reward_points == 60){typeOf = "(impossible)";}
        else {typeOf = "Points: " + kbotd.botd_reward_points;} //Just in case
        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});
        return false;
    });

    holodeck.addChatCommand("friends", function(l,n){
        var kongfriends = l._chat_window._friends;
        var final = [];
        for(var friend in kongfriends)
        {
            final.push("<a href=\"http://www.kongregate.com/accounts/" + friend + "\" target=\"_blank\">" + friend + "</a>");
        }
        l.activeDialogue().displayUnsanitizedMessage("Friends", final.join(", "), {"class":"whisper received_whisper"}, {non_user: true});
        return false;
    });

    holodeck.addChatCommand("online", function(l,n){
        var online = document.getElementsByClassName("chat_actions_list")[0].childNodes[5];
        online.click();
        return false;
    });

    holodeck.addChatCommand("exit", function(l,n){
        close();
        return false;
    });

    holodeck.addChatCommand("open", function(l,n){
        var z = n.match(/^\/\S+\s+(.+)/);
        if (z[1]) {
            m = z[1].split(" ");
            if (m[0] == "accounts"){
                if (m[1]){
                    open("http://www.kongregate.com/accounts/" + m[1], "_blank");
                }
                else{
                    open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username);
                }
            }
            else if (m[0] == "games"){
                if (m[1]) {
                    if (m[2]){
                        open("http://www.kongregate.com/games/" + m[1] + "/" + m[2], "_blank");
                    }
                    else{
                        l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game", {"class":"whisper received_whisper"}, {non_user: true});
                    }
                }
                else{
                    l.activeDialogue().displayUnsanitizedMessage("Kong Bot", "No specified game creator", {"class":"whisper received_whisper"}, {non_user: true});
                }
            }
            else {
                open("http://www.kongregate.com/search?q=" + z[1], "_blank");
            }
        }
        else {
            open("http://www.kongregate.com/accounts/" + l._active_user._attributes._object.username);
        }
        return false;
    });
    
    holodeck.addChatCommand("help", function(l,n){
        open("http://www.kongregate.com/pages/help", "_blank");
        return false;
    });

    holodeck._chat_commands.close = holodeck._chat_commands.exit;
    holodeck._chat_commands.roominfo = holodeck._chat_commands.info;
    holodeck._chat_commands.friendsonline = holodeck._chat_commands.online;
    holodeck._chat_commands.u = holodeck._chat_commands.me = holodeck._chat_commands.user;
    holodeck._chat_commands.admins = holodeck._chat_commands.administrator = holodeck._chat_commands.administrators = holodeck._chat_commands.admin;
    holodeck._chat_commands.dev = holodeck._chat_commands.devs = holodeck._chat_commands.developers = holodeck._chat_commands.developer;
    holodeck._chat_commands.hlvl = holodeck._chat_commands.highlevel = holodeck._chat_commands.hlevel = holodeck._chat_commands.highlvl;
    holodeck._chat_commands.llvl = holodeck._chat_commands.lowlevel = holodeck._chat_commands.llevel = holodeck._chat_commands.lowlvl;
    holodeck._chat_commands.mp = holodeck._chat_commands.getmp = holodeck._chat_commands.mostplayed;
}

function check(){
	var injectScript = dom.injectScript||(document.getElementById("injectScriptDiv")?document.getElementById("injectScriptDiv").onclick():0);
	if(injectScript){
		injectScript(init_strongKong, 0);
	} else if(!dom._promptedFramework && !/Chrome/i.test(navigator.appVersion)){
		if(confirm("You don't have the latest version of the framework-script!\n" + 
		           "Please install it, otherwise Strong Kong script won't work.\n" +
		           "Clicking ok will open a new tab where you can install the script"))
			window.open("http://userscripts-mirror.org/scripts/show/54245", "_blank");
		dom._promptedFramework = true;
	}
}

setTimeout(check, 0);