I don't know how to implement the velocity idea, but here is the finished code that works:
package NoobShield
{
function serverCmdJoinMinigame(%client, %minigame)
{
if(%client.isNoobShielded)
{
%client.isNoobShielded=0;
cancel(%client.InfiniteNoobShield);
messageClient(%client,'',"\c0You disabled your noob shield.");
}
parent::serverCmdJoinMinigame(%client, %minigame);
}
function serverCmdTNS(%client)
{
serverCmdToggleNoobShield(%client);
}
function serverCmdToggleNoobShield(%client)
{
if(!%client.isSuperAdmin)
return;
if(isObject(%client.minigame))
return messageClient(%client,'',"\c0You can't use your noob shield in a minigame.");
if(%client.isNoobShielded)
{
%client.isNoobShielded=0;
cancel(%client.InfiniteNoobShield);
messageClient(%client,'',"\c0You disabled your noob shield.");
}
else
{
%client.isNoobShielded=1;
%client.InfiniteNoobShield = %client.schedule( 100 , InfiniteNoobShield, %client);
messageClient(%client,'',"\c2You enabled your noob shield.");
}
}
function gameconnection::InfiniteNoobShield(%client)
{
initContainerRadiusSearch(%client.player.getPosition(), 5, $TypeMasks::PlayerObjectType);
while(%obj = containerSearchNext())
{
if(%obj != %client.player)
{
if(!%obj.client.isAdmin && !%obj.client.isSuperAdmin)
{
messageclient(%obj.client,'',"You were respawned for getting too close to a shielded super admin.");
%obj.instantrespawn();
}
}
}
%client.InfiniteNoobShield = %client.schedule( 100 , InfiniteNoobShield, %client);
}
};
activatepackage(NoobShield);