예제 #1
0
        protected override bool ExecCommand(StoryInstance instance, StoryValueParam <int, float, float> _params, long delta)
        {
            object us;

            if (instance.GlobalVariables.TryGetValue("EntityInfo", out us))
            {
                EntityInfo user = us as EntityInfo;
                if (null != user)
                {
                    int        objId   = _params.Param1Value;
                    float      x       = _params.Param2Value;
                    float      z       = _params.Param3Value;
                    EntityInfo charObj = user.SceneContext.GetEntityById(objId);
                    if (null != charObj)
                    {
                        MovementStateInfo msi = charObj.GetMovementStateInfo();
                        msi.SetPosition2D(x, z);

                        Scene scene = user.SceneContext.CustomData as Scene;
                        if (null != scene)
                        {
                            GameFrameworkMessage.Msg_RC_AdjustPosition adjustPos = new GameFrameworkMessage.Msg_RC_AdjustPosition();
                            adjustPos.role_id  = objId;
                            adjustPos.face_dir = ProtoHelper.EncodeFloat(msi.GetFaceDir());
                            adjustPos.x        = ProtoHelper.EncodeFloat(x);
                            adjustPos.z        = ProtoHelper.EncodeFloat(z);

                            scene.NotifyAllUser(RoomMessageDefine.Msg_RC_AdjustPosition, adjustPos);
                        }
                    }
                }
            }
            return(false);
        }
예제 #2
0
        internal void SyncPlayerSkill(EntityInfo entity, int skillId, int targetId, float faceDir)
        {
            if (entity.HaveState(CharacterPropertyEnum.x3002_昏睡))
            {
                return;
            }
            Msg_CR_Skill bd = new Msg_CR_Skill();

            bd.role_id  = entity.GetId();
            bd.skill_id = skillId;
            if (targetId > 0)
            {
                bd.target_id = targetId;
            }
            else
            {
                bd.target_dir = ProtoHelper.EncodeFloat(faceDir);
            }
            SendMessage(RoomMessageDefine.Msg_CR_Skill, bd);
        }