mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-07 07:12:25 +00:00
[Fix] Fix Object Name Init, User Refs, and Client Sync on Close (#4861)
* [Bugfix] Fix uninitialized char* in object.cpp. * [Bugfix] Clear object user and user tradeskill object on reset. * [Bugfix] Send clear object packet on Object::Close()
This commit is contained in:
parent
83cd8119c8
commit
3d607d352c
@ -75,6 +75,8 @@ decay_timer(300000)
|
|||||||
decay_timer.Disable();
|
decay_timer.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(m_display_name, 0, sizeof(m_display_name));
|
||||||
|
|
||||||
respawn_timer.Disable();
|
respawn_timer.Disable();
|
||||||
|
|
||||||
// Set drop_id to zero - it will be set when added to zone with SetID()
|
// Set drop_id to zero - it will be set when added to zone with SetID()
|
||||||
@ -122,6 +124,8 @@ decay_timer(300000)
|
|||||||
// Set as much struct data as we can
|
// Set as much struct data as we can
|
||||||
memset(&m_data, 0, sizeof(Object_Struct));
|
memset(&m_data, 0, sizeof(Object_Struct));
|
||||||
|
|
||||||
|
memset(m_display_name, 0, sizeof(m_display_name));
|
||||||
|
|
||||||
m_data.heading = heading;
|
m_data.heading = heading;
|
||||||
m_data.z = z;
|
m_data.z = z;
|
||||||
m_data.zone_id = zone->GetZoneID();
|
m_data.zone_id = zone->GetZoneID();
|
||||||
@ -164,6 +168,8 @@ decay_timer(300000)
|
|||||||
// Set as much struct data as we can
|
// Set as much struct data as we can
|
||||||
memset(&m_data, 0, sizeof(Object_Struct));
|
memset(&m_data, 0, sizeof(Object_Struct));
|
||||||
|
|
||||||
|
memset(m_display_name, 0, sizeof(m_display_name));
|
||||||
|
|
||||||
m_data.heading = client->GetHeading();
|
m_data.heading = client->GetHeading();
|
||||||
m_data.x = client->GetX();
|
m_data.x = client->GetX();
|
||||||
m_data.y = client->GetY();
|
m_data.y = client->GetY();
|
||||||
@ -236,6 +242,8 @@ decay_timer(decay_time)
|
|||||||
// Set as much struct data as we can
|
// Set as much struct data as we can
|
||||||
memset(&m_data, 0, sizeof(Object_Struct));
|
memset(&m_data, 0, sizeof(Object_Struct));
|
||||||
|
|
||||||
|
memset(m_display_name, 0, sizeof(m_display_name));
|
||||||
|
|
||||||
m_data.heading = heading;
|
m_data.heading = heading;
|
||||||
m_data.x = x;
|
m_data.x = x;
|
||||||
m_data.y = y;
|
m_data.y = y;
|
||||||
@ -312,6 +320,8 @@ decay_timer(decay_time)
|
|||||||
m_data.z = z;
|
m_data.z = z;
|
||||||
m_data.zone_id = zone->GetZoneID();
|
m_data.zone_id = zone->GetZoneID();
|
||||||
|
|
||||||
|
memset(m_display_name, 0, sizeof(m_display_name));
|
||||||
|
|
||||||
if (!IsFixZEnabled()) {
|
if (!IsFixZEnabled()) {
|
||||||
FixZ();
|
FixZ();
|
||||||
}
|
}
|
||||||
@ -353,6 +363,8 @@ void Object::SetID(uint16 set_id)
|
|||||||
// Reset state of object back to zero
|
// Reset state of object back to zero
|
||||||
void Object::ResetState()
|
void Object::ResetState()
|
||||||
{
|
{
|
||||||
|
Close();
|
||||||
|
|
||||||
safe_delete(m_inst);
|
safe_delete(m_inst);
|
||||||
|
|
||||||
m_id = 0;
|
m_id = 0;
|
||||||
@ -440,6 +452,12 @@ void Object::Close() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto outapp = new EQApplicationPacket(OP_ClearObject, sizeof(ClearObject_Struct));
|
||||||
|
ClearObject_Struct *cos = (ClearObject_Struct *)outapp->pBuffer;
|
||||||
|
cos->Clear = 1;
|
||||||
|
user->QueuePacket(outapp);
|
||||||
|
safe_delete(outapp);
|
||||||
|
|
||||||
user->SetTradeskillObject(nullptr);
|
user->SetTradeskillObject(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user