Ejemplo n.º 1
0
        private void OnUserSkill(UserInfo user, int skillId)
        {
            Scene scene = user.SceneContext.CustomData as Scene;

            if (null != scene)
            {
                SkillInfo skillInfo = user.GetSkillStateInfo().GetCurSkillInfo();
                if (null == skillInfo || !skillInfo.IsSkillActivated)
                {
                    scene.SkillSystem.StartSkill(user.GetId(), skillId);

                    Msg_CRC_Skill skillBuilder = new Msg_CRC_Skill();
                    skillBuilder.role_id  = user.GetId();
                    skillBuilder.skill_id = skillId;
                    ArkCrossEngineMessage.Position posBuilder1 = new ArkCrossEngineMessage.Position();
                    posBuilder1.x               = user.GetMovementStateInfo().GetPosition3D().X;
                    posBuilder1.z               = user.GetMovementStateInfo().GetPosition3D().Z;
                    skillBuilder.stand_pos      = posBuilder1;
                    skillBuilder.face_direction = (float)user.GetMovementStateInfo().GetFaceDir();
                    skillBuilder.want_face_dir  = (float)user.GetMovementStateInfo().GetFaceDir();

                    LogSystem.Debug("Send Msg_CRC_Skill, EntityId={0}, SkillId={1}",
                                    user.GetId(), skillId);
                    scene.NotifyAreaUser(user, skillBuilder, false);
                }
            }
        }
Ejemplo n.º 2
0
    internal static void Execute(object msg, NetConnection conn, NetworkSystem networkSystem)
    {
        Msg_CRC_Skill skill_msg = msg as Msg_CRC_Skill;

        if (null == skill_msg)
        {
            return;
        }
    }
Ejemplo n.º 3
0
    internal static void Execute(object msg, RoomPeer peer)
    {
        Msg_CRC_Skill skill_msg = msg as Msg_CRC_Skill;

        if (null == skill_msg)
        {
            return;
        }
        skill_msg.role_id = peer.RoleId;
        peer.BroadCastMsgToRoom(skill_msg);
    }
Ejemplo n.º 4
0
        internal void SyncPlayerSkill(int skillId, float x, float z, float dir)
        {
            Msg_CRC_Skill bd = new Msg_CRC_Skill();

            bd.skill_id       = skillId;
            bd.stand_pos      = new ArkCrossEngineMessage.Position();
            bd.stand_pos.x    = x;
            bd.stand_pos.z    = z;
            bd.face_direction = dir;
            bd.send_time      = TimeUtility.GetServerMilliseconds();
            SendMessage(bd);
        }
Ejemplo n.º 5
0
        internal static void Execute(object msg, User user)
        {
            Msg_CRC_Skill use_skill = msg as Msg_CRC_Skill;

            if (use_skill == null)
            {
                return;
            }
            CharacterInfo charactor = user.Info;

            if (charactor == null)
            {
                LogSys.Log(LOG_TYPE.ERROR, "UseSkillHandler, charactor {0} not exist", user.RoleId);
                return;
            }
            charactor = charactor.GetRealControlledObject();
            MovementStateInfo msi = charactor.GetMovementStateInfo();

            if (!msi.IsSkillMoving)
            {
                float x        = use_skill.stand_pos.x;
                float z        = use_skill.stand_pos.z;
                float velocity = (float)user.Info.GetActualProperty().MoveSpeed;
                if (!user.VerifyPosition(x, z, velocity, use_skill.send_time, 4.0f))
                {
                    //todo:记录违规次数
                }
                msi.SetPosition2D(x, z);

                user.SampleMoveData(use_skill.stand_pos.x, use_skill.stand_pos.z, velocity, msi.MoveDirCosAngle, msi.MoveDirSinAngle, use_skill.send_time);
            }

            msi.SetFaceDir(use_skill.face_direction);

            Scene scene = user.OwnRoom.GetActiveScene();

            if (null != scene)
            {
                scene.SkillSystem.StartSkill(user.RoleId, use_skill.skill_id);
            }

            //LogSys.Log(LOG_TYPE.DEBUG, "UseSkillHandler User:{0} skill:{1} isskillmoving:{2} ismovemeetobstacle:{3} time:{4} client time:{5}", user.RoleId, use_skill.skill_id, msi.IsSkillMoving, msi.IsMoveMeetObstacle, TimeUtility.GetServerMilliseconds(), use_skill.send_time);
        }
Ejemplo n.º 6
0
        internal void SyncPlayerSkill(CharacterInfo entity,
                                      int skillId)
        {
            if (entity.IsHaveStateFlag(CharacterState_Type.CST_Sleep))
            {
                return;
            }
            Vector3       standPos = entity.GetMovementStateInfo().GetPosition3D();
            Msg_CRC_Skill bd       = new Msg_CRC_Skill();

            bd.skill_id       = skillId;
            bd.stand_pos      = new ArkCrossEngineMessage.Position();
            bd.stand_pos.x    = standPos.X;
            bd.stand_pos.z    = standPos.Z;
            bd.face_direction = entity.GetMovementStateInfo().GetFaceDir();
            bd.want_face_dir  = entity.GetMovementStateInfo().GetWantFaceDir();
            bd.send_time      = TimeUtility.GetServerMilliseconds();
            SendMessage(bd);

            //LogSystem.Debug("SyncPlayerSkill skill {0}, entity {1}, pos:{2}", skillId, entity.GetId(), entity.GetMovementStateInfo().GetPosition2D().ToString());
        }
Ejemplo n.º 7
0
        public void SyncPlayerSkill(CharacterInfo entity,
                                    int skillId,
                                    CharacterInfo target,
                                    ScriptRuntime.Vector3 targetPos,
                                    float targetAngle,
                                    ScriptRuntime.Vector3 standPos,
                                    float faceAngle,
                                    int itemId)
        {
            if (entity.IsHaveStateFlag(CharacterState_Type.CST_Sleep))
            {
                return;
            }
            int target_serverid = 0;

            if (target != null)
            {
                target_serverid = target.GetId();
            }
            Msg_CRC_Skill bd = new Msg_CRC_Skill();

            bd.role_id        = entity.GetId();
            bd.skill_id       = skillId;
            bd.target_id      = target_serverid;
            bd.target_pos     = new DashFireMessage.Position();
            bd.target_pos.x   = targetPos.X;
            bd.target_pos.y   = targetPos.Y;
            bd.target_pos.z   = targetPos.Z;
            bd.target_angle   = (float)targetAngle;
            bd.stand_pos      = new DashFireMessage.Position();
            bd.stand_pos.x    = standPos.X;
            bd.stand_pos.y    = standPos.Y;
            bd.stand_pos.z    = standPos.Z;
            bd.face_direction = (float)faceAngle;
            bd.item_id        = itemId;
            SendMessage(bd);
        }