Beispiel #1
0
 void Handle(Client client, CreateGuildPacket packet)
 {
     try
     {
         client.Manager.Database.DoActionAsync(db =>
         {
             Player player = client.Player;
             var name      = packet.Name.ToString();
             if (player.Client.Account.Stats.Fame >= 1000)
             {
                 if (name != "")
                 {
                     if (db.GetGuild(name) != null)
                     {
                         client.Player.SendInfo("Server Error #37 - CreateGuildHandler.cs. Contact LoE Team.");
                         //player.Client.SendPacket(new CreateGuildResultPacket()
                         //{
                         //    Success = false,
                         //    ErrorText = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"Guild already exists.\"}}"
                         //});
                         return;
                     }
                     try
                     {
                         if (player.Client.Account.Guild.Name == "")
                         {
                             if (packet.Name != "")
                             {
                                 var g = db.CreateGuild(player.Client.Account, packet.Name);
                                 player.Client.Account.Guild.Name = g.Name;
                                 player.Client.Account.Guild.Rank = g.Rank;
                                 player.Guild = GuildManager.Add(player, g);
                                 client.Player.SendInfo("Purchase successful!");
                                 //player.Client.SendPacket(new CreateGuildResultPacket()
                                 //{
                                 //    Success = true,
                                 //    ErrorText = "{\"key\":\"server.buy_success\"}"
                                 //});
                                 player.CurrentFame = player.Client.Account.Stats.Fame = db.UpdateFame(player.Client.Account, -1000);
                                 player.UpdateCount++;
                                 return;
                             }
                             else
                             {
                                 client.Player.SendInfo("Server Error #99 - ChooseNameHandler.cs. Contact LoE Team.");
                                 //player.Client.SendPacket(new CreateGuildResultPacket()
                                 //{
                                 //    Success = false,
                                 //    ErrorText = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"Guild name cannot be blank.\"}}"
                                 //});
                                 return;
                             }
                         }
                         else
                         {
                             player.Client.SendPacket(new CreateGuildResultPacket()
                             {
                                 Success   = false,
                                 ErrorText = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"You cannot create a guild as a guild member.\"}}"
                             });
                             return;
                         }
                     }
                     catch (Exception e)
                     {
                         player.Client.SendPacket(new CreateGuildResultPacket()
                         {
                             Success   = false,
                             ErrorText = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"" + e.Message + "\"}}"
                         });
                         return;
                     }
                 }
                 else
                 {
                     player.Client.SendPacket(new CreateGuildResultPacket()
                     {
                         Success   = false,
                         ErrorText = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"Guild name cannot be blank.\"}}"
                     });
                 }
             }
             else
             {
                 player.Client.SendPacket(new CreateGuildResultPacket()
                 {
                     Success   = false,
                     ErrorText = "{\"key\":\"server.not_enough_fame\"}"
                 });
             }
         });
     }
     catch (Exception e)
     {
         client.SendPacket(new CreateGuildResultPacket()
         {
             Success   = false,
             ErrorText = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"" + e.Message + "\"}}"
         });
     }
 }
Beispiel #2
0
        public Player(RealmManager manager, Client psr)
            : base(manager, (ushort)psr.Character.ObjectType, psr.Random)
        {
            try
            {
                Client        = psr;
                Manager       = psr.Manager;
                StatsManager  = new StatsManager(this, psr.Random.CurrentSeed);
                Name          = psr.Account.Name;
                AccountId     = psr.Account.AccountId;
                FameCounter   = new FameCounter(this);
                Tokens        = psr.Account.FortuneTokens;
                HpPotionPrice = 5;
                MpPotionPrice = 5;

                Level                   = psr.Character.Level == 0 ? 1 : psr.Character.Level;
                Experience              = psr.Character.Exp;
                ExperienceGoal          = GetExpGoal(Level);
                Stars                   = GetStars();
                Texture1                = psr.Character.Tex1;
                Texture2                = psr.Character.Tex2;
                Credits                 = psr.Account.Credits;
                NameChosen              = psr.Account.NameChosen;
                CurrentFame             = psr.Account.Stats.Fame;
                Fame                    = psr.Character.CurrentFame;
                XpBoosted               = psr.Character.XpBoosted;
                XpBoostTimeLeft         = psr.Character.XpTimer;
                _xpFreeTimer            = XpBoostTimeLeft != -1.0;
                LootDropBoostTimeLeft   = psr.Character.LDTimer;
                _lootDropBoostFreeTimer = LootDropBoost;
                LootTierBoostTimeLeft   = psr.Character.LTTimer;
                _lootTierBoostFreeTimer = LootTierBoost;
                var state =
                    psr.Account.Stats.ClassStates.SingleOrDefault(_ => Utils.FromString(_.ObjectType) == ObjectType);
                FameGoal         = GetFameGoal(state?.BestFame ?? 0);
                Glowing          = IsUserInLegends();
                Guild            = GuildManager.Add(this, psr.Account.Guild);
                HP               = psr.Character.HitPoints <= 0 ? psr.Character.MaxHitPoints : psr.Character.HitPoints;
                Mp               = psr.Character.MagicPoints;
                ConditionEffects = 0;
                OxygenBar        = 100;
                HasBackpack      = psr.Character.HasBackpack == 1;
                PlayerSkin       = Client.Account.OwnedSkins.Contains(Client.Character.Skin) ? Client.Character.Skin : 0;
                HealthPotions    = psr.Character.HealthStackCount < 0 ? 0 : psr.Character.HealthStackCount;
                MagicPotions     = psr.Character.MagicStackCount < 0 ? 0 : psr.Character.MagicStackCount;

                Locked  = psr.Account.Locked ?? new List <string>();
                Ignored = psr.Account.Ignored ?? new List <string>();
                try
                {
                    Manager.Database.DoActionAsync(db =>
                    {
                        Locked     = db.GetLockeds(AccountId);
                        Ignored    = db.GetIgnoreds(AccountId);
                        Muted      = db.IsMuted(AccountId);
                        DailyQuest = psr.Account.DailyQuest;
                    });
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }

                if (HasBackpack)
                {
                    using (Database db = new Database())
                    {
                        var inv      = db.getSerialInfo(psr.Character.Equipment, Manager.GameData);
                        var backpack = db.getSerialInfo(psr.Character.Backpack, Manager.GameData);
                        Inventory = inv.Concat(backpack).ToArray();
                    }

                    var xElement = Manager.GameData.ObjectTypeToElement[ObjectType].Element("SlotTypes");
                    if (xElement != null)
                    {
                        var slotTypes =
                            Utils.FromCommaSepString32(
                                xElement.Value);
                        Array.Resize(ref slotTypes, 20);
                        SlotTypes = slotTypes;
                    }
                }
                else
                {
                    using (Database db = new Database())
                    {
                        Inventory = db.getSerialInfo(psr.Character.Equipment, Manager.GameData);
                    }
                    var xElement = Manager.GameData.ObjectTypeToElement[ObjectType].Element("SlotTypes");
                    if (xElement != null)
                    {
                        SlotTypes =
                            Utils.FromCommaSepString32(
                                xElement.Value);
                    }
                }
                Stats = new[]
                {
                    psr.Character.MaxHitPoints,
                    psr.Character.MaxMagicPoints,
                    psr.Character.Attack,
                    psr.Character.Defense,
                    psr.Character.Speed,
                    psr.Character.HpRegen,
                    psr.Character.MpRegen,
                    psr.Character.Dexterity
                };

                Pet = null;

                for (var i = 0; i < SlotTypes.Length; i++)
                {
                    if (SlotTypes[i] == 0)
                    {
                        SlotTypes[i] = 10;
                    }
                }

                if (Client.Account.Rank >= 3)
                {
                    return;
                }
                for (var i = 0; i < 4; i++)
                {
                    if (Inventory[i]?.SlotType != SlotTypes[i])
                    {
                        Inventory[i] = null;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Beispiel #3
0
 void Handle(Client client, CreateGuildPacket packet)
 {
     try
     {
         client.AddDatabaseOpperation(db =>
         {
             Player player = client.Player;
             var name      = packet.Name.ToString();
             if (player.Client.Account.Stats.Fame >= 1000)
             {
                 if (name != "")
                 {
                     if (db.GetGuild(name) != null)
                     {
                         player.Client.SendPacket(new CreateGuildResultPacket()
                         {
                             Success       = false,
                             ResultMessage = "Guild already exists."
                         });
                         return;
                     }
                     try
                     {
                         if (player.Client.Account.Guild.Name == "")
                         {
                             if (packet.Name != "")
                             {
                                 var g = db.CreateGuild(player.Client.Account, packet.Name);
                                 player.Client.Account.Guild.Name = g.Name;
                                 player.Client.Account.Guild.Rank = g.Rank;
                                 player.Guild = GuildManager.Add(player, g);
                                 player.Client.SendPacket(new CreateGuildResultPacket()
                                 {
                                     Success       = true,
                                     ResultMessage = "Success!"
                                 });
                                 player.CurrentFame = player.Client.Account.Stats.Fame = db.UpdateFame(player.Client.Account, -1000);
                                 player.UpdateCount++;
                                 return;
                             }
                             else
                             {
                                 player.Client.SendPacket(new CreateGuildResultPacket()
                                 {
                                     Success       = false,
                                     ResultMessage = "Guildname cannot be blank."
                                 });
                                 return;
                             }
                         }
                         else
                         {
                             player.Client.SendPacket(new CreateGuildResultPacket()
                             {
                                 Success       = false,
                                 ResultMessage = "You cannot create a guild as a guild member."
                             });
                             return;
                         }
                     }
                     catch (Exception e)
                     {
                         player.Client.SendPacket(new CreateGuildResultPacket()
                         {
                             Success       = false,
                             ResultMessage = "Error " + e
                         });
                         return;
                     }
                 }
                 else
                 {
                     player.Client.SendPacket(new CreateGuildResultPacket()
                     {
                         Success       = false,
                         ResultMessage = "Guild name cannot be blank."
                     });
                 }
             }
             else
             {
                 player.Client.SendPacket(new CreateGuildResultPacket()
                 {
                     Success       = false,
                     ResultMessage = "Not enough Fame."
                 });
             }
         });
     }
     catch (Exception e)
     {
         client.SendPacket(new CreateGuildResultPacket()
         {
             Success       = false,
             ResultMessage = "Error " + e
         });
     }
 }
Beispiel #4
0
        //private int pingSerial;

        public Player(Client client)
            : base(client.Manager, (ushort)client.Character.ObjectType, client.Random)
        {
            this.client = client;
            statsMgr    = new StatsManager(this, client.Random.CurrentSeed);
            Name        = client.Account.Name;
            AccountId   = client.Account.AccountId;

            Name           = client.Account.Name;
            Level          = client.Character.Level;
            Experience     = client.Character.Exp;
            ExperienceGoal = GetExpGoal(client.Character.Level);
            Stars          = GetStars();
            switch (client.Account.Rank)
            {
            case 1: Stars = 200; break;

            case 2: Stars = 210; break;

            case 3: Stars = 220; break;

            case 4: Stars = 230; break;

            case 5: Stars = 240; break;

            case 6: Stars = 500; break;

            case 7: Stars = 1337; break;
            }
            Texture1    = client.Character.Tex1;
            Texture2    = client.Character.Tex2;
            Effect      = client.Character.Effect;
            XmlEffect   = "";
            Skin        = client.Character.Skin;
            PermaSkin   = client.Character.PermaSkin != 0;
            XpBoost     = client.Character.XpBoost;
            Credits     = client.Account.Credits;
            Keys        = client.Account.Keys;
            NameChosen  = client.Account.NameChosen;
            CurrentFame = client.Account.Stats.Fame;
            Fame        = client.Character.CurrentFame;
            ClassStats state = client.Account.Stats.ClassStates.SingleOrDefault(_ => _.ObjectType == ObjectType);

            FameGoal = GetFameGoal(state != null ? state.BestFame : 0);

            Glowing = -1;
            switch (client.Account.Rank)
            {
            /*  if (client.Client.ClientDatabase.IsUserInLegends(AccountId))
             *  Glowing = 0xFF0000; */
            case 6: Glowing = 0xFFFFFF; break;

            case 7: Glowing = 0xFF0080; break;
            }
            Guild            = GuildManager.Add(this, client.Account.Guild);
            HP               = client.Character.HitPoints;
            MP               = client.Character.MagicPoints;
            ConditionEffects = 0;
            OxygenBar        = 100;

            Party = Party.GetParty(this);
            if (Party != null)
            {
                if (Party.Leader.AccountId == AccountId)
                {
                    Party.Leader = this;
                }
                else
                {
                    Party.Members.Add(this);
                }
            }

            if (HP <= 0)
            {
                HP = client.Character.MaxHitPoints;
            }

            Locked  = client.Account.Locked ?? new List <int>();
            Ignored = client.Account.Ignored ?? new List <int>();
            try
            {
                Locked  = Client.ClientDatabase.GetLockeds(AccountId);
                Ignored = Client.ClientDatabase.GetIgnoreds(AccountId);
            } catch { }

            Inventory = new Inventory(this,
                                      client.Character.Equipment
                                      .Select(_ => _ == 0xffff ? null : client.Manager.GameData.Items[_])
                                      .ToArray(),
                                      client.Character.EquipData);
            Inventory.InventoryChanged += (sender, e) => CalculateBoost();
            SlotTypes =
                Utils.FromCommaSepString32(
                    Manager.GameData.ObjectTypeToElement[ObjectType].Element("SlotTypes").Value);
            Stats = new[]
            {
                client.Character.MaxHitPoints,
                client.Character.MaxMagicPoints,
                client.Character.Attack,
                client.Character.Defense,
                client.Character.Speed,
                client.Character.HpRegen,
                client.Character.MpRegen,
                client.Character.Dexterity,
                client.Character.Luck,
                client.Character.Crit
            };

            /* if (client.Character.Backpacks >= 1)
             * {
             *   Inventory.SetItems(Inventory.Concat(client.Character.Backpack1.Select(_ => _ == 0xffff ? null : client.Manager.GameData.Items[_])).ToArray());
             *   SlotTypes = SlotTypes.Concat(new int[8] { 0, 0, 0, 0, 0, 0, 0, 0 }).ToArray();
             * }
             * if (client.Character.Backpacks == 2)
             * {
             *   Inventory.SetItems(Inventory.Concat(client.Character.Backpack2.Select(_ => _ == 0xffff ? null : client.Manager.GameData.Items[_])).ToArray());
             *   SlotTypes = SlotTypes.Concat(new int[8] { 0, 0, 0, 0, 0, 0, 0, 0 }).ToArray();
             * } */

            Pet = null;

            for (int i = 0; i < SlotTypes.Length; i++)
            {
                if (SlotTypes[i] == 0)
                {
                    SlotTypes[i] = 10;
                }
            }

            AddRecipes();
        }
 void Handle(Client client, CreateGuildPacket packet)
 {
     try
     {
         client.Manager.Database.AddDatabaseOperation(db =>
         {
             Player player = client.Player;
             var name      = packet.Name.ToString();
             if (player.Client.Account.Stats.Fame >= 1000)
             {
                 if (name != "")
                 {
                     if (db.GetGuild(name) != null)
                     {
                         player.Client.SendPacket(new GuildResultPacket()
                         {
                             Success         = false,
                             LineBuilderJSON = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"Guild already exists.\"}}"
                         });
                         return;
                     }
                     try
                     {
                         if (player.Client.Account.Guild.Name == "")
                         {
                             if (packet.Name != "")
                             {
                                 var g = db.CreateGuild(player.Client.Account, packet.Name);
                                 player.Client.Account.Guild.Name = g.Name;
                                 player.Client.Account.Guild.Rank = g.Rank;
                                 player.Guild = GuildManager.Add(player, g);
                                 player.Client.SendPacket(new GuildResultPacket()
                                 {
                                     Success         = true,
                                     LineBuilderJSON = "{\"key\":\"server.buy_success\"}"
                                 });
                                 player.CurrentFame = player.Client.Account.Stats.Fame = db.UpdateFame(player.Client.Account, -1000);
                                 player.UpdateCount++;
                                 return;
                             }
                             else
                             {
                                 player.Client.SendPacket(new GuildResultPacket()
                                 {
                                     Success         = false,
                                     LineBuilderJSON = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"Guild name cannot be blank.\"}}"
                                 });
                                 return;
                             }
                         }
                         else
                         {
                             player.Client.SendPacket(new GuildResultPacket()
                             {
                                 Success         = false,
                                 LineBuilderJSON = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"You cannot create a guild as a guild member.\"}}"
                             });
                             return;
                         }
                     }
                     catch (Exception e)
                     {
                         player.Client.SendPacket(new GuildResultPacket()
                         {
                             Success         = false,
                             LineBuilderJSON = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"" + e.Message + "\"}}"
                         });
                         return;
                     }
                 }
                 else
                 {
                     player.Client.SendPacket(new GuildResultPacket()
                     {
                         Success         = false,
                         LineBuilderJSON = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"Guild name cannot be blank.\"}}"
                     });
                 }
             }
             else
             {
                 player.Client.SendPacket(new GuildResultPacket()
                 {
                     Success         = false,
                     LineBuilderJSON = "{\"key\":\"server.not_enough_fame\"}"
                 });
             }
         });
     }
     catch (Exception e)
     {
         client.SendPacket(new GuildResultPacket()
         {
             Success         = false,
             LineBuilderJSON = "{\"key\":\"server.create_guild_error\",\"tokens\":{\"error\":\"" + e.Message + "\"}}"
         });
     }
 }