Esempio n. 1
0
 void ProcessLoadPacket(LoadPacket pkt)
 {
     Console.WriteLine("Client load packet");
     character = db0.LoadCharacter(account, pkt.CharacterId);
     if (character != null)
     {
         if (character.Dead)
             SendPacket(new svrPackets.FailurePacket()
             {
                 Message = "Character is dead."
             });
         else
         {
             SendPacket(new CreateResultPacket()
             {
                 CharacterID = character.CharacterId,
                 ObjectID = RealmManager.Worlds[targetWorld].EnterWorld(entity = new Player(this))
             });
             stage = ProtocalStage.Ready;
         }
     }
     else
         SendPacket(new svrPackets.FailurePacket()
         {
             Message = "Failed to Load character."
         });
 }
Esempio n. 2
0
 void ProcessLoadPacket(LoadPacket pkt)
 {
     character = db.LoadCharacter(account, pkt.CharacterId);
     if (character != null)
     {
         if (character.Dead)
             SendPacket(new svrPackets.FailurePacket()
             {
                 Message = "Character is dead."
             });
         else
         {
             var target = RealmManager.Worlds[targetWorld];
             //Delay to let client load remote texture
             target.Timers.Add(new WorldTimer(500, (w, t) =>
             {
                 SendPacket(new CreateResultPacket()
                 {
                     CharacterID = character.CharacterId,
                     ObjectID = RealmManager.Worlds[targetWorld].EnterWorld(entity = new Player(this))
                 });
                 w.BroadcastPacket(new TextPacket()
                 {
                     BubbleTime = 0,
                     Stars = -1,
                     Name = "",
                     Text = account.Name + " has connected."
                 }, entity);
             }));
             stage = ProtocalStage.Ready;
         }
     }
     else
     {
         Player.SendInfo("Failed to Load character.");
         Disconnect();
     }
 }
        private void ProcessLoadPacket(LoadPacket pkt)
        {
            character = db.LoadCharacter(account, pkt.CharacterId);
            if (character != null)
            {
                if (character.Dead)
                    SendPacket(new FailurePacket
                    {
                        Message = "Character is dead."
                    });
                else if (CheckAccountInUse(account.AccountId) != false)
                {
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine("Account in use: " + account.AccountId);
                    Console.ForegroundColor = ConsoleColor.White;
                    SendPacket(new FailurePacket
                    {
                        Message = "Account in use! Retrying..."
                    });
                }
                else
                {
                    if (account.Bonuses != null)
                        if (account.Bonuses.Count > 0)
                        {
                            var chrEquip = character.Equipment;
                            for (var i = 4; i < 12; i++)
                            {
                                if (chrEquip[i] == -1)
                                {
                                    chrEquip[i] = account.Bonuses.First();
                                    account.Bonuses.Remove(account.Bonuses.First());
                                    SendPacket(new TextPacket
                                    {
                                        Name = "",
                                        BubbleTime = 0,
                                        Stars = -1,
                                        Text = "You received " + XmlDatas.TypeToId[chrEquip[i]] + "."
                                    });
                                    if (account.Bonuses.Count == 0)
                                        break;
                                }
                            }
                            db.SetBonuses(account.AccountId, account.Bonuses);
                            character.Equipment = chrEquip;
                        }
                        else
                        {
                        }
                    else
                    {
                        account.Bonuses = new List<short>();
                    }
                    if (IP.Gifts != null)
                        if (IP.Gifts.Count > 0)
                        {
                            var chrEquip = character.Equipment;
                            for (var i = 4; i < 12; i++)
                            {
                                if (chrEquip[i] == -1)
                                {
                                    chrEquip[i] = IP.Gifts.First();
                                    IP.Gifts.Remove(IP.Gifts.First());
                                    SendPacket(new TextPacket
                                    {
                                        Name = "",
                                        BubbleTime = 0,
                                        Stars = -1,
                                        Text = "You received " + XmlDatas.TypeToId[chrEquip[i]] + "."
                                    });
                                    if (IP.Gifts.Count == 0)
                                        break;
                                }
                            }
                            db.SetBonuses(IP.Address, IP.Gifts);
                            character.Equipment = chrEquip;
                        }
                        else
                        {
                        }
                    else
                    {
                        IP.Gifts = new List<short>();
                    }

                    var target = RealmManager.Worlds[targetWorld];
                    //Delay to let client load remote texture
                    target.Timers.Add(new WorldTimer(2000, (w, t) => SendPacket(new CreateResultPacket
                    {
                        CharacterID = character.CharacterId,
                        ObjectID = RealmManager.Worlds[targetWorld].EnterWorld(entity = new Player(this))
                    })));
                    stage = ProtocalStage.Ready;
                }
            }
            else
            {
                Player.SendInfo("Failed to Load character.");
                Disconnect();
            }
        }
        private void ProcessLoadPacket(LoadPacket pkt)
        {
            Character = Database.LoadCharacter(Account, pkt.CharacterId);
            if (Character != null)
            {
                if (Character.Dead)
                    SendPacket(new FailurePacket
                    {
                        Message = "Character is dead."
                    });
                else if (CheckAccountInUse(Account.AccountId))
                {
                    Logger.Warn($"Account in use {Account.Name} ({Account.AccountId})");
                    SendPacket(new FailurePacket
                    {
                        Message = "Account in use! Retrying..."
                    });
                }
                else
                {
                    if (Account.Bonuses != null)
                        if (Account.Bonuses.Count > 0)
                        {
                            var chrEquip = Character.Equipment;
                            for (var i = 4; i < 12; i++)
                            {
                                if (chrEquip[i] != -1)
                                    continue;
                                chrEquip[i] = Account.Bonuses.First();
                                Account.Bonuses.Remove(Account.Bonuses.First());
                                SendPacket(new TextPacket
                                {
                                    Name = "",
                                    BubbleTime = 0,
                                    Stars = -1,
                                    Text = "You received " + XmlData.ObjectTypeToId[chrEquip[i]] + "."
                                });
                                if (Account.Bonuses.Count == 0)
                                    break;
                            }
                            Database.SetBonuses(Account.AccountId, Account.Bonuses);
                            Character.Equipment = chrEquip;
                        }
                        else
                        {
                        }
                    else
                    {
                        Account.Bonuses = new List<short>();
                    }
                    if (IP.Gifts != null)
                        if (IP.Gifts.Count > 0)
                        {
                            var chrEquip = Character.Equipment;
                            for (var i = 4; i < 12; i++)
                            {
                                if (chrEquip[i] != -1)
                                    continue;
                                chrEquip[i] = IP.Gifts.First();
                                IP.Gifts.Remove(IP.Gifts.First());
                                SendPacket(new TextPacket
                                {
                                    Name = "",
                                    BubbleTime = 0,
                                    Stars = -1,
                                    Text = "You received " + XmlData.ObjectTypeToId[chrEquip[i]] + "."
                                });
                                if (IP.Gifts.Count == 0)
                                    break;
                            }
                            Database.SetBonuses(IP.Address, IP.Gifts);
                            Character.Equipment = chrEquip;
                        }
                        else
                        {
                        }
                    else
                    {
                        IP.Gifts = new List<short>();
                    }

                    var target = RealmManager.Worlds[targetWorld];
                    //Delay to let client load remote texture
                    target.Timers.Add(new WorldTimer(2000, (w, t) => SendPacket(new CreateResultPacket
                    {
                        CharacterID = Character.CharacterId,
                        ObjectID = RealmManager.Worlds[targetWorld].EnterWorld(Player = new Player(this))
                    })));
                    Stage = ProtocalStage.Ready;
                }
            }
            else
            {
                Player.SendInfo("Failed to Load character.");
                Disconnect();
            }
        }