public static rFrameworkPlayer GetrFrameworkPlayer(Player player) { rFrameworkPlayer rPlayer = null; OnlinePlayers.TryGetValue(GetPlayerSteamID(player), out rPlayer); return(rPlayer); }
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"); } }
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; }
public static void ChangePlayerMoney(rFrameworkPlayer rPlayer, int BankBalanceChange, int CashBalanceChange) { rPlayer.BankBalance += BankBalanceChange; rPlayer.CashBalance += CashBalanceChange; UpdatePlayerCash(rPlayer); }
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; }
public static void ChangePlayerMoney(String PlayerSteamID, int BankBalanceChange, int CashBalanceChange) { rFrameworkPlayer rPlayer = OnlinePlayers[PlayerSteamID]; rPlayer.BankBalance += BankBalanceChange; rPlayer.CashBalance += CashBalanceChange; UpdatePlayerCash(rPlayer); }
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 }); }
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; } } }
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 } } }
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; } } }
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(); } } }
public static void UpdatePlayerVehicles(rFrameworkPlayer rPlayer) { }
public static void DropPlayerFromDatabaseUpdates(rFrameworkPlayer rPlayer) { OnlinePlayers.Remove(rPlayer.SteamID); }
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; } }
public static void UpdatePlayerTransactions(rFrameworkPlayer rPlayer) { TriggerClientEvent(rPlayer.CorePlayer, "rFramework:UpdateTransactions", JsonConvert.SerializeObject(rPlayer.Transfers)); }
public static void UpdatePlayerCash(rFrameworkPlayer rPlayer) { TriggerClientEvent(rPlayer.CorePlayer, "rFramework:UpdateMoney", rPlayer.BankBalance, rPlayer.CashBalance); }