PDA

View Full Version : set_proximity problems


Ignorance
08-15-2011, 06:21 PM
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/projecteqemu/source/browse/trunk/EQEmuServer/utils/Examples/ListIteration.pl

Then, in your list search, run this:
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...
$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.