2013-02-01 20:45:22 +00:00
//==============================================================================
// Admin Commands
//==============================================================================
// Command by Eolk. Modified by Blnukem.
function ccset ( % sender , % args )
{
% base = strlwr ( getword ( % args , 0 ) ) ;
% param = getword ( % args , 1 ) ;
switch $ ( % base )
{
case "canzombie" :
if ( % sender . isAdmin )
{
if ( % param ! = 1 & & % param ! = 0 )
{
messageClient ( % sender , "MsgNo" , "\c2Invalid parameters. Use 1 for canZombie to be on, use 0 for canZombie to be off." ) ;
return ;
}
$ Host : : canZombie = % param ;
messageAll ( ' MsgAdminForce ' , "\c1" @ % sender . nameBase @" \c2changed \c5HUMAN ZOMBIES \c2to \c5" @ % param @"\c2." ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::canZombie (human zombies) changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : canZombie @" via ccSet" ) ;
}
case "joinpw" :
if ( % sender . isSuperAdmin )
{
if ( % param $ = "" )
{
messageClient ( % sender , "MsgNo" , "\c2No Changes. You did not supply a value. Use \"remove\" to remove join pw." ) ;
return ;
}
if ( strlwr ( % param ) $ = "remove" )
$ Host : : Password = "" ;
else
$ Host : : Password = % param ;
messageAll ( ' MsgAdminForce ' , "\c1" @ % sender . nameBase @" \c2changed \c5JOIN PASSWORD\c2." ) ;
messageClient ( % sender , "MsgYes" , "\c2Join password changed to " @ $ Host : : Password ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::Password (server password) changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : Password @" via ccSet" ) ;
}
case "maxplyrs" :
if ( ! % sender . isSuperAdmin )
return ;
% failed = false ;
for ( % i = 0 ; % i < strlen ( % param ) ; % i + + )
{
% temp = getsubstr ( % param , % i , 1 ) ;
if ( % temp ! $ = "1" & & % temp ! $ = "2" & & % temp ! $ = "3" & & % temp ! $ = "4" & & % temp ! $ = "5" & & % temp ! $ = "6" & & % temp ! $ = "7" & & % temp ! $ = "8" & & % temp ! $ = "9" & & % temp ! $ = "0" )
{
% failed = true ;
break ;
}
}
if ( % param < 0 )
% failed = true ;
if ( % failed = = true )
{
messageClient ( % sender , "MsgNo" , "\c2No changes. You supplied an invalid number. Must be over 0." ) ;
return ;
}
$ Host : : MaxPlayers = % param ;
messageAll ( ' MsgAdminForce ' , "\c1" @ % sender . nameBase @" \c2changed \c5MAX PLAYERS\c2 to \c5" @ $ Host : : MaxPlayers @"\c2." ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::MaxPlayers (maximum players allowed by the server) changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : MaxPlayers @" via ccSet" ) ;
case "restrict" :
if ( % sender . isAdmin )
{
% target = plnametocid ( % param ) ;
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "MsgNo" , "\c2Unable to find target." ) ;
return ;
}
if ( % target . isAdmin )
{
messageClient ( % sender , "MsgNo" , "\c2Cannot do this to admins." ) ;
return ;
}
if ( ! % target . CannotDeploy )
{
% target . CannotDeploy = 1 ;
messageClient ( % sender , "MsgYes" , "\c2" @ % target . nameBase @"'s ability to deploy things has been revoked.~wfx/misc/diagnostic_on.wav" ) ;
echo ( % sender . namebase @" (" @ % sender @") disabled " @ % target . nameBase @"'s (" @ % target @") ability to deploy objects" ) ;
}
else
{
% target . CannotDeploy = 0 ;
messageClient ( % sender , "MsgYes" , "\c2" @ % target . nameBase @" is free to deploy things again.~wfx/misc/diagnostic_on.wav" ) ;
echo ( % sender . namebase @" (" @ % sender @") enabled " @ % target . nameBase @"'s (" @ % target @") ability to deploy objects" ) ;
}
}
case "noinfection" :
if ( % sender . isAdmin )
{
if ( % param ! = 0 & & % param ! = 1 )
{
messageClient ( % sender , "MsgNo" , "\c2No changes. You supplied an invalid type. Use 1 for on, use 0 for off." ) ;
return ;
}
$ Host : : NoInfection = % param ;
messageAll ( ' MsgAdminForce ' , "\c1" @ % sender . nameBase @" \c2changed \c5NO INFECTION \c2to \c5" @ % param @"\c2." ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::NoInfection (no infection) changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : NoInfection @" via ccSet" ) ;
}
case "autosave" :
if ( % sender . isSuperAdmin ) // SA
{
if ( % param ! = 1 & & % param ! = 0 )
{
messageClient ( % sender , "MsgNo" , "\c2Invalid parameters. Input 1 for start, input 0 for end." ) ;
return ;
}
if ( % param = = 1 )
if ( $ SaveBuilding : : TimerEnabled )
{
saveBuildingTimerOn ( ) ; // This resets.
messageAll ( ' MsgAdminForce ' , "\c2" @ % sender . nameBase @" has reset the autosave timer." ) ;
echo ( % sender . nameBase @" (" @ % sender @") has reset the autosave timer via ccSet" ) ;
}
else
{
saveBuildingTimer ( 0 , 1 , 0 , 0 ) ;
messageAll ( ' MsgAdminForce ' , "\c2" @ % sender . nameBase @" has enabled the autosave timer." ) ;
echo ( % sender . nameBase @" (" @ % sender @") has enabled the autosave timer via ccSet" ) ;
}
else
if ( $ SaveBuilding : : TimerEnabled )
{
saveBuildingTimerOff ( ) ;
messageAll ( ' MsgAdminForce ' , "\c2" @ % sender . nameBase @" has disabled the autosave timer." ) ;
echo ( % sender . nameBase @" (" @ % sender @") has disabled the autosave timer via ccSet" ) ;
}
else
messageClient ( % sender , "" , "\c2Cannot disable the autosave timer if it is already disabled!" ) ;
}
case "lockedteams" :
if ( % sender . isAdmin )
{
if ( % param ! = 1 & & % param ! = 0 )
{
messageClient ( % sender , "MsgNo" , "\c2Invalid parameters. Input 1 for lock, input 0 for unlock." ) ;
return ;
}
$ Host : : LockedTeams = % param ;
messageAll ( ' MsgAdminForce ' , "\c2" @ % sender . nameBase @" has changed locked teams to " @ % param @"." ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::LockedTeams (locked, unchangeable teams) has been changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : LockedTeams @" via ccSet" ) ;
}
case "sapass" :
if ( % sender . isSuperAdmin )
{
$ Host : : SuperAdminPassword = % param ;
messageClient ( % sender , "" , "\c2Super admin password changed to " @ % param ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::SuperAdminPassword (super admin password or SAD) has been changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : SuperAdminPassword @" via ccSet" ) ;
}
case "apass" :
if ( % sender . isSuperAdmin )
{
$ Host : : AdminPassword = % param ;
messageClient ( % sender , "" , "\c2Admin password changed to " @ % param ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::AdminPassword (admin password or AD) has been changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : AdminPassword @" via ccSet" ) ;
}
case "fairteams" :
if ( % sender . isAdmin )
{
if ( % param ! = 1 & & % param ! = 0 )
{
messageClient ( % sender , "MsgNo" , "\c2Invalid parameters. Input 1 for enabled, input 0 for disable." ) ;
return ;
}
$ Host : : FairTeams = % param ;
messageAll ( "" , "\c2" @ % sender . nameBase @" has changed Fair Teams to " @ % param @"." ) ;
export ( "$Host::*" , "prefs/ServerPrefs.cs" , false ) ;
echo ( "$Host::FairTeams (unbalanced team preventer) has been changed by " @ % sender . nameBase @" (" @ % sender @") to " @ $ Host : : FairTeams @" via ccSet" ) ;
}
default :
messageClient ( % sender , "MsgNo" , "\c2Invalid command. Valid commands are canzombie, zombieteam, joinpw, maxplyrs, restrict, zturrets" ) ;
messageClient ( % sender , "MsgNo" , "\c2noinfection, dir, lockedteams, sapass, apass, fairteams, and autosave" ) ;
}
}
// Command by Eolk.
function ccA ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
for ( % i = 0 ; % i < ClientGroup . getCount ( ) ; % i + + )
{
% cl = ClientGroup . getObject ( % i ) ;
if ( % cl . isAdmin )
messageClient ( % cl , ' MsgYes ' , "\c3[A]\c2" @ % sender . nameBase @": " @ % args ) ;
}
logEcho ( "[ADMIN CHAT]: " @ % sender . nameBase @": " @ % args ) ;
}
// Command by Eolk (honestly, even though it looks like someone else's code).
function ccCancelVote ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( Game . ScheduleVote $ = "" )
{
messageClient ( % sender , "MsgNo" , "\c2There is no vote to cancel!" ) ;
return ;
}
cancel ( Game . scheduleVote ) ;
Game . votingArgs = "" ;
Game . scheduleVote = "" ;
Game . kickClient = "" ;
clearVotes ( ) ;
messageAll ( ' closeVoteHud ' , "" ) ;
if ( % client . team ! = 0 )
clearBottomPrint ( % client ) ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @" \c2has cancelled the vote." ) ;
messageAll ( ' MsgVoteFailed ' , "" ) ;
logEcho ( % sender . nameBase @" (" @ % sender @") has cancelled the vote" ) ;
}
// Command by Eolk.
function ccBottomPrint ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( % args $ = "" )
{
messageClient ( % sender , ' MsgNo ' , "\c2Must supply text to display!" ) ;
return ;
}
% print = % args ;
% wave = strstr ( % args , "~w" ) ;
if ( % wave ! = - 1 )
% print = getsubstr ( % args , 0 , % wave ) ;
BottomprintAll ( % sender . nameBase @": " @ % print , 10 , 3 ) ;
messageAll ( "MsgAll" , "\c2" @ % sender . namebase @": \c4" @ % print @"~wgui/objective_Notification.wav" ) ;
logEcho ( "[BOTTOMPRINT]" @ % sender . nameBase @" (" @ % sender @"): " @ % args ) ;
}
// Command by Eolk. Modified by Blnukem
function ccCenterPrint ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( % args $ = "" )
{
messageClient ( % sender , ' MsgNo ' , "\c2Must supply text to display!" ) ;
return ;
}
% print = % args ;
% wave = strstr ( % args , "~w" ) ;
if ( % wave ! = - 1 )
% print = getsubstr ( % args , 0 , % wave ) ;
CenterprintAll ( % sender . nameBase @": " @ % print , 10 , 3 ) ;
messageAll ( "MsgAll" , "\c2" @ % sender . namebase @": \c4" @ % print @"~wgui/objective_Notification.wav" ) ;
logEcho ( "[BOTTOMPRINT]" @ % sender . nameBase @" (" @ % sender @"): " @ % args ) ;
}
// Eolk
function ccJailPlayer ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( ! $ Host : : Prison : : Enabled )
{
messageClient ( % sender , "MsgNo" , "\c2Prison is not enabled." ) ;
return ;
}
% target = plnametocid ( getword ( % args , 0 ) ) ;
% time = getword ( % args , 1 ) ;
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "MsgNo" , "\c2Target does not exist." ) ;
return ;
}
if ( ! isObject ( % target . player ) )
{
messageClient ( % sender , "MsgNo" , "\c2Target's player does not exist." ) ;
return ;
}
if ( ( % target . isAdmin & & ! % sender . isAdmin ) | | % target . isSuperAdmin )
{
messageClient ( % sender , "MsgNo" , "\c2You must outrank the target to jail them." ) ;
return ;
}
if ( % target = = % sender & & % target . isJailed & & ! % sender . isSuperAdmin )
{
messageClient ( % sender , "MsgNo" , "\c2Can only unjail yourself if you are of super admin status." ) ;
return ;
}
if ( % time > 600 )
% time = 600 ;
% test = % target . isJailed ;
JailPlayer ( % target , % target . isJailed , % time ) ;
if ( ! % test )
{
messageClient ( % target , "MsgAdminForce" , "\c2You have been sentenced to jail." ) ;
messageAllExcept ( % target , - 1 , "MsgAdminForce" , "\c3" @ % target . nameBase @" \c2has been sentenced to jail." ) ;
logEcho ( % target . nameBase @" (" @ % target @") was sentenced to jail by " @ % sender . nameBase @" (" @ % sender @") for " @ % time @" seconds" ) ;
}
else
{
messageClient ( % target , "MsgAdminForce" , "\c2You have had your jail sentence cut short." , % sender . nameBase ) ;
messageAllExcept ( % target , - 1 , "MsgAdminForce" , "\c3" @ % target . nameBase @" \c2has had their jail sentence cut short." ) ;
logEcho ( % target . nameBase @" (" @ % target @") was released from jail by " @ % sender . nameBase @" (" @ % sender @")" ) ;
}
}
// Command by Eolk.
function ccMute ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% target = plnametocid ( % args ) ;
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "" , "\c2No such person." ) ;
return ;
}
if ( ( % target . isAdmin & & ! % sender . isSuperAdmin ) | | % target . isSuperAdmin )
{
messageClient ( % sender , "" , "\c2Can't mute someone you don't outrank!" ) ;
return ;
}
if ( ! % target . isSilenced )
{
messageClient ( % target , "" , "\c2You have been muted." ) ;
% target . isSilenced = 1 ;
messageClient ( % sender , "" , "\c3" @ % target . nameBase @"\c2 has been muted." ) ;
logEcho ( % sender . nameBase @" (" @ % sender @") globally muted " @ % target . nameBase @" (" @ % target @")" ) ;
}
else
{
% target . isSilenced = 0 ;
messageClient ( % sender , "" , "\c3" @ % target . nameBase @"\c2 has been unmuted." ) ;
logEcho ( % sender . nameBase @" (" @ % sender @") globally unmuted " @ % target . nameBase @" (" @ % target @")" ) ;
}
}
// Chat command by Eolk (special thanks to Krash for bug fixes!)
// <3
function ccaddteam ( % sender )
{
if ( ! % sender . isAdmin )
return ;
if ( Game . numTeams > = 2 & & $ AddedMoreTeams ! = 1 )
{
messageClient ( % sender , ' MsgNo ' , "\c2There are already enough teams." ) ;
return ;
}
if ( ! $ AddedMoreTeams )
{
Game . numTeams + + ;
setSensorGroupCount ( Game . numTeams ) ;
// clearVehicleCount(Game.numTeams + 1); // Not sure about this...
$ AddedMoreTeams = 1 ;
$ NewTeam = Game . numTeams ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @" \c2has added another team." ) ;
warn ( % sender . nameBase @" (" @ % sender @") has added another team" ) ;
}
else
{
for ( % i = 0 ; % i < ClientGroup . getCount ( ) ; % i + + )
{
% obj = ClientGroup . getObject ( % i ) ;
if ( % obj . team = = $ NewTeam )
{
Game . forceObserver ( % obj , "AdminForce" ) ;
messageClient ( % obj , ' MsgYes ' , "\c2You have been forced into observer due to being on the deleted team." ) ;
}
}
Game . numTeams - - ;
setSensorGroupCount ( Game . numTeams ) ;
$ AddedMoreTeams = 0 ;
$ NewTeam = "" ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @" \c2has deleted the new team. All people have been forced into observer." ) ;
warn ( % sender . nameBase @" (" @ % sender @") has deleted the new team" ) ;
}
}
// Eolk
function ccSummon ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( % sender . isJailed )
{
messageclient ( % sender , "MsgNo" , "\c2You cannot do this command while in jail!" ) ;
return ;
}
if ( ! isObject ( % sender . player ) )
{
messageclient ( % sender , "MsgNo" , "\c2You must have a player object in order to do this." ) ;
return ;
}
% target = plnametocid ( % args ) ;
if ( ! isObject ( % target ) )
{
messageclient ( % sender , "MsgNo" , "\c2Target does not exist." ) ;
return ;
}
if ( % target . isJailed )
{
messageclient ( % sender , "MsgNo" , "\c2Target is jailed." ) ;
return ;
}
if ( ! isObject ( % target . player ) )
{
messageclient ( % sender , "MsgNo" , "\c2Your target has to have a player object in order to do this." ) ;
return ;
}
% x = getword ( % sender . player . position , 0 ) ;
% y = getword ( % sender . player . position , 1 ) ;
% z = getword ( % sender . player . position , 2 ) + 2.5 ;
% newpos = % x SPC % y SPC % z ;
% target . player . setPosition ( % newpos ) ;
% target . player . setVelocity ( "0 0 0" ) ;
messageClient ( % target , "MsgYes" , "\c2You have been summoned by\c3 " @ % sender . namebase @"\c2." ) ;
messageClient ( % sender , "MsgYes" , "\c2You have summoned \c3" @ % target . namebase @"\c2." ) ;
}
// Blnukem/Eolk
function ccDesmurf ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% target = plnametocid ( % args ) ;
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "" , "\c2Cannot find target." ) ;
return ;
}
if ( ! % target . isSmurf )
messageClient ( % sender , "" , "\c2No smurf name detected." ) ;
else
getRealName ( % target , % sender ) ;
logEcho ( % sender . nameBase @" (" @ % sender @") requested non-smurf name of " @ % target . nameBase @" (" @ % target @")" ) ;
}
// Eolk
function ccGoto ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( % sender . isJailed )
{
messageclient ( % sender , "MsgNo" , "\c2You cannot do this command while in jail!" ) ;
return ;
}
if ( ! isObject ( % sender . player ) )
{
messageclient ( % sender , "MsgNo" , "\c2You must have a player object in order to do this." ) ;
return ;
}
% target = plnametocid ( % args ) ;
if ( ! isObject ( % target ) )
{
messageclient ( % sender , "MsgNo" , "\c2Target does not exist." ) ;
return ;
}
if ( % target . isJailed )
{
messageclient ( % sender , "MsgNo" , "\c2Target is jailed." ) ;
return ;
}
if ( ! isObject ( % target . player ) )
{
messageclient ( % sender , "MsgNo" , "\c2Your target has to have a player object in order to do this." ) ;
return ;
}
% x = getword ( % target . player . position , 0 ) ;
% y = getword ( % target . player . position , 1 ) ;
% z = getword ( % target . player . position , 2 ) + 2.5 ;
% newpos = % x SPC % y SPC % z ;
% sender . player . setPosition ( % newpos ) ;
% sender . player . setVelocity ( "0 0 0" ) ;
messageClient ( % sender , "MsgYes" , "\c2You have gone to\c3 " @ % target . namebase @"'s \c2location." ) ;
if ( % sender . isAdmin )
messageClient ( % target , "MsgYes" , "\c3" @ % sender . nameBase @" \c2has come to you." ) ;
}
// Eolk
function ccMoveme ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( getwordcount ( % args ) ! = 3 )
{
messageClient ( % sender , "MsgNo" , "\c2Your movement was not specified in X Y Z format." ) ;
return ;
}
if ( % sender . isJailed )
{
messageclient ( % sender , "MsgNo" , "\c2You cannot do this command while in jail!" ) ;
return ;
}
% newpos = VectorAdd ( % sender . player . position , % args ) ;
% sender . player . setPosition ( % newpos ) ;
}
// Eolk
function ccmoveto ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
if ( getwordcount ( % args ) ! = 3 )
{
messageClient ( % sender , "MsgNo" , "\c2Your movement was not specified in X Y Z format." ) ;
return ;
}
if ( % sender . isJailed )
{
messageclient ( % sender , "MsgNo" , "\c2You cannot do this command while in jail!" ) ;
return ;
}
% sender . player . setPosition ( % args ) ;
}
// Blnukem/Eolk
function ccKill ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% target = plnametocid ( % args ) ;
if ( % target = = % sender )
{
messageClient ( % sender , "" , "\c2You cannot kill yourself." ) ;
return ;
}
if ( % target . isSuperAdmin )
{
messageClient ( % sender , "" , "\c2You cannot kill Super Admins." ) ;
return ;
}
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "" , "\c2Cannot find target." ) ;
return ;
}
if ( ! isObject ( % target . player ) )
{
messageClient ( % sender , "" , "\c2Cannot find target." ) ;
return ;
}
% target . player . scriptkill ( $ DamageType : : Idiocy ) ;
messageAll ( "" , "~wfx/misc/bounty_completed.wav" ) ;
warn ( % sender . nameBase @" (" @ % sender @") killed " @ % target . nameBase @" (" @ % target @") using admin force" ) ;
}
// Eolk
function ccForceTeamSpawn ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% team = getword ( % args , 0 ) ;
% sp = getword ( % args , 1 ) ;
if ( % sp ! $ = "" )
% sp = % sp - 1 ; // Subtract one to have things make a little more sense.
if ( % team $ = "" )
{
messageClient ( % sender , "MsgNo" , "\c2A team must be specified." ) ;
return ;
}
if ( % sp $ = "" )
{
$ UseForcedTeamSpawn [ % team ] = 0 ;
$ ForcedSpawn [ % team ] = "" ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 has released the forced spawn for team \c3" @ % team @"\c2. If you wish to not spawn at the point anymore, use /choosespawn to reset." ) ;
return ;
}
if ( ! isObject ( $ teamSP [ % team , % sp ] ) )
{
messageClient ( % sender , "MsgNo" , "\c2The spawnpoint specified doesn't exist." ) ;
return ;
}
if ( ! $ teamSP [ % team , % sp ] . active )
{
messageClient ( % sender , "MsgNo" , "\c2The spawnpoint specified is not powered." ) ;
return ;
}
$ UseForcedTeamSpawn [ % team ] = 1 ;
$ ForcedSpawn [ % team ] = $ teamSP [ % team , % sp ] ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 has forced team\c3 " @ % team @"\c2 to spawn at spawnpoint \c3" @ % sp + 1 @"\c2." ) ;
warn ( % sender . nameBase @" (" @ % sender @") forced team" @ % team @" to spawn at spawn" @ % sp ) ;
}
// By Eolk
function ccSaveBuilding ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% rad = getword ( % args , 0 ) ;
% file = getword ( % args , 1 ) ;
SaveBuilding ( % sender , % rad , % file , 1 , 0 ) ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 is saving the buildings with a radius of \c3" @ % rad @"\c2." ) ;
messageClient ( % sender , "" , "\c2Building saved to\c3 " @ $ SaveBuilding : : LastFile @"\c2." ) ;
warn ( % sender . nameBase @" (" @ % sender @", GUID: " @ % sender . guid @") attempted save buildings within a radius of " @ % radius @" to file " @ % file ) ;
}
// Eolk
function ccLoadBuilding ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
LoadBuilding ( % args ) ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @" \c2has loaded a building." ) ;
warn ( % sender . nameBase @" (" @ % sender @", GUID: " @ % sender . guid @") loaded file " @ % args ) ;
}
// Blnukem
2013-03-18 03:06:58 +00:00
function ccTurrets ( % sender )
{
2013-02-01 20:45:22 +00:00
if ( ! % sender . isAdmin )
return ;
2013-03-18 03:06:58 +00:00
if ( $ TurretEnableOverride )
{
2013-02-01 20:45:22 +00:00
$ TurretEnableOverride = 0 ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 has disabled turrets." ) ;
}
2013-03-18 03:06:58 +00:00
else
{
2013-02-01 20:45:22 +00:00
$ TurretEnableOverride = 1 ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 has enabled turrets." ) ;
}
logEcho ( "$TurretEnableOverride (turrets work in purebuild) changed to " @ $ TurretEnableOverride @" by " @ % sender . nameBase @" (" @ % sender @") using ccTurrets" ) ;
}
// Blnukem
2013-03-18 03:06:58 +00:00
function ccBuySCG ( % sender )
{
2013-02-01 20:45:22 +00:00
if ( ! % sender . isAdmin )
return ;
if ( ! isObject ( % sender . player ) )
{
messageClient ( % sender , "" , "\c2You must be playing in order to get a Super Chaingun." ) ;
return ;
}
messageClient ( % sender , "" , "\c2A Super Chaingun has been added to your inventory." ) ;
% sender . player . setInventory ( SuperChaingun , 1 , true ) ;
}
// Eolk
function ccChangeName ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% target = plnametocid ( getword ( % args , 0 ) ) ;
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "" , "\c2Invalid Target." ) ;
return ;
}
% name = getwords ( % args , 1 , getWordCount ( % args ) - 1 ) ;
if ( % name $ = "" )
{
messageClient ( % sender , ' MsgNo ' , "\c2Need to supply a name!" ) ;
return ;
}
if ( % name $ = "reset" )
{
ChangeName ( % target , "reset" ) ;
messageClient ( % target , "" , "\c2Your name has been reset." ) ;
warn ( % sender . nameBase @" (" @ % sender @") has reset " @ % target . nameBase @"'s (" @ % target @") name" ) ;
return ;
}
ChangeName ( % target , % name ) ;
messageClient ( % target , "" , "\c2Your new name is \c3" @ % name @"\c2." ) ;
warn ( % sender . nameBase @" (" @ % sender @") changed " @ % target . nameBase @"'s (" @ % target @") name to " @ % name ) ;
}
// Eolk
function ccSavePlayer ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% target = plnametocid ( getword ( % args , 0 ) ) ;
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "" , "\c2Invalid target." ) ;
return ;
}
% name = getword ( % args , 1 ) ;
if ( % name $ = "" )
{
messageClient ( % sender , "" , "\c2Invalid name." ) ;
return ;
}
% folder = $ SaveBuilding : : SaveFolder @ % name ; // I really don't know if we should check for invalid characters
new FileObject ( "Building" ) ; // or not. I think Tribes 2 does that automatically.
Building . openforwrite ( % folder ) ;
Building . writeLine ( "// Saved by \"" @ getField ( % sender . nameBase , 0 ) @ "\"" ) ;
Building . writeLine ( "// Created in mission \"" @ $ MissionName @ "\"" ) ;
Building . writeLine ( "// Construction " @ $ ModVersion ) ;
Building . writeLine ( "" ) ;
% group = nameToID ( "MissionCleanup/Deployables" ) ; // We should really check isObject here... and we will!
if ( ! isObject ( % group ) )
{
messageClient ( % sender , "" , "\c2There are no deployables!" ) ;
return ;
}
for ( % i = 0 ; % i < % group . getCount ( ) ; % i + + )
{
% depl = % group . getObject ( % i ) ;
if ( isObject ( % depl ) & & % depl . getOwner ( ) = = % target )
{
% towrite = writeBuildingComponent ( % depl ) ; // This will return null if invalid.
if ( % towrite ! $ = "" )
Building . writeline ( % towrite ) ;
}
}
Building . close ( ) ;
Building . delete ( ) ;
messageAll ( ' MsgAdminForce ' , "\c2" @ % sender . nameBase @" is saving " @ % target . nameBase @"'s buildings." ) ;
messageClient ( % sender , "" , "\c2Building saved to " @ % folder @"." ) ;
logEcho ( % sender . nameBase @" (" @ % sender @") saved " @ % target . nameBase @"'s pieces to file " @ % name ) ;
}
// Command made by Eolk.
function ccForceGivePieces ( % sender , % args )
{
if ( ! % sender . isAdmin )
{
messageClient ( % sender , "" , "\c2This is the admin give pieces. Regular clients have to use /givepieces target." ) ;
return ;
}
% from = ( getWord ( % args , 0 ) ! $ = "orphan" ? plnametocid ( getWord ( % args , 0 ) ) : "orphan" ) ;
% to = plnametocid ( getWord ( % args , 1 ) ) ;
if ( % from ! $ = "orphan" & & ! isObject ( % from ) )
{
messageClient ( % sender , "" , "\c2First argument - player doesn't exist." ) ;
return ;
}
if ( ! isObject ( % to ) )
{
messageClient ( % sender , "" , "\c2Second argument - player doesn't exist." ) ;
return ;
}
GivePieces ( % from , % to ) ;
if ( % from ! $ = "orphan" )
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 has forced \c3" @ % from . nameBase @"\c2 to transfer " @ ( % from . sex $ = "Male" ? "his" : "her" ) @" pieces to \c3" @ % to . nameBase @"\c2." ) ;
else
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 has given all orphans to \c3" @ % to . nameBase @"\c2." ) ;
logEcho ( % sender . nameBase @" (" @ % sender @") gave " @ ( % from = = "orphan" ? "all orphaned" : % from . nameBase @"'s (" @ % from @")" ) @" pieces to " @ % to . nameBase @" (" @ % to @")" ) ;
}
// Eolk
function ccGiveClientPieces ( % sender , % args )
{
if ( ! % sender . isAdmin )
{
messageClient ( % sender , "" , "\c2This command is for admins only." ) ;
return ;
}
% from = getword ( % args , 0 ) ;
% to = plnametocid ( getWord ( % args , 1 ) ) ;
if ( ! isObject ( % to ) )
{
messageClient ( % sender , "" , "\c2The receiving client doesn't exist." ) ;
return ;
}
GivePieces ( % from , % to ) ;
messageAll ( ' MsgAdminForce ' , "\c3" @ % sender . nameBase @"\c2 has given all the pieces of client \c3" @ % from @"\c2 to \c3" @ % to . nameBase @"." ) ;
logEcho ( % sender . nameBase @" (" @ % sender @") gave all pieces owned by client " @ % from @" to " @ % to . nameBase @" (" @ % to @")" ) ;
}
// Blnukem
function ccTest ( % sender , % args )
{
if ( ! % sender . isAdmin ) {
return ;
}
% x = getword ( % sender . player . position , 0 ) ;
% y = getword ( % sender . player . position , 1 ) ;
% z = getTerrainHeight ( % x SPC % y ) + 5 ;
% rot = "0 0 1 " @getRandom ( 1 , 360 ) ;
% newpos = % x SPC % y SPC % z ;
if ( % args $ = "Raptor" )
{
% type = ScoutFlyer ;
} else if ( % args $ = "Airwing" )
{
% type = StrikeFlyer ;
} else if ( % args $ = "Superior" )
{
% type = SuperiorityFighter ;
}
if ( % args $ = "" )
{
MessageClient ( % sender , "Msg" , "\c2Please specifiy the vehicle type." ) ;
} else if ( % args ! $ = "Raptor" & & % args ! $ = "Airwing" & & % args ! $ = "Superior" )
{
MessageClient ( % sender , "Msg" , "\c3" @ % args @"\c2 is not a valid vehicle." ) ;
}
% veh = new FlyingVehicle ( )
{
dataBlock = "" @ % type @"" ;
position = "" @ % newpos @"" ;
rotation = "" @ % rot @"" ;
team = % sender . team ;
} ;
MissionCleanUp . add ( % veh ) ;
setTargetSensorGroup ( % veh . getTarget ( ) , % sender . team ) ;
commandToClient ( % sender , ' SetDefaultVehicleKeys ' , true ) ;
commandToClient ( % sender , ' SetPilotVehicleKeys ' , true ) ;
% veh . mountObject ( % sender . player , 0 ) ;
% veh . playAudio ( 0 , MountVehicleSound ) ;
% sender . player . mVehicle = % col ;
% datablock = % type ;
% datablock . playerMounted ( % veh , % sender . player , 0 ) ;
}
// Eolk
function ccNoVote ( % sender , % args )
{
if ( ! % sender . isAdmin )
return ;
% target = plnametocid ( % args ) ;
if ( ! isObject ( % target ) )
{
messageClient ( % sender , "" , "\c2Target does not exist." ) ;
return ;
}
if ( % target . isAdmin )
{
messageClient ( % sender , "" , "\c2This command does not affect admins." ) ;
return ;
}
if ( Game . scheduleVote ! $ = "" )
{
messageClient ( % sender , "" , "\c2Cannot do this while a vote is in progress." ) ;
return ;
}
if ( % target . canVote )
{
messageClient ( % sender , "" , "\c3" @ % target . nameBase @"'s \c2ability to vote has been taken away." ) ;
% target . canVote = false ;
}
else
{
messageClient ( % sender , "" , "\c3" @ % target . nameBase @"'s \c2ability to vote has been given back." ) ;
% target . canVote = true ;
}
}