示例#1
0
        public static rFrameworkPlayer GetrFrameworkPlayer(Player player)
        {
            rFrameworkPlayer rPlayer = null;

            OnlinePlayers.TryGetValue(GetPlayerSteamID(player), out rPlayer);
            return(rPlayer);
        }
示例#2
0
        public static void PurchaseVehicle([FromSource] Player player, int VehicleNetworkID)
        {
            rFrameworkPlayer rPlayer  = PlayerManager.GetrFrameworkPlayer(player);
            Vehicle          VehToBuy = new Vehicle(NetworkGetEntityFromNetworkId(VehicleNetworkID));

            int VehicleHash = VehToBuy.Model;

            if (Vehicles.TryGetValue(VehicleHash, out _))
            {
                int VehiclePrice = Vehicles[VehicleHash].price;
                if (rPlayer.BankBalance >= VehiclePrice)
                {
                    PlayerManager.ChangePlayerMoney(rPlayer, -VehiclePrice, 0);
                    PlayerManager.UpdatePlayerCash(rPlayer);
                    string VehicleGuid = Guid.NewGuid().ToString();
                    Dictionary <string, string> OwnedVehicleList;
                    if (rPlayer.Vehicles != "")
                    {
                        OwnedVehicleList = JsonConvert.DeserializeObject <Dictionary <string, string> >(rPlayer.Vehicles);
                    }
                    else
                    {
                        OwnedVehicleList = new Dictionary <string, string>();
                    }
                    OwnedVehicleList.Add(VehicleGuid, "");
                    rPlayer.Vehicles = JsonConvert.SerializeObject(OwnedVehicleList);
                }
            }
            else
            {
                DebugWrite("Can't Purchase This Car");
            }
        }
示例#3
0
        public async void PlayerConnecting([FromSource] Player player, string playerName, dynamic setKickReason, dynamic deferrals)
        {
            ulong PlayerDiscordID;

            if (UsingDiscordIntegration)
            {
                PlayerDiscordID = GetPlayerDiscordID(player);
            }
            else
            {
                PlayerDiscordID = 0;
            }

            String PlayerSteamID = GetPlayerSteamID(player);

            rFrameworkPlayer rPlayer = new rFrameworkPlayer(player, PlayerDiscordID, PlayerSteamID);

            rPlayer.IsPlayerLoaded = false;
            //Account for player disconnected while connecting
            ConnectingPlayers.Remove(PlayerSteamID);
            ConnectingPlayers.Add(PlayerSteamID, rPlayer);

            await InitializeDatabasePlayer(rPlayer);

            HandlePlayerWhitelist(rPlayer, deferrals);

            return;
        }
示例#4
0
        public static void ChangePlayerMoney(rFrameworkPlayer rPlayer, int BankBalanceChange, int CashBalanceChange)
        {
            rPlayer.BankBalance += BankBalanceChange;
            rPlayer.CashBalance += CashBalanceChange;

            UpdatePlayerCash(rPlayer);
        }
示例#5
0
        public async static Task InitializeDatabasePlayer(rFrameworkPlayer rPlayer)
        {
            string SQLQuery = "SELECT * FROM `users` WHERE `identifier` = '" + rPlayer.SteamID + "'";

            DebugWrite(SQLQuery);
            MySqlConnection SQLConnection = GetDBConnection();
            await SQLConnection.OpenAsync();

            MySqlCommand    SQLCommand    = new MySqlCommand(SQLQuery, SQLConnection);
            MySqlDataReader SQLDataReader = (MySqlDataReader)await SQLCommand.ExecuteReaderAsync();

            if (!SQLDataReader.Read())
            {
                SQLQuery = "INSERT INTO `users` (identifier, name) VALUES ('" + rPlayer.SteamID + "', '" + rPlayer.CorePlayer.Name + "')";
                DebugWrite(SQLQuery);
                SQLConnection = GetDBConnection();
                SQLCommand    = new MySqlCommand(SQLQuery, SQLConnection);
                await SQLConnection.OpenAsync();

                await SQLCommand.ExecuteNonQueryAsync();

                rPlayer.BankBalance = 0;
                rPlayer.CashBalance = 0;
                rPlayer.Vehicles    = "";
            }
            else
            {
                rPlayer.BankBalance = SQLDataReader.GetInt64(3);
                rPlayer.CashBalance = SQLDataReader.GetInt64(4);
                rPlayer.Vehicles    = SQLDataReader.GetString(5);

                SQLCommand.Dispose();
                SQLDataReader.Dispose();

                //Get transactions
                SQLQuery      = "SELECT * FROM `transactions` WHERE `from_player` = '" + rPlayer.SteamID + "' OR 'to_player' = '" + rPlayer.SteamID + "'";
                SQLCommand    = new MySqlCommand(SQLQuery, SQLConnection);
                SQLDataReader = (MySqlDataReader)await SQLCommand.ExecuteReaderAsync();

                List <rBankTransfer> transactions = new List <rBankTransfer>();

                while (SQLDataReader.Read())
                {
                    rBankTransfer transaction = new rBankTransfer(SQLDataReader.GetString(1), SQLDataReader.GetString(0),
                                                                  SQLDataReader.GetString(2), (SQLDataReader.GetString(0).Equals(SQLDataReader.GetString(1)) ? true : false),
                                                                  (SQLDataReader.GetString(3).Equals("Cash Withdrawn")) ? true : false, (int)SQLDataReader.GetInt64(3), DateTime.Parse(SQLDataReader.GetString(4)));
                    transactions.Add(transaction);
                }

                rPlayer.Transfers = transactions;
            }

            SQLCommand.Dispose();
            SQLDataReader.Dispose();
            SQLConnection.Dispose();
            return;
        }
示例#6
0
        public static void ChangePlayerMoney(String PlayerSteamID, int BankBalanceChange, int CashBalanceChange)
        {
            rFrameworkPlayer rPlayer = OnlinePlayers[PlayerSteamID];

            rPlayer.BankBalance += BankBalanceChange;
            rPlayer.CashBalance += CashBalanceChange;

            UpdatePlayerCash(rPlayer);
        }
示例#7
0
        public static void PlayerDropped([FromSource] Player player, string reason)
        {
            DebugWrite("Player " + player.Name + " leaving - updating database");
            DebugWrite("    Steam ID: " + GetPlayerSteamID(player));
            rFrameworkPlayer rPlayer = new rFrameworkPlayer(player, GetPlayerDiscordID(player), GetPlayerSteamID(player));

            OnlinePlayers.Remove(rPlayer.SteamID);

            //DatabaseUpdatePlayer(new List<rFrameworkPlayer>() { rPlayer });
        }
示例#8
0
        private async static void PlayerOpenCase([FromSource] Player player, int Amount, int FourDigitCode)
        {
            rFrameworkPlayer rPlayer = PlayerManager.GetOnlinePlayers()[GetPlayerSteamID(player)];

            foreach (int Pickup in CasePickups.Keys)
            {
                if (!DoesEntityExist(Pickup))
                {
                    PlayerManager.ChangePlayerMoney(rPlayer, 0, Amount);
                    CasePickups.Remove(Pickup);
                    DebugWrite("Player " + player.Name + " has picked up ^2$" + Amount);
                    break;
                }
            }
        }
示例#9
0
        public static void PlayerMoneyTransaction([FromSource] Player player, int amount, bool isWithdrawal)
        {
            rFrameworkPlayer rPlayer = GetrFrameworkPlayer(player);

            amount = Math.Abs(amount);

            //Determine if transaction is a withdrawal (amount less than zero) or deposit (amount greater than zero)
            if (isWithdrawal)
            {
                if (rPlayer.BankBalance - amount >= 0)
                {
                    //Transaction allowed
                    ChangePlayerMoney(rPlayer, -amount, amount);
                    DebugWrite("Player " + player.Name + " withdrew ^2$" + Math.Abs(amount));
                    TriggerClientEvent(player, "rFramework:ATMTransactionSuccess");

                    rBankTransfer transfer = new rBankTransfer(rPlayer.SteamID, rPlayer.SteamID, "Cash Withdrawn", false, true, amount, DateTime.Now);
                    rPlayer.Transfers.Add(transfer);
                    DatabaseUpdateTransaction(transfer);
                    UpdatePlayerTransactions(rPlayer);
                }
                else
                {
                    //Transaction invalid
                }
            }
            else
            {
                if (rPlayer.CashBalance - amount >= 0)
                {
                    //Transaction allowed
                    ChangePlayerMoney(rPlayer, amount, -amount);
                    DebugWrite("Player " + player.Name + " deposited ^1$" + Math.Abs(amount));
                    TriggerClientEvent(player, "rFramework:ATMTransactionSuccess");

                    rBankTransfer transfer = new rBankTransfer(rPlayer.SteamID, rPlayer.SteamID, "Cash Deposited", false, false, amount, DateTime.Now);
                    rPlayer.Transfers.Add(transfer);
                    DatabaseUpdateTransaction(transfer);
                    UpdatePlayerTransactions(rPlayer);
                }
                else
                {
                    //Transaction invalid
                }
            }
        }
示例#10
0
        private async static void PlayerPickupCash([FromSource] Player player, int Amount)
        {
            rFrameworkPlayer rPlayer = PlayerManager.GetOnlinePlayers()[GetPlayerSteamID(player)];

            foreach (int Pickup in MoneyPickups.Keys)
            {
                //if the entity no longer exists, it was the one picked up
                //this is not 100% secure. a better solution must be found
                //although cheating money through this would prove very difficult without the server code...
                if (!DoesEntityExist(Pickup))
                {
                    //parameter 3 is bank amt, 4 is cash amount
                    PlayerManager.ChangePlayerMoney(rPlayer, 0, Amount);
                    MoneyPickups.Remove(Pickup);
                    DebugWrite("Player " + player.Name + " has picked up ^4$" + Amount);
                    break;
                }
            }
        }
示例#11
0
        public async Task HandlePlayerWhitelist(rFrameworkPlayer rPlayer, dynamic deferrals)
        {
            if (config["ActivateDiscordWhitelist"].ToString().Equals("true"))
            {
                deferrals.defer();
                deferrals.update("Checking Whitelist...");
                bool IsWhitelisted = await CheckWhitelist(rPlayer.DiscordID);
                await Delay(0);

                if (!IsWhitelisted)
                {
                    deferrals.done("Not Discord Whitelisted");
                }
                else
                {
                    deferrals.done();
                }
            }
        }
示例#12
0
 public static void UpdatePlayerVehicles(rFrameworkPlayer rPlayer)
 {
 }
示例#13
0
 public static void DropPlayerFromDatabaseUpdates(rFrameworkPlayer rPlayer)
 {
     OnlinePlayers.Remove(rPlayer.SteamID);
 }
示例#14
0
        public PlayerManager()
        {
            if (!IsSetupComplete)
            {
                InitializeConfig();

                //StartDiscordBotProcess();
                object ConfigUseDiscordIntegration;
                config.TryGetValue("DiscordIntegration", out ConfigUseDiscordIntegration);

                EventHandlers.Add("playerConnecting", new Action <Player, string, dynamic, dynamic>(PlayerConnecting));
                EventHandlers.Add("playerDropped", new Action <Player, string>(PlayerDropped));
                EventHandlers.Add("rFramework:PlayerSpawn", new Action <Player>(PlayerSpawn));
                EventHandlers.Add("rFramework:MoneyTransaction", new Action <Player, int, bool>(PlayerMoneyTransaction));

                if (ConfigUseDiscordIntegration.ToString().ToLower().Equals("true"))
                {
                    UsingDiscordIntegration = true;
                }

                OnlinePlayers     = new Dictionary <String, rFrameworkPlayer>();
                ConnectingPlayers = new Dictionary <String, rFrameworkPlayer>();

                IsSetupComplete = true;

                foreach (Player player in Players)
                {
                    ulong PlayerDiscordID;
                    if (UsingDiscordIntegration)
                    {
                        PlayerDiscordID = GetPlayerDiscordID(player);
                    }
                    else
                    {
                        PlayerDiscordID = 0;
                    }

                    String PlayerSteamID = GetPlayerSteamID(player);

                    rFrameworkPlayer rPlayer = new rFrameworkPlayer(player, PlayerDiscordID, PlayerSteamID);

                    OnlinePlayers.Add(PlayerSteamID, rPlayer);
                    InitializeDatabasePlayer(rPlayer);

                    //Fix rPlayer

                    rPlayer.IsPlayerLoaded = true;

                    TriggerClientEvent(player, "rFramework:AssignConfig", JsonConvert.SerializeObject(config));

                    UpdatePlayerCash(rPlayer);
                    UpdatePlayerTransactions(rPlayer);
                }

                if (UsingDiscordIntegration)
                {
                    Tick += CheckForDiscordRoleChange;
                }
                Tick += UpdatePlayerDatabase;
            }
        }
示例#15
0
 public static void UpdatePlayerTransactions(rFrameworkPlayer rPlayer)
 {
     TriggerClientEvent(rPlayer.CorePlayer, "rFramework:UpdateTransactions", JsonConvert.SerializeObject(rPlayer.Transfers));
 }
示例#16
0
 public static void UpdatePlayerCash(rFrameworkPlayer rPlayer)
 {
     TriggerClientEvent(rPlayer.CorePlayer, "rFramework:UpdateMoney", rPlayer.BankBalance, rPlayer.CashBalance);
 }