Beispiel #1
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;
 }
 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 #3
0
        public int HandlePacket(BaseClient bcclient, PacketIn packet)
        {
            LobbyClient client = bcclient as LobbyClient;

            packet.Skip(25);
            string Username = packet.GetParsedString();

            Log.Notice("ASK_LOGIN", "Account: " + Username);
            try
            {
                client.Account = Databases.AccountTable.SingleOrDefault(a => a.Username == Username);
                if (client.Account.Verifier.Length <= 2 || client.Account.Salt.Length <= 2)
                {
                    Register(client);
                }
                client.Salt     = new FrameWork.NetWork.Crypto.BigInteger(client.Account.Salt, 16).ToByteArrayUnsigned();
                client.Verifier = new FrameWork.NetWork.Crypto.BigInteger(client.Account.Verifier, 16);
                Log.Succes("ASK_LOGIN", "Account exists: " + client.Account.Username);
                LOGIN_SALT.Send(client);
            }
            catch (ArgumentNullException)
            {
                Log.Error("ASK_LOGIN", "Database is busy");
                LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_DATABASE_BUSY);
                client.Disconnect();
            }
            catch (Exception e)
            {
                Log.Error("ASK_LOGIN", "Account is not found");
                Log.Debug("ASK_LOGIN", e.ToString());
                LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_LOGIN_INVALID_ACCOUNT);
                client.Disconnect();
            }
            return(0);
        }
Beispiel #4
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient  = (WorldClient)client;
            string      charName = packet.GetParsedString();

            PacketOut      Out   = new PacketOut((uint)Opcodes.ANS_CHARACTERFINDER_INFO);
            int            count = Databases.CharacterTable.Count(c => c.Name == charName);
            CharacterEntry chr   = Databases.CharacterTable.SingleOrDefault(c => c.Name == charName);

            if (cclient.Character.Name == charName)
            {
                Out.WriteUInt32Reverse(0x01);
            }
            else
            {
                if (cclient.Account.Index == chr.AccountIndex)
                {
                    Out.WriteUInt32Reverse((uint)ResponseCodes.RC_FAILED);
                }
                else
                {
                    if (count < 1)
                    {
                        Out.WriteUInt32Reverse((uint)ResponseCodes.RC_CHARACTERFINDER_INFO_NO_CHARACTER);
                    }
                    else
                    {
                        if (chr.IsOnline == 1)
                        {
                            Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
                            Out.WriteUInt32Reverse((uint)chr.Index);
                            Out.WriteParsedString(charName);
                            Out.WriteByte(chr.Faction);
                            Out.WriteByte(chr.LFG);
                            Out.WriteByte(chr.GroupStatus);
                            Out.WriteByte(chr.IsGroupPublic);
                            Out.WriteByte(chr.GroupInvite);
                            uint code = (uint)(chr.DistrictType << 24);
                            code += chr.DistrictID;
                            Districts.District d;
                            Program.districtsListener.Districts.TryGetValue(code, out d);
                            Out.WriteUInt32(code);
                            Out.WriteByte(d.isFull());
                            Out.WriteFloat(1.00f);
                        }
                        else
                        {
                            Out.WriteUInt32Reverse((uint)ResponseCodes.RC_CHARACTERFINDER_INFO_NO_CHARACTER);
                        }
                    }
                }
            }
            cclient.Send(Out);
            return(0);
        }
Beispiel #5
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient  = (WorldClient)client;
            string      charName = packet.GetParsedString();

            PacketOut      Out   = new PacketOut((uint)Opcodes.ANS_FRIENDLIST_ADD);
            int            count = Databases.CharacterTable.Count(c => c.Name == charName);
            CharacterEntry chr   = Databases.CharacterTable.SingleOrDefault(c => c.Name == charName);

            if (cclient.Character.Name == charName)
            {
                Out.WriteUInt32Reverse((uint)ResponseCodes.RC_FRIENDLIST_ADD_SELF);
            }
            else
            {
                if (cclient.Character.AccountIndex == chr.AccountIndex)
                {
                    Out.WriteUInt32Reverse((uint)ResponseCodes.RC_FRIENDLIST_ADD_SAME_ACCOUNT);
                }
                else
                {
                    if (count < 1)
                    {
                        Out.WriteUInt32Reverse((uint)ResponseCodes.RC_FRIENDLIST_ADD_INVALID_NAME);
                    }
                    else if (count >= 1)
                    {
                        Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
                        Out.WriteParsedString(charName);
                        Out.WriteByte(chr.Faction);
                        Out.WriteByte(chr.IsOnline);
                        Out.WriteUInt32Reverse((uint)chr.Index);
                        Out.WriteByte(chr.LFG);
                        Out.WriteByte(chr.GroupStatus);
                        Out.WriteByte(chr.IsGroupPublic);
                        Out.WriteByte(chr.GroupInvite);
                        uint code = (uint)(chr.DistrictType << 24);
                        code += chr.DistrictID;
                        Districts.District d;
                        Program.districtsListener.Districts.TryGetValue(code, out d);
                        Out.WriteUInt32(code);
                        Out.WriteByte(d.isFull());
                        FriendEntry frnd = new FriendEntry();
                        frnd.Index = Databases.FriendTable.GenerateIndex();
                        frnd.CharacterOwnerIndex  = cclient.Character.Index;
                        frnd.CharacterFriendIndex = chr.Index;
                        Databases.FriendTable.Add(frnd);
                    }
                }
            }
            cclient.Send(Out);
            return(0);
        }
Beispiel #6
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 #7
0
 public int HandlePacket(BaseClient bcclient, PacketIn packet)
 {
     LobbyClient client = bcclient as LobbyClient;
     packet.Skip(24);
     String Email = packet.GetParsedString();
     Log.Notice("ASK_LOGIN", "Account: " + Email);
     Account account;
     try
     {
         account = new Account(Email);
     }
     catch (ArgumentNullException)
     {
         Log.Error("ASK_LOGIN", "Database is busy");
         ANS_LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_DATABASE_BUSY);
         client.Disconnect();
         return 0;
     }
     catch (Exception e)
     {
         Log.Error("ASK_LOGIN", "Account's not found");
         Log.Debug("ASK_LOGIN", e.ToString());
         ANS_LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_LOGIN_INVALID_ACCOUNT);
         client.Disconnect();
         return 0;
     }
     Log.Succes("ASK_LOGIN", "Account exists");
     client.Account = account;
     if (client.Account.extrn_login == 1)
     {
         if (client.Account.Verifier.Length <= 2 || client.Account.Salt.Length <= 2) Register(client);
         client.Salt = new FrameWork.NetWork.Crypto.BigInteger(client.Account.Salt, 16).ToByteArrayUnsigned();
         client.Verifier = new FrameWork.NetWork.Crypto.BigInteger(client.Account.Verifier, 16);
         LOGIN_SALT.Send(client);
         return 0;
     }
     else
     {
         ANS_LOGIN_FAILED.Send(client, (int)ResponseCodes.RC_LOGIN_APB_INACTIVATED);
         client.Disconnect();
         return 0;
     }
 }
Beispiel #8
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            WorldClient cclient  = (WorldClient)client;
            string      charName = packet.GetParsedString();

            PacketOut      Out   = new PacketOut((uint)Opcodes.ANS_IGNORELIST_ADD);
            int            count = Databases.CharacterTable.Count(c => c.Name == charName);
            CharacterEntry chr   = Databases.CharacterTable.SingleOrDefault(c => c.Name == charName);

            if (cclient.Character.Name == charName)
            {
                Out.WriteUInt32Reverse((uint)ResponseCodes.RC_IGNORELIST_ADD_SELF);
            }
            else
            {
                if (cclient.Character.AccountIndex == chr.AccountIndex)
                {
                    Out.WriteUInt32Reverse((uint)ResponseCodes.RC_IGNORELIST_ADD_SAME_ACCOUNT);
                }
                else
                {
                    if (count < 1)
                    {
                        Out.WriteUInt32Reverse((uint)ResponseCodes.RC_IGNORELIST_ADD_NOT_FOUND);
                    }
                    else if (count >= 1)
                    {
                        Out.WriteUInt32((uint)ResponseCodes.RC_SUCCESS);
                        Out.WriteUInt32Reverse((uint)chr.Index);
                        Out.WriteParsedString(charName);
                        IgnoreEntry ign = new IgnoreEntry();
                        ign.Index = Databases.FriendTable.GenerateIndex();
                        ign.CharacterOwnerIndex  = cclient.Character.Index;
                        ign.CharacterIgnoreIndex = chr.Index;
                        Databases.IgnoreTable.Add(ign);
                    }
                }
            }
            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 #10
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 #11
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     WorldClient cclient = (WorldClient)client;
     (client as WorldClient).Send(new ANS_IGNORELIST_ADD(packet.GetParsedString(), cclient));
     return 0;
 }
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     WorldClient cclient = (WorldClient)client;
     (client as WorldClient).Send(new ANS_CHARACTERFINDER_INFO(packet.GetParsedString(), cclient));
     return 0;
 }
Beispiel #13
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     WorldClient cclient = (WorldClient)client;
     cclient.Send(new ANS_GROUP_JOIN(packet.GetParsedString()));
     return 0;
 }
Beispiel #14
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     WorldClient cclient = (WorldClient)client;
     (client as WorldClient).Send(new ANS_GROUP_INVITE(packet.GetParsedString(), cclient));
     return 0;
 }