|
#region Chat/Message (1004)
case 1004:
{
if (client.Action != 2)
return;
Message message = new Message();
message.Deserialize(packet);
message.__Message = Filter(message.__Message, client);
if (message.__Message.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries).Length > 0)
message.__Message = message.__Message.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries)[0];
Chat(message, client);
break;
}
#endregion
using System;
using System.Text;
using System.Drawing;
using System.Collections.Generic;
namespace Mr_Panda.Network.GamePackets
{
public class Message : Interfaces.IPacket
{
public string _From;
public string _To;
public uint ChatType;
public Color Color;
public string __Message;
public uint Mesh;
public const uint
CS = 2402,
Talk = 2000,
Whisper = 2001,
Team = 2003,
Guild = 2004,
Clan = 2006,
System = 2007,
Friend = 2009,
Center = 2011,
TopLeft = 2012,
InnerPower = 2027,
Service = 2014,
Tip = 2015,
World = 2021,
Qualifier = 2022,
PopUP = 2100,
Dialog = 2101,
Website = 2105,
FirstRightCorner = 2108,
ContinueRightCorner = 2109,
SystemWhisper = 2110,
GuildAnnouncement = 2111,
Agate = 2115,
ArenaQualifier = 2022,
BroadcastMessage = 2500,
Monster = 2600,
SlideFromRight = 100000,
HawkMessage = 2104,
SlideFromRightRedVib = 1000000,
WhiteVibrate = 10000000;
public Message(string _Message, uint _ChatType, Game.Languages Language = Game.Languages.English)
{
this.Mesh = 0;
this.__Message = _Message;
this._To = "ALL";
this._From = "SYSTEM";
this.Color = Color.Red;
this.ChatType = _ChatType;
}
public Message(string _Message, Color _Color, uint _ChatType, Game.Languages Language = Game.Languages.English)
{
this.Mesh = 0;
this.__Message = _Message;
this._To = "ALL";
this._From = "SYSTEM";
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message(string _Message, string __To, Color _Color, uint _ChatType, Game.Languages Language = Game.Languages.English)
{
this.Mesh = 0;
this.__Message = _Message;
this._To = __To;
this._From = "SYSTEM";
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message(string _Message, Client.GameState Client, Color _Color, uint _ChatType, Game.Languages Language = Game.Languages.English)
{
this.Mesh = 0;
this.__Message = _Message;
this._To = Client.Player.Name;
this.MessageUID1 = Client.Player.UID;
this._From = "SYSTEM";
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message(string _Message, string __To, string __From, Color _Color, uint _ChatType, Game.Languages Language = Game.Languages.English)
{
this.Mesh = 0;
this.__Message = _Message;
this._To = __To;
this._From = __From;
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message()
{
this.Mesh = 0;
}
public Game.Languages Language = Game.Languages.English;
public uint MessageUID1 = 0;
public uint MessageUID2 = 0;
public void Deserialize(byte[] buffer)
{
Color = Color.FromArgb(BitConverter.ToInt32(buffer, 8));
ChatType = BitConverter.ToUInt32(buffer, 12);
MessageUID1 = BitConverter.ToUInt32(buffer, 16);
MessageUID2 = BitConverter.ToUInt32(buffer, 20);
Mesh = BitConverter.ToUInt32(buffer, 24);
_From = Encoding.Default.GetString(buffer, 36, buffer[35]);
_To = Encoding.Default.GetString(buffer, 37 + _From.Length, buffer[36 + _From.Length]);
__Message = Encoding.Default.GetString(buffer, (39 + _From.Length) + _To.Length, buffer[(38 + _From.Length) + _To.Length]);
}
public byte[] ToArray()
{
byte[] Packet = new byte[(((32 + _From.Length) + _To.Length) + __Message.Length) + 18];
Writer.WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, Packet);
Writer.WriteUInt16(1004, 2, Packet);
Writer.WriteUInt32((uint)Color.ToArgb(), 8, Packet);
Writer.WriteUInt32(ChatType, 12, Packet);
Writer.WriteUInt32(MessageUID1, 16, Packet);
Writer.WriteUInt32(MessageUID2, 20, Packet);
Writer.WriteUInt32(Mesh, 24, Packet);
Writer.WriteStringList(new List<string>() { _From, _To, "", __Message }, 34, Packet);
return Packet;
}
public void Send(Client.GameState client)
{
if (client.Language == Language)
client.Send(ToArray());
}
public class MessageBoard
{
private const Int32 TITLE_SIZE = 44;
private const Int32 LIST_SIZE = 10;
private static List<MessageInfo> TradeBoard = new List<MessageInfo>();
private static List<MessageInfo> FriendBoard = new List<MessageInfo>();
private static List<MessageInfo> TeamBoard = new List<MessageInfo>();
private static List<MessageInfo> SynBoard = new List<MessageInfo>();
private static List<MessageInfo> OtherBoard = new List<MessageInfo>();
private static List<MessageInfo> SystemBoard = new List<MessageInfo>();
public struct MessageInfo
{
public String Author;
public String Words;
public String Date;
};
public static void Add(String Author, String Words, ushort Channel)
{
MessageInfo Info = new MessageInfo();
Info.Author = Author;
Info.Words = Words;
Info.Date = DateTime.Now.ToString("yyyyMMddHHmmss");
switch (Channel)
{
case 2201:
TradeBoard.Add(Info);
break;
case 2202:
FriendBoard.Add(Info);
break;
case 2203:
TeamBoard.Add(Info);
break;
case 2204:
SynBoard.Add(Info);
break;
case 2205:
OtherBoard.Add(Info);
break;
case 2206:
SystemBoard.Add(Info);
break;
}
}
public static void Delete(MessageInfo Message, ushort Channel)
{
switch (Channel)
{
case 2201:
if (TradeBoard.Contains(Message))
TradeBoard.Remove(Message);
break;
case 2202:
if (FriendBoard.Contains(Message))
FriendBoard.Remove(Message);
break;
case 2203:
if (TeamBoard.Contains(Message))
TeamBoard.Remove(Message);
break;
case 2204:
if (SynBoard.Contains(Message))
SynBoard.Remove(Message);
break;
case 2205:
if (OtherBoard.Contains(Message))
OtherBoard.Remove(Message);
break;
case 2206:
if (SystemBoard.Contains(Message))
SystemBoard.Remove(Message);
break;
}
}
public static String[] GetList(UInt16 Index, ushort Channel)
{
MessageInfo[] Board = null;
switch (Channel)
{
case 2201:
Board = TradeBoard.ToArray();
break;
case 2202:
Board = FriendBoard.ToArray();
break;
case 2203:
Board = TeamBoard.ToArray();
break;
case 2204:
Board = SynBoard.ToArray();
break;
case 2205:
Board = OtherBoard.ToArray();
break;
case 2206:
Board = SystemBoard.ToArray();
break;
default:
return null;
}
if (Board.Length == 0)
return null;
if ((Index / 8 * LIST_SIZE) > Board.Length)
return null;
String[] List = null;
Int32 Start = (Board.Length - ((Index / 8 * LIST_SIZE) + 1));
if (Start < LIST_SIZE)
List = new String[(Start + 1) * 3];
else
List = new String[LIST_SIZE * 3];
Int32 End = (Start - (List.Length / 3));
Int32 x = 0;
for (Int32 i = Start; i > End; i--)
{
List[x + 0] = Board[i].Author;
if (Board[i].Words.Length > TITLE_SIZE)
List[x + 1] = Board[i].Words.Remove(TITLE_SIZE, Board[i].Words.Length - TITLE_SIZE);
else
List[x + 1] = Board[i].Words;
List[x + 2] = Board[i].Date;
x += 3;
}
return List;
}
public static String GetWords(String Author, ushort Channel)
{
MessageInfo[] Board = null;
switch (Channel)
{
case 2201:
Board = TradeBoard.ToArray();
break;
case 2202:
Board = FriendBoard.ToArray();
break;
case 2203:
Board = TeamBoard.ToArray();
break;
case 2204:
Board = SynBoard.ToArray();
break;
case 2205:
Board = OtherBoard.ToArray();
break;
case 2206:
Board = SystemBoard.ToArray();
break;
default:
return "";
}
foreach (MessageInfo Info in Board)
{
if (Info.Author == Author)
return Info.Words;
}
return "";
}
public static MessageInfo GetMsgInfoByAuthor(String Author, ushort Channel)
{
MessageInfo[] Board = null;
switch (Channel)
{
case 2201:
Board = TradeBoard.ToArray();
break;
case 2202:
Board = FriendBoard.ToArray();
break;
case 2203:
Board = TeamBoard.ToArray();
break;
case 2204:
Board = SynBoard.ToArray();
break;
case 2205:
Board = OtherBoard.ToArray();
break;
case 2206:
Board = SystemBoard.ToArray();
break;
default:
return new MessageInfo();
}
foreach (MessageInfo Info in Board)
{
if (Info.Author == Author)
return Info;
}
return new MessageInfo();
}
}
}
}
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الضربا الفيك با العربي مش بتاثر بس بيجيب رقم خش افهم | MRonlineGvrix | مشكلات السيرفيرات كونكر الشخصيه | 2 | 2020-02-17 12:57 AM |
يارجاله ليه العربي بتع الصفحة مش باين | ahmedfathy | مشكلات السيرفيرات كونكر الشخصيه | 3 | 2019-11-08 12:13 AM |