public void SendGameTime(ClientClass client, WcHandlerCharacter.CharacterObject character) { var smsgLoginSettimespeed = new PacketClass(Opcodes.SMSG_LOGIN_SETTIMESPEED); try { var time = DateTime.Now; var year = time.Year - 2000; var month = time.Month - 1; var day = time.Day - 1; var dayOfWeek = (int)time.DayOfWeek; var hour = time.Hour; var minute = time.Minute; // SMSG_LOGIN_SETTIMESPEED.AddInt32(CType((((((Minute + (Hour << 6)) + (DayOfWeek << 11)) + (Day << 14)) + (Year << 18)) + (Month << 20)), Integer)) smsgLoginSettimespeed.AddInt32(minute + (hour << 6) + (dayOfWeek << 11) + (day << 14) + (month << 20) + (year << 24)); smsgLoginSettimespeed.AddSingle(0.01666667f); client.Send(smsgLoginSettimespeed); } finally { smsgLoginSettimespeed.Dispose(); } _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.DEBUG, "[{0}:{1}] SMSG_LOGIN_SETTIMESPEED", client.IP, client.Port); }
public void SendTriggerCinematic(ClientClass client, WcHandlerCharacter.CharacterObject character) { var packet = new PacketClass(Opcodes.SMSG_TRIGGER_CINEMATIC); try { if (_clusterServiceLocator.WsDbcDatabase.CharRaces.ContainsKey((int)character.Race)) { packet.AddInt32(_clusterServiceLocator.WsDbcDatabase.CharRaces[(int)character.Race].CinematicId); } else { _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.WARNING, "[{0}:{1}] SMSG_TRIGGER_CINEMATIC [Error: RACE={2} CLASS={3}]", client.IP, client.Port, character.Race, character.Classe); return; } client.Send(packet); } finally { packet.Dispose(); } _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.DEBUG, "[{0}:{1}] SMSG_TRIGGER_CINEMATIC", client.IP, client.Port); }
public PacketClass BuildPartyMemberStatsOffline(ulong guid) { var packet = new PacketClass(Opcodes.SMSG_PARTY_MEMBER_STATS_FULL); packet.AddPackGuid(guid); packet.AddUInt32((uint)PartyMemberStatsFlag.GROUP_UPDATE_FLAG_STATUS); packet.AddInt8((byte)PartyMemberStatsStatus.STATUS_OFFLINE); return(packet); }
public void SendAccountMd5(ClientClass client, WcHandlerCharacter.CharacterObject character) { var foundData = false; // TODO: How Does Mangos Zero Handle the Account Data For the Characters? // Dim AccData As New DataTable // _WorldCluster.AccountDatabase.Query(String.Format("SELECT id FROM account WHERE username = ""{0}"";", client.Account), AccData) // If AccData.Rows.Count > 0 Then // Dim AccID As Integer = CType(AccData.Rows(0).Item("account_id"), Integer) // AccData.Clear() // _WorldCluster.AccountDatabase.Query(String.Format("SELECT * FROM account_data WHERE account_id = {0}", AccID), AccData) // If AccData.Rows.Count > 0 Then // FoundData = True // Else // _WorldCluster.AccountDatabase.Update(String.Format("INSERT INTO account_data VALUES({0}, '', '', '', '', '', '', '', '')", AccID)) // End If // End If var smsgAccountDataTimes = new PacketClass(Opcodes.SMSG_ACCOUNT_DATA_MD5); try { // Dim md5hash As MD5 = MD5.Create() for (var i = 0; i <= 7; i++) { if (foundData) { } // Dim tmpBytes() As Byte = AccData.Rows(0).Item("account_data" & i) // If tmpBytes.Length = 0 Then // SMSG_ACCOUNT_DATA_TIMES.AddInt64(0) // SMSG_ACCOUNT_DATA_TIMES.AddInt64(0) // Else // SMSG_ACCOUNT_DATA_TIMES.AddByteArray(md5hash.ComputeHash(tmpBytes)) // End If else { smsgAccountDataTimes.AddInt64(0L); smsgAccountDataTimes.AddInt64(0L); } } // md5hash.Clear() // md5hash = Nothing client.Send(smsgAccountDataTimes); } finally { smsgAccountDataTimes.Dispose(); } _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.DEBUG, "[{0}:{1}] SMSG_ACCOUNT_DATA_MD5", client.IP, client.Port); }
public void SendMessageNotification(ClientClass client, string message) { var packet = new PacketClass(Opcodes.SMSG_NOTIFICATION); try { packet.AddString(message); client.Send(packet); } finally { packet.Dispose(); } }
public void SendCorpseReclaimDelay(ClientClass client, WcHandlerCharacter.CharacterObject character, int seconds = 30) { var packet = new PacketClass(Opcodes.SMSG_CORPSE_RECLAIM_DELAY); try { packet.AddInt32(seconds * 1000); client.Send(packet); } finally { packet.Dispose(); } _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.DEBUG, "[{0}:{1}] SMSG_CORPSE_RECLAIM_DELAY [{2}s]", client.IP, client.Port, seconds); }
public void SendProficiency(ClientClass client, byte proficiencyType, int proficiencyFlags) { var packet = new PacketClass(Opcodes.SMSG_SET_PROFICIENCY); try { packet.AddInt8(proficiencyType); packet.AddInt32(proficiencyFlags); client.Send(packet); } finally { packet.Dispose(); } _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.DEBUG, "[{0}:{1}] SMSG_SET_PROFICIENCY", client.IP, client.Port); }
public PacketClass BuildChatMessage(ulong senderGuid, string message, ChatMsg msgType, LANGUAGES msgLanguage, byte flag = 0, string msgChannel = "Global") { var packet = new PacketClass(Opcodes.SMSG_MESSAGECHAT); try { packet.AddInt8((byte)msgType); packet.AddInt32((int)msgLanguage); switch (msgType) { case var @case when @case == ChatMsg.CHAT_MSG_CHANNEL: { packet.AddString(msgChannel); packet.AddUInt32(0U); packet.AddUInt64(senderGuid); break; } case var case1 when case1 == ChatMsg.CHAT_MSG_YELL: case var case2 when case2 == ChatMsg.CHAT_MSG_SAY: case var case3 when case3 == ChatMsg.CHAT_MSG_PARTY: { packet.AddUInt64(senderGuid); packet.AddUInt64(senderGuid); break; } case var case4 when case4 == ChatMsg.CHAT_MSG_SYSTEM: case var case5 when case5 == ChatMsg.CHAT_MSG_EMOTE: case var case6 when case6 == ChatMsg.CHAT_MSG_IGNORED: case var case7 when case7 == ChatMsg.CHAT_MSG_SKILL: case var case8 when case8 == ChatMsg.CHAT_MSG_GUILD: case var case9 when case9 == ChatMsg.CHAT_MSG_OFFICER: case var case10 when case10 == ChatMsg.CHAT_MSG_RAID: case var case11 when case11 == ChatMsg.CHAT_MSG_WHISPER_INFORM: case var case12 when case12 == ChatMsg.CHAT_MSG_GUILD: case var case13 when case13 == ChatMsg.CHAT_MSG_WHISPER: case var case14 when case14 == ChatMsg.CHAT_MSG_AFK: case var case15 when case15 == ChatMsg.CHAT_MSG_DND: case var case16 when case16 == ChatMsg.CHAT_MSG_RAID_LEADER: case var case17 when case17 == ChatMsg.CHAT_MSG_RAID_WARNING: { packet.AddUInt64(senderGuid); break; } case var case18 when case18 == ChatMsg.CHAT_MSG_MONSTER_SAY: case var case19 when case19 == ChatMsg.CHAT_MSG_MONSTER_EMOTE: case var case20 when case20 == ChatMsg.CHAT_MSG_MONSTER_YELL: { _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.WARNING, "Use Creature.SendChatMessage() for this message type - {0}!", msgType); break; } default: { _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.WARNING, "Unknown chat message type - {0}!", msgType); break; } } packet.AddUInt32((uint)(Encoding.UTF8.GetByteCount(message) + 1)); packet.AddString(message); packet.AddInt8(flag); } catch (Exception) { _clusterServiceLocator.WorldCluster.Log.WriteLine(LogType.FAILED, "failed chat message type - {0}!", msgType); } return(packet); }