EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   set_proximity problems (https://www.eqemulator.org/forums/showthread.php?t=34009)

Ignorance 08-15-2011 06:21 PM

set_proximity problems
 
I am having issues with set_proximity when a player is already inside the boundaries.
If inside before the call is made, neither an EVENT_ENTER or EVENT_EXIT is called.
This is troublesome to me as I want to translocate all players in the proximity when set_proximity is called.

If anyone knows the solution to this problem, or can offer a different way to implement proximity translocation, it would be much appreciated.

I don't necessarily need to use set_proximity, but I would like a way to translocate all players in a given area.

I can post the script if it helps.

trevius 08-15-2011 07:16 PM

The easiest solution would be to just iterate through the client list and move all clients that are within a certain distance of the spawned translocator NPC. Here are some list iterating examples:

http://code.google.com/p/projecteqem...stIteration.pl

Then, in your list search, run this:
Code:

my $ClientDist = $ent->CalculateDistance($x, $y, $z);
Then just check if the distance is within the desired range and do $ent->MovePC() if so.

Ignorance 08-25-2011 03:56 PM

@trevius
Thanks.
$ent->MovePC( zone_id, x, y, z, 0 ) worked for me.

Here is the actual code I used...
Code:

$clientx = 0; $clienty = 0; $clientz = 0;
@clientlist = $entity_list->GetClientList();
foreach $ent (@clientlist)
{
  $playerx = $ent->GetX();
  $playery = $ent->GetY();
  $playerz = $ent->GetZ();
  if( $playerx >= $LocationX1List[$locationNumber] && $playerx <= $LocationX2List[$locationNumber] )
  {
  if( $playery >= $LocationY1List[$locationNumber] && $playery <= $LocationY2List[$locationNumber] )
  {
  if( $playerz >= $LocationZ1List[$locationNumber] && $playerz <= $LocationZ2List[$locationNumber] )
  {
  # Client is within the boundries
    $ent->MovePC( 96, 4366.94, -12256.9, -265, 0 );
  }
  }
  }
}

I just do a simple bounding box check instead of a vector magnitude calculation.
Now that the code works, I have to port it back to template form.
I think I'll have to post the code for anyone who's interested.


All times are GMT -4. The time now is 04:05 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.