Let ServerPacket Handle the writting of packet data.
This commit is contained in:
@@ -637,6 +637,7 @@ namespace Game.Achievements
|
|||||||
achievementEarned.EarnerNativeRealm = achievementEarned.EarnerVirtualRealm = Global.WorldMgr.GetVirtualRealmAddress();
|
achievementEarned.EarnerNativeRealm = achievementEarned.EarnerVirtualRealm = Global.WorldMgr.GetVirtualRealmAddress();
|
||||||
achievementEarned.AchievementID = achievement.Id;
|
achievementEarned.AchievementID = achievement.Id;
|
||||||
achievementEarned.Time = Time.UnixTime;
|
achievementEarned.Time = Time.UnixTime;
|
||||||
|
|
||||||
if (!achievement.Flags.HasAnyFlag(AchievementFlags.TrackingFlag))
|
if (!achievement.Flags.HasAnyFlag(AchievementFlags.TrackingFlag))
|
||||||
_owner.SendMessageToSetInRange(achievementEarned, WorldConfig.GetFloatValue(WorldCfg.ListenRangeSay), true);
|
_owner.SendMessageToSetInRange(achievementEarned, WorldConfig.GetFloatValue(WorldCfg.ListenRangeSay), true);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -349,13 +349,12 @@ namespace Game.BattleGrounds
|
|||||||
timer.Type = TimerType.Pvp;
|
timer.Type = TimerType.Pvp;
|
||||||
timer.TimeRemaining = countdownMaxForBGType - (GetElapsedTime() / 1000);
|
timer.TimeRemaining = countdownMaxForBGType - (GetElapsedTime() / 1000);
|
||||||
timer.TotalTime = countdownMaxForBGType;
|
timer.TotalTime = countdownMaxForBGType;
|
||||||
timer.Write();
|
|
||||||
|
|
||||||
foreach (var guid in GetPlayers().Keys)
|
foreach (var guid in GetPlayers().Keys)
|
||||||
{
|
{
|
||||||
Player player = Global.ObjAccessor.FindPlayer(guid);
|
Player player = Global.ObjAccessor.FindPlayer(guid);
|
||||||
if (player)
|
if (player)
|
||||||
player.SendPacket(timer, false);
|
player.SendPacket(timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_CountdownTimer = 0;
|
m_CountdownTimer = 0;
|
||||||
|
|||||||
@@ -376,11 +376,10 @@ namespace Game.Entities
|
|||||||
|
|
||||||
DuelComplete duelCompleted = new DuelComplete();
|
DuelComplete duelCompleted = new DuelComplete();
|
||||||
duelCompleted.Started = type != DuelCompleteType.Interrupted;
|
duelCompleted.Started = type != DuelCompleteType.Interrupted;
|
||||||
duelCompleted.Write();
|
SendPacket(duelCompleted);
|
||||||
SendPacket(duelCompleted, false);
|
|
||||||
|
|
||||||
if (duel.opponent.GetSession() != null)
|
if (duel.opponent.GetSession() != null)
|
||||||
duel.opponent.SendPacket(duelCompleted, false);
|
duel.opponent.SendPacket(duelCompleted);
|
||||||
|
|
||||||
if (type != DuelCompleteType.Interrupted)
|
if (type != DuelCompleteType.Interrupted)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -982,9 +982,9 @@ namespace Game.Entities
|
|||||||
new PlayerAI GetAI() { return (PlayerAI)i_AI; }
|
new PlayerAI GetAI() { return (PlayerAI)i_AI; }
|
||||||
|
|
||||||
//Network
|
//Network
|
||||||
public void SendPacket(ServerPacket data, bool writePacket = true)
|
public void SendPacket(ServerPacket data)
|
||||||
{
|
{
|
||||||
Session.SendPacket(data, writePacket);
|
Session.SendPacket(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Time
|
//Time
|
||||||
@@ -5298,6 +5298,8 @@ namespace Game.Entities
|
|||||||
if (WorldConfig.GetBoolValue(WorldCfg.AlwaysMaxskill)) // Max weapon skill when leveling up
|
if (WorldConfig.GetBoolValue(WorldCfg.AlwaysMaxskill)) // Max weapon skill when leveling up
|
||||||
UpdateSkillsToMaxSkillsForLevel();
|
UpdateSkillsToMaxSkillsForLevel();
|
||||||
|
|
||||||
|
_ApplyAllLevelScaleItemMods(true); // Moved to above SetFullHealth so player will have full health from Heirlooms
|
||||||
|
|
||||||
// set current level health and mana/energy to maximum after applying all mods.
|
// set current level health and mana/energy to maximum after applying all mods.
|
||||||
SetFullHealth();
|
SetFullHealth();
|
||||||
SetPower(PowerType.Mana, GetMaxPower(PowerType.Mana));
|
SetPower(PowerType.Mana, GetMaxPower(PowerType.Mana));
|
||||||
@@ -5306,8 +5308,6 @@ namespace Game.Entities
|
|||||||
SetPower(PowerType.Rage, GetMaxPower(PowerType.Rage));
|
SetPower(PowerType.Rage, GetMaxPower(PowerType.Rage));
|
||||||
SetPower(PowerType.Focus, 0);
|
SetPower(PowerType.Focus, 0);
|
||||||
|
|
||||||
_ApplyAllLevelScaleItemMods(true);
|
|
||||||
|
|
||||||
// update level to hunter/summon pet
|
// update level to hunter/summon pet
|
||||||
Pet pet = GetPet();
|
Pet pet = GetPet();
|
||||||
if (pet)
|
if (pet)
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace Game.Entities
|
|||||||
playScene.Location = position;
|
playScene.Location = position;
|
||||||
playScene.TransportGUID = GetPlayer().GetTransGUID();
|
playScene.TransportGUID = GetPlayer().GetTransGUID();
|
||||||
|
|
||||||
GetPlayer().SendPacket(playScene, true);
|
GetPlayer().SendPacket(playScene);
|
||||||
|
|
||||||
AddInstanceIdToSceneMap(sceneInstanceID, sceneTemplate);
|
AddInstanceIdToSceneMap(sceneInstanceID, sceneTemplate);
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
CancelScene cancelScene = new CancelScene();
|
CancelScene cancelScene = new CancelScene();
|
||||||
cancelScene.SceneInstanceID = sceneInstanceID;
|
cancelScene.SceneInstanceID = sceneInstanceID;
|
||||||
GetPlayer().SendPacket(cancelScene, true);
|
GetPlayer().SendPacket(cancelScene);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnSceneTrigger(uint sceneInstanceID, string triggerName)
|
public void OnSceneTrigger(uint sceneInstanceID, string triggerName)
|
||||||
|
|||||||
@@ -94,8 +94,6 @@ namespace Game.Entities
|
|||||||
if (!player)
|
if (!player)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
packet.Write();
|
|
||||||
|
|
||||||
AccountTypes gmSecLevel = (AccountTypes)WorldConfig.GetIntValue(WorldCfg.GmLevelInWhoList);
|
AccountTypes gmSecLevel = (AccountTypes)WorldConfig.GetIntValue(WorldCfg.GmLevelInWhoList);
|
||||||
foreach (var pair in _socialMap)
|
foreach (var pair in _socialMap)
|
||||||
{
|
{
|
||||||
@@ -114,7 +112,7 @@ namespace Game.Entities
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (player.IsVisibleGloballyFor(target))
|
if (player.IsVisibleGloballyFor(target))
|
||||||
session.SendPacket(packet, false);
|
session.SendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -562,8 +562,6 @@ namespace Game.Entities
|
|||||||
i_source = src;
|
i_source = src;
|
||||||
i_message = msg;
|
i_message = msg;
|
||||||
i_distSq = dist;
|
i_distSq = dist;
|
||||||
|
|
||||||
i_message.Write();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsInRangeHelper(WorldObject obj)
|
bool IsInRangeHelper(WorldObject obj)
|
||||||
@@ -636,7 +634,7 @@ namespace Game.Entities
|
|||||||
if (!player.IsAdvancedCombatLoggingEnabled())
|
if (!player.IsAdvancedCombatLoggingEnabled())
|
||||||
i_message.DisableAdvancedCombatLogging();
|
i_message.DisableAdvancedCombatLogging();
|
||||||
|
|
||||||
player.SendPacket(i_message, false);
|
player.SendPacket(i_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject i_source;
|
WorldObject i_source;
|
||||||
|
|||||||
+6
-12
@@ -823,7 +823,6 @@ namespace Game.Groups
|
|||||||
lootRoll.Roll = rollNumber;
|
lootRoll.Roll = rollNumber;
|
||||||
lootRoll.RollType = rollType;
|
lootRoll.RollType = rollType;
|
||||||
roll.FillPacket(lootRoll.Item);
|
roll.FillPacket(lootRoll.Item);
|
||||||
lootRoll.Write();
|
|
||||||
|
|
||||||
foreach (var pair in roll.playerVote)
|
foreach (var pair in roll.playerVote)
|
||||||
{
|
{
|
||||||
@@ -832,7 +831,7 @@ namespace Game.Groups
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pair.Value != RollType.NotValid)
|
if (pair.Value != RollType.NotValid)
|
||||||
p.SendPacket(lootRoll, false);
|
p.SendPacket(lootRoll);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -845,7 +844,6 @@ namespace Game.Groups
|
|||||||
lootRollWon.RollType = rollType;
|
lootRollWon.RollType = rollType;
|
||||||
roll.FillPacket(lootRollWon.Item);
|
roll.FillPacket(lootRollWon.Item);
|
||||||
lootRollWon.MainSpec = true; // offspec rolls not implemented
|
lootRollWon.MainSpec = true; // offspec rolls not implemented
|
||||||
lootRollWon.Write();
|
|
||||||
|
|
||||||
foreach (var pair in roll.playerVote)
|
foreach (var pair in roll.playerVote)
|
||||||
{
|
{
|
||||||
@@ -854,7 +852,7 @@ namespace Game.Groups
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pair.Value != RollType.NotValid)
|
if (pair.Value != RollType.NotValid)
|
||||||
p.SendPacket(lootRollWon, false);
|
p.SendPacket(lootRollWon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -863,7 +861,6 @@ namespace Game.Groups
|
|||||||
LootAllPassed lootAllPassed = new LootAllPassed();
|
LootAllPassed lootAllPassed = new LootAllPassed();
|
||||||
lootAllPassed.LootObj = roll.getTarget().GetGUID();
|
lootAllPassed.LootObj = roll.getTarget().GetGUID();
|
||||||
roll.FillPacket(lootAllPassed.Item);
|
roll.FillPacket(lootAllPassed.Item);
|
||||||
lootAllPassed.Write();
|
|
||||||
|
|
||||||
foreach (var pair in roll.playerVote)
|
foreach (var pair in roll.playerVote)
|
||||||
{
|
{
|
||||||
@@ -872,7 +869,7 @@ namespace Game.Groups
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pair.Value != RollType.NotValid)
|
if (pair.Value != RollType.NotValid)
|
||||||
player.SendPacket(lootAllPassed, false);
|
player.SendPacket(lootAllPassed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -881,7 +878,6 @@ namespace Game.Groups
|
|||||||
LootRollsComplete lootRollsComplete = new LootRollsComplete();
|
LootRollsComplete lootRollsComplete = new LootRollsComplete();
|
||||||
lootRollsComplete.LootObj = roll.getTarget().GetGUID();
|
lootRollsComplete.LootObj = roll.getTarget().GetGUID();
|
||||||
lootRollsComplete.LootListID = (byte)(roll.itemSlot + 1);
|
lootRollsComplete.LootListID = (byte)(roll.itemSlot + 1);
|
||||||
lootRollsComplete.Write();
|
|
||||||
|
|
||||||
foreach (var pair in roll.playerVote)
|
foreach (var pair in roll.playerVote)
|
||||||
{
|
{
|
||||||
@@ -890,7 +886,7 @@ namespace Game.Groups
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pair.Value != RollType.NotValid)
|
if (pair.Value != RollType.NotValid)
|
||||||
player.SendPacket(lootRollsComplete, false);
|
player.SendPacket(lootRollsComplete);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1443,13 +1439,12 @@ namespace Game.Groups
|
|||||||
|
|
||||||
PartyMemberState packet = new PartyMemberState();
|
PartyMemberState packet = new PartyMemberState();
|
||||||
packet.Initialize(player);
|
packet.Initialize(player);
|
||||||
packet.Write();
|
|
||||||
|
|
||||||
for (GroupReference refe = GetFirstMember(); refe != null; refe = refe.next())
|
for (GroupReference refe = GetFirstMember(); refe != null; refe = refe.next())
|
||||||
{
|
{
|
||||||
Player member = refe.GetSource();
|
Player member = refe.GetSource();
|
||||||
if (member && member != player && (!member.IsInMap(player) || !member.IsWithinDist(player, member.GetSightRange(), false)))
|
if (member && member != player && (!member.IsInMap(player) || !member.IsWithinDist(player, member.GetSightRange(), false)))
|
||||||
member.SendPacket(packet, false);
|
member.SendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1469,7 +1464,6 @@ namespace Game.Groups
|
|||||||
|
|
||||||
public void BroadcastPacket(ServerPacket packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignore = default(ObjectGuid))
|
public void BroadcastPacket(ServerPacket packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignore = default(ObjectGuid))
|
||||||
{
|
{
|
||||||
packet.Write();
|
|
||||||
for (GroupReference refe = GetFirstMember(); refe != null; refe = refe.next())
|
for (GroupReference refe = GetFirstMember(); refe != null; refe = refe.next())
|
||||||
{
|
{
|
||||||
Player player = refe.GetSource();
|
Player player = refe.GetSource();
|
||||||
@@ -1477,7 +1471,7 @@ namespace Game.Groups
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (player.GetSession() != null && (group == -1 || refe.getSubGroup() == group))
|
if (player.GetSession() != null && (group == -1 || refe.getSubGroup() == group))
|
||||||
player.SendPacket(packet, false);
|
player.SendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1402,39 +1402,36 @@ namespace Game.Guilds
|
|||||||
|
|
||||||
public void BroadcastPacketToRank(ServerPacket packet, byte rankId)
|
public void BroadcastPacketToRank(ServerPacket packet, byte rankId)
|
||||||
{
|
{
|
||||||
packet.Write();
|
|
||||||
foreach (var member in m_members.Values)
|
foreach (var member in m_members.Values)
|
||||||
{
|
{
|
||||||
if (member.IsRank(rankId))
|
if (member.IsRank(rankId))
|
||||||
{
|
{
|
||||||
Player player = member.FindPlayer();
|
Player player = member.FindPlayer();
|
||||||
if (player != null)
|
if (player != null)
|
||||||
player.SendPacket(packet, false);
|
player.SendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BroadcastPacket(ServerPacket packet)
|
public void BroadcastPacket(ServerPacket packet)
|
||||||
{
|
{
|
||||||
packet.Write();
|
|
||||||
foreach (var member in m_members.Values)
|
foreach (var member in m_members.Values)
|
||||||
{
|
{
|
||||||
Player player = member.FindPlayer();
|
Player player = member.FindPlayer();
|
||||||
if (player != null)
|
if (player != null)
|
||||||
player.SendPacket(packet, false);
|
player.SendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BroadcastPacketIfTrackingAchievement(ServerPacket packet, uint criteriaId)
|
public void BroadcastPacketIfTrackingAchievement(ServerPacket packet, uint criteriaId)
|
||||||
{
|
{
|
||||||
packet.Write();
|
|
||||||
foreach (var member in m_members.Values)
|
foreach (var member in m_members.Values)
|
||||||
{
|
{
|
||||||
if (member.IsTrackingCriteriaId(criteriaId))
|
if (member.IsTrackingCriteriaId(criteriaId))
|
||||||
{
|
{
|
||||||
Player player = member.FindPlayer();
|
Player player = member.FindPlayer();
|
||||||
if (player)
|
if (player)
|
||||||
player.SendPacket(packet, false);
|
player.SendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ namespace Game.Guilds
|
|||||||
|
|
||||||
Player player = Global.ObjAccessor.FindPlayer(guild.GetLeaderGUID());
|
Player player = Global.ObjAccessor.FindPlayer(guild.GetLeaderGUID());
|
||||||
if (player)
|
if (player)
|
||||||
player.SendPacket(applicantListChanged, false);
|
player.SendPacket(applicantListChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendMembershipRequestListUpdate(Player player)
|
void SendMembershipRequestListUpdate(Player player)
|
||||||
|
|||||||
@@ -74,10 +74,9 @@ namespace Game
|
|||||||
plTarget.duel.startTimer = now;
|
plTarget.duel.startTimer = now;
|
||||||
|
|
||||||
DuelCountdown packet = new DuelCountdown(3000);
|
DuelCountdown packet = new DuelCountdown(3000);
|
||||||
packet.Write();
|
|
||||||
|
|
||||||
player.SendPacket(packet, false);
|
player.SendPacket(packet);
|
||||||
plTarget.SendPacket(packet, false);
|
plTarget.SendPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleDuelCancelled()
|
void HandleDuelCancelled()
|
||||||
|
|||||||
+7
-10
@@ -785,10 +785,10 @@ namespace Game.Maps
|
|||||||
obj.BuildOutOfRangeUpdateBlock(data);
|
obj.BuildOutOfRangeUpdateBlock(data);
|
||||||
UpdateObject packet;
|
UpdateObject packet;
|
||||||
data.BuildPacket(out packet);
|
data.BuildPacket(out packet);
|
||||||
packet.Write();
|
|
||||||
foreach (var pl in players)
|
foreach (var pl in players)
|
||||||
if (pl.GetTransport() != obj)
|
if (pl.GetTransport() != obj)
|
||||||
pl.SendPacket(packet, false);
|
pl.SendPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_transports.Contains(obj))
|
if (!_transports.Contains(obj))
|
||||||
@@ -2215,9 +2215,8 @@ namespace Game.Maps
|
|||||||
|
|
||||||
public void SendToPlayers(ServerPacket data)
|
public void SendToPlayers(ServerPacket data)
|
||||||
{
|
{
|
||||||
data.Write();
|
|
||||||
foreach (Player pl in m_activePlayers)
|
foreach (Player pl in m_activePlayers)
|
||||||
pl.SendPacket(data, false);
|
pl.SendPacket(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ActiveObjectsNearGrid(Grid grid)
|
public bool ActiveObjectsNearGrid(Grid grid)
|
||||||
@@ -2653,11 +2652,10 @@ namespace Game.Maps
|
|||||||
if (!players.Empty())
|
if (!players.Empty())
|
||||||
{
|
{
|
||||||
PlayMusic data = new PlayMusic(musicId);
|
PlayMusic data = new PlayMusic(musicId);
|
||||||
data.Write();
|
|
||||||
|
|
||||||
foreach (var player in players)
|
foreach (var player in players)
|
||||||
if (player.GetZoneId() == zoneId)
|
if (player.GetZoneId() == zoneId)
|
||||||
player.SendPacket(data, false);
|
player.SendPacket(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2674,10 +2672,10 @@ namespace Game.Maps
|
|||||||
if (!players.Empty())
|
if (!players.Empty())
|
||||||
{
|
{
|
||||||
WeatherPkt weather = new WeatherPkt(weatherId, weatherGrade);
|
WeatherPkt weather = new WeatherPkt(weatherId, weatherGrade);
|
||||||
weather.Write();
|
|
||||||
foreach (var player in players)
|
foreach (var player in players)
|
||||||
if (player.GetZoneId() == zoneId)
|
if (player.GetZoneId() == zoneId)
|
||||||
player.SendPacket(weather, false);
|
player.SendPacket(weather);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2697,11 +2695,10 @@ namespace Game.Maps
|
|||||||
overrideLight.AreaLightID = _defaultLight;
|
overrideLight.AreaLightID = _defaultLight;
|
||||||
overrideLight.OverrideLightID = lightId;
|
overrideLight.OverrideLightID = lightId;
|
||||||
overrideLight.TransitionMilliseconds = fadeInTime;
|
overrideLight.TransitionMilliseconds = fadeInTime;
|
||||||
overrideLight.Write();
|
|
||||||
|
|
||||||
foreach (var player in players)
|
foreach (var player in players)
|
||||||
if (player.GetZoneId() == zoneId)
|
if (player.GetZoneId() == zoneId)
|
||||||
player.SendPacket(overrideLight, false);
|
player.SendPacket(overrideLight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+31
-14
@@ -29,13 +29,13 @@ namespace Game.Network
|
|||||||
_worldPacket = worldPacket;
|
_worldPacket = worldPacket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract void Read();
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_worldPacket.Dispose();
|
_worldPacket.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void Read();
|
|
||||||
|
|
||||||
public ClientOpcodes GetOpcode() { return (ClientOpcodes)_worldPacket.GetOpcode(); }
|
public ClientOpcodes GetOpcode() { return (ClientOpcodes)_worldPacket.GetOpcode(); }
|
||||||
|
|
||||||
public void LogPacket(WorldSession session)
|
public void LogPacket(WorldSession session)
|
||||||
@@ -46,7 +46,7 @@ namespace Game.Network
|
|||||||
protected WorldPacket _worldPacket;
|
protected WorldPacket _worldPacket;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class ServerPacket : IDisposable
|
public abstract class ServerPacket
|
||||||
{
|
{
|
||||||
public ServerPacket(ServerOpcodes opcode)
|
public ServerPacket(ServerOpcodes opcode)
|
||||||
{
|
{
|
||||||
@@ -60,15 +60,21 @@ namespace Game.Network
|
|||||||
_worldPacket = new WorldPacket(opcode);
|
_worldPacket = new WorldPacket(opcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Clear()
|
||||||
{
|
{
|
||||||
_worldPacket.Dispose();
|
_worldPacket.Clear();
|
||||||
|
buffer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Clear() { _worldPacket.Clear(); }
|
public ServerOpcodes GetOpcode()
|
||||||
public ServerOpcodes GetOpcode() { return (ServerOpcodes)_worldPacket.GetOpcode(); }
|
{
|
||||||
public uint GetSize() { return _worldPacket.GetSize(); }
|
return (ServerOpcodes)_worldPacket.GetOpcode();
|
||||||
public byte[] GetData() { return _worldPacket.GetData(); }
|
}
|
||||||
|
|
||||||
|
public byte[] GetData()
|
||||||
|
{
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
public void LogPacket(WorldSession session)
|
public void LogPacket(WorldSession session)
|
||||||
{
|
{
|
||||||
@@ -77,10 +83,21 @@ namespace Game.Network
|
|||||||
|
|
||||||
public abstract void Write();
|
public abstract void Write();
|
||||||
|
|
||||||
|
public void WritePacketData()
|
||||||
|
{
|
||||||
|
if (buffer != null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Write();
|
||||||
|
|
||||||
|
buffer = _worldPacket.GetData();
|
||||||
|
_worldPacket.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
public ConnectionType GetConnection() { return connectionType; }
|
public ConnectionType GetConnection() { return connectionType; }
|
||||||
|
|
||||||
|
byte[] buffer;
|
||||||
ConnectionType connectionType;
|
ConnectionType connectionType;
|
||||||
|
|
||||||
protected WorldPacket _worldPacket;
|
protected WorldPacket _worldPacket;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,12 +105,12 @@ namespace Game.Network
|
|||||||
{
|
{
|
||||||
public WorldPacket(ServerOpcodes opcode = ServerOpcodes.None)
|
public WorldPacket(ServerOpcodes opcode = ServerOpcodes.None)
|
||||||
{
|
{
|
||||||
Opcode = (uint)opcode;
|
this.opcode = (uint)opcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorldPacket(byte[] data, uint opcode) : base(data)
|
public WorldPacket(byte[] data, uint opcode) : base(data)
|
||||||
{
|
{
|
||||||
Opcode = opcode;
|
this.opcode = opcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObjectGuid ReadPackedGuid()
|
public ObjectGuid ReadPackedGuid()
|
||||||
@@ -201,9 +218,9 @@ namespace Game.Network
|
|||||||
WriteFloat(o);
|
WriteFloat(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint GetOpcode() { return Opcode; }
|
public uint GetOpcode() { return opcode; }
|
||||||
|
|
||||||
uint Opcode;
|
uint opcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ServerPacketHeader
|
public class ServerPacketHeader
|
||||||
|
|||||||
@@ -250,21 +250,18 @@ namespace Game.Network
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendPacket(ServerPacket packet, bool writePacket = true)
|
public void SendPacket(ServerPacket packet)
|
||||||
{
|
{
|
||||||
if (!IsOpen())
|
if (!IsOpen())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
packet.LogPacket(_worldSession);
|
packet.LogPacket(_worldSession);
|
||||||
|
|
||||||
if (writePacket)
|
packet.WritePacketData();
|
||||||
packet.Write();
|
|
||||||
|
|
||||||
uint packetSize = packet.GetSize();
|
|
||||||
ServerOpcodes opcode = packet.GetOpcode();
|
|
||||||
|
|
||||||
var data = packet.GetData();
|
var data = packet.GetData();
|
||||||
packet.Dispose();
|
uint packetSize = (uint)data.Length;
|
||||||
|
ServerOpcodes opcode = packet.GetOpcode();
|
||||||
PacketLog.Write(data, opcode, GetRemoteIpAddress(), GetRemotePort(), _connectType);
|
PacketLog.Write(data, opcode, GetRemoteIpAddress(), GetRemotePort(), _connectType);
|
||||||
|
|
||||||
if (packetSize > 0x400 && worldCrypt.IsInitialized)
|
if (packetSize > 0x400 && worldCrypt.IsInitialized)
|
||||||
@@ -602,7 +599,7 @@ namespace Game.Network
|
|||||||
//else
|
//else
|
||||||
//{
|
//{
|
||||||
// transfer_aborted when/if we get map node redirection
|
// transfer_aborted when/if we get map node redirection
|
||||||
// SendPacket(*WorldPackets.Auth.ResumeComms().Write());
|
// SendPacket(*WorldPackets.Auth.ResumeComms());
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -181,14 +181,13 @@ namespace Game.PvP
|
|||||||
void BroadcastPacket(ServerPacket packet)
|
void BroadcastPacket(ServerPacket packet)
|
||||||
{
|
{
|
||||||
// This is faster than sWorld.SendZoneMessage
|
// This is faster than sWorld.SendZoneMessage
|
||||||
packet.Write();
|
|
||||||
for (int team = 0; team < 2; ++team)
|
for (int team = 0; team < 2; ++team)
|
||||||
{
|
{
|
||||||
foreach (var guid in m_players[team])
|
foreach (var guid in m_players[team])
|
||||||
{
|
{
|
||||||
Player player = Global.ObjAccessor.FindPlayer(guid);
|
Player player = Global.ObjAccessor.FindPlayer(guid);
|
||||||
if (player)
|
if (player)
|
||||||
player.SendPacket(packet, false);
|
player.SendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1401,13 +1401,12 @@ namespace Game
|
|||||||
public bool SendZoneMessage(uint zone, ServerPacket packet, WorldSession self = null, uint team = 0)
|
public bool SendZoneMessage(uint zone, ServerPacket packet, WorldSession self = null, uint team = 0)
|
||||||
{
|
{
|
||||||
bool foundPlayerToSend = false;
|
bool foundPlayerToSend = false;
|
||||||
packet.Write();
|
|
||||||
foreach (var session in m_sessions.Values)
|
foreach (var session in m_sessions.Values)
|
||||||
{
|
{
|
||||||
if (session != null && session.GetPlayer() && session.GetPlayer().IsInWorld &&
|
if (session != null && session.GetPlayer() && session.GetPlayer().IsInWorld &&
|
||||||
session.GetPlayer().GetZoneId() == zone && session != self && (team == 0 || (uint)session.GetPlayer().GetTeam() == team))
|
session.GetPlayer().GetZoneId() == zone && session != self && (team == 0 || (uint)session.GetPlayer().GetTeam() == team))
|
||||||
{
|
{
|
||||||
session.SendPacket(packet, false);
|
session.SendPacket(packet);
|
||||||
foundPlayerToSend = true;
|
foundPlayerToSend = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ namespace Game
|
|||||||
Log.outError(LogFilter.Network, "Received unexpected opcode {0} Status: {1} Reason: {2} from {3}", (ClientOpcodes)packet.GetOpcode(), status, reason, GetPlayerInfo());
|
Log.outError(LogFilter.Network, "Received unexpected opcode {0} Status: {1} Reason: {2} from {3}", (ClientOpcodes)packet.GetOpcode(), status, reason, GetPlayerInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendPacket(ServerPacket packet, bool writePacket = true)
|
public void SendPacket(ServerPacket packet)
|
||||||
{
|
{
|
||||||
if (packet == null)
|
if (packet == null)
|
||||||
return;
|
return;
|
||||||
@@ -397,7 +397,7 @@ namespace Game
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Socket[(int)conIdx].SendPacket(packet, writePacket);
|
m_Socket[(int)conIdx].SendPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddInstanceConnection(WorldSocket sock) { m_Socket[(int)ConnectionType.Instance] = sock; }
|
public void AddInstanceConnection(WorldSocket sock) { m_Socket[(int)ConnectionType.Instance] = sock; }
|
||||||
|
|||||||
@@ -3636,10 +3636,9 @@ namespace Game.Spells
|
|||||||
packet.ArbiterGUID = pGameObj.GetGUID();
|
packet.ArbiterGUID = pGameObj.GetGUID();
|
||||||
packet.RequestedByGUID = caster.GetGUID();
|
packet.RequestedByGUID = caster.GetGUID();
|
||||||
packet.RequestedByWowAccount = caster.GetSession().GetAccountGUID();
|
packet.RequestedByWowAccount = caster.GetSession().GetAccountGUID();
|
||||||
packet.Write();
|
|
||||||
|
|
||||||
caster.SendPacket(packet, false);
|
caster.SendPacket(packet);
|
||||||
target.SendPacket(packet, false);
|
target.SendPacket(packet);
|
||||||
|
|
||||||
// create duel-info
|
// create duel-info
|
||||||
DuelInfo duel = new DuelInfo();
|
DuelInfo duel = new DuelInfo();
|
||||||
|
|||||||
Reference in New Issue
Block a user