コード例 #1
0
        protected override ExecResult ExecCommand(IInstance instance, long delta)
        {
            var gameContext = Contexts.sharedInstance.game;

            var target = instance.Target as GameEntity;

            if (null == target)
            {
                return(ExecResult.Finished);
            }

            uint entityId = IdSystem.Instance.GenId(IdEnum.Entity);
            // camp id
            int campId = m_MainPlayer ? (int)CampId.Red : (int)CampId.Blue;

            if (target.hasCamp)
            {
                campId = target.camp.Value;
            }

            Vector3 position = target.position.Value + Quaternion.Euler(0, Mathf.Rad2Deg * target.rotation.Value, 0) * m_LocalPosition;
            float   rotation = target.rotation.Value + m_LocalRotation.y * Mathf.Deg2Rad;

            if (m_MainPlayer)
            {
                Services.Instance.CreateCharacterService.CreatePlayer(entityId, target.id.value, m_CharacterId, campId, position, rotation);
            }
            else
            {
                Services.Instance.CreateCharacterService.CreateNpc(entityId, target.id.value, m_CharacterId, campId, position, rotation);
            }

            if (m_SkillId > 0)
            {
                var entity = gameContext.GetEntityWithId(entityId);
                SkillSystem.Instance.StartSkill(target, entity, m_SkillId, -1, target.position.Value, target.rotation.Value);
            }

            if (!string.IsNullOrEmpty(m_ObjIdVarName))
            {
                instance.AddVariable(m_ObjIdVarName, entityId);
            }

            return(ExecResult.Finished);
        }
コード例 #2
0
        protected override ExecResult ExecCommand(IInstance instance, long delta)
        {
            GameEntity obj = instance.Target as GameEntity;

            if (null == obj)
            {
                return(ExecResult.Finished);
            }

            List <uint> findedTargets = new List <uint>();


            Vector3 center = obj.position.Value + Quaternion.Euler(0, Mathf.Rad2Deg * obj.rotation.Value, 0) * m_Offset;

            var entities = Contexts.sharedInstance.game.GetGroup(GameMatcher.Position);

            foreach (var entity in entities)
            {
                if (entity == obj)
                {
                    continue;
                }
                if (entity.hasCamp && obj.hasCamp && entity.camp.Value == obj.camp.Value)
                {
                    continue;
                }

                if (entity.hasDead)
                {
                    continue;
                }

                if (ExtensionUnityVector3.DistanceXZ(center, entity.position.Value) < m_Radius)
                {
                    findedTargets.Add(entity.id.value);
                }
            }

            instance.AddVariable(m_ObjIdVarName, findedTargets);

            return(ExecResult.Finished);
        }
コード例 #3
0
        protected override ExecResult ExecCommand(IInstance instance, long delta)
        {
            GameEntity obj = instance.Target as GameEntity;

            if (null == obj)
            {
                return(ExecResult.Finished);
            }

            List <uint> findedTargets = new List <uint>();

            var entities = Contexts.sharedInstance.game.GetEntitiesWithParent(obj.id.value);

            foreach (var entity in entities)
            {
                findedTargets.Add(entity.id.value);
            }

            instance.AddVariable(m_RetString, findedTargets);

            return(ExecResult.Finished);
        }