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); }
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); }
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); }