void AddUnExploreCrossPoint(int group, GPoint pos)//增加未知探索点 { CrossPoint temp = new CrossPoint(); temp.firstGroup = group; temp.firstPos.x = pos.x; temp.firstPos.y = pos.y; allCrossPoint.Add(temp); }
int MissionAnalysis() { //如果断线, //如果死亡 int curTickCount = System.Environment.TickCount; //如果需要回城休整 if (BattlePosPolicy(curTickCount) == 0) { return(0); } BattleMapPolicy(); //贫血小退 if (DangerReturnPolicy(curTickCount) == 0) { return(0); } //如果需要施放光环 if ((curTickCount - LastCheckHaloTime) > (5 * 1000)) { if (Program.config.bAutoUpSkill) { Program.client.UpSkill(); } if (Program.config.haloSkill.Count > 0) { foreach (var item in Program.config.haloSkill) { if (Program.client.IsBuffExists(item) == false) { Program.client.CastUntargetSkill((short)player.Pos.x, (short)player.Pos.y, (short)item, 8); // Thread.Sleep(1000); Program.client.WaitCastComplete(); } } } LastCheckHaloTime = curTickCount; } if (bNeedCastBattleOnceSkill) { if (Program.config.battleOnceSkill.Count > 0) { foreach (var item in Program.config.battleOnceSkill) { Program.client.CastUntargetSkill((short)player.Pos.x, (short)player.Pos.y, (short)item, 8); Thread.Sleep(1000); } } bNeedCastBattleOnceSkill = false; } //区域传送点 if (bGroupExploreModel) { if (curGroup != -1) { foreach (var item in areaCrossList) { //如果没被处理过 if (AddedCrossPoint.Contains(item.Pos)) { continue; } CrossPoint crossPoint = new CrossPoint(); crossPoint.firstGroup = GetCurGroup(player.Pos.x, player.Pos.y); crossPoint.firstPos.x = item.Pos.x; crossPoint.firstPos.y = item.Pos.y; allCrossPoint.Add(crossPoint); AddedCrossPoint.Add(item.Pos); SetPassAbleArea(item.Pos.x, item.Pos.y); } } } if (Program.config.bExplorePollutant)//如果刷污染地穴 { if (NearbyPollutantGatePos != null) { if (pollutantGatePos == null) { pollutantGatePos = new GPoint(); pollutantGatePos.x = NearbyPollutantGatePos.x; pollutantGatePos.y = NearbyPollutantGatePos.y; SetPassAbleArea(pollutantGatePos.x, pollutantGatePos.y); } } } //如果需要搜索传送阵 if (bNeedSearchBattleWaypoint) { int Pos = Program.client.GetNearbyWaypointPos(); ushort x = (ushort)(Pos >> 16); ushort y = (ushort)(Pos & 65535); BattleWaypointPos = new GPoint(); BattleWaypointPos.x = x; BattleWaypointPos.y = y; bNeedSearchBattleWaypoint = false; } if (bNeedSearchOutPollutantGate) { int Pos = Program.client.GetNearbyOutPollutantGatePos(); ushort x = (ushort)(Pos >> 16); ushort y = (ushort)(Pos & 65535); pollutantOutGatePos = new GPoint(); pollutantOutGatePos.x = x; pollutantOutGatePos.y = y; bNeedSearchOutPollutantGate = false; } ////////////////////////////////药剂 ActDrinkFlask(curTickCount); //////////////////////////////////// // //如果有门在身边,则点 if (DoorPolicy() == 0) { return(0); } ///////////////////////////////////// if (AttackAndTrophyPolicy(curTickCount) == 0) { return(0); } if (BoxPolicy(curTickCount) == 0) { return(0); } //探索 return(ExplorePolicy(curTickCount)); }
int HandMissionAnalysis() { //如果不在任务地点,去任务地点 //如果在城里,如果需要去传送门,则去传送门,否则去传送点 if (InTown()) { MessageBox.Show("輔助模式,請在目標探索地圖開啟輔助程式"); return(0); } if (CurMapID != LoadBattleMapID) { Program.client.Update(); Thread.Sleep(1000); UpdateMap(bGroupExploreModel); LoadBattleMapID = CurMapID; FilterMonsterList.Clear(); PassedDoor.Clear(); areaCrossList.Clear(); AddedCrossPoint.Clear(); ClickedBoxList.Clear(); LootFilter.Clear(); curGroup = -1; Program.client.ClearTrophyFilter(); // bGroupExploreModel = false;//判断 bNeedCross = false; //判断探索还是穿越 bCrossing = false; //判断穿越中还是移动到穿越点 bNeedCastBattleOnceSkill = true; // Thread.Sleep(1000); } int curTickCount = System.Environment.TickCount; //贫血小退 if (Program.config.LogoutType == 0) { int data = player.HP; if (data < Program.config.LogOutData) { ReturnRolePolicy(); if ((curTickCount - lastReturnTime) < 1000 * 60) { LogoutCount++; } else { LogoutCount = 0; } lastReturnTime = curTickCount; if (LogoutCount > 5) { LogoutCount = 0; curStatus = Status.GotoBack; SetNeedGoBack(); bNeedResetBattleMapInfo = true; ChangeToNextMissionMap(); //bNeedResetBattleMapID = true; //pollutantMapID = 0;//污染地穴地图ID //LoadPollutantMapID = 0; //pollutantGatePos = null;//门位置 //pollutantComplete = false;//已经刷完 //bEnterPollutanting = false;//正在进入污染地穴 } Thread.Sleep(1000); return(0); } } else if (Program.config.LogoutType == 1) { int data = player.Shield; if (data < Program.config.LogOutData) { ReturnRolePolicy(); if ((curTickCount - lastReturnTime) < 1000 * 60) { LogoutCount++; } else { LogoutCount = 0; } lastReturnTime = curTickCount; if (LogoutCount > 5) { LogoutCount = 0; curStatus = Status.GotoBack; SetNeedGoBack(); bNeedResetBattleMapInfo = true; ChangeToNextMissionMap(); //bNeedResetBattleMapID = true; //ChangeToNextMissionMap(); //pollutantMapID = 0;//污染地穴地图ID //LoadPollutantMapID = 0; //pollutantGatePos = null;//门位置 //pollutantComplete = false;//已经刷完 //bEnterPollutanting = false;//正在进入污染地穴 } Thread.Sleep(1000); return(0); } } //如果需要施放光环 if ((curTickCount - LastCheckHaloTime) > (5 * 1000)) { if (Program.config.bAutoUpSkill) { Program.client.UpSkill(); } if (Program.config.haloSkill.Count > 0) { foreach (var item in Program.config.haloSkill) { if (Program.client.IsBuffExists(item) == false) { Program.client.CastUntargetSkill((short)player.Pos.x, (short)player.Pos.y, (short)item, 8); Thread.Sleep(1000); } } } LastCheckHaloTime = curTickCount; } if (bNeedCastBattleOnceSkill) { if (Program.config.battleOnceSkill.Count > 0) { foreach (var item in Program.config.battleOnceSkill) { Program.client.CastUntargetSkill((short)player.Pos.x, (short)player.Pos.y, (short)item, 8); Thread.Sleep(1000); } } bNeedCastBattleOnceSkill = false; } //区域传送点 if (bGroupExploreModel) { // if (curGroup != -1) { foreach (var item in areaCrossList) { //如果没被处理过 if (AddedCrossPoint.Contains(item.Pos)) { continue; } CrossPoint crossPoint = new CrossPoint(); crossPoint.firstGroup = GetCurGroup(player.Pos.x, player.Pos.y); crossPoint.firstPos.x = item.Pos.x; crossPoint.firstPos.y = item.Pos.y; allCrossPoint.Add(crossPoint); AddedCrossPoint.Add(item.Pos); SetPassAbleArea(item.Pos.x, item.Pos.y); } } } ////////////////////////////////药剂 ActDrinkFlask(curTickCount); //////////////////////////////////// // //如果有门在身边,则点 SDoor Door = SearchDoor(); if (Door != null) { // Program.client.ActiveTarget(DoorObjPtr); ActOpenDoor(Door); return(0); } ///////////////////////////////////// int nMonsterCount = 0; List <SMonsterInfo> NearbyMonster = null; SMonsterInfo targetMonster = SearchMonsterAndLootNew(out nMonsterCount, out NearbyMonster); if (targetMonster != null) { KillMonsterNew(targetMonster, nMonsterCount, NearbyMonster, curTickCount); return(0); } TrophyInfo trophy = SearchLoot(); if (trophy != null) { ActHandLootTrophy(trophy); return(0); } SBox Box = null; if (TargetBox.ID != 0) { Box = TargetBox; } else { Box = SearchBox(); if (Box != null) { TargetBox.ID = Box.ID; TargetBox.ObjPtr = Box.ObjPtr; TargetBox.Pos.x = Box.Pos.x; TargetBox.Pos.y = Box.Pos.y; } } //如果有宝箱 if (Box != null) { //检测阻塞 if (player.Pos == lastPlayerPos && Box.Pos == lastTargetPoint) { blockCount++; nSleepTime = 50; } else { blockCount = 0; } lastPlayerPos.x = player.Pos.x; lastPlayerPos.y = player.Pos.y; lastTargetPoint.x = Box.Pos.x; lastTargetPoint.y = Box.Pos.y; if (blockCount > 3) { ClickedBoxList.Add(Box.ID); TargetBox.ID = 0; nSleepTime = 50; return(0); } //获取A*距离,过大的走过去 double dis = CalcDis(Box.Pos, player.Pos); if (dis > 15) { ActSafeMove(Box.Pos); } else { if (Box.Color > 0) { //釋放圖騰 CastTTSkillNow(curTickCount); //釋放陷阱 CastTrapSkillNow(curTickCount, player.Pos); //施放护盾技能 CastShieldSkillNow(curTickCount); } // 否则点击 Program.client.ActiveTarget(Box.ObjPtr); // ClickedBoxList.Add(Box.ID); TargetBox.ID = 0; } nSleepTime = 50; return(0); } ////卡位检测 //////////////////////////////////////////打怪探索 ActDrinkSpeedFlask(curTickCount); //if (bGroupExploreModel) //{ // return GroupExplore(); //} return(ActHandNormalExplore()); }