Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
importScriptPage('User:Monchoman45/ChatHacks.js', 'c');
importScriptPage('User:Joeytje50/ChatLogger.js', 'runescape');
if(wgCanonicalSpecialPageName == 'Chat') {
function createGroupPM() {
var users = prompt('Enter comma seperated list of users to start a PM with','');
var users = users.split(',');
mainRoom.openPrivateChat(users);
}
$('form#Write').append('<a class="wikia-button" href="javascript:createGroupPM()" style="position:absolute; right:50px; top:0;">PM</a>');
}
/******************************************************/
/* Multikick w/tab insert */
/* Idea by Madnessfan34537 and Phillycj */
/* Code by Madnessfan34537, Joeytje50 and Callofduty4 */
/******************************************************/
//Multikicker
//Written by Madnessfan34537 and Callofduty4
function showPopup() {
$('body').append('<section style="left: 50%; top: 50px; width: 434px; z-index: 2000000002; margin-left: -222px;" class="modalWrapper" id="masskicker"><button class="close wikia-chiclet-button" onclick="cancelKick()"><img src="http://slot2.images.wikia.nocookie.net/__cb57523/common/skins/oasis/images/icon_close.png"></button><h1>Mass-kick</h1><section class="modalContent"><div><form method="" name="" class="WikiaForm "><fieldset><p>Enter usernames here, separated by a comma and a space. Tab insert works.</p><input type="text" name="multikickinput" id="multikickinput" /></fieldset></form><div style="float:right;"><a onclick="kickUsers()" class="wikia-button">Kick!</a> <a onclick="cancelKick()" id="cancel" class="wikia-button secondary">Cancel</a></div></section></section>');
$('body').append('<div style="height: 100%; width: 100%; z-index: 2000000001; opacity: 0.65; display: block;" data-opacity="0.65" class="blackout"></div>');
}
function kickUsers() {
var multikick = $('#multikickinput').val()
if (multikick.length != 0) {
var usersToKick = multikick.split(", ");
var i = 0;
for (i; i<usersToKick.length; i++) {
mainRoom.kick({name:usersToKick[i]});
}
$('#masskicker').remove();
$('.blackout').remove();
}
}
function cancelKick() {
$('#masskicker').remove();
$('.blackout').remove();
}
$('<a id= "multiKickerButton" class="wikia-button" href="javascript:showPopup()" style="position:absolute; right:55px; top:22px;">Multikick</a>').appendTo('.Write');
//Tab insert for usernames
//Written by Joeytje50 of Runescape wiki
function getCaretPos(ctrl) {
var CaretPos = 0; // IE Support
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
function setCaretPos(ctrl, pos){
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
$('#multikickinput').after('<span style="display:none;" id="autofilldata">[0,"","",0,null]</span>');
$('#multikickinput').keydown(function(e) {
if (e.keyCode == 9) {
e.preventDefault();
var curval = this.value;
var afData = eval(document.getElementById('autofilldata').innerHTML);
var curpos = afData[3]==0?getCaretPos(this):afData[3];
var carpos = getCaretPos(this)
if ((!curval.charAt(carpos)||curval.charAt(carpos).match(/\s/))&&!curval.charAt(carpos-1).match(/\s/)&&this.value.length) {
var unamestart = '';
if (afData[1].length==0) {
for (i=curpos-1;i>=0&&!curval.charAt(i).match(/\s/);i--) {
unamestart = curval.charAt(i) + unamestart;
}
} else {
unamestart = afData[1];
}
var afterTComplete = '';
for (i=curpos;i<curval.length;i++) {
afterTComplete += curval.charAt(i);
}
//generate list of users
var userList = '';
var userlistelems = document.getElementsByClassName('User');
for (i=0;i<userlistelems.length;i++) {
userList += userlistelems[i].getElementsByClassName('username')[0].innerHTML+',';
}
userList = userList.replace(new RegExp('('+wgUserName+'|RSChatBot),|,$','g'),'')
userList = userList.split(',').sort()
var matchedNames = [];
for (i=0;i<userList.length;i++) {
if (userList[i].match(new RegExp('^'+unamestart, 'i'))) {
matchedNames.push(userList[i]);
}
}
var newval = curval.split('');
for (i=carpos-1;i>=0&&i>=carpos-(!(afData[4]===null)?(matchedNames[afData[4]]?matchedNames[afData[4]].length:0) : unamestart.length)&&matchedNames.length>0;i--) {
newval[i] = '';
}
matchedNames = !matchedNames[0]?['']:matchedNames;
newval[curpos-unamestart.length] += matchedNames[afData[0]]?matchedNames[afData[0]]:'';
newval = newval.join('');
this.value = newval;
setCaretPos(this, curpos+(matchedNames[afData[0]].length?matchedNames[afData[0]].length:0))
var iter = afData[0]>=matchedNames.length-1?0:afData[0]+1;
document.getElementById('autofilldata').innerHTML = '['+iter+',"'+unamestart+'","'+matchedNames[afData[0]]+'",'+curpos+','+afData[0]+']'
}
return false;
} else if (e.which != 16) {
document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]';
}
}).click(function() {
document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]';
}).blur(function() {
document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]';
})