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