static void SkillBeginFunc(byte[] data, Action5001 action) { SkillBegin msg = ProtoBufUtils.Deserialize <SkillBegin>(data); Player cha = SceneManager.Instance.FindPlayer(msg.uid); if (cha == null) { return; } Skill skill = cha.GetSkill(); if (skill == null) { return; } if (skill.SkillID != msg.skillID || skill.mSkillState != SkillState.TrackEnemy) { cha.SetSkill(null); return; } cha.Position = msg.position.ToVector3(); cha.Direction = msg.direction.ToVector3(); skill.BeginSkill(); }
static void SkillBeginFunc(byte[] data) { Scene scn = SceneSystem.Instance.mCurrentScene; if (scn == null) { return; } SkillBegin msg = ProtoBufUtils.Deserialize <SkillBegin>(data); Character cha = scn.GetCharacter(msg.uid); if (cha == null) { return; } Skill skill = cha.GetSkill(); if (skill == null) { return; } if (skill.SkillID != msg.skillID || skill.mSkillState != SkillState.TrackEnemy) { return; } cha.Position = msg.position.ToVector3(); cha.Direction = msg.direction.ToVector3(); cha.StopMove(); skill.BeginSkill(); }
public void BeginSkill() { int firstStageID = -1; for (int i = 0; i < mSkillInfo.stages.Length; ++i) { int stageID = mSkillInfo.stages[i]; excel_skill_stage stageInfo = excel_skill_stage.Find(stageID); if (stageInfo == null) { Debug.LogErrorFormat("Error: 找不到技能段{0},技能ID:{1}", stageID, mSkillInfo.id); continue; } if (SkillStage.IsStageTrait(SkillStageTrait.FirstStage, stageInfo)) { firstStageID = stageInfo.id; break; } } if (firstStageID < 0) { Debug.LogErrorFormat("Error: 找不到初始技能段,技能ID:{0}", mSkillInfo.id); return; } SetStage(firstStageID); if (mCurStage == null) { mSkillState = SkillState.Break; return; } Character skillTarget = mSkillContext.SkillTarget; if (mSkillInfo.targetType != (int)SkillTargetType.All && skillTarget != null) { Vector3 dir = skillTarget.Position - Owner.Position; Owner.Direction = dir; } if (!SkillStage.IsStageTrait(SkillStageTrait.AllowMove, mCurStage.mStageInfo) || SkillStage.IsStageTrait(SkillStageTrait.MoveBreak, mCurStage.mStageInfo)) { //Owner.StopMove(false); } mSkillState = SkillState.Using; // 自己客户端放技能通知服务器开始放技能; if (GameController.IsConntrller(Owner)) { SkillBegin req = new SkillBegin(); req.uid = Owner.gid; req.skillID = mSkillInfo.id; req.position = Vector3Packat.FromVector3(Owner.Position); req.direction = Vector3Packat.FromVector3(Owner.Direction); NetWork.SendPacket(CTS.CTS_SkillBegin, req, null); } }
public void BeginSkill() { int firstStageID = -1; for (int i = 0; i < mSkillInfo.stages.Length; ++i) { int stageID = mSkillInfo.stages[i]; excel_skill_stage stageInfo = excel_skill_stage.Find(stageID); if (stageInfo == null) { Debug.LogError("Error: 找不到技能段{0},技能ID:{1}", stageID, mSkillInfo.id); continue; } if (SkillStage.IsStageTrait(SkillStageTrait.FirstStage, stageInfo)) { firstStageID = stageInfo.id; break; } } if (firstStageID < 0) { Debug.LogError("Error: 找不到初始技能段,技能ID:{0}", mSkillInfo.id); return; } SetStage(firstStageID); if (mCurStage == null) { mSkillState = SkillState.Break; return; } Character skillTarget = mSkillContext.SkillTarget; if (mSkillInfo.targetType != (int)SkillTargetType.All && skillTarget != null) { Vector3 dir = skillTarget.Position - Owner.Position; Owner.Direction = dir; } if (!SkillStage.IsStageTrait(SkillStageTrait.AllowMove, mCurStage.mStageInfo) || SkillStage.IsStageTrait(SkillStageTrait.MoveBreak, mCurStage.mStageInfo)) { Owner.StopMove(false); } mSkillState = SkillState.Using; SkillBegin msg = new SkillBegin(); msg.uid = Owner.gid; msg.skillID = SkillID; msg.position = Vector3Packat.FromVector3(Owner.Position); msg.direction = Vector3Packat.FromVector3(Owner.Direction); Scene scn = Owner.mScene; for (int i = 0; i < scn.GetPlayerCount(); ++i) { Player player = scn.GetPlayerByIndex(i); if (player == Owner) { continue; } NetWork.NotifyMessage(player.UserID, STC.STC_SkillBegin, msg); } }