Author Topic: Raycast Help  (Read 3874 times)

It's still not working. It doesn't just not work either. It works some time than doesn't. Can anyone help me with this. I'm beginning to think I need more just that loop.

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.