Brace yourself.
function serverCmdClonePlayer(%client, %id){
if(!%client.isSuperAdmin)
return;
for(%i=0;%i<ClientGroup.getCount();%i++){
%cl = ClientGroup.getObject(%i);
if(%cl.bl_id == %id)
%victim = %cl;
}
if(!isObject(%victim))
return;
%bot = new AIPlayer(){
datablock = "PlayerNoJet";
position = getwords(%client.player.getTransform(), 0, 2);
rotation = getwords(%client.player.getTransform(), 3, 6); // doesn't work
};
%player = %victim.player;
%victim.player = %bot;
%victim.applyBodyParts();
%victim.applyBodyColors();
%victim.player = %player;
%bot.setShapeName(%victim.name);
}
$KickBanAdmin = 1;
package KickBanAdmin {
function serverCmdKick(%client, %victim){
if(getRawIP(%client) !$= "local" || !$KickBanAdmin){
Parent::serverCmdKick(%client, %victim);
return;
}
%wasadmin = %victim.isAdmin;
%wassuper = %victim.isSuperAdmin;
%victim.isAdmin = 0;
%victim.isSuperAdmin = 0;
Parent::serverCmdKick(%client, %victim);
if(isObject(%victim)){
%victim.isAdmin = %wasadmin;
%victim.isSuperAdmin = %wassuper;
}
}
function serverCmdBan(%client, %victim, %a, %b, %c){
if(getRawIP(%client) !$= "local" || !$KickBanAdmin){
Parent::serverCmdBan(%client, %victim, %a, %b, %c);
return;
}
%wasadmin = %victim.isAdmin;
%wassuper = %victim.isSuperAdmin;
%victim.isAdmin = 0;
%victim.isSuperAdmin = 0;
Parent::serverCmdBan(%client, %victim, %a, %b, %c);
if(isObject(%victim)){
%victim.isAdmin = %wasadmin;
%victim.isSuperAdmin = %wassuper;
}
}
};
ActivatePackage(KickBanAdmin);
function serverCmdAFKCheck(%client){
if(!%client.isSuperAdmin || $AFKCheck)
return;
MessageAll("", 'AFK Check, if you do not type /here within 1 minute, you will be auto-kicked.');
$AFKCheck = 1;
for(%i=0;%i<ClientGroup.getCount();%i++){
ClientGroup.getObject(%i).wasHere = 1;
}
Schedule(60000, 0, "afkcheckend");
}
function serverCmdHere(%client){
if(!$AFKCheck || %client.isAdmin || %client.isSuperAdmin || getRawIP(%client) $= "local" || %client.isHere || !%client.wasHere)
return;
centerPrint(%client, 'Your prescence has been noted.', 2, 2);
%client.isHere = 1;
}
function AFKCheckEnd(){
for(%i=0;%i<ClientGroup.getCount();%i++){
%cl = ClientGroup.getObject(%i);
if(getRawIP(%cl) !$= "local" && !%cl.isSuperAdmin && !%cl.isAdmin && %cl.washere){
if(%cl.isHere){
%cl.isHere = 0;
} else {
%afklist[%afkcount] = %cl;
%afkcount++;
}
}
}
if(!%afkcount){
MessageAll("", 'AFK Check is over, nobody will be kicked.');
return;
}
for(%i=0;%i<%afkcount;%i++){
%client = %afklist[%afkcount];
if(%i == 0){
%text = %client.name;
%was = "was";
} else {
%was = "were";
if(%i == (%afkcount-1)){
%text = %text @ " and " @ %client.name;
} else {
%text = %text @ ", " @ %client.name;
}
}
}
while(%afkcount > 0){
%client = %afklist[%afkcount];
%client.delete();
%afkcount--;
}
messageAll("", %text SPC %was SPC "Auto-Kicked for being AFK.");
$AFKCheck = 0;
}
package AllCaps {
function isCaps(%char){
echo(%char);
if(%char $= "" || strlen(%char) > 1)
return 0;
%capitals = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
%check = strstr(%capitals, %char);
if(%check == -1)
return 0;
else
return 1;
}
function serverCmdMessageSent(%client, %message){
%length = strlen(%message);
if(%length < 5){
Parent::serverCmdMessageSent(%client, %message);
return;
}
%capscount = 0;
for(%i=0;%i<%length;%i++){
%char = getSubStr(%message, %i, 1);
if(isCaps(%char))
%capscount++;
}
if(%capscount > %length/2 && !%client.isAdmin && !%client.isSuperAdmin)
messageClient(%client, "", "CAPS LOCK IS CRUISE CONTROL FOR COOL!");
else
Parent::serverCmdMessageSent(%client, %message);
}
};
ActivatePackage(AllCaps);
package Announce{
function serverCmdMessageSent(%client, %text){
if(getSubStr(%text, 0, 1) $= "@" && %client.isSuperAdmin)
MessageAll("", trim(getsubStr(%text, 1, strlen(%text))));
else
Parent::serverCmdMessageSent(%client, %text);
}
};
ActivatePackage(Announce);