Core/GameObjects: Fixed crash when trying to sit on a chair.
This commit is contained in:
@@ -1405,12 +1405,12 @@ namespace Game.Entities
|
|||||||
if (ChairListSlots.Empty()) // this is called once at first chair use to make list of available slots
|
if (ChairListSlots.Empty()) // this is called once at first chair use to make list of available slots
|
||||||
{
|
{
|
||||||
if (info.Chair.chairslots > 0) // sometimes chairs in DB have error in fields and we dont know number of slots
|
if (info.Chair.chairslots > 0) // sometimes chairs in DB have error in fields and we dont know number of slots
|
||||||
{
|
{
|
||||||
for (uint i = 0; i < info.Chair.chairslots; ++i)
|
for (uint i = 0; i < info.Chair.chairslots; ++i)
|
||||||
ChairListSlots[i].Clear(); // Last user of current slot set to 0 (none sit here yet)
|
ChairListSlots[i] = default; // Last user of current slot set to 0 (none sit here yet)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ChairListSlots[0].Clear(); // error in DB, make one default slot
|
ChairListSlots[0] = default; // error in DB, make one default slot
|
||||||
}
|
}
|
||||||
|
|
||||||
Player player = user.ToPlayer();
|
Player player = user.ToPlayer();
|
||||||
@@ -1443,9 +1443,9 @@ namespace Game.Entities
|
|||||||
if (ChairUser.IsSitState() && ChairUser.GetStandState() != UnitStandStateType.Sit && ChairUser.GetExactDist2d(x_i, y_i) < 0.1f)
|
if (ChairUser.IsSitState() && ChairUser.GetStandState() != UnitStandStateType.Sit && ChairUser.GetExactDist2d(x_i, y_i) < 0.1f)
|
||||||
continue; // This seat is already occupied by ChairUser. NOTE: Not sure if the ChairUser.getStandState() != UNIT_STAND_STATE_SIT check is required.
|
continue; // This seat is already occupied by ChairUser. NOTE: Not sure if the ChairUser.getStandState() != UNIT_STAND_STATE_SIT check is required.
|
||||||
else
|
else
|
||||||
ChairListSlots[slot.Key].Clear(); // This seat is unoccupied.
|
ChairListSlots[slot.Key] = default; // This seat is unoccupied.
|
||||||
else
|
else
|
||||||
ChairListSlots[slot.Key].Clear(); // The seat may of had an occupant, but they're offline.
|
ChairListSlots[slot.Key] = default; // The seat may of had an occupant, but they're offline.
|
||||||
}
|
}
|
||||||
|
|
||||||
found_free_slot = true;
|
found_free_slot = true;
|
||||||
@@ -1465,7 +1465,7 @@ namespace Game.Entities
|
|||||||
if (found_free_slot)
|
if (found_free_slot)
|
||||||
{
|
{
|
||||||
var guid = ChairListSlots.LookupByKey(nearest_slot);
|
var guid = ChairListSlots.LookupByKey(nearest_slot);
|
||||||
if (!guid.IsEmpty())
|
if (guid.IsEmpty())
|
||||||
{
|
{
|
||||||
ChairListSlots[nearest_slot] = player.GetGUID(); //this slot in now used by player
|
ChairListSlots[nearest_slot] = player.GetGUID(); //this slot in now used by player
|
||||||
player.TeleportTo(GetMapId(), x_lowest, y_lowest, GetPositionZ(), GetOrientation(), (TeleportToOptions.NotLeaveTransport | TeleportToOptions.NotLeaveCombat | TeleportToOptions.NotUnSummonPet));
|
player.TeleportTo(GetMapId(), x_lowest, y_lowest, GetPositionZ(), GetOrientation(), (TeleportToOptions.NotLeaveTransport | TeleportToOptions.NotLeaveCombat | TeleportToOptions.NotUnSummonPet));
|
||||||
|
|||||||
Reference in New Issue
Block a user