コード例 #1
0
 /// <summary>
 /// Writes a donation to the packet.
 /// </summary>
 /// <param name="donation">The donation.</param>
 public void WriteDonation(Models.Nobility.NobilityDonation donation)
 {
     WriteUInt32(donation.ClientId);
     WriteUInt32(0);             // unknown
     WriteUInt32(donation.Player != null ? donation.Player.Mesh : (uint)0);
     WriteStringWithReminder(donation.Name, 16);
     WriteUInt32(0);             // unknown ... padding ??
     WriteInt64(donation.Donation);
     WriteUInt32((uint)donation.Rank);
     WriteInt32(donation.Ranking);
 }
コード例 #2
0
        /// <summary>
        /// Handles the donation-
        /// </summary>
        /// <param name="player">The player.</param>
        /// <param name="amount">The amount.</param>
        /// <param name="isMoney">Boolean determining if it's a silver donation or not. If set to false it will be a cps donation.</param>
        /// <returns>True if the packet was handled correctly.</returns>
        private static bool Handle(Models.Entities.Player player, long amount, bool isMoney)
        {
            uint requiredAmount = (uint)(isMoney ? amount : (amount / 50000));

            if (isMoney && player.Money < requiredAmount || !isMoney && player.CPs < requiredAmount ||
                amount < 3000000 || amount > 999999999)
            {
                return(true);
            }

            player.AddActionLog("NobilityDonate" + (isMoney ? "Silver" : "CPs"), requiredAmount);

            var donation = player.Nobility;

            if (donation == null)
            {
                donation        = new Models.Nobility.NobilityDonation(new Database.Models.DbPlayerNobility());
                donation.Player = player;
                player.Nobility = donation;

                Collections.NobilityBoard.TryAdd(donation);
            }

            if (isMoney)
            {
                player.Money -= requiredAmount;
            }
            else
            {
                player.CPs -= requiredAmount;
            }

            amount            = (uint)Math.Min(Data.Constants.GameMode.MaxNobilityDonation, (donation.Donation + amount));
            donation.Donation = amount;

            Collections.NobilityBoard.GetTop50();
            player.UpdateClientNobility();

            return(true);
        }