Found THIS
function sentryLogicLoop()
{
for(%i = 0; %i < sentryGroup.getCount(); %i++)
{
%sentry = sentryGroup.getObject(%i);
if(!isObject(%sentry.sentryOwner))
%sentry.kill();
if(isObject(%sentry.sentryOwner.minigame) && %sentry.getState() !$= "Dead" && %sentry.isBuilt)
{
if(!isObject(%sentry.target) || %sentry.target.getState() $= "Dead" || vectorLen(vectorSub(%sentry.target.getPosition(), %sentry.getPosition())) > $sentryTargetLength || ContainerRayCast(%sentry.getPosition(), %sentry.target.getPosition(), $sentryRaycastMasks) != 0)
{
%sentry.target = "";
//new targetting, using radius raycast container search thing, allows for bot aiming
//note: might need to make sure it checks in order of length first?
InitContainerRadiusSearch(%sentry.getPosition(), $sentryTargetLength ,$TypeMasks::PlayerObject); //pos, range, typemasks
%sentry.target = containerSearchNext();
while(%sentry.target != 0 && !%targetAcquired)
{
%sentry.target = ContainerSearchNext();
if(isObject(%sentry.target) && %sentry.target.getState() !$= "Dead" && ContainerRayCast(%sentry.getPosition(), %sentry.target.getPosition(), $sentryRaycastMasks) == 0)
{
%targetAcquired = 1;
}
}
if(%targetAcquired)
{
//play sentry beep sound
serverPlay3D(sentryalertsound, %sentry.getPosition());
}
}
//if you have a target, shoot at it
if(isObject(%sentry.target) && %sentry.target.getState() !$= "Dead" && %sentry.getState() !$= "Dead")
{
//aim
if(%sentry.target.isCrouched())
%sentry.setAimLocation(vectorAdd(%sentry.target.getPosition(), $sentryAimOffsetCrouched));
else
%sentry.setAimLocation(vectorAdd(%sentry.target.getPosition(), $sentryAimOffset));
//shoot
%sentry.setImageTrigger(0, 1);
%sentry.setImageTrigger(0, 0);
}
}
}
if(sentryGroup.getCount() > 0)
$sentryLogicLoopSched = schedule($sentryLoopTime, 0, "sentryLogicLoop");
}
on Pastebin