private async void OnShopRequestEquipOutfit([FromSource] Player player, int outfitId) { List <UserOutfit> userOutfits; m_userOutfits.TryGetValue(Convert.ToInt32(player.Handle), out userOutfits); if (userOutfits == null) { player.TriggerEvent("shop:prompt", "<b>You don't have any outfits!</b>"); return; } var userOutfit = userOutfits.FirstOrDefault(uo => uo.OutfitId == outfitId); if (userOutfit == null) { player.TriggerEvent("shop:prompt", "You do not own this outfit!"); return; } var outfit = Cache.Outfits.FirstOrDefault(o => o.Id == outfitId); if (outfit == null) { player.TriggerEvent("shop:prompt", "Outfit doesn't exist?!"); return; } var clothingStyle = new ClothingStyle(outfitId) { PedComponents = outfit.Components }; player.TriggerEvent("setActiveStyle", JsonConvert.SerializeObject(clothingStyle)); var user = Cache.Users.FirstOrDefault(u => u.NetId == Convert.ToInt32(player.Handle)); if (user != null) { user.ActiveUserOutfit = userOutfit.Id; } player.TriggerEvent("shop:prompt", "<b>Equipped Outfit!</b> Press ESC return to game."); await Delay(0); }
private async void OnEquipOutfit(int source, List <object> args, string raw) { var _source = source; if (_source == 0 || args.Count == 0) { return; } Player player = Players[_source]; if (player == null) { return; } try { List <UserOutfit> userOutfits; m_userOutfits.TryGetValue(Convert.ToInt32(player.Handle), out userOutfits); if (userOutfits == null) { player.TriggerEvent("shop:prompt", "<b>You don't have any outfits!</b>"); return; } int outfitNumber = -1; try { outfitNumber = Convert.ToInt32(args[0]); } catch (Exception) { player.TriggerEvent("shop:prompt", "You did not choose a number"); return; } if (outfitNumber < 0 || outfitNumber >= userOutfits.Count) { player.TriggerEvent("shop:prompt", "<b>Invalid outfit!</b> Type <b>/outfits</b> to see a list of your outfits."); return; } var userOutfit = userOutfits[outfitNumber]; var outfit = Cache.Outfits.FirstOrDefault(o => o.Id == userOutfit.OutfitId); if (outfit == null) { player.TriggerEvent("shop:prompt", "<b>Could not find outfit!</b>"); return; } var clothingStyle = new ClothingStyle(outfitNumber) { PedComponents = outfit.Components }; player.TriggerEvent("setActiveStyle", JsonConvert.SerializeObject(clothingStyle)); var user = Cache.Users.FirstOrDefault(u => u.NetId == _source); if (user != null) { user.ActiveUserOutfit = userOutfit.Id; } await Delay(0); } catch (Exception ex) { m_logger.Exception("OnEquipOutfit", ex); player.TriggerEvent("shop:prompt", "Something went wrong equipping an outfit"); } }
public async void OnPlayerReady([FromSource] Player player) { try { var licenseId = player.Identifiers["license"]; // 1. Check for cached user User user = null; if (Cache.Users.Count > 0) { user = Cache.Users.FirstOrDefault(x => x.LicenseId == licenseId); if (user != null) { user.NetId = Convert.ToInt32(player.Handle);; } } // 2. If no cached user if (user == null) { user = await _mysqlDb.GetUser(player); // 3. Still null so we create new user if (user == null) { user = await _mysqlDb.CreateNewUser(player); if (user == null) { player.Drop("Failed to load your profile, please try again. Contact an Administrator after 5 failed tries."); _logger.Info($"Failed to load profile for {player.Name} (IP: {player.EndPoint})"); return; } } user.NetId = Convert.ToInt32(player.Handle); Cache.Users.Add(user); } try { bool loadCommerce = false; if (API.CanPlayerStartCommerceSession(player.Handle)) { if (!API.IsPlayerCommerceInfoLoadedExt(player.Handle)) { API.LoadPlayerCommerceDataExt(player.Handle); var start = API.GetGameTimer(); var broke = false; while (!API.IsPlayerCommerceInfoLoadedExt(player.Handle)) { if (API.GetGameTimer() - start > 5000) { broke = true; break; } await Delay(100); } if (!broke) { loadCommerce = true; } } } await m_shopController.GetUserOutfits(user.Id, user.NetId, loadCommerce); await m_shopController.GetUserWeaponTints(user.Id, user.NetId, loadCommerce); // await m_shopController.GetUserGeneralItems(user.Id, user.NetId, loadCommerce); // m_shopController.ActivateGeneralItems(user.Id, user.NetId); } catch (Exception ex) { _logger.Exception("OnPlayerReady - ShopController stuff", ex); } try { var style = await m_shopController.GetActiveUserOutfit(player, user.ActiveUserOutfit, user.Id); if (user.ActiveUserOutfit == 0 && style != null) { user.ActiveUserOutfit = style.Id; } var tint = await m_shopController.GetActiveUserWeaponTint(player, user.ActiveUserWeaponTint, user.Id); if (user.ActiveUserWeaponTint == 0 && tint != null) { user.ActiveUserWeaponTint = tint.Id; } List <PedComponent> components = new List <PedComponent> { new PedComponent(1, 57, 0, 2), // Head new PedComponent(3, 41, 0, 2), // Torso new PedComponent(4, 98, 13, 2), // Legs new PedComponent(6, 71, 13, 2), // Feet new PedComponent(8, 15, 0, 2), // Accessoires new PedComponent(11, 251, 13, 2) // Torso2 }; int weaponTintIndex = 0; try { if (style != null) { var outfit = Cache.Outfits.FirstOrDefault(o => o.Id == style.OutfitId); if (outfit != null) { components = outfit.Components; } } if (tint != null) { var weaponTint = Cache.WeaponTints.FirstOrDefault(t => t.Id == tint.WeaponTintId); if (weaponTint != null) { weaponTintIndex = weaponTint.TintId; } } try { var clothingStyle = new ClothingStyle(1) { PedComponents = components, IsActiveStyle = true, User_id = user.Id }; TriggerEvent("gg_internal:playerReady", JsonConvert.SerializeObject(user), JsonConvert.SerializeObject(clothingStyle), weaponTintIndex); TriggerEvent("gg_internal:updateTags", user.NetId, user.Moderator, user.Donator, user.Xp); } catch (Exception) { Debug.WriteLine($"User ActiveUserOutfit? {user.ActiveUserOutfit} | Components? {components[0].ComponentId}"); } } catch (Exception) { Debug.WriteLine("ACTUALLY HERE"); } } catch (Exception ex) { _logger.Exception("OnPlayerReady - Sending playerReady -", ex); } try { var connection = Cache.Connections.FirstOrDefault(c => c.UserId == user.Id); if (connection == null) { connection = new Connection(user.Id, user.Endpoint); } var conn = await _mysqlDb.InsertConnection(connection); if (conn != null) { Cache.Connections.Add(conn); } } catch (Exception ex) { _logger.Exception("OnPlayerReady - Adding new connection -", ex); } } catch (Exception ex) { _logger.Exception("OnPlayerReady - Other -", ex); } _logger.Info($"[JOIN] [{player.Handle}] {player.Name} joined. (IP: {player.EndPoint})^7"); }