public void LockNearestTargetToHit() { CObject_Character pNearestTarget = LockNearestEnemy(); //下边为挂机增加自动攻击 if (AutoReleaseSkill.Instance.isAutoSkill()) { if (AutoReleaseSkill.Instance.CanUseNextSkill()) { CObject_Character target = mMainTarget as CObject_Character; if (target != null && !target.CannotBeAttack()) { mNearestTargetOLD = target; } if (mNearestTargetOLD == null || mNearestTargetOLD.IsDie()) { mNearestTargetOLD = pNearestTarget; } bool needSend = false; if (mNeedWaitSkillSend) { uint curTime = GameProcedure.s_pTimeSystem.GetTimeNow(); if (curTime - mWaitSkillSend >= 1000) { needSend = true; mWaitSkillSend = curTime; } } else { needSend = true; } if (needSend) { tActionItem suitAbleItem = AutoReleaseSkill.Instance.getSuitAbleSkill(mNearestTargetOLD); if (suitAbleItem == null) { suitAbleItem = CActionSystem.Instance.GetDefaultAction(); } CActionItem_Skill curSkill = suitAbleItem as CActionItem_Skill; mNeedWaitSkillSend = !curSkill.AutoKeepOn(); Vector3 fvMouseHitPlan = Vector3.zero; if (mNearestTargetOLD != null) { fvMouseHitPlan = mNearestTargetOLD.GetPosition(); } CursorMng.Instance.MouseCommand_Set(false, mNearestTargetOLD, fvMouseHitPlan, suitAbleItem); GameProcedure.s_pGameInterface.AutoHitState = 1; CursorMng.Instance.MouseCommand_Active(CursorMng.Instance.MouseCommand_GetLeft()); GameProcedure.s_pGameInterface.AutoHitState = 0; } } else { AutoReleaseSkill.Instance.waitNextSkill(); } } else { CObject_Character target = mMainTarget as CObject_Character; if (target != pNearestTarget) { if (target != null && !target.CannotBeAttack()) { mNearestTargetOLD = target; } } if (mNearestTargetOLD != pNearestTarget && (mNearestTargetOLD == null || mNearestTargetOLD.IsDie())) { mNearestTargetOLD = pNearestTarget; Vector3 fvMouseHitPlan = Vector3.zero; bool needSend = false; if (mNeedWaitSkillSend) { uint curTime = GameProcedure.s_pTimeSystem.GetTimeNow(); if (curTime - mWaitSkillSend >= 1000) { needSend = true; mWaitSkillSend = curTime; } } else { needSend = true; } if (needSend) { tActionItem suitAbleItem = null; if (AutoReleaseSkill.Instance.isAutoSkill()) { if (AutoReleaseSkill.Instance.CanUseNextSkill()) { suitAbleItem = AutoReleaseSkill.Instance.getSuitAbleSkill(pNearestTarget); } else { AutoReleaseSkill.Instance.waitNextSkill(); } } if (suitAbleItem == null) { suitAbleItem = CActionSystem.Instance.GetDefaultAction(); } CActionItem_Skill curSkill = suitAbleItem as CActionItem_Skill; mNeedWaitSkillSend = !curSkill.AutoKeepOn(); if (mNearestTargetOLD != null) { fvMouseHitPlan = mNearestTargetOLD.GetPosition(); } CursorMng.Instance.MouseCommand_Set(false, mNearestTargetOLD, fvMouseHitPlan, suitAbleItem); GameProcedure.s_pGameInterface.AutoHitState = 1; CursorMng.Instance.MouseCommand_Active(CursorMng.Instance.MouseCommand_GetLeft()); GameProcedure.s_pGameInterface.AutoHitState = 0; } //if (suitAbleItem == null) //{ // suitAbleItem = CActionSystem.Instance.GetDefaultAction(); //} //CursorMng.Instance.MouseCommand_Set(false, pNearestTarget, fvMouseHitPlan, suitAbleItem); //// CAI_MySelf aiSelf = (CAI_MySelf)(CObjectManager.Instance.getPlayerMySelf().CharacterLogic_GetAI()); //// if (aiSelf.GetMySelfAI() == ENUM_MYSELF_AI.MYSELF_AI_GUAJI) ////无需判定,一定是挂机状态 //{ // GameProcedure.s_pGameInterface.AutoHitState = 1; //} //CursorMng.Instance.MouseCommand_Active(CursorMng.Instance.MouseCommand_GetLeft()); //GameProcedure.s_pGameInterface.AutoHitState = 0; //mNearestTargetOLD = pNearestTarget; } } }
public void Update() { if (!execute_) { return; } if (targetID_ == MacroDefine.INVALID_ID) { return; } if (CObjectManager.Instance.getPlayerMySelf().IsAutoFight()) { return; } CObject_Character pChar = CObjectManager.Instance.FindServerObject(targetID_) as CObject_Character; if (pChar == null || pChar.IsDie()) { enterFightStat_ = false; waitSendSkillTime_ = 0; return; } if (!enterFightStat_) { return; } if (pChar.CannotBeAttack()) { return; } if (!canUseNextSkill_) { waitNextSkill(); return; } bool needSend = false; if (needWaitSendSkill_) { uint curTime = GameProcedure.s_pTimeSystem.GetTimeNow(); if (curTime - waitSendSkillTime_ >= MIN_ACTION_TIME) { needSend = true; waitSendSkillTime_ = curTime; } } else { needSend = true; } if (needSend) { tActionItem curSkill = getSuitAbleSkill(pChar); if (curSkill == null) { curSkill = CActionSystem.Instance.GetDefaultAction(); } CActionItem_Skill skill = curSkill as CActionItem_Skill; needWaitSendSkill_ = !skill.AutoKeepOn(); Vector3 fvMouseHitPlan = pChar.GetPosition(); CursorMng.Instance.MouseCommand_Set(false, pChar, fvMouseHitPlan, curSkill); CursorMng.Instance.MouseCommand_Active(CursorMng.Instance.MouseCommand_GetLeft()); } }