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); }
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); } }