عرض مشاركة واحدة
قديم 2019-07-21, 09:37 PM
المشاركة 5
Rider
.:: عضو خبير ::.
  • غير متواجد
افتراضي رد: مشكلة في العربي في باكت 1004
PacketHandler.cs

كود:
#region Chat/Message (1004)
                
case 1004:
                    {
                        if (
client.Action != 2)
                            return;
                        
Message message = new Message();
                        
message.Deserialize(packet);
                        
message.__Message Filter(message.__Messageclient);
                        if (
message.__Message.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries).Length 0)
                            
message.__Message message.__Message.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries)[0];
                        
Chat(messageclient);
                        break;
                    }
                
#endregion 


Message.cs


كود:
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 _Messageuint _ChatTypeGame.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 _MessageColor _Coloruint _ChatTypeGame.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 _Messagestring __ToColor _Coloruint _ChatTypeGame.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 _MessageClient.GameState ClientColor _Coloruint _ChatTypeGame.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 _Messagestring __Tostring __FromColor _Coloruint _ChatTypeGame.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(buffer8));
            
ChatType BitConverter.ToUInt32(buffer12);
            
MessageUID1 BitConverter.ToUInt32(buffer16);
            
MessageUID2 BitConverter.ToUInt32(buffer20);
            
Mesh BitConverter.ToUInt32(buffer24);
            
_From Encoding.Default.GetString(buffer36buffer[35]);
            
_To Encoding.Default.GetString(buffer37 _From.Lengthbuffer[36 _From.Length]);
            
__Message Encoding.Default.GetString(buffer, (39 _From.Length) + _To.Lengthbuffer[(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), 0Packet);
            
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4Packet);
            
Writer.WriteUInt16(10042Packet);
            
Writer.WriteUInt32((uint)Color.ToArgb(), 8Packet);
            
Writer.WriteUInt32(ChatType12Packet);
            
Writer.WriteUInt32(MessageUID116Packet);
            
Writer.WriteUInt32(MessageUID220Packet);
            
Writer.WriteUInt32(Mesh24Packet);
            
Writer.WriteStringList(new List<string>() { _From_To""__Message }, 34Packet);
            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<
MessageInfoTradeBoard = new List<MessageInfo>();
            private static List<
MessageInfoFriendBoard = new List<MessageInfo>();
            private static List<
MessageInfoTeamBoard = new List<MessageInfo>();
            private static List<
MessageInfoSynBoard = new List<MessageInfo>();
            private static List<
MessageInfoOtherBoard = new List<MessageInfo>();
            private static List<
MessageInfoSystemBoard = new List<MessageInfo>();

            public 
struct MessageInfo
            
{
                public 
String Author;
                public 
String Words;
                public 
String Date;
            };

            public static 
void Add(String AuthorString Wordsushort 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 Messageushort 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 Indexushort 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 LIST_SIZE) > Board.Length)
                    return 
null;

                
String[] List = null;

                
Int32 Start = (Board.Length - ((Index 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 StartEndi--)
                {
                    List[
0] = Board[i].Author;
                    if (
Board[i].Words.Length TITLE_SIZE)
                        List[
1] = Board[i].Words.Remove(TITLE_SIZEBoard[i].Words.Length TITLE_SIZE);
                    else
                        List[
1] = Board[i].Words;
                    List[
2] = Board[i].Date;
                    
+= 3;
                }
                return List;
            }

            public static 
String GetWords(String Authorushort 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 Authorushort 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();
            }
        }
    }