Beispiel #1
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            LobbyClient cclient = (LobbyClient)client;

            PacketOut Out      = new PacketOut((uint)Opcodes.ANS_CHARACTER_CREATE);
            byte      freeSlot = GetFreeSlot(cclient);

            if (freeSlot == 0)
            {
                Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED);
            }
            else
            {
                cclient.Pending.Slot    = freeSlot;
                cclient.Pending.Faction = packet.GetUint8();
                cclient.Pending.Gender  = packet.GetUint8();
                cclient.Pending.Version = (byte)packet.GetUint32Reversed();
                packet.GetUint32Reversed();
                byte[] Custom = new byte[packet.Length - packet.Position];
                packet.Read(Custom, 0, Custom.Length);
                cclient.Pending.Appearance = BitConverter.ToString(Custom);
                Databases.CharacterTable.Add(cclient.Pending);
                Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS);
                Out.WriteInt32Reverse(cclient.Pending.Slot);
            }
            cclient.Send(Out);
            System.Threading.Thread.Sleep(500);
            cclient.Pending = default(CharacterEntry);
            System.Threading.Thread.Sleep(500);
            cclient.Disconnect();
            return(0);
        }
Beispiel #2
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            LobbyClient cclient  = (LobbyClient)client;
            PacketOut   Out      = new PacketOut((uint)Opcodes.ANS_CHARACTER_CREATE);
            byte        freeSlot = GetFreeSlot(cclient);

            if (freeSlot == 0)
            {
                Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED);
            }
            else
            {
                cclient.Pending.Slot    = freeSlot;
                cclient.Pending.Faction = packet.GetUint8();
                cclient.Pending.Gender  = packet.GetUint8();
                cclient.Pending.Version = (byte)packet.GetUint32Reversed();
                packet.GetUint32Reversed();
                packet.GetUint32Reversed();
                byte[] Custom = new byte[packet.Length - packet.Position];
                packet.Read(Custom, 0, Custom.Length);
                byte[] ActualCustom = new byte[Custom.Length + 4];
                ActualCustom[0] = 0x36;
                ActualCustom[1] = 0x00;
                ActualCustom[2] = 0x00;
                ActualCustom[3] = 0x00;
                Buffer.BlockCopy(Custom, 0, ActualCustom, 4, Custom.Length);
                cclient.Pending.Appearance = BitConverter.ToString(ActualCustom);
                Databases.CharacterTable.Add(cclient.Pending);
                Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS);
                Out.WriteInt32Reverse(cclient.Pending.Slot);
            }
            cclient.Send(Out);
            return(0);
        }
Beispiel #3
0
 public PacketIn Decrypt(PacketIn packet)
 {
     byte[] data = packet.ToArray();
     decryption.Process(data, 4, data.Length - 4);
     PacketIn result = new PacketIn(data, 0, data.Length);
     result.Size = result.GetUint32Reversed();
     result.Opcode = result.GetUint32Reversed();
     Log.Info("[CLIENT POST-ENCRYPT]", this.DumpData(data));
     return result;
 }
Beispiel #4
0
        public PacketIn Decrypt(PacketIn packet)
        {
            byte[] data = packet.ToArray();
            decryption.Process(data, 4, data.Length - 4);
            PacketIn result = new PacketIn(data, 0, data.Length);

            result.Size   = result.GetUint32Reversed();
            result.Opcode = result.GetUint32Reversed();
            Log.Info("[CLIENT POST-ENCRYPT]", this.DumpData(data));
            return(result);
        }
Beispiel #5
0
 public PacketIn Decrypt(PacketIn packet)
 {
     byte[] data = packet.ToArray();
     decryption.Process(data, 4, data.Length - 4);
     PacketIn result = new PacketIn(data, 0, data.Length);
     result.Size = result.GetUint32Reversed();
     result.Opcode = result.GetUint32Reversed();
     Console.Write("Dcrptd:");
     for (int i = 0; i < result.ToArray().Length; i++) Console.Write(" "+ result.ToArray()[i]);
     Console.WriteLine();
     return result;
 }
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     LobbyClient cclient = client as LobbyClient;
     UInt32 WorldUid = packet.GetUint32Reversed();
     string Name = packet.GetParsedString();
     PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_CHARACTER_NAME_CHECK);
     if (Databases.CharacterTable.Count(c => c.Name == Name) == 0)
     {
         cclient.Pending = new CharacterEntry();
         cclient.Pending.Index = Databases.CharacterTable.GenerateIndex();
         cclient.Pending.AccountIndex = cclient.Account.Index;
         cclient.Pending.Name = Name;
         cclient.Pending.World = (int)WorldUid;
         cclient.Pending.Rank = 1;
         cclient.Pending.Money = 0;
         cclient.Pending.Threat = 1;
         cclient.Pending.Playtime = 0;
         cclient.Pending.Clan = "APB-EMU";
         cclient.Pending.IsOnline = 0;
         cclient.Pending.DistrictID = 0;
         cclient.Pending.DistrictType = 0;
         cclient.Pending.LFG = 0;
         cclient.Pending.IsGroupPublic = 0;
         cclient.Pending.GroupInvite = 0;
         cclient.Pending.GroupStatus = 0;
         Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
     }
     else
     {
         cclient.Pending = default(CharacterEntry);
         Out.WriteUInt32Reverse((uint)ResponseCodes.RC_CHARACTER_NAME_CHECK_IN_USE);
     }
     cclient.Send(Out);
     return 0;
 }
Beispiel #7
0
        public PacketIn Decrypt(PacketIn packet)
        {
            byte[] data = packet.ToArray();
            decryption.Process(data, 4, data.Length - 4);
            PacketIn result = new PacketIn(data, 0, data.Length);

            result.Size   = result.GetUint32Reversed();
            result.Opcode = result.GetUint32Reversed();
            Console.Write("Dcrptd:");
            for (int i = 0; i < result.ToArray().Length; i++)
            {
                Console.Write(" " + result.ToArray()[i]);
            }
            Console.WriteLine();
            return(result);
        }
Beispiel #8
0
        public PacketIn Decrypt(PacketIn packet)
        {
            byte[] data = packet.ToArray();
            decryption.Process(data, 4, data.Length - 4);
            PacketIn result = new PacketIn(data, 0, data.Length);
            result.Size = result.GetUint32Reversed();
            result.Opcode = result.GetUint32Reversed();

            /*
            Console.Write("Dcrptd: ");
            for (int i = 0; i < result.ToArray().Length; i++) Console.Write(" "+ result.ToArray()[i]);
            Console.WriteLine();
            */

            Log.Info("[CLIENT POST-ENCRYPT]", this.DumpData(data));

            return result;
        }
Beispiel #9
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     WorldClient cclient = (WorldClient)client;
     UInt32 whisperuid = packet.GetUint32Reversed();
     String charname = packet.GetParsedString();
     String message = packet.GetParsedString();
     (client as WorldClient).Send(new ANS_CHAT_WHISPER(cclient, whisperuid, charname, message));
     //cclient.Send(new CHAT_WHISPER(cclient.CharacterId, 1, message));
     return 0;
 }
Beispiel #10
0
 protected override void OnReceive(PacketIn packet)
 {
     lock (this)
     {
         if (Crypto != null)
         {
             PacketIn decrypted;
             decrypted = Crypto.Decrypt(packet);
             Server.HandlePacket(this, decrypted);
         }
         else
         {
             packet.Size   = packet.GetUint32Reversed();
             packet        = DeCrypt(packet);
             packet.Opcode = packet.GetUint32Reversed();
             Server.HandlePacket(this, packet);
         }
     }
 }
Beispiel #11
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     LobbyClient cclient = client as LobbyClient;
     Byte freeSlot = GetFreeSlot(cclient);
     if (freeSlot == 0) ANS_CHARACTER_CREATE.Send(cclient);
     else
     { 
         cclient.Pending.Slot = freeSlot;
         cclient.Pending.Faction = packet.GetUint8();
         cclient.Pending.Gender = packet.GetUint8();
         cclient.Pending.Version = (Byte)packet.GetUint32Reversed();
         packet.GetUint32Reversed();
         Byte[] Custom = new Byte[packet.Length - packet.Position];
         packet.Read(Custom, 0, Custom.Length);
         cclient.Pending.Appearance = BitConverter.ToString(Custom);
         Databases.CharacterTable.Add(cclient.Pending);
         ANS_CHARACTER_CREATE.Send(cclient);
     }
     return 0;
 }
Beispiel #12
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient   = (WorldClient)client;
            uint        accountId = packet.GetUint32Reversed();

            Log.Debug("AskWorldEnter", "New client! Account = " + accountId);
            cclient.Account   = Databases.AccountTable.SingleOrDefault(a => a.Index == accountId);
            cclient.Character = Databases.CharacterTable.SingleOrDefault(c => c.AccountIndex == accountId);
            lock (Program.expectingAccounts)
            {
                Program.expectingAccounts.TryGetValue(accountId, out cclient.account);
            }

            PacketOut Out = new PacketOut((uint)Opcodes.ANS_WORLD_ENTER);

            if (cclient.account == null)
            {
                Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED);
            }
            else
            {
                Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS);
                Out.WriteUInt32Reverse(cclient.account.Character);
                Out.WriteUInt32Reverse((uint)cclient.Account.RTW_Points);
                Out.WriteByte(cclient.Account.IsAdmin);
                Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
                Out.WriteFloat(5.00f);
                Out.WriteByte(0);
                Out.WriteByte(0);
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 1, false, Program.WorldName, cclient.account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 2, false, Program.WorldName, cclient.account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 3, false, Program.WorldName, cclient.account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 4, false, Program.WorldName, cclient.account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 5, false, Program.WorldName, cclient.account.Character.ToString()));
                Out.WriteByte(1);
                Out.WriteByte(cclient.Character.LFG);
            }
            cclient.Crypto = new Encryption(cclient.account.SessionId);
            cclient.Send(new DISTRICT_LIST());
            cclient.Send(Out);
            lock (Program.expectingAccounts)
            {
                foreach (KeyValuePair <uint, Acc> a in Program.expectingAccounts)
                {
                    if (a.Value == cclient.account)
                    {
                        Program.expectingAccounts.Remove(a.Key);
                        break;
                    }
                }
            }
            return(0);
        }
Beispiel #13
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient = (WorldClient)client;
            uint        charUID = packet.GetUint32Reversed();

            PacketOut   Out = new PacketOut((uint)Opcodes.ANS_IGNORELIST_REMOVE);
            IgnoreEntry ign = Databases.IgnoreTable.SingleOrDefault(i => i.CharacterIgnoreIndex == charUID);

            Databases.IgnoreTable.Remove(ign);
            Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
            Out.WriteUInt32Reverse(charUID);
            cclient.Send(Out);
            return(0);
        }
Beispiel #14
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient = (WorldClient)client;
            uint        charUID = packet.GetUint32Reversed();

            FriendEntry frnd = Databases.FriendTable.SingleOrDefault(f => f.CharacterFriendIndex == charUID);

            Databases.FriendTable.Remove(frnd);
            PacketOut Out = new PacketOut((uint)Opcodes.ANS_FRIENDLIST_REMOVE);

            Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
            Out.WriteUInt32Reverse(charUID);
            cclient.Send(Out);
            return(0);
        }
Beispiel #15
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient  = (WorldClient)client;
            ushort      type     = packet.GetUint16Reversed();
            uint        charUID  = packet.GetUint32Reversed();
            string      charName = packet.GetPascalString();

            PacketOut Out = new PacketOut((uint)Opcodes.ANS_NAME_QUERY);

            Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
            Out.WriteUInt16Reverse(type);
            Out.WriteUInt32Reverse(charUID);
            Out.WriteParsedString(charName);
            cclient.Send(Out);
            return(0);
        }
Beispiel #16
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            LobbyClient cclient = (LobbyClient)client;
            byte        FileId  = packet.GetUint8();
            uint        Version = packet.GetUint32Reversed();

            byte[] File = new byte[packet.Length - packet.Position];
            packet.Read(File, 0, File.Length);
            PacketOut Out = new PacketOut((uint)Opcodes.ANS_CONFIGFILE_SAVE);

            Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
            Out.WriteByte(FileId);
            Out.Write(File, 0, File.Length);
            cclient.Send(Out);
            return(0);
        }
Beispiel #17
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     WorldClient cclient = (WorldClient)client;
     UInt32 accountId = packet.GetUint32Reversed();
     Log.Debug("AskWorldEnter", "New client! Account = " + accountId);
     cclient.Account = Databases.AccountTable.SingleOrDefault(a => a.Index == accountId);
     cclient.Character = Databases.CharacterTable.SingleOrDefault(c => c.AccountIndex == accountId);
     lock (Program.expectingAccounts)
     {
         Program.expectingAccounts.TryGetValue(accountId, out cclient.account);
     }
     PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_WORLD_ENTER);
     if (cclient.account == null) Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED);
     else
     {
         Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS);
         Out.WriteUInt32Reverse(cclient.account.Character);
         Out.WriteUInt32Reverse((uint)cclient.Account.RTW_Points);
         Out.WriteByte(cclient.Account.IsAdmin);
         Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
         Out.WriteFloat(5.00f);
         Out.WriteByte(0);
         Out.WriteByte(0);
         Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 1, false, Program.WorldName, cclient.account.Character.ToString()));
         Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 2, false, Program.WorldName, cclient.account.Character.ToString()));
         Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 3, false, Program.WorldName, cclient.account.Character.ToString()));
         Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 4, false, Program.WorldName, cclient.account.Character.ToString()));
         Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 5, false, Program.WorldName, cclient.account.Character.ToString()));
         Out.WriteByte(1);
         Out.WriteByte(cclient.Character.LFG);
     }
     cclient.Crypto = new TCP.Encryption(cclient.account.SessionId);
     cclient.Send(new DISTRICT_LIST());
     cclient.Send(Out);
     lock (Program.expectingAccounts)
     {
         foreach (KeyValuePair<uint, Acc> a in Program.expectingAccounts)
         {
             if (a.Value == cclient.account)
             {
                 Program.expectingAccounts.Remove(a.Key);
                 break;
             }
         }
     }
     return 0;
 }
Beispiel #18
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     LobbyClient cclient = (LobbyClient)client;
     byte FileId = packet.GetUint8();
     UInt32 Version = packet.GetUint32Reversed();
     byte[] File = new byte[packet.Length - packet.Position];
     packet.Read(File, 0, File.Length);
     File = ZlibMgr.Decompress(File);
     Log.Debug("ConfigSave", "Config saved! FileId = " + FileId + " | Version = " + Version + " | Size = " + File.Length);
     Program.FileMgr.SaveInfo((int)cclient.Account.Index, FileId, File);
     PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_CONFIGFILE_SAVE);
     Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
     Out.WriteByte(FileId);
     Out.Write(File, 0, File.Length);
     cclient.Send(Out);
     return 0;
 }
Beispiel #19
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            LobbyClient cclient = (LobbyClient)client;
            byte        FileId  = packet.GetUint8();
            uint        Version = packet.GetUint32Reversed();

            byte[] File = new byte[packet.Length - packet.Position];
            packet.Read(File, 0, File.Length);
            File = ZlibMgr.Decompress(File);
            Log.Debug("ConfigSave", "Config saved! FileId = " + FileId + " | Version = " + Version + " | Size = " + File.Length);
            Program.FileMgr.SaveInfo(cclient.Account.Index, FileId, File);

            PacketOut Out = new PacketOut((uint)Opcodes.ANS_CONFIGFILE_SAVE);

            Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
            Out.WriteByte(FileId);
            Out.Write(File, 0, File.Length);
            cclient.Send(Out);
            return(0);
        }
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     LobbyClient cclient = client as LobbyClient;
     UInt32 WorldUid = packet.GetUint32Reversed();
     string Name = packet.GetParsedString();
     PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_CHARACTER_NAME_CHECK);
     if (isValid(Name) && !cclient.Characters.Exists(Name))
     {
         cclient.Pending = new Character();
         cclient.Pending.Name = Name;
         cclient.Pending.WorldId = WorldUid;
         Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
     }
     else
     {
         cclient.Pending = null;
         Out.WriteUInt32Reverse((uint)ResponseCodes.RC_CHARACTER_NAME_CHECK_IN_USE);
     }
     cclient.Send(Out);
     return 0;
 }
Beispiel #21
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient = (WorldClient)client;
            uint        charUID = packet.GetUint32Reversed();

            PacketOut Out = new PacketOut((uint)Opcodes.ANS_FRIENDLIST_STATE);

            Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
            Out.WriteByte(1); //count
            Out.WriteByte(cclient.Character.LFG);
            Out.WriteByte(cclient.Character.GroupStatus);
            Out.WriteByte(cclient.Character.IsGroupPublic);
            Out.WriteByte(cclient.Character.GroupInvite);
            uint code = (uint)(cclient.Character.DistrictType << 24);

            code += cclient.Character.DistrictID;
            Out.WriteUInt32(code);
            Out.WriteByte(0);
            Out.WriteUInt32Reverse(charUID);
            cclient.Send(Out);
            return(0);
        }
Beispiel #22
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient    = (WorldClient)client;
            uint        whisperuid = packet.GetUint32Reversed();
            string      charname   = packet.GetParsedString();
            string      message    = packet.GetParsedString();

            PacketOut Out = new PacketOut((uint)Opcodes.ANS_CHAT_WHISPER);

            Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
            Out.WriteUInt32Reverse(whisperuid);
            uint charUID = 0x00; //GetCharUid(String charname) TODO

            Out.WriteUInt32Reverse(charUID);
            cclient.Send(Out);

            /*PacketOut Out2 = new PacketOut((uint)Opcodes.CHAT_WHISPER);
             * Out2.WriteUInt32Reverse(charUID);
             * Out2.WriteByte(1);
             * Out2.WriteParsedString(message);
             * cclient.Send(Out2);*/
            return(0);
        }
Beispiel #23
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            LobbyClient cclient  = client as LobbyClient;
            uint        WorldUid = packet.GetUint32Reversed();
            string      Name     = packet.GetParsedString();

            PacketOut Out = new PacketOut((uint)Opcodes.ANS_CHARACTER_NAME_CHECK);

            if (Databases.CharacterTable.Count(c => c.Name == Name) == 0)
            {
                cclient.Pending               = new CharacterEntry();
                cclient.Pending.Index         = Databases.CharacterTable.GenerateIndex();
                cclient.Pending.AccountIndex  = cclient.Account.Index;
                cclient.Pending.Name          = Name;
                cclient.Pending.World         = (int)WorldUid;
                cclient.Pending.Rank          = 1;
                cclient.Pending.Money         = 0;
                cclient.Pending.Threat        = 1;
                cclient.Pending.Playtime      = 0;
                cclient.Pending.Clan          = "APB-EMU";
                cclient.Pending.IsOnline      = 0;
                cclient.Pending.DistrictID    = 0;
                cclient.Pending.DistrictType  = 0;
                cclient.Pending.LFG           = 0;
                cclient.Pending.IsGroupPublic = 0;
                cclient.Pending.GroupInvite   = 0;
                cclient.Pending.GroupStatus   = 0;
                Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
            }
            else
            {
                cclient.Pending = default(CharacterEntry);
                Out.WriteUInt32Reverse((uint)ResponseCodes.RC_CHARACTER_NAME_CHECK_IN_USE);
            }
            cclient.Send(Out);
            return(0);
        }
Beispiel #24
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     (client as WorldClient).Send(new ANS_IGNORELIST_REMOVE(packet.GetUint32Reversed()));
     return 0;
 }
Beispiel #25
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     WorldClient cclient = (WorldClient)client;
     (client as WorldClient).Send(new ANS_NAME_QUERY(packet.GetUint16Reversed(), packet.GetUint32Reversed(), packet.GetPascalString(), cclient));
     return 0;
 }
Beispiel #26
0
 protected override void OnReceive(PacketIn packet)
 {
     lock (this)
     {
         if (Crypto != null)
         {
             PacketIn decrypted;
             decrypted = Crypto.Decrypt(packet);
             Server.HandlePacket(this, decrypted);
         }
         else
         {
             packet.Size = packet.GetUint32Reversed();
             packet = DeCrypt(packet);
             packet.Opcode = packet.GetUint32Reversed();
             Server.HandlePacket(this, packet);
         }
     }
 }
Beispiel #27
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient = (WorldClient)client;
            UInt32 accountId = packet.GetUint32Reversed();
            cclient.AccountId = accountId;
            Log.Debug("AskWorldEnter", "New client! Account = " + accountId);
            Acc account = null;
            lock (Program.expectingAccounts) Program.expectingAccounts.TryGetValue(accountId, out account);

            #region Character stuff

            MySqlCommand cmd = new MySqlCommand("SELECT * FROM `characters` WHERE `id` = @id", WorldServer.Database.Connection.Instance);
            try
            {
                cmd.Prepare();
                cmd.Parameters.AddWithValue("@id", account.Character.ToString());
                cmd.ExecuteNonQuery();
                MySqlDataReader reader = cmd.ExecuteReader();
                try
                {
                    while (reader.Read())
                    {
                        cclient.CharacterId = getID(reader);
                        cclient.Name = getName(reader);
                        cclient.Faction = getFaction(reader);
                        cclient.Gender = getGender(reader);
                        cclient.Rank = getRank(reader);
                        cclient.Money = getMoney(reader);
                        cclient.Threat = getThreat(reader);
                        cclient.Playtime = getPlayTime(reader);
                        cclient.Clan = getClan(reader);
                        cclient.districtID = 0;
                        cclient.districtType = 0;
                        cclient.groupInvite = 0;
                        cclient.groupStatus = 0;
                        cclient.groupPublic = 0;
                    }
                }
                catch (MySqlException e) { Log.Error("MySQL", e.ToString()); }
                finally { reader.Dispose(); }
            }
            catch (MySqlException e) { Log.Error("MySQL", e.ToString()); }
            finally { cmd.Dispose(); }

            #endregion

            #region Account stuff
            MySqlCommand cmd2 = new MySqlCommand("SELECT * FROM `accounts` WHERE `id` = @id", WorldServer.Database.Connection.Instance);
            try
            {
                cmd2.Prepare();
                cmd2.Parameters.AddWithValue("@id", accountId.ToString());
                cmd2.ExecuteNonQuery();
                MySqlDataReader reader2 = cmd2.ExecuteReader();
                try
                {
                    while (reader2.Read())
                    {
                        cclient.Email = getEmail(reader2);
                        cclient.isGM = getGm(reader2);
                        cclient.isBanned = getBanned(reader2);
                        cclient.Points = getPoints(reader2);
                    }
                }
                catch (MySqlException e) { Log.Error("MySQL", e.ToString()); }
                finally { reader2.Dispose(); }
            }
            catch (MySqlException e) { Log.Error("MySQL", e.ToString()); }
            finally { cmd2.Dispose(); }
            #endregion

            #region Client status

            MySqlCommand cmd3 = new MySqlCommand("INSERT INTO `clientstatus` VALUES(@name, 0, 0, 1, 0, 0, 0, 0)", WorldServer.Database.Connection.Instance);
            try
            {
                cmd3.Prepare();
                cmd3.Parameters.AddWithValue("@name", cclient.Name);
                cmd3.ExecuteNonQuery();
            }
            catch (MySqlException e) { Log.Error("MySQL", e.ToString()); }
            finally { cmd3.Dispose(); }

            #endregion

            PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_WORLD_ENTER);
            if (account == null) Out.WriteInt32Reverse((int)ResponseCodes.RC_FAILED);
            else
            {
                Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS);
                Out.WriteUInt32Reverse(account.Character);
                Out.WriteUInt32Reverse(cclient.Points);
                Out.WriteByte(cclient.isGM);
                Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
                Out.WriteFloat(5.00f);
                Out.WriteByte(0);
                Out.WriteByte(0);
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 1, false, Program.WorldName, account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 2, false, Program.WorldName, account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 3, false, Program.WorldName, account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 4, false, Program.WorldName, account.Character.ToString()));
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)accountId, 5, false, Program.WorldName, account.Character.ToString()));
                Out.WriteByte(1);
                Out.WriteByte(cclient.LFG);
            }
            cclient.Crypto = new TCP.Encryption(account.SessionId);
            cclient.Send(new DISTRICT_LIST());
            cclient.Send(Out);
            return 0;
        }
Beispiel #28
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     (client as WorldClient).Send(new ANS_FRIENDLIST_STATE(packet.GetUint32Reversed(), (client as WorldClient)));
     return 0;
 }