static void OnMessageChat(WorldClient client, CMSG msgID, BinReader data) { CHATMESSAGETYPE type = (CHATMESSAGETYPE)data.ReadInt32(); /*int language =*/ data.ReadInt32(); /*string target = string.Empty;*/ if (type == CHATMESSAGETYPE.WHISPER) { /*target =*/ data.ReadString(0x100); } string msg = data.ReadString(0x100); if (msg.StartsWith("!") || msg.StartsWith("%")) { OnChatCommand(client, msg.Substring(1)); return; } switch (type) { case CHATMESSAGETYPE.SAY: { ServerPacket pkg = new ServerPacket(SMSG.MESSAGECHAT); pkg.Write((byte)CHATMESSAGETYPE.SAY); pkg.Write((int)0); pkg.Write(client.Player.GUID); pkg.Write(msg); pkg.Write((byte)0); pkg.Finish(); client.Player.MapTile.Map.Send(pkg, client.Player.Position, 25.0f); break; } case CHATMESSAGETYPE.YELL: { ServerPacket pkg = new ServerPacket(SMSG.MESSAGECHAT); pkg.Write((byte)CHATMESSAGETYPE.YELL); pkg.Write((int)0); pkg.Write(client.Player.GUID); pkg.Write(msg); pkg.Write((byte)0); pkg.Finish(); client.Player.MapTile.Map.Send(pkg, client.Player.Position, 50.0f); break; } case CHATMESSAGETYPE.EMOTE: { ServerPacket pkg = new ServerPacket(SMSG.MESSAGECHAT); pkg.Write((byte)CHATMESSAGETYPE.EMOTE); pkg.Write((int)0); pkg.Write(client.Player.GUID); pkg.Write(msg); pkg.Write((byte)0); pkg.Finish(); client.Player.MapTile.Map.Send(pkg, client.Player.Position, 25.0f); break; } } return; }
public static void GuildSay(uint from, LoginClient client, string msg, CHATMESSAGETYPE mtype) { BinWriter pkg = LoginClient.NewPacket(SMSG.MESSAGECHAT); pkg.Write((byte)mtype); pkg.Write((int)0); pkg.Write((ulong)from); pkg.Write((int)msg.Length + 1); pkg.Write(msg); pkg.Write((byte)0); client.Send(pkg); }
static bool OnMessageChat(LoginClient client, CMSG msgID, BinReader data) { CHATMESSAGETYPE type = (CHATMESSAGETYPE)data.ReadInt32(); /*int language =*/ data.ReadInt32(); string target = string.Empty; if (type == CHATMESSAGETYPE.WHISPER) { target = data.ReadString(0x100); } string msg = data.ReadString(0x100); if (msg.StartsWith("!") || msg.StartsWith("%")) { return(OnChatCommand(client, msg.Substring(1))); } switch (type) { case CHATMESSAGETYPE.SAY: case CHATMESSAGETYPE.YELL: case CHATMESSAGETYPE.EMOTE: return(false); // let worldserver handle it case CHATMESSAGETYPE.WHISPER: { DataObject[] objs = DataServer.Database.SelectObjects(typeof(DBCharacter), "Name = '" + target + "'"); if (objs.Length == 0) { Chat.System(client, "No such player."); return(true); } LoginClient targetClient = LoginServer.GetLoginClientByCharacterID(objs[0].ObjectId); if (targetClient == null || targetClient.Character == null) { Chat.System(client, "That player is not online."); return(true); } Chat.Whisper(client, targetClient, msg); break; } default: Chat.System(client, "Received " + type + ": " + msg); break; } return(true); }
static bool OnMessageChat(LoginClient client, CMSG msgID, BinReader data) { CHATMESSAGETYPE type = (CHATMESSAGETYPE)data.ReadInt32(); /*int language =*/ data.ReadInt32(); string target = string.Empty; if (type == CHATMESSAGETYPE.WHISPER) { target = data.ReadString(0x100); } string msg = data.ReadString(0x100); if (msg.StartsWith("!") || msg.StartsWith("%")) { return(OnChatCommand(client, msg.Substring(1))); } switch (type) { case CHATMESSAGETYPE.PARTY: case CHATMESSAGETYPE.CHANNEL: case CHATMESSAGETYPE.CHANNEL_JOIN: case CHATMESSAGETYPE.CHANNEL_LEAVE: case CHATMESSAGETYPE.CHANNEL_LIST: case CHATMESSAGETYPE.CHANNEL_NOTICE: case CHATMESSAGETYPE.CHANNEL_NOTICE_USER: case CHATMESSAGETYPE.SAY: case CHATMESSAGETYPE.YELL: case CHATMESSAGETYPE.EMOTE: return(false); // let worldserver handle it case CHATMESSAGETYPE.WHISPER: { DataObject[] objs = DataServer.Database.SelectObjects(typeof(DBCharacter), "Name = '" + target + "'"); if (objs.Length == 0) { Chat.System(client, "No such player."); return(true); } LoginClient targetClient = LoginServer.GetLoginClientByCharacterID(objs[0].ObjectId); if (targetClient == null || targetClient.Character == null) { Chat.System(client, "That player is not online."); return(true); } Chat.Whisper(client, targetClient, msg); break; } case CHATMESSAGETYPE.GUILD: { DBGuild guild = client.Character.Guild; if (guild == null) { return(true); } if ((guild.getRankFlags(client.Character.GuildRank) & (uint)GUILDFLAGS.SAY) == (uint)GUILDFLAGS.SAY) { foreach (DBGuildMembers member in guild.Members) { if ((guild.getRankFlags(member.Rank) & (uint)GUILDFLAGS.LISTEN) == (uint)GUILDFLAGS.LISTEN) { LoginClient targetClient = LoginServer.GetLoginClientByCharacterID(member.MemberID); if (targetClient == null || targetClient.Character == null) { continue; } else { Chat.GuildSay(client.Character.ObjectId, targetClient, msg, CHATMESSAGETYPE.GUILD); } } } } else { Chat.GuildSay(0, client, "You do not have permission", CHATMESSAGETYPE.GUILD); } break; } case CHATMESSAGETYPE.OFFICER: { DBGuild guild = client.Character.Guild; if (guild == null) { return(true); } if ((guild.getRankFlags(client.Character.GuildRank) & (uint)GUILDFLAGS.OFFICER_SAY) == (uint)GUILDFLAGS.OFFICER_SAY) { foreach (DBGuildMembers member in guild.Members) { if ((guild.getRankFlags(member.Rank) & (uint)GUILDFLAGS.OFFICER_LISTEN) == (uint)GUILDFLAGS.OFFICER_LISTEN) { LoginClient targetClient = LoginServer.GetLoginClientByCharacterID(member.MemberID); if (targetClient == null || targetClient.Character == null) { continue; } else { Chat.GuildSay(client.Character.ObjectId, targetClient, msg, CHATMESSAGETYPE.OFFICER); } } } } else { Chat.GuildSay(0, client, "You do not have permission", CHATMESSAGETYPE.GUILD); } break; } default: Chat.System(client, "Received " + type + ": " + msg); break; } return(true); }
static void OnMessageChat(WorldClient client, CMSG msgID, BinReader data) { string channel = " "; CHATMESSAGETYPE type = (CHATMESSAGETYPE)data.ReadInt32(); /*int channel = */ data.ReadInt32(); /*string target = string.Empty;*/ if (type == CHATMESSAGETYPE.WHISPER) { /*target =*/ data.ReadString(0x100); } if (type == CHATMESSAGETYPE.CHANNEL || type == CHATMESSAGETYPE.CHANNEL_JOIN || type == CHATMESSAGETYPE.CHANNEL_LEAVE || type == CHATMESSAGETYPE.CHANNEL_LIST || type == CHATMESSAGETYPE.CHANNEL_NOTICE || type == CHATMESSAGETYPE.CHANNEL_NOTICE_USER) { channel = (string)data.ReadString(); } string msg = data.ReadString(0x100); if (msg.StartsWith("!") || msg.StartsWith("%")) { OnChatCommand(client, msg.Substring(1)); return; } switch (type) { case CHATMESSAGETYPE.SAY: { ServerPacket pkg = new ServerPacket(SMSG.MESSAGECHAT); pkg.Write((byte)CHATMESSAGETYPE.SAY); pkg.Write((int)0); pkg.Write((ulong)0); // Receiver Guid pkg.Write(client.Player.GUID); // Sender Guid pkg.Write((int)msg.Length + 1); // chat fix , that did it :) pkg.Write(msg); pkg.Write((byte)0); pkg.Finish(); client.Player.MapTile.Map.Send(pkg, client.Player.Position, 25.0f); break; } case CHATMESSAGETYPE.YELL: { ServerPacket pkg = new ServerPacket(SMSG.MESSAGECHAT); pkg.Write((byte)CHATMESSAGETYPE.YELL); pkg.Write((int)0); pkg.Write((ulong)0); pkg.Write(client.Player.GUID); // fix 1.3.1 pkg.Write((int)msg.Length + 1); // chat fix pkg.Write(msg); pkg.Write((byte)0); pkg.Finish(); client.Player.MapTile.Map.Send(pkg, client.Player.Position, 50.0f); break; } case CHATMESSAGETYPE.EMOTE: { ServerPacket pkg = new ServerPacket(SMSG.MESSAGECHAT); pkg.Write((byte)CHATMESSAGETYPE.EMOTE); pkg.Write((int)0); pkg.Write((ulong)0); pkg.Write(client.Player.GUID); // fix 1.3.1 pkg.Write((int)msg.Length + 1); // chat fix pkg.Write(msg); pkg.Write((byte)0); pkg.Finish(); client.Player.MapTile.Map.Send(pkg, client.Player.Position, 25.0f); break; } case CHATMESSAGETYPE.CHANNEL: { ChannelManager.TalkTo(channel, client, msg); break; } case CHATMESSAGETYPE.PARTY: { ServerPacket pkg = new ServerPacket(SMSG.MESSAGECHAT); pkg.Write((byte)CHATMESSAGETYPE.PARTY); pkg.Write((int)0); pkg.Write((ulong)0); pkg.Write(client.Player.GUID); // fix 1.3.1 pkg.Write((int)msg.Length + 1); // chat fix pkg.Write(msg); pkg.Write((byte)0); client.Player.Group.SendToGroup(pkg); break; } } return; }