Exemple #1
0
        public static void OnSetHair(WorldClient client, INetPacketStream packet)
        {
            var setHairPacket    = new SetHairPacket(packet);
            var setHairEventArgs = new SetHairEventArgs(setHairPacket.HairId, setHairPacket.R, setHairPacket.G, setHairPacket.B, setHairPacket.UseCoupon);

            client.Player.NotifySystem <CustomizationSystem>(setHairEventArgs);
        }
Exemple #2
0
        private void OnSetHair(IPlayerEntity player, SetHairEventArgs e)
        {
            var worldConfiguration = DependencyContainer.Instance.Resolve <WorldConfiguration>();

            if (!e.UseCoupon)
            {
                int costs = 0;
                var color = Color.FromArgb(e.R, e.G, e.B).ToArgb();

                if (player.VisualAppearance.HairId != e.HairId)
                {
                    costs += (int)worldConfiguration.Customization.ChangeHairCost;
                }
                if (player.VisualAppearance.HairColor != color)
                {
                    costs += (int)worldConfiguration.Customization.ChangeHairColorCost;
                }

                if (player.PlayerData.Gold < costs)
                {
                    WorldPacketFactory.SendDefinedText(player, DefineText.TID_GAME_LACKMONEY);
                }
                else
                {
                    player.PlayerData.Gold           -= costs;
                    player.VisualAppearance.HairId    = e.HairId;
                    player.VisualAppearance.HairColor = color;

                    WorldPacketFactory.SendUpdateAttributes(player, DefineAttributes.GOLD, player.PlayerData.Gold);
                    WorldPacketFactory.SendSetHair(player, e.HairId, e.R, e.G, e.B);
                }
            }
            else
            {
                var couponItem = player.Inventory.GetItemById(DefineItem.II_SYS_SYS_SCR_HAIRCHANGE);
                if (couponItem == null)
                {
                    WorldPacketFactory.SendDefinedText(player, DefineText.TID_GAME_WARNNING_COUPON);
                    return;
                }

                player.Inventory.RemoveItems(couponItem.Data.Id);
                WorldPacketFactory.SendItemUpdate(player, UpdateItemType.UI_NUM, couponItem.UniqueId, couponItem.Quantity);
                WorldPacketFactory.SendSetHair(player, e.HairId, e.R, e.G, e.B);
            }
        }