Project 1999

Go Back   Project 1999 > Server Issues > Resolved Issues

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 04-12-2011, 10:15 PM
Loly Taa Loly Taa is offline
Kobold

Loly Taa's Avatar

Join Date: Mar 2011
Posts: 153
Default Mobs summoning after evac change your next spawn to summon point.

I've noticed this before but it's only really become a problem now that groups have to evac out of bad situations more than before.

Lets say you aggro and damage until summon an npc, your group then evacs successfully- Every once in a while someone ends up "missing" the evac because they got summoned as/after the evac happened. I figured it was because of the way the summon code was written, and if yours is similar to the code in the EQEmulator SVN, I think I know why.

Code:
    if(target)
    {
                if (target->IsClient())
                        target->CastToClient()->Message(15,"You have been summoned!");
                entity_list.MessageClose(this, true, 500, 10, "%s says,'You will not evade me, %s!' ", GetCleanName(), GetHateTop()->GetCleanName() );

                // RangerDown - GMMove doesn't seem to be working well with players, so use MovePC for them, GMMove for NPC's
                if (target->IsClient()) {
                        target->CastToClient()->MovePC(zone->GetZoneID(), zone->GetInstanceID(), x_pos, y_pos, z_pos, target->GetHeading(), 0, SummonPC);
                }
                else
                        GetHateTop()->GMMove(x_pos, y_pos, z_pos, target->GetHeading());

        return true;
        }
Essentially the bolded part above checks to see if the target is a client, and if so it calls MovePC, and I assume when it passes zone->GetZoneID() it passes the zone id of the zone that npc is currently in. Thing is, if the player is already gone and it executes this function it will change their next spawn point from their intended evac/gate/port location and change it to right next to the npc.

I figure, you can either make a new MovePC function that simply does not overwrite their current zone, but then players would be appearing at random locs in their evac'd zone instead of the same loc in the same zone as the npc that summoned them.

I don't know the codebase well anymore but if someone could add a check to make sure the summon target is not only a client, but also still in the zone- you'd save a decent amount of petitions from players affected by this bug. I'm nearly positive it's not classic, just a quirk of the EQEmu codebase.

EDIT;

On second thought, you also might be able to write a function to check the player's current intended zone (in the database) before summon, and if it is not equal to the zone the npc is in then fail the summon.
Last edited by Loly Taa; 04-12-2011 at 10:23 PM..
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 09:14 PM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.