Core/PacketIO: Implemented CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID and SMSG_PLAYER_IS_ADVENTURE_MAP_POI_VALID
Port From (https://github.com/TrinityCore/TrinityCore/commit/f6646739908215311f110842ed41055a54dae1f0)
This commit is contained in:
@@ -5,12 +5,44 @@ using Framework.Constants;
|
||||
using Game.DataStorage;
|
||||
using Game.Networking;
|
||||
using Game.Networking.Packets;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Game
|
||||
{
|
||||
public partial class WorldSession
|
||||
{
|
||||
[WorldPacketHandler(ClientOpcodes.CheckIsAdventureMapPoiValid)]
|
||||
void HandleCheckIsAdventureMapPoiValid(CheckIsAdventureMapPoiValid checkIsAdventureMapPoiValid)
|
||||
{
|
||||
AdventureMapPOIRecord entry = CliDB.AdventureMapPOIStorage.LookupByKey(checkIsAdventureMapPoiValid.AdventureMapPoiID);
|
||||
if (entry == null)
|
||||
return;
|
||||
|
||||
void sendIsPoiValid(uint adventureMapPoiId, bool isVisible)
|
||||
{
|
||||
PlayerIsAdventureMapPoiValid isMapPoiValid = new();
|
||||
isMapPoiValid.AdventureMapPoiID = adventureMapPoiId;
|
||||
isMapPoiValid.IsVisible = isVisible;
|
||||
SendPacket(isMapPoiValid);
|
||||
};
|
||||
|
||||
Quest quest = Global.ObjectMgr.GetQuestTemplate(entry.QuestID);
|
||||
if (quest == null)
|
||||
{
|
||||
sendIsPoiValid(entry.Id, false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_player.MeetPlayerCondition(entry.PlayerConditionID))
|
||||
{
|
||||
sendIsPoiValid(entry.Id, false);
|
||||
return;
|
||||
}
|
||||
|
||||
sendIsPoiValid(entry.Id, true);
|
||||
}
|
||||
|
||||
[WorldPacketHandler(ClientOpcodes.AdventureMapStartQuest)]
|
||||
void HandleAdventureMapStartQuest(AdventureMapStartQuest startQuest)
|
||||
{
|
||||
|
||||
@@ -1,17 +1,46 @@
|
||||
// Copyright (c) CypherCore <http://github.com/CypherCore> All rights reserved.
|
||||
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
|
||||
|
||||
using Framework.Constants;
|
||||
|
||||
namespace Game.Networking.Packets
|
||||
{
|
||||
class CheckIsAdventureMapPoiValid : ClientPacket
|
||||
{
|
||||
public uint AdventureMapPoiID;
|
||||
|
||||
public CheckIsAdventureMapPoiValid(WorldPacket packet) : base(packet) { }
|
||||
|
||||
public override void Read()
|
||||
{
|
||||
AdventureMapPoiID = _worldPacket.ReadUInt32();
|
||||
}
|
||||
}
|
||||
|
||||
class PlayerIsAdventureMapPoiValid : ServerPacket
|
||||
{
|
||||
public uint AdventureMapPoiID;
|
||||
public bool IsVisible;
|
||||
|
||||
public PlayerIsAdventureMapPoiValid() : base(ServerOpcodes.PlayerIsAdventureMapPoiValid, ConnectionType.Instance) { }
|
||||
|
||||
public override void Write()
|
||||
{
|
||||
_worldPacket.WriteUInt32(AdventureMapPoiID);
|
||||
_worldPacket.WriteBit(IsVisible);
|
||||
_worldPacket.FlushBits();
|
||||
}
|
||||
}
|
||||
|
||||
class AdventureMapStartQuest : ClientPacket
|
||||
{
|
||||
public uint QuestID;
|
||||
|
||||
public AdventureMapStartQuest(WorldPacket packet) : base(packet) { }
|
||||
|
||||
public override void Read()
|
||||
{
|
||||
QuestID = _worldPacket.ReadUInt32();
|
||||
}
|
||||
|
||||
public uint QuestID;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user