コード例 #1
0
        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);
        }
コード例 #2
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");
            }
        }
コード例 #3
0
ファイル: ServerBase.cs プロジェクト: d0p3t/ggm
        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");
        }