Example #1
0
    internal static void Execute(object msg, NetConnection conn, NetworkSystem networkSystem)
    {
        Msg_CRC_GfxControlMoveStop _msg = msg as Msg_CRC_GfxControlMoveStop;

        if (null == _msg)
        {
            return;
        }
    }
Example #2
0
    internal static void Execute(object msg, RoomPeer peer)
    {
        Msg_CRC_GfxControlMoveStop _msg = msg as Msg_CRC_GfxControlMoveStop;

        if (null == _msg)
        {
            return;
        }
        peer.BroadCastMsgToRoom(_msg);
    }
Example #3
0
        internal void SyncGfxMoveControlStop(int objId, float x, float z, int id, bool isSkill)
        {
            Msg_CRC_GfxControlMoveStop msg = new Msg_CRC_GfxControlMoveStop();

            msg.obj_id             = objId;
            msg.skill_or_impact_id = id;
            msg.is_skill           = isSkill;
            msg.target_pos         = new ArkCrossEngineMessage.Position();
            msg.target_pos.x       = x;
            msg.target_pos.z       = z;
            msg.face_dir           = 0;
            msg.send_time          = TimeUtility.GetServerMilliseconds();

            SendMessage(msg);
        }
Example #4
0
        internal void SyncGfxMoveControlStop(CharacterInfo obj, int id, bool isSkill)
        {
            MovementStateInfo msi = obj.GetMovementStateInfo();

            Msg_CRC_GfxControlMoveStop msg = new Msg_CRC_GfxControlMoveStop();

            msg.obj_id             = obj.GetId();
            msg.skill_or_impact_id = id;
            msg.is_skill           = isSkill;
            msg.target_pos         = new ArkCrossEngineMessage.Position();
            msg.target_pos.x       = msi.PositionX;
            msg.target_pos.z       = msi.PositionZ;
            msg.face_dir           = msi.GetFaceDir();
            msg.send_time          = TimeUtility.GetServerMilliseconds();

            SendMessage(msg);
        }
Example #5
0
        internal static void Execute(object msg, User user)
        {
            Msg_CRC_GfxControlMoveStop _msg = msg as Msg_CRC_GfxControlMoveStop;

            if (_msg == null)
            {
                return;
            }
            Scene scene = user.OwnRoom.GetActiveScene();

            if (null != scene)
            {
                CharacterInfo info = scene.SceneContext.GetCharacterInfoById(_msg.obj_id);
                if (null != info && (_msg.obj_id == user.RoleId || info.OwnerId == user.RoleId))
                {
                    MovementStateInfo msi = info.GetMovementStateInfo();
                    Vector3           pos;
                    if (_msg.obj_id == user.RoleId)
                    {
                        pos = user.LastClientPosition;
                    }
                    else
                    {
                        pos = msi.GetPosition3D();
                    }
                    Vector3 newPos = new Vector3(_msg.target_pos.x, 0, _msg.target_pos.z);
                    msi.IsSkillMoving = false;

                    bool enableControl = false;
                    if (_msg.is_skill)
                    {
                        SkillInfo skillInfo = info.GetSkillStateInfo().GetSkillInfoById(_msg.skill_or_impact_id);
                        float     distance  = Geometry.Distance(pos, newPos);
                        if (null != skillInfo && (skillInfo.m_LeftEnableMoveCount > 0 || distance <= 0.3))
                        {
                            //校验
                            --skillInfo.m_LeftEnableMoveCount;

                            if (distance <= skillInfo.m_MaxMoveDistance + 1)
                            {
                                enableControl = true;

                                //LogSys.Log(LOG_TYPE.WARN, "Msg_CRC_GfxControlMoveStopHandler {0} ({1} <= {2}) LeftEnableMoveCount:{3} skill:{4} accept by server ({5}->{6})", _msg.obj_id, distSqr, skillInfo.m_MaxMoveDistanceSqr, skillInfo.m_LeftEnableMoveCount, _msg.skill_or_impact_id, pos.ToString(), newPos.ToString());
                            }
                            else
                            {
                                LogSys.Log(LOG_TYPE.ERROR, "Msg_CRC_GfxControlMoveStopHandler {0} ({1} > {2}) LeftEnableMoveCount:{3} skill:{4} can't accept by server ({5}->{6})", _msg.obj_id, distance, skillInfo.m_MaxMoveDistance, skillInfo.m_LeftEnableMoveCount, _msg.skill_or_impact_id, pos.ToString(), newPos.ToString());
                            }
                        }
                        else
                        {
                            LogSys.Log(LOG_TYPE.ERROR, "Msg_CRC_GfxControlMoveStopHandler {0} (LeftEnableMoveCount:{1} skill:{2}) can't accept by server ({3}->{4})", _msg.obj_id, skillInfo != null ? skillInfo.m_LeftEnableMoveCount : -1, _msg.skill_or_impact_id, pos.ToString(), newPos.ToString());
                        }
                    }
                    else
                    {
                        ImpactInfo impactInfo = info.GetSkillStateInfo().GetImpactInfoForCheck(_msg.skill_or_impact_id);
                        if (null != impactInfo && impactInfo.m_LeftEnableMoveCount > 0)
                        {
                            //校验
                            --impactInfo.m_LeftEnableMoveCount;

                            float distance = Geometry.Distance(pos, newPos);
                            if (distance <= impactInfo.m_MaxMoveDistance + 1)
                            {
                                enableControl = true;

                                //LogSys.Log(LOG_TYPE.WARN, "Msg_CRC_GfxControlMoveStopHandler {0} ({1} <= {2}) LeftEnableMoveCount:{3} skill:{4} impact:{5} accept by server ({6}->{7})", _msg.obj_id, distSqr, impactInfo.m_MaxMoveDistanceSqr, impactInfo.m_LeftEnableMoveCount, impactInfo.m_SkillId, _msg.skill_or_impact_id, pos.ToString(), newPos.ToString());
                            }
                            else
                            {
                                LogSys.Log(LOG_TYPE.ERROR, "Msg_CRC_GfxControlMoveStopHandler {0} ({1} > {2}) LeftEnableMoveCount:{3} skill:{4} impact:{5} can't accept by server ({6}->{7})", _msg.obj_id, distance, impactInfo.m_MaxMoveDistance, impactInfo.m_LeftEnableMoveCount, impactInfo.m_SkillId, _msg.skill_or_impact_id, pos.ToString(), newPos.ToString());
                            }
                        }
                        else
                        {
                            LogSys.Log(LOG_TYPE.ERROR, "Msg_CRC_GfxControlMoveStopHandler {0} (LeftEnableMoveCount:{1} skill:{2} impact:{3}) can't accept by server ({4}->{5})", _msg.obj_id, impactInfo != null ? impactInfo.m_LeftEnableMoveCount : -1, impactInfo != null ? impactInfo.m_SkillId : -1, _msg.skill_or_impact_id, pos.ToString(), newPos.ToString());
                        }
                    }
                    if (enableControl)
                    {
                        msi.SetFaceDir(_msg.face_dir);
                        msi.SetPosition(newPos);
                    }
                    else
                    {
                        //todo:记录违规次数
                    }
                    if (_msg.obj_id == user.RoleId)
                    {
                        float velocity = (float)user.Info.GetActualProperty().MoveSpeed;
                        user.SampleMoveData(msi.PositionX, msi.PositionZ, velocity, msi.MoveDirCosAngle, msi.MoveDirSinAngle, _msg.send_time);
                    }
                }
                else
                {
                    if (null == info)
                    {
                        LogSys.Log(LOG_TYPE.ERROR, "Msg_CRC_GfxControlMoveStopHandler, charactor {0} not exist", _msg.obj_id);
                    }
                    else
                    {
                        LogSys.Log(LOG_TYPE.ERROR, "Msg_CRC_GfxControlMoveStopHandler, charactor {0} or owner {1} not user {2}", info.GetId(), info.OwnerId, user.RoleId);
                    }
                }
            }
        }