public static bool AddCredits(long playerId, long creditsToAdd, bool addToFaction = true)
        {
            // Session should be active to continue.
            if (MySession.Static == null)
            {
                return(false);
            }

            // Get player.
            var player = PlayerUtils.GetPlayer(playerId);

            if (player == null)
            {
                return(false);
            }

            // Try to add to the faction first the player has one.
            if (addToFaction)
            {
                var faction = FactionUtils.GetFaction(playerId);
                if (faction != null)
                {
                    faction.RequestChangeBalance(creditsToAdd);
                    return(true);
                }
            }

            player.RequestChangeBalance(creditsToAdd);
            return(true);
        }
        /// <summary>
        /// Checks if the player or its faction has sufficient credits.
        /// </summary>
        /// <param name="playerId">The entityId of the player.</param>
        /// <param name="requiredCredits">The minimal required amount of credits on the balance.</param>
        /// <returns></returns>
        public static bool HasSufficientCredits(long playerId, long requiredCredits)
        {
            // Session should be active to continue.
            if (MySession.Static == null)
            {
                return(false);
            }

            // Get balance of player.
            long balance = GetPlayerBalance(playerId);

            if (balance >= requiredCredits)
            {
                return(true);
            }

            // Get balance of players faction (if any).
            var faction = FactionUtils.GetFactionOfPlayer(playerId);

            if (faction != null)
            {
                faction.TryGetBalanceInfo(out balance);
            }

            // Check faction balance.
            if (balance >= requiredCredits)
            {
                return(true);
            }

            // Insufficient balance.
            return(false);
        }
        public static long GetFactionBalance(string factionTag)
        {
            long balance = 0;
            var  faction = FactionUtils.GetFaction(factionTag);

            if (faction != null)
            {
                faction.TryGetBalanceInfo(out balance);
            }
            return(balance);
        }
        public static bool RemoveCredits(long playerId, long creditsToRemove)
        {
            // Session should be active to continue.
            if (MySession.Static == null)
            {
                return(false);
            }

            var player = PlayerUtils.GetPlayer(playerId);

            if (player == null)
            {
                return(false);
            }

            var balance = GetPlayerBalance(player);

            if (balance >= creditsToRemove)
            {
                player.RequestChangeBalance(-creditsToRemove);
                return(true);
            }

            var faction = FactionUtils.GetFactionOfPlayer(playerId);

            if (faction == null)
            {
                return(false);
            }

            // Try remove from faction if player has one.
            balance = GetFactionBalance(faction);
            if (balance >= creditsToRemove)
            {
                faction.RequestChangeBalance(-creditsToRemove);
                return(true);
            }

            return(false);
        }
 public static long GetFactionBalance(long factionId)
 {
     return(GetFactionBalance(FactionUtils.GetFaction(factionId)));
 }