コード例 #1
0
        public override void OnUpdate()
        {
            this.m_interval_update_tick += DeltaTime;
            if (this.m_interval_update_tick >= 0.1f)
            {
                this.m_interval_update_tick = 0f;
                ///
                if (BasePlayer.IsHaveLocalPlayer)
                {
                    if (this.m_no_target_time >= 0.5f)
                    {
                        this.m_no_target_time = 0f;
                        this.TargetPlayer     = null;
                    }

                    #region [Section] Find Target
                    for (int i = 0; i < BasePlayer.ListPlayers.Count; ++i)
                    {
                        if (BasePlayer.ListPlayers[i].IsLocalPlayer == false && BasePlayer.ListPlayers[i].IsAlive)
                        {
                            float distance = Vector3.Distance(BasePlayer.ListPlayers[i].Position, BasePlayer.LocalPlayer.Position);
                            if ((BasePlayer.LocalPlayer.HasActiveItem && OpCodes.IsFireWeapon_Prefab((EPrefabUID)BasePlayer.LocalPlayer.ActiveItem.PrefabID) && distance < 150) || distance < 50)
                            {
                                #region [Section] Range and Radius check
                                Vector3 forward        = BasePlayer.LocalPlayer.GetForward() * distance + BasePlayer.LocalPlayer.EyePos;
                                float   distance_check = 5f;

                                if (distance < 10)
                                {
                                    distance_check = distance / 2;
                                }
                                else if (distance > 30)
                                {
                                    distance_check = 9;
                                }

                                distance_check = 100;
                                float distance_point_and_playuer = Vector3.Distance(forward, BasePlayer.ListPlayers[i].Position + new Vector3(0, BasePlayer.ListPlayers[i].GetHeight() * 0.5f, 0));
                                if (distance_point_and_playuer < distance_check)
                                {
                                    m_list_players.Push(new TargetAimInformation {
                                        Player = BasePlayer.ListPlayers[i], DistanceCursor = distance_point_and_playuer
                                    });
                                }
                                #endregion
                            }
                        }
                    }
                    if (this.m_list_players.Count > 0)
                    {
                        BasePlayer target = null;
                        float      dist   = float.MaxValue;
                        while (this.m_list_players.Count > 0)
                        {
                            TargetAimInformation player = this.m_list_players.Pop();
                            if (dist > player.DistanceCursor)
                            {
                                dist   = player.DistanceCursor;
                                target = player.Player;
                            }
                        }
                        this.TargetPlayer = target;
                    }
                    else if (this.TargetPlayer != null)
                    {
                        m_no_target_time += 0.1f;
                    }

                    #endregion

                    if (this.TargetPlayer != null)
                    {
                        DDraw.Text(this.TargetPlayer.Position + new Vector3(0, this.TargetPlayer.GetHeight(), 0), $"<size=32>.</size>", Color.red, 0.1f);
                    }
//                    if (this.TargetPlayer != null)
//                        DDraw.DrawBox(this.TargetPlayer.Position + new Vector3(0, this.TargetPlayer.GetHeight()*0.5f, 0), this.TargetPlayer.Rotation.ToQuaternion(), new Vector3(1,this.TargetPlayer.GetHeight(), 1), Color.red, 0.05f);
                }

                ///
            }
        }
コード例 #2
0
ファイル: RangeAim.cs プロジェクト: OBTestCoder/gamecoder
        // Token: 0x06000127 RID: 295 RVA: 0x00009D78 File Offset: 0x00007F78
        public override void OnUpdate()
        {
            this.m_interval_update_tick += SapphireType.DeltaTime;
            bool flag = this.m_interval_update_tick >= 0.1f;

            if (flag)
            {
                this.m_interval_update_tick = 0f;
                bool isHaveLocalPlayer = BasePlayer.IsHaveLocalPlayer;
                if (isHaveLocalPlayer)
                {
                    bool flag2 = this.m_no_target_time >= 0.5f;
                    if (flag2)
                    {
                        this.m_no_target_time = 0f;
                        this.TargetPlayer     = null;
                    }
                    for (int i = 0; i < BasePlayer.ListPlayers.Count; i++)
                    {
                        bool flag3 = !BasePlayer.ListPlayers[i].IsLocalPlayer && BasePlayer.ListPlayers[i].IsAlive;
                        if (flag3)
                        {
                            float distance = Vector3.Distance(BasePlayer.ListPlayers[i].Position, BasePlayer.LocalPlayer.Position);
                            bool  flag4    = (BasePlayer.LocalPlayer.HasActiveItem && OpCodes.IsFireWeapon_Prefab((EPrefabUID)BasePlayer.LocalPlayer.ActiveItem.PrefabID) && distance < 150f) || distance < 70f;
                            if (flag4)
                            {
                                Vector3 forward = BasePlayer.LocalPlayer.GetForward() * distance + BasePlayer.LocalPlayer.EyePos;
                                bool    flag5   = distance < 10f;
                                float   distance_check;
                                if (flag5)
                                {
                                    distance_check = distance / 2f;
                                }
                                else
                                {
                                    bool flag6 = distance > 30f;
                                    if (flag6)
                                    {
                                    }
                                }
                                distance_check = 100f;
                                float distance_point_and_playuer = Vector3.Distance(forward, BasePlayer.ListPlayers[i].Position + new Vector3(0f, BasePlayer.ListPlayers[i].GetHeight() * 0.5f, 0f));
                                bool  flag7 = distance_point_and_playuer < distance_check;
                                if (flag7)
                                {
                                    this.m_list_players.Push(new TargetAimInformation
                                    {
                                        Player         = BasePlayer.ListPlayers[i],
                                        DistanceCursor = distance_point_and_playuer
                                    });
                                }
                            }
                        }
                    }
                    bool flag8 = this.m_list_players.Count > 0;
                    if (flag8)
                    {
                        BasePlayer target = null;
                        float      dist   = float.MaxValue;
                        while (this.m_list_players.Count > 0)
                        {
                            TargetAimInformation player = this.m_list_players.Pop();
                            bool flag9 = dist > player.DistanceCursor;
                            if (flag9)
                            {
                                dist   = player.DistanceCursor;
                                target = player.Player;
                            }
                        }
                        this.TargetPlayer = target;
                    }
                    else
                    {
                        bool flag10 = this.TargetPlayer != null;
                        if (flag10)
                        {
                            this.m_no_target_time += 0.1f;
                        }
                    }
                    bool flag11 = this.TargetPlayer != null;
                    if (flag11)
                    {
                        DDraw.Text(this.TargetPlayer.Position + new Vector3(0f, this.TargetPlayer.GetHeight(), 0f), "<size=32>.</size>", Color.red, 0.1f);
                    }
                }
            }
        }