Esempio n. 1
0
        /// <summary>
        /// 处理点击防作弊按钮
        /// </summary>
        void HandleAntiCheating()
        {
            AntiCheatingPanelData acpd = GameData.Instance.AntiCheatingPanelData;

            acpd.isPanelShow = true;
            acpd.iReadyShowAnti++;
            SystemMgr.Instance.AntiCheatingSystem.UpdateShow();
            UIMainView.Instance.AntiCheatingPanel.InitPanel();
        }
        /// <summary>
        /// 面板更新
        /// </summary>
        public void UpdateShow()
        {
            AntiCheatingPanelData acpd = GameData.Instance.AntiCheatingPanelData;

            if (acpd.isPanelShow)
            {
                gameObject.SetActive(true);
            }
            else
            {
                isStartClosePanel = false;
                //再打开防作弊面板之前,关闭消息接口
                Debug.LogError("==========================1");
                Network.NetworkMgr.Instance.GameServer.Unlock();
                gameObject.SetActive(false);
            }
        }
        /// <summary>
        /// 产生警告信息
        /// </summary>
        void SpwanWarningMessage()
        {
            int count = 0;  //表示显示几条警告作弊信息
            AntiCheatingPanelData acpd = GameData.Instance.AntiCheatingPanelData;
            //先获取玩家玩家的ip信息
            Dictionary <string, List <int> > ip = acpd.GetPlayerIpSame();

            bool isSpwanIp = false;

            foreach (string key in ip.Keys)
            {
                if (ip[key].Count >= 2)
                {
                    isSpwanIp = true;
                }
            }

            if (isSpwanIp)
            {
                //产生预置体
                GameObject go = Instantiate(Resources.Load <GameObject>("Game/AntiCheck/Warning"));
                go.transform.SetParent(content.transform);
                go.transform.localScale    = Vector3.one;
                go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y, 0);
                go.GetComponent <Waring>().Ip(ip, 1);
                count++;
            }
            //Dictionary<string, List<int>> mac = acpd.GetPlayerMacIdSame();

            //if (mac.Count > 0)
            //{
            //    //产生预置体
            //    GameObject go = Instantiate(Resources.Load<GameObject>("Game/AntiCheck/Warning"));
            //    go.transform.SetParent(content.transform);
            //    go.transform.localScale = Vector3.one;
            //    go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y, 0);
            //    go.GetComponent<Waring>().Ip(mac, 2);
            //    count++;
            //}

            bool isSpwanDistance = false;
            Dictionary <string, List <int> > distance = acpd.GetPlayerDistance();

            foreach (string key in distance.Keys)
            {//0--4
                Debug.LogWarning("distancekey:" + key + ",distancevalue:" + distance[key].Count + "======================");
                if (distance[key].Count >= 2)
                {
                    isSpwanDistance = true;
                }
            }

            if (isSpwanDistance)
            {
                //产生预置体
                GameObject go = Instantiate(Resources.Load <GameObject>("Game/AntiCheck/Warning"));
                go.transform.SetParent(content.transform);
                go.transform.localScale    = Vector3.one;
                go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y, 0);
                go.GetComponent <Waring>().Ip(distance, 3);
                count++;
            }

            content.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 100 * count);

            //如果没有作弊行为
            if (count <= 0)
            {
                NoCheatingAction.gameObject.SetActive(true);
            }

            //在产生所有预置体之后,2s之后,关闭面板
            if (GameData.Instance.AntiCheatingPanelData.iReadyShowAnti <= 1)
            {
                isStartClosePanel = true;
            }

            acpd.isSpwanEnd = true;
        }