Beispiel #1
0
 public static void Send(LobbyClient client)
 {
     PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_LOGIN_SUCCESS);
     Out.WriteParsedString("Welcome to rebornAPB", 48);
     Out.WriteUInt32Reverse(client.Account.IsAdmin);
     Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
     Out.WriteByte(0x13);
     Out.WriteByte(0x29);
     Out.WriteUInt16Reverse(0x12);
     Out.WriteByte(0x0E);
     Out.WriteByte(0x07);
     Out.WriteUInt16Reverse(9999);
     Out.WriteInt32Reverse(1450);
     Out.WriteUInt32Reverse((uint)client.Account.RTW_Points);
     for (int i = 1; i < 6; ++i) Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion((int)client.Account.Index, i, true, "", ""));
     Out.WriteInt32Reverse(0);
     Out.WriteUInt16(0x957D);
     Out.WriteUInt16(0x0400);
     Out.WriteUInt16(0x5052);
     Out.WriteUInt16(0x4F45);
     Out.WriteUInt16(0x552E);
     Out.WriteUInt16(0x3232);
     Out.WriteUInt16(0x3738);
     Out.WriteUInt16(0x3031);
     Out.WriteUInt16(0);
     Out.WriteUInt16(0x0067);
     Out.WriteUInt64(0x526C624331313256);
     Out.WriteUInt64(0x486E314100000000);
     Out.WriteUInt16(0);
     Out.WriteStringBytes("");
     Out.WriteByte(0);
     client.Send(Out);
 }
Beispiel #2
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     LobbyClient cclient = (LobbyClient)client;
     Byte slotId = packet.GetUint8();
     Character character = cclient.Characters.Get(slotId);
     if (character == null) Log.Error(cclient.Account.Email, "Wrong slot specified!");
     World.World info = null;
     lock (Program.worldListener.Worlds)
     {
         Program.worldListener.Worlds.TryGetValue(character.WorldId, out info);
     }
     PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_WORLD_ENTER);
     if (info == null) Out.WriteUInt32Reverse(1);
     else
     {
         info.Send(new AccountEnter(cclient.Account.Id, character.Id, cclient.SessionId));
         Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
         Out.WriteByte(info.IP1);
         Out.WriteByte(info.IP2);
         Out.WriteByte(info.IP3);
         Out.WriteByte(info.IP4);
         Out.WriteUInt16Reverse((UInt16)info.Port);
         Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
     }
     cclient.Send(Out);
     return 0;
 }
Beispiel #3
0
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     LobbyClient cclient = (LobbyClient)client;
     Byte slotId = packet.GetUint8();
     CharacterEntry character = Databases.CharacterTable.SingleOrDefault(c => c.AccountIndex == cclient.Account.Index && c.Slot == slotId);
     if (character.Index < 1) Log.Error(cclient.Account.Username, "Wrong slot specified!");
     World.World info = null;
     lock (Program.worldListener.Worlds)
     {
         Program.worldListener.Worlds.TryGetValue((uint)character.World, out info);
     }
     PacketOut Out = new PacketOut((UInt32)Opcodes.ANS_WORLD_ENTER);
     if (info == null) Out.WriteUInt32Reverse(1);
     else
     {
         info.Send(new AccountEnter((uint)cclient.Account.Index, (uint)character.Index, cclient.SessionId));
         Out.WriteUInt32Reverse((uint)ResponseCodes.RC_SUCCESS);
         Out.WriteByte(info.IP1);
         Out.WriteByte(info.IP2);
         Out.WriteByte(info.IP3);
         Out.WriteByte(info.IP4);
         Out.WriteUInt16Reverse((UInt16)info.Port);
         Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
     }
     cclient.Send(Out);
     return 0;
 }
Beispiel #4
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 #5
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 #6
0
        static public void Send(LobbyClient client)
        {
            PacketOut Out = new PacketOut((uint)Opcodes.ANS_LOGIN_SUCCESS);

            Out.WriteParsedString("Welcome to rebornAPB", 48);
            Out.WriteUInt32Reverse(1);
            Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
            Out.WriteUInt32Reverse(client.Account.IsAdmin);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteString("");
            Out.WriteInt32(0);
            Out.WriteInt32(0);
            Out.WriteInt32Reverse(0);
            Out.WriteString("");
            Out.WriteInt32Reverse(0);
            client.Send(Out);
        }
Beispiel #7
0
        static public void Send(LobbyClient client)
        {
            PacketOut Out = new PacketOut((uint)Opcodes.ANS_LOGIN_SUCCESS);

            Out.WriteParsedString("Welcome to rebornAPB", 48);
            Out.WriteUInt32Reverse(client.Account.IsAdmin);
            Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
            Out.WriteByte(0x13);
            Out.WriteByte(0x29);
            Out.WriteUInt16Reverse(0x12);
            Out.WriteByte(0x0E);
            Out.WriteByte(0x07);
            Out.WriteUInt16Reverse(9999);
            Out.WriteInt32Reverse(1450);
            Out.WriteUInt32Reverse((uint)client.Account.RTW_Points);
            for (int i = 1; i < 6; ++i)
            {
                Out.WriteInt32Reverse(Program.FileMgr.GetFileVersion(client.Account.Index, i, true, "", ""));
            }
            Out.WriteInt32Reverse(0);
            Out.WriteUInt16(0x957D);
            Out.WriteUInt16(0x0400);
            Out.WriteUInt16(0x5052);
            Out.WriteUInt16(0x4F45);
            Out.WriteUInt16(0x552E);
            Out.WriteUInt16(0x3232);
            Out.WriteUInt16(0x3738);
            Out.WriteUInt16(0x3031);
            Out.WriteUInt16(0);
            Out.WriteUInt16(0x0067);
            Out.WriteUInt64(0x526C624331313256);
            Out.WriteUInt64(0x486E314100000000);
            Out.WriteUInt16(0);
            Out.WriteStringBytes("");
            Out.WriteByte(0);
            client.Send(Out);
        }
Beispiel #8
0
        public int HandlePacket(BaseClient client, PacketIn packet)
        {
            LobbyClient    cclient   = (LobbyClient)client;
            byte           slotId    = packet.GetUint8();
            CharacterEntry character = Databases.CharacterTable.SingleOrDefault(c => c.AccountIndex == cclient.Account.Index && c.Slot == slotId);

            if (character.Index < 1)
            {
                Log.Error(cclient.Account.Username, "Wrong slot specified!");
            }
            World.World info = null;
            lock (Program.worldListener.Worlds)
            {
                Program.worldListener.Worlds.TryGetValue((uint)character.World, out info);
            }

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

            if (info == null)
            {
                Out.WriteUInt32Reverse((uint)ResponseCodes.RC_FAILED);
            }
            else
            {
                info.Send(new AccountEnter((uint)cclient.Account.Index, (uint)character.Index, cclient.SessionId));
                Out.WriteInt32Reverse((int)ResponseCodes.RC_SUCCESS);
                Out.WriteByte(info.IP1);
                Out.WriteByte(info.IP2);
                Out.WriteByte(info.IP3);
                Out.WriteByte(info.IP4);
                Out.WriteUInt16Reverse((ushort)info.Port);
                Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
            }
            cclient.Send(Out);
            return(0);
        }
Beispiel #9
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;
        }