您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically resizes the chat to a specified value.
// ==UserScript== // @name Chat Resizer // @namespace tag://kongregate // @description Automatically resizes the chat to a specified value. // @author Ventero // @include http://www.kongregate.com/games/* // @date 15.09.2012 // require http://kong.ventero.de/updates/70040.js // @version 1.2.4 // @license MIT license // ==/UserScript== // Written by Ventero (http://www.kongregate.com/accounts/Ventero) 05/12/09 // Copyright (c) 2010-2012 Ventero, licensed under MIT/X11 license // http://www.opensource.org/licenses/mit-license.php // Default dimensions of chat var defaultWidth = 500; var defaultHeight = 600; // How much space should be left on the left/right border var spaceLeft = 200; // Set to false if game should line up with bottom of chat, not center var center = true; // Sets the height of the user list var userListHeight = 100; var dom = (typeof unsafeWindow === "undefined"?window:unsafeWindow); if(!document.getElementById("game")) return; if(!dom.holodeck){ var s = document.createElement("div"); s.setAttribute("onclick","return window"); dom = s.onclick(); } function d(c){ return document.getElementById(c); } function c(c){ return document.getElementsByClassName(c); } function $(c){ return document.querySelector(c); } function $A(c){ return [].slice.call(c); } function setWidth(width){ window._currentChatWidth = width; var gameWidth = parseInt(d("game").style.width, 10); d("maingame").style.width = (gameWidth + 3 + width) + "px"; d("maingamecontent").style.width = (gameWidth + 3 + width) + "px"; d("flashframecontent").style.width = (gameWidth + 3 + width) + "px"; d("chat_container").style.width = width + "px"; d('chat_window_spinner').style.right = width/2 - 38 + "px"; if(d('high_scores_spinner')) d('high_scores_spinner').style.right = width/2 - 38 + "px"; var ui = d("kong_game_ui"); z = ui.childNodes for(i=0;i<z.length;i++){ if(z[i].tagName == "DIV") z[i].style.width = (width - 17) + "px"; } $A(ui.querySelectorAll("textarea.chat_input")).forEach(function(el){ el.style.width = (width - 21) + "px"; }); } function setHeight(height, userListHeight, center){ if(!userListHeight) userListHeight = 100; window._currentChatHeight = height; window._currentChatUserlistHeight = userListHeight; var quicklinksHeight = d('quicklinks') ? d('quicklinks').parentNode.clientHeight : 26; var maintabHeight = d('main_tab_set').clientHeight; var tabPaneHeight = height - 16; var mainHeight = height + quicklinksHeight + maintabHeight; var gameHeight = parseInt(d('game').style.height, 10); d("maingame").style.height = mainHeight + "px"; d("maingamecontent").style.height = mainHeight + "px"; d("flashframecontent").style.height = mainHeight + "px"; d("chat_container").style.height = (height + maintabHeight) + "px"; d("user_mini_profile_container").style.height = (height - 65) + "px"; d("user_mini_profile").style.height = (height - 65) + "px"; var messageWindows = c("chat_message_window"); for(var i = 0; i < messageWindows.length; i++){ messageWindows[i].style.height = (tabPaneHeight - userListHeight - 93)+"px"; // 93 = roomname, users in room etc. } var usersInRoom = c("chat_tabpane users_in_room"); for(i = 0; i < usersInRoom.length; i++){ usersInRoom[i].style.height = userListHeight + "px"; } var roomsList = c("rooms_list"); for(i = 0; i < roomsList.length; i++){ roomsList[i].style.height = (height - 79)+"px"; } z = d("kong_game_ui").childNodes; for(i=0;i<z.length;i++){ if(z[i].nodeName=="DIV"){ z[i].style.height = tabPaneHeight + "px"; } } if(center != -1 && center !== undefined) centerGame(center); } function centerGame(center){ window._currentGameCentered = center; if(center){ var gameHeight = parseInt(d('game').style.height, 10); var mainHeight = parseInt(d("maingame").style.height, 10); d('game').style.top = (mainHeight - gameHeight)/2+"px" d('game').style.position = "relative"; }else{ d('game').style.bottom = "0px"; d('game').style.top = ""; d('game').style.position = "absolute"; } } function initalize_chat_resize(){ if(!d('maingamecontent')) return; var initialOffsetTop = d('maingamecontent').offsetTop + d('chat_tab_pane').offsetTop; var initialOffsetLeft = d('maingamecontent').offsetLeft + d('chat_tab_pane').offsetLeft; var minimumHeight = parseInt(d("game").style.height, 10) - parseInt(d('main_tab_set').clientHeight, 10) - 16; var minimumWidth = 300; if(dom.holodeck){ var holodeck = dom.holodeck; holodeck.addChatCommand("size", function(l, n){ var m = n.match(/^\/\S+\s+(\S+)/); var o = n.match(/^\/\S+\s+(\d+)\s+(\d+)(?:\s+(\d+))?/) if(m && m[1] == "reset"){ l.activeDialogue().kongBotMessage("Resetting size for this game to defaults."); window.setTimeout(function(){GM_deleteValue("kong_resize_"+location.pathname)}, 0); setWidth(window._defaultChatWidth); setHeight(window._defaultChatHeight, window._defaultUserlistHeight, window._currentGameCentered); return false; } else if(m && m[1] == "show"){ l.activeDialogue().kongBotMessage("Current chat size: width: " + window._currentChatWidth + "px, height: " + window._currentChatHeight + "px, userlist-height: " + window._currentChatUserlistHeight + "px."); return false; } else if(!o){ l.activeDialogue().kongBotMessage("Please specify a width and a height: /size width height. Example: /size 500 500"); return false; } var width = parseInt(o[1], 10); var height = parseInt(o[2], 10); var listHeight = parseInt(o[3]||100, 10); var gameHeight = parseInt(d('game').style.height, 10); if(width < 300){ l.activeDialogue().kongBotMessage("Minimum width is 300. Setting width to 300px."); width = 300; } if(height < gameHeight){ l.activeDialogue().kongBotMessage("Minimum height is the game's height. Setting height to " + gameHeight + "px."); height = gameHeight; } if(listHeight > height - 200){ l.activeDialogue().kongBotMessage("Userlist height is too large. Setting it to 100px"); listHeight = 100; } window.setTimeout(function(){GM_setValue("kong_resize_"+location.pathname, width+"/"+height+"/"+listHeight)}, 0); l.activeDialogue().kongBotMessage("Resizing chat to " + width + "px/" + height + "px/" + listHeight + "px"); setWidth(width); setHeight(height, listHeight, window._currentGameCentered); return false; }); holodeck.addChatCommand("defaultsize", function(l, n){ var m = n.match(/^\/\S+\s+(\S+)/); var o = n.match(/^\/\S+\s+(\d+)\s+(\d+)(?:\s+(\d+))?/) if(m && m[1] == "reset"){ l.activeDialogue().kongBotMessage("Resetting default size to 500/600/100"); window.setTimeout(function(){GM_deleteValue("kong_resize_default")}, 0); return false; } else if(m && m[1] == "show"){ l.activeDialogue().kongBotMessage("Current chat size: width: " + window._defaultChatWidth + "px, height: " + window._defaultChatHeight + "px, userlist-height: " + window._defaultUserlistHeight + "px."); return false; } else if(!o){ l.activeDialogue().kongBotMessage("Syntax /defaultsize width height userlist-height. userlist-height is optional. Example: /defaultsize 500 500 100"); } var width = parseInt(o[1], 10); var height = parseInt(o[2], 10); var listHeight = parseInt(o[3]||100, 10); if(width < 300){ l.activeDialogue().kongBotMessage("Minimum width is 300. Setting width to 300px."); width = 300; } if(listHeight > height){ l.activeDialogue().kongBotMessage("Userlist height is too large. Setting it to 100px"); listHeight = 100; } window.setTimeout(function(){GM_setValue("kong_resize_default", width+"/"+height+"/"+listHeight)}, 0); l.activeDialogue().kongBotMessage("Set default values to width: " + width + "px, height: " + height + "px, userlist-height: " + listHeight + "px."); return false; }); holodeck.addChatCommand("centergame", function(l, n){ var center = !window._currentGameCentered; if(center){ l.activeDialogue().kongBotMessage("Now centering the game"); } else { l.activeDialogue().kongBotMessage("Now aligning the game to the chat's bottom"); } window.setTimeout(function(){GM_setValue("kong_resize_center", center?1:0)}, 0); centerGame(center); return false; }); } var getString = "", centerVal = -1, defaults = ""; getString = GM_getValue("kong_resize_"+location.pathname, ""); centerVal = GM_getValue("kong_resize_center", -1); defaults = GM_getValue("kong_resize_default", ""); if(defaults){ var splitArr = defaults.split("/"); defaultWidth = parseInt(splitArr[0], 10)||defaultWidth; defaultHeight = parseInt(splitArr[1], 10)||defaultHeight; userListHeight = parseInt(splitArr[2], 10)||userListHeight; } window._defaultChatWidth = defaultWidth; window._defaultChatHeight = defaultHeight; window._defaultUserlistHeight = userListHeight; var x = defaultWidth, y = defaultHeight, l = userListHeight, cg = center, override = false; if(centerVal != -1){ cg = (centerVal == 1); } if(getString){ var splitArr = getString.split("/"); x = parseInt(splitArr[0], 10)||defaultWidth; y = parseInt(splitArr[1], 10)||defaultHeight; l = parseInt(splitArr[2], 10)||userListHeight; override = true; } var gameWidth = parseInt(d('game').style.width, 10); var gameHeight = parseInt(d('game').style.height, 10); if(x > minimumWidth){ if(override || gameWidth + x < screen.width - spaceLeft){ // enough place to resize to specified width setWidth(x); }else{ // resize as far as possible var chatWidth = screen.width - gameWidth - spaceLeft; if(chatWidth > minimumWidth) setWidth(chatWidth); } } if(y > minimumHeight && y > gameHeight){ setHeight(y, l, cg); } else { setHeight(gameHeight, l, cg); } } initalize_chat_resize();