function isUpper( %str ) { return strStr( %str, strUpr( %str ) ) == 0; }
function SimObject::canSeeObject(%this, %object)
{
%ev = %this.getEyeVector();
%pos = %this.getPosition();
if(!isObject(%object))
return 0;
if(isFunction(%object.getClassname(), getEyePoint))
%ep = %object.getEyePoint();
else
%ep = %object.getPosition();
%vd = vectorDist(%pos, %ep);
if(%vd > 64)
return 0;
%cast = containerRaycast(%pos, %ep, $TypeMasks::FxBrickObjectType);
if(isObject(%cast))
return 0;
//%adjp = vectorSub(%pos, %ep);
//%angle = mATan(getWord(%adjp,1), getWord(%adjp,0));
//%ea = mATan(getWord(%ev,1), getWord(%ev,0));
//%cansee = %ea - %angle;
//%canSee = mAbs(%canSee);
//if(%cansee > 3.92689 || %cansee < 2.35629)
/// return 0;
return 1;
}
function localChat(%client,%msg)
{
%msg = stripMLControlChars(%msg);
if(strLen(%msg) < 1)
return;
if(!isObject(%client.player))
{
messageClient(%client,'',"\c6Please use team chat for OOC.");
return;
}
%last = %client.lastMessageTime;
%diff = getSimTime() - %last;
if(getSimTime() - %last < 500)
{
messageClient(%client,'',"\c6Please don't flood chat.");
return;
}
%last = %client.lastMessageText;
if(%msg $= %last)
{
messageClient(%client,'',"\c6Please don't flood chat.");
return;
}
%client.lastMessageTime = getSimTime();
%client.lastMessageText = %msg;
for(%i=0;%i<ClientGroup.getCount();%i++)
{
%obj = ClientGroup.getObject(%i).player;
if(isObject(%obj))
{
if(vectorDist(%obj.getPosition(),%client.player.getPosition()) < 30)
{
if(isUpper(%msg))
{
if(vectorDist(%client.player.getPosition(),%obj.getPosition()) < 10)
{
messageClient(%obj.client,'',"\c4[\c3" @ %client.name @ "\c4]\c6: " @ %msg);
}
}
else
{
if(%client.player.canSeeObject(%obj))
{
messageClient(%obj.client,'',"\c7[\c3" @ %client.name @ "\c7]\c6: " @ %msg);
}
}
}
}
}
}
if(ispackage(DeadSteelChat))
deactivatepackage(DeadSteelChat);
package DeadSteelChat
{
function serverCmdMessageSent(%client,%msg)
{
if($pref::server::localChat && getWordCount(%client) < 2)
{
//talk("local");
localChat(%client,%msg);
}
else
{
//talk($pref::server::localChat SPC getWordCount(%client));
parent::serverCmdMessageSent(firstWord(%client),%msg);
}
}
function serverCmdTeamMessageSent(%client,%msg)
{
parent::serverCmdMessageSent(%client SPC "LOCAL",%msg);
}
};activatepackage(DeadSteelChat);
wrote this awhile ago for someone. Can't remember who though.