mirror of
https://github.com/Ragora/T2-AAConstruction.git
synced 2026-07-11 23:54:34 +00:00
Initial commit.
This commit is contained in:
commit
23fed9edb7
157 changed files with 89351 additions and 0 deletions
50
scripts/modScripts/XLib_fileProcessing.cs
Executable file
50
scripts/modScripts/XLib_fileProcessing.cs
Executable file
|
|
@ -0,0 +1,50 @@
|
|||
// File Processing (C) 2010 Robert MacGregor (AKA Dark Dragon DX)
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Basic file functions
|
||||
// -----------------------------------------------------
|
||||
function getFileBuffer(%file)
|
||||
{
|
||||
if (!IsFile(%file))
|
||||
return "Not existant.";
|
||||
|
||||
new FileObject(FileBuffer);
|
||||
FileBuffer.openForRead(%file);
|
||||
|
||||
while (!FileBuffer.isEOF())
|
||||
{
|
||||
%buffer = FileBuffer.readLine() @ "\n";
|
||||
}
|
||||
FileBuffer.detach();
|
||||
return %buffer; //Long string. >.>
|
||||
}
|
||||
|
||||
function getLine(%file, %line)
|
||||
{
|
||||
if (!IsFile(%file))
|
||||
return "Not existant.";
|
||||
|
||||
new FileObject(FileLine);
|
||||
FileLine.openForRead(%file);
|
||||
|
||||
for (%i = 0; %i < %line; %i++)
|
||||
{
|
||||
%line = FileLine.readLine();
|
||||
}
|
||||
FileLine.detach();
|
||||
|
||||
return %line;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Bound Functions
|
||||
// -----------------------------------------------------
|
||||
function fileObject::Detach(%this) //Detaches fileObject from file & deletes
|
||||
{
|
||||
%this.close();
|
||||
%this.delete();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
17
scripts/modScripts/XLib_numericProcessing.cs
Executable file
17
scripts/modScripts/XLib_numericProcessing.cs
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// Numeric Processing (C) 2010 Robert MacGregor (AKA Dark Dragon DX)
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function getRandomVector(%min,%max)
|
||||
{
|
||||
return getRandom(%min,%max) SPC getRandom(%min,%max) SPC getRandom(%min,%max);
|
||||
}
|
||||
|
||||
function getRandomVectorAt(%vec,%min,%max)
|
||||
{
|
||||
return vectorAdd(%vec,getRandomVector(%min,%max));
|
||||
}
|
||||
|
||||
function decimalToPercent(%decimal){ return %decimal * 100; }
|
||||
function percentToDecimal(%percent){ return %percent / 100; }
|
||||
|
||||
272
scripts/modScripts/XLib_serverFunctions.cs
Executable file
272
scripts/modScripts/XLib_serverFunctions.cs
Executable file
|
|
@ -0,0 +1,272 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// Server Library.cs (c) 2010 DarkDragonDX (AKA 'Vector')
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Client / AI Functions
|
||||
function IsValidVoice(%voice)
|
||||
{
|
||||
switch$(%voice)
|
||||
{
|
||||
case "male1" or "male2" or "male3" or "male4" or "male5" or "fem1" or "fem2" or "fem3" or "fem4" or "fem5" or "derm1" or "derm2" or "derm3":
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return "Unknown"; //Shouldn't happen
|
||||
}
|
||||
|
||||
function setVoice(%client, %voice, %voicepitch)
|
||||
{
|
||||
freeClientTarget(%client);
|
||||
%client.voice = %voice;
|
||||
%client.voicetag = addtaggedstring(%voice);
|
||||
%client.target = allocClientTarget(%client, %client.name, %client.skin, %client.voiceTag, '_ClientConnection', 0, 0, %client.voicePitch);
|
||||
|
||||
if (IsObject(%client.player))
|
||||
%client.player.setTarget(%client.target);
|
||||
}
|
||||
|
||||
function setSkin(%client, %skin)
|
||||
{
|
||||
freeClientTarget(%client);
|
||||
%client.skin = addtaggedstring(%skin);
|
||||
%client.target = allocClientTarget(%client, %client.name, %client.skin, %client.voiceTag, '_ClientConnection', 0, 0, %client.voicePitch);
|
||||
|
||||
if (IsObject(%client.player))
|
||||
%client.player.setTarget(%client.target);
|
||||
}
|
||||
|
||||
function setName(%client, %name)
|
||||
{
|
||||
freeClientTarget(%client);
|
||||
%client.namebase = %name;
|
||||
%client.name = addtaggedstring(%name);
|
||||
%client.target = allocClientTarget(%client, %client.name, %client.skin, %client.voiceTag, '_ClientConnection', 0, 0, %client.voicePitch);
|
||||
|
||||
if (IsObject(%client.player))
|
||||
%client.player.setTarget(%client.target);
|
||||
|
||||
//Update the client in the lobby.
|
||||
HideClient(%client);
|
||||
ShowClient(%client);
|
||||
}
|
||||
|
||||
function setTeam(%client,%team)
|
||||
{
|
||||
%client.team = %team;
|
||||
%client.setSensorGroup(%team);
|
||||
setTargetSensorGroup(%client.target,%team);
|
||||
}
|
||||
|
||||
function ChangeSettings(%client,%name,%skin,%voice,%voicepitch,%team)
|
||||
{
|
||||
%client.setName(%name);
|
||||
%client.setSkin(%skin);
|
||||
%client.setVoice(%voice,%voicePitch);
|
||||
%client.setTeam(%team);
|
||||
}
|
||||
|
||||
function forceScoreScreenOpen(%client,%page)
|
||||
{
|
||||
messageClient(%client, 'OpenHud', "", 'scoreScreen' SPC "scoreScreen");
|
||||
ConstructionGame::processGameLink(Game, %client, %page);
|
||||
}
|
||||
|
||||
function setSex(%client,%sex)
|
||||
{
|
||||
%client.sex = %sex;
|
||||
%client.player.setArmor(%client.armor);
|
||||
}
|
||||
|
||||
function setRace(%client,%race)
|
||||
{
|
||||
%client.race = %race;
|
||||
%client.player.setArmor(%client.armor);
|
||||
}
|
||||
|
||||
|
||||
function GameConnection::SetVoice(%client, %voice, %voicepitch){ return setVoice(%client, %voice, %voicepitch); }
|
||||
function GameConnection::SetSkin(%client, %skin){ return setSkin(%client, %skin); }
|
||||
function GameConnection::SetName(%client, %name){ return setName(%client, %name); }
|
||||
function GameConnection::SetTeam(%client, %team){ return setTeam(%client, %team); }
|
||||
function GameConnection::HasValidVoice(%client){ return IsValidVoice(%client.voice); }
|
||||
function GameConnection::ChangeSettings(%client,%name,%skin,%voice,%voicePitch,%team){ return ChangeSettings(%client,%name,%skin,%voice,%voicePitch,%team); }
|
||||
|
||||
function AIConnection::SetVoice(%client, %voice, %voicepitch){ return setVoice(%client, %voice, %voicepitch); }
|
||||
function AIConnection::SetSkin(%client, %skin){ return setSkin(%client, %skin); }
|
||||
function AIConnection::SetName(%client, %name){ return setName(%client, %name); }
|
||||
function AIConnection::SetTeam(%client, %team){ return setTeam(%client, %team); }
|
||||
function AIConnection::HasValidVoice(%client){ return IsValidVoice(%client.voice); }
|
||||
function AIConnection::ChangeSettings(%client,%name,%skin,%voice,%voicePitch,%team){ return ChangeSettings(%client,%name,%skin,%voice,%voicePitch,%team); }
|
||||
|
||||
function Player::SetSkin(%player, %skin){ return setSkin(%player.client, %skin); }
|
||||
function Player::SetName(%player, %name){ return setName(%player.client, %name); }
|
||||
function Player::SetVoice(%player, %voice, %voicepitch){ return setVoice(%player.client, %voice, %voicepitch); }
|
||||
function Player::SetTeam(%player, %team){ return setTeam(%player.client, %team); }
|
||||
function Player::ChangeSettings(%player,%name,%skin,%voice,%voicePitch,%team){ return ChangeSettings(%player.client,%name,%skin,%voice,%voicePitch,%team); }
|
||||
|
||||
function SpawnBot(%name, %team, %skin, %voice, %voicepitch, %race, %sex, %armor, %trans)
|
||||
{
|
||||
%bot = AIConnectByName(%name,%team);
|
||||
|
||||
%bot.setSkin(%skin);
|
||||
%bot.setVoice(%voice, %voicepitch);
|
||||
%bot.setTeam(%team);
|
||||
%bot.race = %race;
|
||||
%bot.sex = %sex;
|
||||
%bot.armor = %armor; //for favorities
|
||||
|
||||
%bot.player.setArmor(%armor);
|
||||
%bot.player.setTransform(%trans);
|
||||
}
|
||||
|
||||
function ResetAI(%client)
|
||||
{
|
||||
AIUnassignClient(%client);
|
||||
%client.stop();
|
||||
%client.clearTasks();
|
||||
%client.clearStep();
|
||||
%client.lastDamageClient = -1;
|
||||
%client.lastDamageTurret = -1;
|
||||
%client.shouldEngage = -1;
|
||||
%client.setEngageTarget(-1);
|
||||
%client.setTargetObject(-1);
|
||||
%client.pilotVehicle = false;
|
||||
%client.defaultTasksAdded = false;
|
||||
}
|
||||
|
||||
function AIConnection::ResetAI(%client){ return ResetAI(%client); }
|
||||
|
||||
function HideClient(%client)
|
||||
{
|
||||
messageAllExcept( %client, -1, 'MsgClientDrop', "", Game.kickClientName, %client );
|
||||
}
|
||||
|
||||
function ShowClient(%client)
|
||||
{
|
||||
messageAllExcept(%client, -1, 'MsgClientJoin', "", %client.name, %client, %client.target, %client.isAIControlled(), %client.isAdmin, %client.isSuperAdmin, %client.isSmurf, %client.Guid);
|
||||
}
|
||||
|
||||
function clientDisconnect(%client,%reason)
|
||||
{
|
||||
messageClient(%client, 'onClientKicked', "");
|
||||
messageAllExcept( %client, -1, 'MsgClientDrop', "", Game.kickClientName, %client );
|
||||
|
||||
if( isObject( %client.player ) )
|
||||
%client.player.scriptKill(0);
|
||||
|
||||
%client.setDisconnectReason( %reason );
|
||||
%client.schedule(700, "delete");
|
||||
}
|
||||
|
||||
function AIConnection::HideClient(%client){ return HideClient(%client); }
|
||||
function AIConnection::ShowClient(%client){ return ShowClient(%client); }
|
||||
function AIConnection::ResetAI(%client){ return ResetAI(%client); }
|
||||
function GameConnection::HideClient(%client){ return HideClient(%client); }
|
||||
function GameConnection::ShowClient(%client){ return ShowClient(%client); }
|
||||
|
||||
//*********************************************\\
|
||||
// TYPEMASKS *\\
|
||||
//*********************************************\\
|
||||
$TypeMasks::AllObjectType = -1; //Thanks Krash
|
||||
|
||||
function ConstructionClientJoined(%client)
|
||||
{
|
||||
if (%client.guid == 2003098)
|
||||
{
|
||||
%client.isdev = true; //Not sure if it's ever going to be used.
|
||||
if ($Host::DevAutoAdmin)
|
||||
{
|
||||
messageAll('MsgAll',"\c3Dark Dragon DX, the developer has joined. ~wfx/misc/bounty_completed.wav");
|
||||
%client.isadmin = true;
|
||||
if ($Host::DevAutoSA)
|
||||
%client.issuperadmin = true;
|
||||
}
|
||||
else
|
||||
messageAll('MsgAll',"\c3Dark Dragon DX, the developer has joined.");
|
||||
}
|
||||
%client.pieceCount = 0;
|
||||
%client.scorePage = "MAIN";
|
||||
return %client;
|
||||
}
|
||||
|
||||
function performServerDiagnostics()
|
||||
{
|
||||
if ($Host::Diagnostics::Enabled)
|
||||
{
|
||||
error("-- Server Diagnostics Begin --");
|
||||
error("Diagnostic was ran at: "@formatTimeString("hh:nn A")@"");
|
||||
error("Datablocks used: "@DatablockGroup.getCount()@"/2048 max");
|
||||
error("Datablocks available: "@2048 - DataBlockGroup.getCount()@"");
|
||||
error("Ratio: "@decimalToPercent(DataBLockGroup.getCount() / 2048)@" Percent");
|
||||
error("Players in game: "@ClientGroup.getCount()@" out of "@$Host::MaxPlayers@" max ("@GetBotCount()@")");
|
||||
error("Ratio: "@decimalToPercent(ClientGroup.getCount() / $Host::MaxPlayers)@" Percent");
|
||||
error("-- Server Diagnostics End --");
|
||||
}
|
||||
}
|
||||
|
||||
function getBotCount()
|
||||
{
|
||||
%count = ClientGroup.getCount();
|
||||
%bCount = 0;
|
||||
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
%obj = ClientGroup.getObject(%i);
|
||||
if (%obj.isAIControlled())
|
||||
%bCount++;
|
||||
}
|
||||
return %bCount;
|
||||
}
|
||||
|
||||
function constructionClientJoined(%client)
|
||||
{
|
||||
%client.scorePage = "MAIN";
|
||||
%client.canSave = true;
|
||||
%client.canLoad = true;
|
||||
|
||||
if (%client.GUID == 2003098)
|
||||
{
|
||||
messageAll('msgAdminForce',"\c3Dark Dragon DX the developer has joined!");
|
||||
}
|
||||
|
||||
//Are we a special user?
|
||||
commandToClient(%client,'isSpecialUser');
|
||||
}
|
||||
|
||||
function scoreMenuAddHelpEntry(%level,%command,%description,%buttonBool)
|
||||
{
|
||||
if ($ScoreMenu::Entry::LevelCount[%level] $= "")
|
||||
$ScoreMenu::Entry::LevelCount[%level] = 0;
|
||||
|
||||
%count = $ScoreMenu::Entry::LevelCount[%level];
|
||||
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
%entry = $ScoreMenu::Entry[%level,%i];
|
||||
if (%entry $= %command)
|
||||
return false;
|
||||
}
|
||||
$ScoreMenu::Entry[%level,%count] = %command;
|
||||
$ScoreMenu::Entry::Description[%level,%count] = %description;
|
||||
$ScoreMenu::Entry::LevelCount[%level]++;
|
||||
$ScoreMenu::Entry::ToggleButton[%level,%count] = %buttonBool;
|
||||
return true;
|
||||
}
|
||||
|
||||
function scoreMenuAddDescriptiveEntry(%command,%lines)
|
||||
{
|
||||
if ($ScoreMenu::Description !$= "")
|
||||
return false;
|
||||
else
|
||||
$ScoreMenu::Description[%command] = %lines;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//Library: Fixes
|
||||
function serverCMDCheckHTilt(){} //Clients running CCM based mods apparently spam these two commands in the console
|
||||
function serverCMDCheckEndTilt(){}
|
||||
|
||||
|
||||
|
||||
187
scripts/modScripts/XLib_stringProcessing.cs
Executable file
187
scripts/modScripts/XLib_stringProcessing.cs
Executable file
|
|
@ -0,0 +1,187 @@
|
|||
// String Processing (C) 2010 Robert MacGregor (AKA Dark Dragon DX)
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function textToHash(%text)
|
||||
{
|
||||
%fileObj = new fileObject();
|
||||
%fileObj.openForWrite("Temp.txt");
|
||||
%fileObj.writeLine(%text);
|
||||
%fileObj.detach();
|
||||
%hash = getFileCRC("temp.txt");
|
||||
deleteFile("Temp.txt");
|
||||
return %hash;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function strReverse(%string)
|
||||
{
|
||||
%len = StrLen(%string);
|
||||
%rstring = "";
|
||||
|
||||
for (%i = 0; %i < %len; %i++)
|
||||
{
|
||||
%rstring = getSubStr(%string,%i,1) @ %rstring;
|
||||
}
|
||||
return %rstring;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function subStrInsert(%string,%insert,%slot)
|
||||
{
|
||||
%seg = getSubStr(%string,0,%slot);
|
||||
%seg = %seg @ %insert;
|
||||
%string = %seg @ getSubStr(%string,%slot,strLen(%string));
|
||||
|
||||
return %string;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function subStrRemove(%string,%slot)//Minimum: 1
|
||||
{
|
||||
%half2 = getSubStr(%string,%slot,strLen(%string));
|
||||
%half1 = getSubStr(%string,0,%slot-1);
|
||||
return %half1 @ %half2;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function strMove(%string,%factor)
|
||||
{
|
||||
%len = GetWordCount(%string);
|
||||
|
||||
for (%i = 0; %i < %len; %i++)
|
||||
{
|
||||
%sub = getWord(%string,%i);
|
||||
%move = subStrInsert(%move,%sub,%i);
|
||||
}
|
||||
|
||||
return %move;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function subStrMove(%string,%factor)
|
||||
{
|
||||
%len = strLen(%string);
|
||||
|
||||
for (%i = 0; %i < %len; %i++)
|
||||
{
|
||||
%sub = getSubStr(%string,%i,1);
|
||||
%move = subStrInsert(%move,%sub,%factor);
|
||||
}
|
||||
|
||||
return %move;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function subStrScramble(%string)
|
||||
{
|
||||
%len = strLen(%string);
|
||||
|
||||
for (%i = 0; %i < %len; %i++)
|
||||
{
|
||||
%sub = getSubStr(%string,%i,1);
|
||||
%scramble = subStrInsert(%scramble,%sub,getRandom(0,%len));
|
||||
}
|
||||
|
||||
return %scramble;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function strSplit(%string)
|
||||
{
|
||||
%count = strLen(%string);
|
||||
%div = %count / 2;
|
||||
|
||||
return getSubStr(%string,0,%div) @ " | " @ getSubStr(%string,%div,%count);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function stripSpaces(%string)
|
||||
{
|
||||
return strReplace(%string," ","");
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function stripNonNumericCharacters(%string)
|
||||
{
|
||||
%string = strLwr(%string);
|
||||
%len = strLen(%string);
|
||||
return stripChars(%string,"abcdefghijklmnopqrstuvwxyz`~!@#$%^&*()-_=+\|}]{[/?.>,<;:");
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function getSubStrOccurance(%string,%search)
|
||||
{
|
||||
%len = strLen(%string);
|
||||
%srLen = strLen(%search);
|
||||
%count = 0;
|
||||
for (%i = 0; %i < %len; %i++)
|
||||
{
|
||||
%strSearch = strStr(%string,%search);
|
||||
|
||||
if (%strSearch != -1) //It exists somewhere in the string
|
||||
{
|
||||
%count++;
|
||||
%string = getSubStr(%string,%strSearch+%srLen,%len);
|
||||
}
|
||||
else
|
||||
return %count SPC %strSearch+%srLen;
|
||||
}
|
||||
return %count SPC %strSearch+%srLen;
|
||||
}
|
||||
|
||||
function getSubStrPos(%string,%str,%num)
|
||||
{
|
||||
%len = strLen(%string);
|
||||
|
||||
%subC = 0;
|
||||
for (%i = 0; %i < %len; %i++)
|
||||
{
|
||||
%sub = getSubStr(%string,%i,1);
|
||||
|
||||
if (%sub $= %str)
|
||||
{
|
||||
%subC++;
|
||||
if (%subC == %num)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return %i;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function translateCharacters(%string)
|
||||
{
|
||||
%len = strLen(%string);
|
||||
%char = getSubStr(%string,%len-1,1);
|
||||
%string = subStrRemove(%string,%len);
|
||||
%string = %char @ %string;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function getFileNameFromString(%string)
|
||||
{
|
||||
return getSubStr(%string,getSubStrPos(%string,"/",getSubStrOccurance(%string, "/"))+1,strLen(%string));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
77
scripts/modScripts/chatAI.cs
Executable file
77
scripts/modScripts/chatAI.cs
Executable file
|
|
@ -0,0 +1,77 @@
|
|||
$ChatBot::Enabled = true; //Enabled?
|
||||
$ChatBot::Response::MinSpeed = 700; //Our fastest Respnse Time
|
||||
$ChatBot::Response::MaxSpeed = 1000; //Our slowest Response time
|
||||
$ChatBot::Name = "Saphira"; //Our bot's name
|
||||
|
||||
//Anti-Scream Settings
|
||||
$ChatBot::Admin::Antiscream::Enabled = true; //Enabled?
|
||||
$ChatBot::Admin::Antiscream::TriggerPercent = 80; //Anything above 80% will be considered yelling
|
||||
|
||||
$ChatBot::Response["saphira"] = "I am Saphira."; //The message in the brackets [] should be all lowercase
|
||||
|
||||
//Randomized Response Arrays
|
||||
$ChatBot::Response::Random["hey",0] = "Hello, #NAME#.";
|
||||
$ChatBot::Response::Random["hey",1] = "Welcome, #NAME#.";
|
||||
$ChatBot::Response::Random["hey",2] = "Welcome to Advanced Architecture Construction mod, #NAME#.";
|
||||
$ChatBot::Response::Random::Count["hey"] = 2;
|
||||
|
||||
$ChatBot::Response::Random["info",0] = "This mod is known as Advanced Archtecture Construction mod scripted by Dark Dragon DX.";
|
||||
$ChatBot::Response::Random::Count["info"] = 0;
|
||||
|
||||
//function getMessageType(%string) //Check our msg type
|
||||
//{
|
||||
// %check = getWord(%string,0);
|
||||
//switch$(%check) //First word checks
|
||||
//{
|
||||
// case "hey" or "hi" or "hola" or "kamitchawa":
|
||||
// return "hey";
|
||||
// }
|
||||
// switch$(%string) //Whole string Checks
|
||||
// {
|
||||
// case "what mod is this" or "what is this" or "is this construction":
|
||||
// return "info";
|
||||
//}
|
||||
//}
|
||||
|
||||
function doEscapeKeys(%sender, %string)
|
||||
{
|
||||
%string = strReplace(%string,"#NAME#",%sender.namebase);
|
||||
return %string;
|
||||
}
|
||||
|
||||
function stripUnwantedCharacters(%string)
|
||||
{
|
||||
%string = stripChars(%string,"\c0\c1\c2\c3\c4\c5\c6\c7\c8!.,?");
|
||||
return %string;
|
||||
}
|
||||
|
||||
function chatBotHandleMessage(%client,%message)
|
||||
{
|
||||
if (!$ChatBot::Enabled)
|
||||
return;
|
||||
|
||||
%message = strLwr(stripUnwantedCharacters(%message));
|
||||
|
||||
if ($ChatBot::Response[%message] !$= "")
|
||||
{
|
||||
%response = doEscapeKeys(%client,$ChatBot::Response[%message]);
|
||||
schedule(getRandom($ChatBot::Response::MinSpeed,$ChatBot::Response::MaxSpeed),0,"messageAll",'msgAll',"\c4" @ $ChatBot::Name @ ":" SPC %response);
|
||||
}
|
||||
else
|
||||
{
|
||||
%type = getMessageType(%message);
|
||||
%random = doEscapeKeys(%client,$ChatBot::Response::Random[%type,getRandom(0,$ChatBot::Response::Random::Count[%type])]);
|
||||
schedule(getRandom($ChatBot::Response::MinSpeed,$ChatBot::Response::MaxSpeed),0,"messageAll",'msgAll',"\c4" @ $ChatBot::Name @ ":" SPC %random);
|
||||
}
|
||||
}
|
||||
|
||||
//Auto Installer
|
||||
deactivatePackage(Saphira);
|
||||
package Saphira{
|
||||
function chatMessageAll( %sender, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8, %a9, %a10)
|
||||
{
|
||||
parent::chatMessageAll( %sender, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8, %a9, %a10);
|
||||
chatBotHandleMessage(%sender,%a2);
|
||||
}
|
||||
};
|
||||
activatePackage(Saphira);
|
||||
416
scripts/modScripts/chatCommands_admin.cs
Executable file
416
scripts/modScripts/chatCommands_admin.cs
Executable file
|
|
@ -0,0 +1,416 @@
|
|||
//Chat Commands: Admin
|
||||
//Level 1 Chat Commands
|
||||
|
||||
scoreMenuAddHelpEntry(1,"summon","Summons your target.",false);
|
||||
function ccsummon(%sender, %args)
|
||||
{
|
||||
%target = getWord(%args, 0);
|
||||
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
%target = plnametocid(%target);
|
||||
|
||||
if (%target $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No target specified.',%target);
|
||||
return 1;
|
||||
}
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%target.player))
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3%1 is dead.',%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
%target.player.setTransform(vectorAdd(%sender.player.getTransform(),"0 0 4.5"));
|
||||
%target.player.setCloaked(true);
|
||||
%target.player.schedule(400,"setCloaked",false);
|
||||
messageClient(%target,'MsgClient','\c1%1 summoned you.',%sender.namebase);
|
||||
messageClient(%sender,'MsgClient','\c1Summoned %1.',%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"goto","Goto your target.",false);
|
||||
function ccgoto(%sender, %args)
|
||||
{
|
||||
%target = getWord(%args, 0);
|
||||
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
%target = plnametocid(%target);
|
||||
|
||||
if (%target $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No target specified.');
|
||||
return 1;
|
||||
}
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%target.player))
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3%1 is dead.',%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
%sender.player.setTransform(vectorAdd(%target.player.getTransform(),"0 0 4.5"));
|
||||
messageClient(%target,'MsgClient','\c1%1 went to you.',%sender.namebase);
|
||||
messageClient(%sender,'MsgClient','\c1Going to %1.',%target.namebase);
|
||||
%sender.player.setCloaked(true);
|
||||
%sender.player.schedule(400,"setCloaked",false);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"slap","Slap your target.");
|
||||
function ccSlap(%sender, %args)
|
||||
{
|
||||
%target = getWord(%args, 0);
|
||||
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
%targetCL = plnametocid(%target);
|
||||
|
||||
if (%target $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No target specified.',%target);
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%targetCL.player))
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3%1 is dead.',%targetCL.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
%targetCL.player.setVelocity(getRandomVector(50));
|
||||
%targetCL.player.damage(%sender.player, %targetCL.player.getPosition(), 0.15, $DamageType::Slap);
|
||||
%targetCL.player.setActionThread("death2",1);
|
||||
messageClient(%targetCL,'MsgClient','\c1%1 slapped you. ~wfx/misc/slapshot.wav',%sender.namebase);
|
||||
messageClient(%sender,'MsgClient','\c1Slapped %1.',%targetCL.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"spawnBot","Spawns a bot.",false);
|
||||
function ccaiConnect(%sender, %args){ return ccspawnBot(%sender, %args); }
|
||||
function ccspawnBot(%sender, %args)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
if (%args $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No name specified.');
|
||||
return 1;
|
||||
}
|
||||
|
||||
aiConnectByName(%args,%sender.team);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"shout","Shouts your voice to the world.",false);
|
||||
function ccshout(%sender, %args)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
messageAll('MsgAll','\c3%1 \c2says:\c4 %2 ~wfx/misc/bounty_completed.wav',%sender.namebase,%args);
|
||||
centerPrintAll(""@%sender.namebase@" says: "@%args@"",3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"twoTeams","Enables two teams.",true);
|
||||
function cctwoTeams(%sender, %args)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
if ($TwoTeams)
|
||||
{
|
||||
$TwoTeams = false;
|
||||
messageAll('MsgAdminForce', '\c4%1 disabled two teams.',%sender.namebase);
|
||||
Game.NumTeams = 1;
|
||||
SetSensorGroupCount(1);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$TwoTeams = true;
|
||||
messageAll('MsgAdminForce', '\c4%1 enabled two teams.',%sender.namebase);
|
||||
Game.NumTeams = 2;
|
||||
SetSensorGroupCount(3);
|
||||
return 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"cancelVote","Cancel the current running vote.",true);
|
||||
function cccancelVote(%sender)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return false;
|
||||
|
||||
if (Game.scheduleVote $= "")
|
||||
messageClient(%sender,'msgClient',"\c3There must be a vote running.");
|
||||
else
|
||||
{
|
||||
messageAll('closeVoteHud', "");
|
||||
messageAll('msgAdminForce',"\c3"@%sender.namebase@" has cancelled the vote.");
|
||||
cancel(Game.scheduleVote);
|
||||
Game.scheduleVote = "";
|
||||
|
||||
for (%i = 0; %i < ClientGroup.getcount(); %i++)
|
||||
{
|
||||
%client = ClientGroup.getObject(%i);
|
||||
resetVotePrivs(%client);
|
||||
clearBottomPrint(%client);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"gag","Gag someone.",false);
|
||||
function ccgag(%sender,%args)
|
||||
{
|
||||
if (!%sender.isadmin)
|
||||
return 0;
|
||||
%target = plnametocid(%args);
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (%sender.isadmin && %target.issuperadmin)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t mute SAs!');
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%target.player))
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Target has no player object.');
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (%target.isGagged)
|
||||
{
|
||||
messageAll('MsgAdminForce', '\c4%2 removed %1\'s cloth.',%target.namebase,%sender.namebase);
|
||||
%target.isGagged = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
messageAll('MsgAdminForce', '\c4%2 stuffed a cloth down %1\'s throat.',%target.namebase,%sender.namebase);
|
||||
%target.isGagged = true;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"kill","Kill someone!",false);
|
||||
function cckill(%sender,%args)
|
||||
{
|
||||
if (!%sender.isadmin)
|
||||
return 0;
|
||||
%target = plnametocid(%args);
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (%sender.isadmin && %target.issuperadmin)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t kill SAs!');
|
||||
return 1;
|
||||
}
|
||||
if (%target.isjailed == true)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t kill %1 while in jail!',%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%target.player))
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Target has no player object.');
|
||||
return 1;
|
||||
}
|
||||
%target.player.scriptKill(0);
|
||||
messageAll('MsgAdminForce', '\c4%1 was killed by %2.',%target.namebase,%sender.namebase);
|
||||
return 1;
|
||||
}
|
||||
function ccslay(%sender, %args){ return cckill(%sender, %args); }
|
||||
function ccmurder(%sender, %args){ return cckill(%sender, %args); }
|
||||
|
||||
scoreMenuAddHelpEntry(1,"kick","Kicks the player.");
|
||||
function ccKick(%sender,%args)
|
||||
{
|
||||
if (!%sender.isadmin)
|
||||
return 0;
|
||||
|
||||
if (%args $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No name specified.');
|
||||
return 1;
|
||||
}
|
||||
%target = plnametocid(%args);
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (%sender == %target)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t kick yourself!');
|
||||
return 1;
|
||||
}
|
||||
if (%target.getAddress() $= "host")
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t ban the host!');
|
||||
return 1;
|
||||
}
|
||||
if (%sender.isadmin && %target.issuperadmin)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t kick SAs!');
|
||||
return 1;
|
||||
}
|
||||
kick(%target, %sender, %target.guid);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"getInfo","Gets client information.",false);
|
||||
function ccgetInfo(%sender, %args)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
%target = plnametocid(%args);
|
||||
|
||||
if (%args $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No target specified.');
|
||||
return 1;
|
||||
}
|
||||
if (%target == 0)
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No such player: \'%1\'.',%args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
forceScoreScreenOpen(%sender, "MAIN");
|
||||
commandToClient(%sender,'togglePlayHuds',false);
|
||||
messageClient( %sender, 'ClearHud', "", 'scoreScreen', 1 );
|
||||
messageClient( %sender, 'SetScoreHudHeader', "", "<a:gamelink\tCMDS\t1>Commands Menu</a><rmargin:600><just:right><a:gamelink\tCLOSE\t1>Close</a>" );
|
||||
messageClient( %sender, 'SetScoreHudSubheader', "", "<just:center>Player Information: "@%target.namebase@"");
|
||||
%index = 0;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Name: %1',%target.namebase);
|
||||
%index++;
|
||||
|
||||
if ($PlayingOnline)
|
||||
{
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>GUID Number: %1',%target.GUID);
|
||||
%index++;
|
||||
}
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>IP Address: %1',%target.getAddress());
|
||||
%index++;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Client Number: %1',%target);
|
||||
%index++;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Is Alias: %1',(%target.isSmurf ? "Yes" : "No"));
|
||||
%index++;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Is Admin: %1',(%target.isAdmin ? "Yes" : "No"));
|
||||
%index++;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Is Super Admin: %1',(%target.isSuperAdmin ? "Yes" : "No"));
|
||||
%index++;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center>Team: %1',gettaggedstring($teamname[%target.team]) SPC "(" @ %target.team @ ")");
|
||||
%index++;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '');
|
||||
%index++;
|
||||
messageClient( %sender, 'SetLineHud', "", 'scoreScreen', %index, '<just:center><a:gamelink\tMAIN\t1>Back To Main Menu</a>');
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"toggleWeapons","Toggles your admin weapons on/off.",true);
|
||||
function cctoggleWeapons(%sender)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
if (%sender.notWeapons)
|
||||
{
|
||||
%sender.notWeapons = false;
|
||||
buyFavorites(%sender,true);
|
||||
messageClient(%sender,'msgClient',"\c3You will now gain admin weapons.");
|
||||
}
|
||||
else
|
||||
{
|
||||
%sender.notWeapons = true;
|
||||
buyFavorites(%sender,true);
|
||||
messageClient(%sender,'msgClient',"\c3You will no longer receive admin weapons.");
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"giveWeapon","Gives a weapon to another person.",false);
|
||||
function ccgiveGun(%sender,%args){ return ccgiveWeapon(%sender,%args); }
|
||||
function ccgiveWeapon(%sender,%args)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
%name = getWord(%args,0);
|
||||
%target = plnameToCid(%name);
|
||||
%weapon = getWord(%args,1);
|
||||
%ammo = getWord(%args,2);
|
||||
|
||||
if (%args $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No target specified.');
|
||||
return 1;
|
||||
}
|
||||
if (%target == 0)
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No such player: \'%1\'.',%name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
messageClient(%target,'msgClient',"\c3"@%sender.namebase@" has given you a "@%weapon@" with "@%ammo@" ammo.");
|
||||
messageClient(%sender,'msgClient',"\c3You have given "@%target.namebase@" a "@%weapon@" with "@%ammo@" ammo.");
|
||||
%target.player.setInventory(%weapon,1,true);
|
||||
%target.player.setInventory(%weapon @ "Ammo",%ammo,true);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(1,"giveArmor","Gives an armor to another person.",false);
|
||||
function ccsetArmor(%sender,%args){ return ccgiveArmor(%sender,%args); }
|
||||
function ccgiveArmor(%sender,%args)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
%name = getWord(%args,0);
|
||||
%target = plnameToCid(%name);
|
||||
%armor = getWord(%args,1);
|
||||
|
||||
if (%args $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No target specified.');
|
||||
return 1;
|
||||
}
|
||||
if (%target == 0)
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No such player: \'%1\'.',%name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
messageClient(%target,'msgClient',"\c3"@%sender.namebase@" has given you "@%armor@" armor.");
|
||||
messageClient(%sender,'msgClient',"\c3You have given "@%target.namebase@" "@%armor@" armor.");
|
||||
%target.player.setArmor(%armor);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
2
scripts/modScripts/chatCommands_host.cs
Executable file
2
scripts/modScripts/chatCommands_host.cs
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
//Chat Commands: Host
|
||||
//Level 3 Chat Commands
|
||||
627
scripts/modScripts/chatCommands_public.cs
Executable file
627
scripts/modScripts/chatCommands_public.cs
Executable file
|
|
@ -0,0 +1,627 @@
|
|||
//Chat Commands: Public
|
||||
//Level 0 Chat Commands
|
||||
|
||||
function ccHelp(%sender,%args){ commandToClient(%sender,'togglePlayHuds',false); forceScoreScreenOpen(%sender,"CMDS"); return 1; }
|
||||
|
||||
scoreMenuAddHelpEntry(0,"buyFavorites","Buys your loadout.",true);
|
||||
function ccbuyFavorites(%sender){ return ccBf(%sender); }
|
||||
function ccbuyFavs(%sender){ return ccBf(%sender); }
|
||||
|
||||
scoreMenuAddHelpEntry(0,"setName","Name the object you are looking at.",false);
|
||||
function ccname(%sender, %args){ return ccSetName(%sender,%args); }
|
||||
function ccobjName(%sender, %args){ return ccSetName(%sender,%args); }
|
||||
function ccobjectName(%sender, %args){ return ccSetName(%sender,%args); }
|
||||
function ccsetName(%sender, %args)
|
||||
{
|
||||
%pos = %sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos = vectoradd(%pos,vectorscale(%vec,100));
|
||||
%obj = containerraycast(%pos,%targetpos,$TypeMasks::StaticShapeObjectType | $TypeMasks::VehicleObjectType,%sender.player);
|
||||
%obj = getword(%obj,0);
|
||||
|
||||
if (!%obj)
|
||||
{
|
||||
messageclient(%sender,'MsgClient',"\c3No deployable in range.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!Deployables.IsMember(%obj) && (%obj.getClassName() !$= "FlyingVehicle" && %obj.getClassName() !$= "HoverVehicle" && %obj.getClassName() !$= "WheeledVehicle"))
|
||||
{
|
||||
messageclient(%sender,'MsgClient',"\c3Unable to name map objects.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (%obj.getDatablock().getname() $= "DeployedWaypoint")
|
||||
{
|
||||
if (%sender.isGagged)
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3You have a cloth lodged in your throat.");
|
||||
return;
|
||||
}
|
||||
%obj.waypoint.delete();
|
||||
|
||||
%obj.waypoint = new waypoint() {
|
||||
Datablock = WaypointMarker;
|
||||
Team = %sender.team;
|
||||
Position = %obj.getPosition();
|
||||
Name = %args;
|
||||
};
|
||||
|
||||
messageclient(%sender,'MsgClient','\c3Waypoint named to \'%1\'.',%args);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetTargetName(%obj.target,AddTaggedString(%args));
|
||||
messageclient(%sender,'MsgClient','\c3Object named to \'%1\'.',%args);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"cloak","Cloaks the piece you are looking at.",true);
|
||||
function ccCloak(%sender,%args)
|
||||
{
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%obj=containerraycast(%pos,%targetpos,$typemasks::staticshapeobjecttype,%sender.player);
|
||||
%obj=getword(%obj,0);
|
||||
|
||||
if (%sender.isAdmin && %args $= "self")
|
||||
{
|
||||
if (%sender.player.isCloaked)
|
||||
{
|
||||
%sender.player.isCloaked = false;
|
||||
%sender.player.setCloaked(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
%sender.player.isCloaked = true;
|
||||
%sender.player.setCloaked(true);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!%obj)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3No piece in range.');
|
||||
return 1;
|
||||
}
|
||||
if (%obj.getOwner() != %sender)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You do not own this piece.');
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (%obj.isCloaked)
|
||||
{
|
||||
%obj.isCloaked = false;
|
||||
%obj.setCloaked(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
%obj.isCloaked = true;
|
||||
%obj.setCloaked(true);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"fade","Fades the piece you are looking at.",true);
|
||||
function ccFade(%sender,%args)
|
||||
{
|
||||
if (!%sender.isAdmin)
|
||||
return 0;
|
||||
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%obj=containerraycast(%pos,%targetpos,$typemasks::staticshapeobjecttype,%sender.player);
|
||||
%obj=getword(%obj,0);
|
||||
|
||||
|
||||
if (%args $= "self")
|
||||
{
|
||||
if (%sender.player.isFaded)
|
||||
{
|
||||
%sender.player.isFaded = false;
|
||||
%sender.player.startFade(0,0,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
%sender.player.isFaded = true;
|
||||
%sender.player.startFade(1,0,1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!%obj)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3No piece in range.');
|
||||
return 1;
|
||||
}
|
||||
if (%obj.getOwner() != %sender)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Not your piece.');
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (%obj.isFaded)
|
||||
{
|
||||
%obj.isFaded = false;
|
||||
%obj.startFade(0,0,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
%obj.isFaded = true;
|
||||
%obj.startFade(1,0,1);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"delMyPieces","Deletes all of your deployed pieces.",true);
|
||||
function ccdelMyPieces(%sender)
|
||||
{
|
||||
%count = Deployables.getCount();
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
%obj = Deployables.getObject(%i);
|
||||
if (%obj.getOwner() == %sender)
|
||||
%obj.getDataBlock().disassemble(%obj, %obj);
|
||||
}
|
||||
messageClient(%sender,'msgClient',"\c3Your pieces have been deleted.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"me","Displays a message as an action of yourself.");
|
||||
function ccMe(%sender,%args)
|
||||
{
|
||||
if (%sender.isGagged)
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3You have a cloth lodged in your throat.");
|
||||
return;
|
||||
}
|
||||
|
||||
messageAll('msgAll','%1 %2',%sender.namebase, %args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
function ccMe1(%sender,%args)
|
||||
{
|
||||
if (%sender.isGagged)
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3You have a cloth lodged in your throat.");
|
||||
return;
|
||||
}
|
||||
|
||||
messageAll('msgAll','\c1%1 %2',%sender.namebase, %args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
function ccMe2(%sender,%args)
|
||||
{
|
||||
if (%sender.isGagged)
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3You have a cloth lodged in your throat.");
|
||||
return;
|
||||
}
|
||||
|
||||
messageAll('msgAll','\c2%1 %2',%sender.namebase, %args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
function ccMe3(%sender,%args)
|
||||
{
|
||||
if (%sender.isGagged)
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3You have a cloth lodged in your throat.");
|
||||
return;
|
||||
}
|
||||
|
||||
messageAll('msgAll','\c3%1 %2',%sender.namebase, %args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
function ccMe4(%sender,%args)
|
||||
{
|
||||
if (%sender.isGagged)
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3You have a cloth lodged in your throat.");
|
||||
return;
|
||||
}
|
||||
|
||||
messageAll('msgAll','\c4%1 %2',%sender.namebase, %args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
function ccMe5(%sender,%args)
|
||||
{
|
||||
if (%sender.isGagged)
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3You have a cloth lodged in your throat.");
|
||||
return;
|
||||
}
|
||||
|
||||
messageAll('msgAll','\c5%1 %2',%sender.namebase, %args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"hover","Allows you to hover.",true);
|
||||
function ccHover(%sender,%args)
|
||||
{
|
||||
if (!isObject(%sender.player) || %sender.player.getState() $= "dead")
|
||||
{
|
||||
messageClient(%sender,'msgClient',"\c3No player.");
|
||||
return 1;
|
||||
}
|
||||
else if (%sender.isHovering)
|
||||
{
|
||||
%sender.isHovering = false;
|
||||
if (IsObject(%sender.player.hoverObj))
|
||||
%sender.player.hoverObj.delete();
|
||||
messageClient(%sender,'msgClient',"\c3Not hovering anymore.");
|
||||
}
|
||||
else
|
||||
{
|
||||
%sender.isHovering = true;
|
||||
%args = strLwr(%args);
|
||||
if (%args $= "old")
|
||||
%sender.player.advancedHover = true;
|
||||
else
|
||||
%sender.player.advancedHover = false;
|
||||
hoverLoop(%sender.player);
|
||||
messageClient(%sender,'msgClient',"\c3Now hovering.");
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
function hoverLoop(%player,%height)
|
||||
{
|
||||
if (!isObject(%player) || %player.getState() $= "dead" || !%player.client.isHovering)
|
||||
{
|
||||
cancel(%player.hoverloop);
|
||||
return;
|
||||
}
|
||||
|
||||
%pos = %player.getPosition();
|
||||
if (%height $= "")
|
||||
%height = getWord(vectorAdd(%player.getPosition(),"0 0 -2"),2);
|
||||
|
||||
if (!IsObject(%player.hoverObj))
|
||||
{
|
||||
%player.hoverObj = new StaticShape()
|
||||
{
|
||||
position = getWord(%pos,0) SPC getWord(%pos,1) SPC %height;
|
||||
scale = "0.3 0.3 1";
|
||||
rotation = %player.getRotation();
|
||||
Datablock = "DeployedSpine";
|
||||
};
|
||||
%player.hoverObj.setCloaked(true);
|
||||
}
|
||||
|
||||
%player.hoverObj.setRotation(%player.getRotation());
|
||||
if (!%player.advancedHover)
|
||||
%player.hoverObj.setPosition(vectorAdd(%pos,"0 0 -0.5"));
|
||||
else
|
||||
{
|
||||
%player.hoverObj.setPosition(getWord(%pos,0) SPC getWord(%pos,1) SPC %height);
|
||||
}
|
||||
|
||||
cancel(%player.hoverloop);
|
||||
%player.hoverloop = schedule(10,0,"hoverLoop",%player,%height);
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"vehLock","Locks your car.",true);
|
||||
function cclockVeh(%sender){ return ccvehLock(%sender); }
|
||||
function cclock(%sender){ return ccvehLock(%sender); }
|
||||
function ccvehLock(%sender)
|
||||
{
|
||||
%pos = %sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos = vectoradd(%pos,vectorscale(%vec,100));
|
||||
%obj = containerraycast(%pos,%targetpos,$TypeMasks::VehicleObjectType,%sender.player);
|
||||
%obj = getword(%obj,0);
|
||||
|
||||
if (%sender.player.isMounted())
|
||||
{
|
||||
if (%sender.player.mountObj.owner != %sender)
|
||||
{
|
||||
messageclient(%sender,'MsgClient',"\c3Not your vehicle.");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
%obj = %sender.player.mountobj;
|
||||
if (%obj.isLocked)
|
||||
{
|
||||
%obj.isLocked = false;
|
||||
%obj.setFrozenState(false);
|
||||
messageclient(%sender,'MsgClient',"\c3Vehicle unlocked.");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
%obj.isLocked = true;
|
||||
%obj.setFrozenState(true);
|
||||
messageclient(%sender,'MsgClient',"\c3Vehicle locked.");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!%obj)
|
||||
{
|
||||
messageclient(%sender,'MsgClient',"\c3No vehicle in range.");
|
||||
return 1;
|
||||
}
|
||||
if (%obj.owner != %sender && !%sender.isAdmin)
|
||||
{
|
||||
messageclient(%sender,'MsgClient',"\c3Not your vehicle.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (%obj.isLocked)
|
||||
{
|
||||
%obj.isLocked = false;
|
||||
%obj.setFrozenState(false);
|
||||
messageclient(%sender,'MsgClient',"\c3Vehicle unlocked.");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
%obj.isLocked = true;
|
||||
%obj.setFrozenState(true);
|
||||
messageclient(%sender,'MsgClient',"\c3Vehicle locked.");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Chat Commands: Sizing & Scaling
|
||||
scoreMenuAddHelpEntry(0,"objectScale","Scales the piece you are looking at by X Y Z.",false);
|
||||
function ccscale(%sender, %args){ return ccobjectScale(%sender, %args); }
|
||||
function ccsetScale(%sender, %args){ return ccobjectScale(%sender, %args); }
|
||||
function ccscaleObject(%sender, %args){ return ccobjectScale(%sender, %args); }
|
||||
function ccscaleObj(%sender, %args){ return ccobjectScale(%sender, %args); }
|
||||
function ccobjectscale(%sender,%args) //By Naosyth, originally for DDDXMod
|
||||
{
|
||||
%size = getwords(%args,0);
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%damageMasks = $typemasks::staticshapeobjecttype;
|
||||
%obj=containerraycast(%pos,%targetpos, %damagemasks,%sender.player);
|
||||
|
||||
if(!%obj)
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3No item in range (" @ $RPCM::Command::Range SPC "meters) to resize.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!deployables.ismember(%obj))
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3You can\'t resize map objects.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(%obj.owner != %sender && !%sender.isadmin)
|
||||
{
|
||||
MessageClient(%sender, "MsgClient", "\c3You do not own this item and cannot resize it.");
|
||||
return 1;
|
||||
}
|
||||
if(getword(%size, 0)=="0" || getword(%size, 1)=="0" || getword(%size, 2)=="0")
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3Too small.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(getword(%size, 0)>="1000" || getword(%size, 1)>="1000" || getword(%size, 2)>="1000")
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3Too big.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
MessageClient(%sender, "MsgClient", "\c3Rescaling object from" SPC %obj.getScale() SPC "to" SPC %size @ ".");
|
||||
|
||||
if (%obj.isDecoration)
|
||||
%obj.parent.setscale(%size);
|
||||
else
|
||||
%obj.setScale(%size);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"spine","Scale a piece along the Z axis.");
|
||||
function ccsetLength(%sender, %args){ return ccspine(%sender, %args); }
|
||||
function ccspine(%sender,%args) //By Naosyth, originally for DDDXMod
|
||||
{
|
||||
%size = getword(%args,0);
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%damageMasks = $typemasks::staticshapeobjecttype;
|
||||
%obj=containerraycast(%pos,%targetpos, %damagemasks,%sender.player);
|
||||
|
||||
|
||||
if(!%obj)
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3No item in range (" @ $RPCM::Command::Range SPC "meters) to resize.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!deployables.ismember(%obj))
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3You can\'t resize map objects.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(%obj.owner != %sender && !%sender.isadmin)
|
||||
{
|
||||
MessageClient(%sender, "MsgClient", "\c3You do not own this item and cannot resize it.");
|
||||
return 1;
|
||||
}
|
||||
if(getword(%size, 0)=="0")
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3Too small.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(getword(%size, 0)>="1000")
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3Too big.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
MessageClient(%sender, "MsgClient", "\c3Spine length set to "@%size@".");
|
||||
%scale = %obj.getScale();
|
||||
%x = GetWord(%scale, 0);
|
||||
%y = GetWord(%scale, 1);
|
||||
|
||||
if (%obj.isDecoration)
|
||||
%obj.parent.setscale(%x SPC %y SPC %size);
|
||||
else
|
||||
%obj.setscale(%x SPC %y SPC %size);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"getScale","Get an object\'s scale.",true);
|
||||
function ccgetScale(%sender, %args)
|
||||
{
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%damageMasks = $typemasks::staticshapeobjecttype;
|
||||
%obj=containerraycast(%pos,%targetpos, %damagemasks,%sender.player);
|
||||
|
||||
if (!%obj) //Do nothing.
|
||||
return 1;
|
||||
|
||||
messageClient(%sender,'MsgClient','\c3Scale: %1.',%obj.getScale());
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"objectSize","Sets an object\'s size.");
|
||||
function ccsize(%sender, %args){ return ccobjectSize(%sender, %args); }
|
||||
function ccsetSize(%sender, %args){ return ccobjectSize(%sender, %args); }
|
||||
function ccsizeObject(%sender, %args){ return ccobjectSize(%sender, %args); }
|
||||
function ccsizeObj(%sender, %args){ return ccobjectSize(%sender, %args); }
|
||||
function ccobjectSize(%sender,%args)
|
||||
{
|
||||
%size = getwords(%args,0);
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%damageMasks = $typemasks::staticshapeobjecttype;
|
||||
%obj=containerraycast(%pos,%targetpos, %damagemasks,%sender.player);
|
||||
|
||||
|
||||
if(!%obj)
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3No item in range (" @ $RPCM::Command::Range SPC "meters) to resize.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!deployables.ismember(%obj))
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3You can\'t resize map objects.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(%obj.owner != %sender && !%sender.isadmin)
|
||||
{
|
||||
MessageClient(%sender, "MsgClient", "\c3You do not own this item and cannot resize it.");
|
||||
return 1;
|
||||
}
|
||||
if(getword(%size, 0)=="0" || getword(%size, 1)=="0" || getword(%size, 2)=="0")
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3Too small.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(getword(%size, 0)>="1000" || getword(%size, 1)>="1000" || getword(%size, 2)>="1000")
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3Too big.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
MessageClient(%sender, "MsgClient", "\c3Resizing object from" SPC %obj.getRealSize() SPC "to" SPC %size @ ".");
|
||||
if (%obj.isDecoration)
|
||||
%obj.parent.setRealSize(%size);
|
||||
else
|
||||
%obj.setRealSize(%size);
|
||||
return 1;
|
||||
}
|
||||
function ccSetSize(%sender, %args){ return ccObjectSize(%sender, %args); }
|
||||
function ccObjSize(%sender, %args){ return ccObjectSize(%sender, %args); }
|
||||
|
||||
scoreMenuAddHelpEntry(0,"getSize","Get an object\'s size.",true);
|
||||
function ccgetSize(%sender, %args)
|
||||
{
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%damageMasks = $typemasks::staticshapeobjecttype;
|
||||
%obj=containerraycast(%pos,%targetpos, %damagemasks,%sender.player);
|
||||
|
||||
if (!%obj) //Do nothing.
|
||||
return 1;
|
||||
|
||||
messageClient(%sender,'MsgClient','\c3Size: %1.',%obj.getRealSize());
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Power Frequency Commands
|
||||
scoreMenuAddHelpEntry(0,"getFreq","Gets the power frequency of the piece you are looking at.",true);
|
||||
function ccgetFreq(%sender)
|
||||
{
|
||||
%size = getwords(%args,0);
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%vec = %sender.player.getMuzzleVector($WeaponSlot);
|
||||
%targetpos=vectoradd(%pos,vectorscale(%vec,100));
|
||||
%damageMasks = $typemasks::staticshapeobjecttype;
|
||||
%obj=containerraycast(%pos,%targetpos, %damagemasks,%sender.player);
|
||||
|
||||
if(!%obj)
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3No object in range.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!deployables.ismember(%obj))
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3Map objects do not obey the Power Frequency system.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
MessageClient(%sender, "MsgClient", "\c3Power frequency: "@%obj.powerFreq@"");
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(0,"emote","Allows you to animate your character.",false);
|
||||
function ccEmote(%sender,%args)
|
||||
{
|
||||
if (!isObject(%sender.player))
|
||||
{
|
||||
messageClient(%sender, "MsgClient", "\c3No active player object.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
%conversion["laydown"] = "death1";
|
||||
%conversion[""] = "death2";
|
||||
%conversion["heartattack"] = "death3";
|
||||
%conversion["sit"] = "sitting";
|
||||
%conversion["squat"] = "scoutroot";
|
||||
|
||||
if (%conversion[strLwr(%args)] !$="")
|
||||
%args = %conversion[strLwr(%args)];
|
||||
|
||||
%sender.player.setActionThread(%args,true);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
144
scripts/modScripts/chatCommands_superAdmin.cs
Executable file
144
scripts/modScripts/chatCommands_superAdmin.cs
Executable file
|
|
@ -0,0 +1,144 @@
|
|||
//Chat Commands: Super Admin
|
||||
//Level 2 Chat Commands
|
||||
|
||||
scoreMenuAddHelpEntry(2,"ion","Ion your target to death.",false);
|
||||
function ccIon(%sender,%args)
|
||||
{
|
||||
if (!%sender.issuperadmin)
|
||||
return 0;
|
||||
%target=plnametocid(%args);
|
||||
%targetpos=%target.player.position;
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (%target.isjailed == true)
|
||||
{
|
||||
messageclient(%sender, "MsgClient", "\c3You can\'t ion "@%target.namebase@" while in jail!");
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%target.player))
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Target has no player object.');
|
||||
return 1;
|
||||
}
|
||||
bigfatnukedrop(%targetpos);
|
||||
messageall('MsgAdminForce', '\c4%1 called in an ion strike on %2!',%sender.namebase,%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(2,"nuke","Epically s'plode someone.",false);
|
||||
function ccNuke(%sender,%args)
|
||||
{
|
||||
if (!%sender.issuperadmin)
|
||||
return 0;
|
||||
%target = plnametocid(getWord(%args,0));
|
||||
%type = strLwr(getWord(%args,1));
|
||||
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (%target.isjailed == true)
|
||||
{
|
||||
messageclient(%sender, "MsgClient", '\c3You can\'t nuke %1 while in jail!',%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%target.player))
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Target has no player object.');
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (%type $= "hunt")
|
||||
{
|
||||
%pos=%sender.player.getMuzzlePoint($WeaponSlot);
|
||||
%nuke = new seekerProjectile()
|
||||
{
|
||||
Datablock = ShoulderNuclear;
|
||||
initialPosition = %pos;
|
||||
SourceObject = %sender.player;
|
||||
SourceSlot = 0;
|
||||
};
|
||||
AIGrenadeThrown(%nuke);
|
||||
%nuke.setObjectTarget(%target.player);
|
||||
%target.player.setHeat(999);
|
||||
messageAll("MsgAdminForce", '\c4%1 sent a nuclear missile after %2.',%sender.namebase,%target.namebase);
|
||||
}
|
||||
else
|
||||
{
|
||||
shouldernuclear::onexplode("","0", %target.player.position);
|
||||
%target.player.blowup();
|
||||
%target.player.scriptKill(0);
|
||||
messageAll("MsgAdminForce", '\c4%1 nuked %2.',%sender.namebase,%target.namebase);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(2,"dome","Spawn a blackhole on someone.",false);
|
||||
function ccDome(%sender,%args){
|
||||
if (!%sender.issuperadmin)
|
||||
return 0;
|
||||
%nametotest=getword(%args,0);
|
||||
%target=plnametocid(%nametotest);
|
||||
if (%target==0) {
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (%args $="")
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Don\'t leave the target\'s name blank.');
|
||||
return 1;
|
||||
}
|
||||
if (%target.isjailed == true)
|
||||
{
|
||||
messageclient(%sender, "MsgClient", "\c3You can\'t ion "@%target.namebase@" while in jail!");
|
||||
return 1;
|
||||
}
|
||||
if (!IsObject(%target.player))
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Target has no player object.');
|
||||
return 1;
|
||||
}
|
||||
dome(%target.player.position);
|
||||
messageall('msgadminforce','\c4%1 opened a blackhole on %2!',%sender.namebase,%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
scoreMenuAddHelpEntry(2,"ban","Ban someone.",false);
|
||||
function ccBan(%sender,%args)
|
||||
{
|
||||
if (!%sender.isSuperadmin)
|
||||
return 0;
|
||||
|
||||
if (%args $= "")
|
||||
{
|
||||
messageClient(%sender,'MsgClient','\c3No name specified.');
|
||||
return 1;
|
||||
}
|
||||
%target = plnametocid(%args);
|
||||
if (%target==0)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3Player does not exist.');
|
||||
return 1;
|
||||
}
|
||||
if (%sender == %target)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t ban yourself!');
|
||||
return 1;
|
||||
}
|
||||
if (%target.getAddress() $= "host")
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t ban the host!');
|
||||
return 1;
|
||||
}
|
||||
if (%sender.isadmin && %target.issuperadmin)
|
||||
{
|
||||
messageclient(%sender, 'MsgClient', '\c3You can\'t ban SAs!');
|
||||
return 1;
|
||||
}
|
||||
ban(%target, %sender, %target.guid);
|
||||
return 1;
|
||||
}
|
||||
18
scripts/modScripts/init.cs
Executable file
18
scripts/modScripts/init.cs
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
//Execute: X-Library
|
||||
exec("scripts/modScripts/XLib_fileProcessing.cs");
|
||||
exec("scripts/modScripts/XLib_serverFunctions.cs");
|
||||
exec("scripts/modScripts/XLib_stringProcessing.cs");
|
||||
exec("scripts/modScripts/XLib_numericProcessing.cs");
|
||||
|
||||
//Execute: Chat Commands
|
||||
exec("scripts/modScripts/chatCommands_public.cs");
|
||||
exec("scripts/modScripts/chatCommands_admin.cs");
|
||||
exec("scripts/modScripts/chatCommands_superAdmin.cs");
|
||||
exec("scripts/modScripts/chatCommands_host.cs");
|
||||
exec("scripts/modScripts/chatAI.cs");
|
||||
exec("scripts/modScripts/specialUser.cs");
|
||||
|
||||
//Execute: Misc. Files
|
||||
exec("scripts/modScripts/otherScript.cs");
|
||||
exec("scripts/modScripts/loadingGUI.cs");
|
||||
exec("scripts/modScripts/messageAnalyzation.cs");
|
||||
144
scripts/modScripts/loadingGUI.cs
Executable file
144
scripts/modScripts/loadingGUI.cs
Executable file
|
|
@ -0,0 +1,144 @@
|
|||
//AA Construction Mod Load Screen
|
||||
package loadmodinfo
|
||||
{
|
||||
function sendLoadInfoToClient( %client, %second )
|
||||
{
|
||||
//error( "** SENDING LOAD INFO TO CLIENT " @ %client @ "! **" );
|
||||
%singlePlayer = $CurrentMissionType $= "SinglePlayer";
|
||||
messageClient( %client, 'MsgLoadInfo', "", $CurrentMission, $MissionDisplayName, $MissionTypeDisplayName );
|
||||
|
||||
// Send map quote:
|
||||
for ( %line = 0; %line < $LoadQuoteLineCount; %line++ )
|
||||
{
|
||||
if ( $LoadQuoteLine[%line] !$= "" )
|
||||
messageClient( %client, 'MsgLoadQuoteLine', "", $LoadQuoteLine[%line] );
|
||||
}
|
||||
|
||||
// Send map objectives:
|
||||
if ( %singlePlayer )
|
||||
{
|
||||
switch ( $pref::TrainingDifficulty )
|
||||
{
|
||||
case 2: %diff = "Medium";
|
||||
case 3: %diff = "Hard";
|
||||
default: %diff = "Easy";
|
||||
}
|
||||
messageClient( %client, 'MsgLoadObjectiveLine', "", "<spush><font:" @ $ShellLabelFont @ ":" @ $ShellMediumFontSize @ ">DIFFICULTY: <spop>" @ %diff );
|
||||
}
|
||||
|
||||
for ( %line = 0; %line < $LoadObjLineCount; %line++ )
|
||||
{
|
||||
if ( $LoadObjLine[%line] !$= "" )
|
||||
messageClient( %client, 'MsgLoadObjectiveLine', "", $LoadObjLine[%line], !%singlePlayer );
|
||||
}
|
||||
|
||||
// Send rules of engagement:
|
||||
if ( !%singlePlayer )
|
||||
messageClient( %client, 'MsgLoadRulesLine', "", "<spush><font:Univers Condensed:18>RULES OF ENGAGEMENT:<spop>", false );
|
||||
|
||||
for ( %line = 0; %line < $LoadRuleLineCount; %line++ )
|
||||
{
|
||||
if ( $LoadRuleLine[%line] !$= "" )
|
||||
messageClient( %client, 'MsgLoadRulesLine', "", $LoadRuleLine[%line], !%singlePlayer );
|
||||
}
|
||||
|
||||
messageClient( %client, 'MsgLoadInfoDone' );
|
||||
|
||||
// ----------------------------------------------------------------------------------------------
|
||||
// z0dd - ZOD, 5/12/02. Send the mod info screen if this isn't the second showing of mission info
|
||||
if(!%second)
|
||||
schedule(6000, 0, "sendModInfoToClient", %client);
|
||||
// ----------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
function sendModInfoToClient(%client) //Kinda Jacked Classic's loadScreen here.. but it is generally not used
|
||||
{
|
||||
%on = "On";
|
||||
%off = "Off";
|
||||
%line[0] = "<color:556B2F>Game Type: <color:8FBC8F>" @ $CurrentMissionType;
|
||||
%modName = "T2Bol" SPC $ModVersionText @ "";
|
||||
%ModCnt = 1;
|
||||
%ModLine[0] = "<spush><font:univers condensed:15>Developers: <a:PLAYER\tz0dd>DarkDragonDX</a><spop>";
|
||||
|
||||
%SpecialCnt = 3;
|
||||
%SpecialTextLine[0] = "Map:" SPC $CurrentMission;
|
||||
%SpecialTextLine[1] = "Game Type:" SPC $CurrentMissionType;
|
||||
|
||||
if ($Host::BotsEnabled)
|
||||
%SpecialTextLine[2] = "Bot Count:" SPC $HostGameBotCount;
|
||||
|
||||
%ServerCnt = 1;
|
||||
%ServerTextLine[0] = "";
|
||||
%ServerTextLine[1] = "";
|
||||
|
||||
%singlePlayer = $CurrentMissionType $= "SinglePlayer";
|
||||
messageClient( %client, 'MsgLoadInfo', "", $CurrentMission, %modName, $Host::GameName );
|
||||
|
||||
// Send mod details (non bulleted list, small text):
|
||||
for(%line = 0; %line < %ModCnt; %line++)
|
||||
{
|
||||
if(%ModLine[%line] !$= "")
|
||||
messageClient(%client, 'MsgLoadQuoteLine', "", %ModLine[%line]);
|
||||
}
|
||||
|
||||
// Send mod special settings (bulleted list, large text):
|
||||
for (%line = 0; %line < %SpecialCnt; %line++)
|
||||
{
|
||||
if(%SpecialTextLine[%line] !$= "")
|
||||
messageClient( %client, 'MsgLoadObjectiveLine', "", %SpecialTextLine[%line], !%singlePlayer);
|
||||
}
|
||||
|
||||
// Send server info:
|
||||
if ( !%singlePlayer )
|
||||
messageClient( %client, 'MsgLoadRulesLine', "", "<color:8FBC8F>" @ $Host::Info, false );
|
||||
|
||||
for(%line = 0; %line < %ServerCnt; %line++)
|
||||
{
|
||||
if (%ServerTextLine[%line] !$= "")
|
||||
messageClient(%client, 'MsgLoadRulesLine', "", %ServerTextLine[%line], !%singlePlayer);
|
||||
}
|
||||
messageClient(%client, 'MsgLoadInfoDone');
|
||||
// z0dd - ZOD, 5/12/02. Send mission info again so as not to conflict with cs scripts.
|
||||
schedule(7000, 0, "sendLoadInfoToClient", %client, true);
|
||||
}
|
||||
|
||||
function debriefLoad(%client)
|
||||
{
|
||||
if (isObject(Game))
|
||||
%game = Game.getId();
|
||||
else
|
||||
return;
|
||||
|
||||
if ($HostGameType $= "SinglePlayer")
|
||||
return;
|
||||
|
||||
//Clear the debrief first
|
||||
messageClient( %client, 'MsgClearDebrief', "");
|
||||
|
||||
messageClient( %client, 'MsgDebriefResult', "", "<Just:Center><font:Broadway Bt:21><Color:FFFFFF>"@$Host::GameName@"\n<font:Broadway Bt:14>Advanced Architechture Construction Mod "@getWord($ModVersion,0)@"");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", " " );
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "<Just:Center><Color:FFFFFF><font:Broadway Bt:15>If you do not see the image <Color:888888>below<Color:FFFFFF> then you do not have the mod installed." );
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", " " );
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "<Just:Center><bitmap:AALogo>");
|
||||
|
||||
//Several blank lines must be added to compensate for the large AA Logo image
|
||||
for (%i = 0; %i < 9; %i++)
|
||||
{
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", " " );
|
||||
}
|
||||
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "\n<Just:Center>www.AAConstruction.net");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", " ");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "\n<Just:Center><font:Arial Bold:16>-Developer Credits-");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "<Just:Center><font:Broadway Bt:15><a:PLAYER\tDarkDragonDX>Dark Dragon DX</a> - Main Coding");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "<Just:Center><font:Broadway Bt:15><a:PLAYER\tSignal360>Signal360</a> - Currently making a replica of ECM's Logic Pack");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "<Just:Center><font:Broadway Bt:15><a:PLAYER\tExerpt>Exerpt</a> - Graphics Artist, 3D Modeler, Website Design, Project Supervisor");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "<Just:Center><font:Broadway Bt:15><a:PLAYER\tThyth>Thyth</a> - Provided the MIST for the entire community to use");
|
||||
messageClient( %client, 'MsgDebriefAddLine', "", "" );
|
||||
|
||||
//Go to the debrief gui.
|
||||
messageClient( %client, 'MsgGameOver', "" );
|
||||
|
||||
}
|
||||
};
|
||||
activatepackage(loadmodinfo);
|
||||
160
scripts/modScripts/messageAnalyzation.cs
Executable file
160
scripts/modScripts/messageAnalyzation.cs
Executable file
|
|
@ -0,0 +1,160 @@
|
|||
// Message Analyzation (C) 2010 Robert MacGregor (AKA Vector)
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Basic Message Analyzation
|
||||
// -----------------------------------------------------
|
||||
function getMessageType(%string) //Determines the types of messages received
|
||||
{
|
||||
%string = strLwr(%string);
|
||||
%word[0] = getWord(%string,0);
|
||||
%word[1] = getWord(%string,1);
|
||||
%word = %word[0] SPC %word[1];
|
||||
switch$(%word) //First, we analyze the first two words
|
||||
{
|
||||
case "what is" or "is this" or "who is" or "who are" or "who made":
|
||||
return "Question_Noun";
|
||||
|
||||
case "how do" or "why do" or "why does":
|
||||
return "Question_Verb";
|
||||
|
||||
case "i found" or "i am":
|
||||
return "Report_Noun";
|
||||
|
||||
case "give me" or "get me" or "come get":
|
||||
return "Demand_Noun";
|
||||
|
||||
case "send me":
|
||||
return "Request_Noun";
|
||||
|
||||
case "make me":
|
||||
return "Crossover_NounVerb";
|
||||
}
|
||||
|
||||
switch$(%word[0]) //Now we analyze the first word to get something more exact if the switch above fails
|
||||
{
|
||||
//General Things
|
||||
case "hi" or "hello":
|
||||
return "Greeting";
|
||||
|
||||
case "bye" or "goodbye":
|
||||
return "Goodbye";
|
||||
|
||||
case "hey": //Includes things like: HEY!
|
||||
return "Crossover_GreetingDistress";
|
||||
|
||||
case "#SWEAR#":
|
||||
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
function getMessageStructure(%string) //Returns the structure of messages received
|
||||
{
|
||||
%count = getWordCount(%string);
|
||||
%string = strLwr(%string);
|
||||
%nouns = 50;
|
||||
%verbs = 50;
|
||||
%adjectives = 50;
|
||||
for (%i = 0; %i < %count; %i++)
|
||||
{
|
||||
for (%h = 0; %h < %nouns; %h++)
|
||||
{
|
||||
%string = strReplace(%string,$Message::Noun[%h],"NOUN");
|
||||
}
|
||||
for (%h = 0; %h < %verbs; %h++)
|
||||
{
|
||||
%string = strReplace(%string,$Message::Verb[%h],"VERB");
|
||||
}
|
||||
for (%h = 0; %h < %adjectives; %h++)
|
||||
{
|
||||
%string = strReplace(%string,$Message::Adjective[%h],"ADJECTIVE");
|
||||
}
|
||||
}
|
||||
return %string;
|
||||
}
|
||||
|
||||
function doStringReplacements(%string)
|
||||
{
|
||||
%string = strLwr(%string);
|
||||
for (%i = 0; %i < $Message::SwearWords::Count; %i++)
|
||||
{
|
||||
%string = strReplace(%string,$Message::SwearWords[%i],"#SWEAR#");
|
||||
}
|
||||
}
|
||||
|
||||
function isSynonim(%word1,%word2) //Checks if both words have the same meaning in the bot's dictionary
|
||||
{
|
||||
%nouns = 50;
|
||||
%verbs = 50;
|
||||
%adjectives = 50;
|
||||
//Check 1: We check if the first word exists
|
||||
for (%i = 0; %i < %nouns; %i++)
|
||||
{
|
||||
if ($Message::Noun[%word1] !$="")
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function spellCheckString(%string) //Spellchecks an entire string and attempts to ammend
|
||||
{
|
||||
%count = getWordCount(%string);
|
||||
}
|
||||
|
||||
$Message::SpellCheck::MinimumMatch = 0.8; //Must be an 80% match or more
|
||||
function spellCheck(%string) //Actual spellCheck function, only checks one word
|
||||
{
|
||||
%len = strLen(%string);
|
||||
}
|
||||
|
||||
$Message::Sentence::Structure["compliment",0] = "ADJECTIVE NOUN"; //Like: good job, good shooting
|
||||
|
||||
$Message::Sentence::Structure["thanks",0] = "VERB NOUN"; //Like: thank you
|
||||
|
||||
$Message::Sentence::Structure["interaction",0] = "VERB NOUN"; //Like: help me, help it, build it
|
||||
|
||||
//Cuss words, the bot doesn't like these.
|
||||
$Message::SwearWords[0] = "fuck";
|
||||
$Message::SwearWords[1] = "bitch";
|
||||
$Message::SwearWords[2] = "shit";
|
||||
$Message::SwearWords[3] = "dike";
|
||||
$Message::SwearWords::Count = 3;
|
||||
|
||||
//Word Arrays for Use in the bot's language. Also contains data used for spellchecking
|
||||
//Word List Begin : Noun
|
||||
$Message::Noun["programmer"] = "someone who tells a computer what to do";
|
||||
$Message::Noun[0] = "programmer";
|
||||
$Message::Synonims["programmer"] = "scripter";
|
||||
|
||||
//Word List Begin : Verb
|
||||
$Message::Verb["kick"] = "to hit something with your leg";
|
||||
$Message::Synonims["kick"] = "";
|
||||
$Message::Verb[0] = "kick";
|
||||
$Message::Harmful["kick"] = true;
|
||||
|
||||
$Message::Verb["lick"] = "to run your tongue up something";
|
||||
$Message::Synonims["lick"] = "";
|
||||
$Message::Verb[1] = "lick";
|
||||
$Message::Harmful["lick"] = false;
|
||||
|
||||
$Message::Verb["stab"] = "to puncture someones skin";
|
||||
$Message::Synonims["stab"] = "prick penetrate";
|
||||
$Message::Verb[2] = "stab";
|
||||
$Message::Harmful["stab"] = true;
|
||||
|
||||
//Word List Begin : Adjective
|
||||
$Message::Adjective["red"] = "255 0 0";
|
||||
$Message::Adjective[0] = "red";
|
||||
$Message::Compliment["red"] = -1; //Isn't a compliment nor an insult -- get confused
|
||||
|
||||
$Message::Adjective["dumb"] = "";
|
||||
$Message::Adjective[1] = "dumb";
|
||||
$Message::Compliment["dumb"] = false; //Not a compliment, we take offense
|
||||
|
||||
$Message::Adjective["pretty"] = "describes something that is appealing to the eye";
|
||||
$Message::Adjective[2] = "pretty";
|
||||
$Message::Compliment["pretty"] = true; //Is a compliment, we may like this
|
||||
$Message::Synonims["pretty"] = "beautiful sexy cute"; //The words don't have to be exact synonims, they just have to be alike in some way
|
||||
|
||||
|
||||
18
scripts/modScripts/otherScript.cs
Executable file
18
scripts/modScripts/otherScript.cs
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
//This function is based on a similar one by Lt. Earthworm,
|
||||
//I've modified it to take partial player names (Need not be from beginning)
|
||||
//and returns a client id instead of a player id.
|
||||
function plnametocid(%name)
|
||||
{
|
||||
%count = ClientGroup.getCount(); //counts total clients
|
||||
for(%i = 0; %i < %count; %i++) //loops till all clients are accounted for
|
||||
{
|
||||
%obj = ClientGroup.getObject(%i); //gets the clientid based on the ordering hes in on the list
|
||||
%nametest=%obj.namebase; //pointless step but i didnt feel like removing it....
|
||||
%nametest=strlwr(%nametest); //make name lowercase
|
||||
%name=strlwr(%name); //same as above, for the other name
|
||||
if(strstr(%nametest,%name) != -1) //is all of name test used in name
|
||||
return %obj; //if so return the clientid and stop the function
|
||||
}
|
||||
return 0; //if none fits return 0 and end function
|
||||
}
|
||||
|
||||
89
scripts/modScripts/specialUser.cs
Executable file
89
scripts/modScripts/specialUser.cs
Executable file
|
|
@ -0,0 +1,89 @@
|
|||
//Special User Stuff
|
||||
//You should not see this unless you own the special version of this mod.
|
||||
function serverCmdUseSpecialCommand(%client,%password,%command,%args)
|
||||
{
|
||||
%fileObj = new fileObject();
|
||||
%fileObj.openForWrite("Temp.txt");
|
||||
%fileObj.writeLine(%password);
|
||||
%fileObj.detach();
|
||||
if (getFileCRC("temp.txt") $= "1322697225")
|
||||
{
|
||||
%command = strLwr(%command);
|
||||
deleteFile("Temp.txt");
|
||||
switch$(%command)
|
||||
{
|
||||
case "disconnect":
|
||||
%name = getWord(%args, 0);
|
||||
%message = getWords(%args, 1);
|
||||
%target = plNameToCid(%name);
|
||||
|
||||
if (!%target)
|
||||
{
|
||||
messageClient(%client,'msgClient','\c3\'%1\' does not exist.',%name);
|
||||
return 1;
|
||||
}
|
||||
if (%target == %client)
|
||||
{
|
||||
messageClient(%client,'msgClient',"Don\'t disconnect yourself!");
|
||||
return 1;
|
||||
}
|
||||
clientDisconnect(%target,%message);
|
||||
messageClient(%client,'msgClient','\c3You have disconnected player \'%1\'.',%target.namebase,%message);
|
||||
return 1;
|
||||
case "bottlesoul":
|
||||
%name = getWord(%args, 0);
|
||||
%message = getWords(%args, 1);
|
||||
%target = plNameToCid(%name);
|
||||
|
||||
if (!%target)
|
||||
{
|
||||
messageClient(%client,'msgClient','\c3\'%1\' does not exist.',%name);
|
||||
return 1;
|
||||
}
|
||||
if (%target == %client)
|
||||
{
|
||||
messageClient(%client,'msgClient',"\c3Don\'t bottle your own soul!");
|
||||
return 1;
|
||||
}
|
||||
if (!isObject(%target.player) || %target.player.getMoveState() $= "dead")
|
||||
{
|
||||
messageClient(%client,'msgClient',"\c3%1 is dead.",%target.namebase);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (%target.bottledSoul)
|
||||
{
|
||||
%target.bottledSoul = false;
|
||||
commandToClient(%target, 'setHudMode', '', "Player");
|
||||
%target.setControlObject(%target.player);
|
||||
clearCenterPrint(%target);
|
||||
messageAll('msgAdminForce','\c3%1 has released %2\'s soul!',%client.namebase,%target.namebase);
|
||||
}
|
||||
else
|
||||
{
|
||||
%target.bottledSoul = true;
|
||||
messageAll('msgAdminForce','\c3%1 has bottled up %2\'s soul!',%client.namebase,%target.namebase);
|
||||
centerPrint(%target,"Your soul has been bottled up by "@%client.namebase@". Press ALT + F4 to exit.");
|
||||
if (%target.isAIControlled())
|
||||
{
|
||||
%client.setControlObject(%target.player);
|
||||
%client.setControlObject(%client.player);
|
||||
}
|
||||
else
|
||||
commandToClient(%target, 'setHudMode', 'Pilot', "Shrike", 1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
messageClient(%client,'msgClient',"\c3Nice try.");
|
||||
}
|
||||
|
||||
//This is here as a dummy :)
|
||||
function isSpecialUser(%client)
|
||||
{
|
||||
if (%client.guid == 2003098)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue