示例#1
0
        public static bool PlayerModifiersValid(int mod1, int mod2)
        {
            bool flag = true;

            bool[] serverFilters = new bool[8];
            RUtility.BitmaskToBoolArray(MPModPrivateData.ModifierFilterMask, ref serverFilters);

            for (int i = 0; i < 4; i++)
            {
                // Only verify modifier 1 if there's an enabled lobby selection in left column
                if (serverFilters[i])
                {
                    flag &= serverFilters[mod1];
                    break;
                }
            }

            for (int j = 4; j < 8; j++)
            {
                // Only verify modifier 2 if there's an enabled lobby selection in right column
                if (serverFilters[j])
                {
                    flag &= serverFilters[mod2 + 4];
                    break;
                }
            }

            return(flag);
        }
示例#2
0
            static void Prefix()
            {
                bool[] serverFilters = new bool[8];
                RUtility.BitmaskToBoolArray(MPModPrivateData.ModifierFilterMask, ref serverFilters);

                foreach (KeyValuePair <int, LoadoutDataMessage> keyValuePair in NetworkMatch.m_player_loadout_data.Where(x => x.Key > 0))
                {
                    if (!serverFilters.Take(4).Any(x => x))
                    {
                        keyValuePair.Value.m_mp_modifier1 = -1;
                    }

                    if (!serverFilters.Skip(4).Take(4).Any(x => x))
                    {
                        keyValuePair.Value.m_mp_modifier2 = -1;
                    }
                }
            }
示例#3
0
        public static string GetDisabledModifiers()
        {
            string     result   = String.Empty;
            List <int> disabled = new List <int>();

            bool[] serverFilters = new bool[8];
            RUtility.BitmaskToBoolArray(MPModPrivateData.ModifierFilterMask, ref serverFilters);

            for (int i = 0; i < 8; i++)
            {
                if (!serverFilters[i])
                {
                    disabled.Add(i);
                }
            }

            result = String.Join(", ", disabled.Select(x => Player.GetMpModifierName(x < 4 ? x : x - 4, x < 4 ? true : false)).ToArray());
            return(result);
        }
示例#4
0
            static void Prefix()
            {
                if (!Overload.NetworkManager.IsServer())
                {
                    return;
                }

                bool[] serverFilters = new bool[8];
                RUtility.BitmaskToBoolArray(MPModPrivateData.ModifierFilterMask, ref serverFilters);

                foreach (var player in NetworkMatch.m_player_loadout_data.Where(x => x.Key > 0))
                {
                    if (!MPModifiers.PlayerModifiersValid(player.Value.m_mp_modifier1, player.Value.m_mp_modifier2))
                    {
                        var conn = NetworkServer.connections[player.Key];
                        if (conn != null)
                        {
                            NetworkServer.SendToClient(conn.connectionId, 86, new StringMessage("This match has disabled modifiers: " + GetDisabledModifiers()));
                            NetworkMatch.RemoveConnectionId(conn.connectionId);
                            GameManager.m_gm.StartCoroutine(DisconnectCoroutine(conn.connectionId));
                        }
                    }
                }
            }