public void Interact() { var screen = System.Windows.Forms.Screen.PrimaryScreen.Bounds; var width = screen.Width; var height = screen.Height; bool found = false; int X = Cursor.Position.X; int Y = Cursor.Position.Y; IntPtr activeWindow = GetForegroundWindow(); for (int i = 0; i < width; i += 40) { for (int j = 0; j < height; j += 40) { Cursor.Position = new Point(i, j); short cursor = magic.ReadShort((uint)TbcOffsets.General.Cursor); if (cursor == 16 || cursor == 18 || cursor == 8 || cursor == 12) { SetForegroundWindow(handle); keyboardSim.MouseButtonDown(); keyboardSim.MouseButtonUp(); keyboardSim.MouseButtonDown(); keyboardSim.MouseButtonUp(); Thread.Sleep(1000); keyboardSim.KeyDown(loot); keyboardSim.KeyUp(loot); found = true; } else if (cursor == 13 || cursor == 11) { SetForegroundWindow(handle); keyboardSim.MouseButtonDown(); keyboardSim.MouseButtonUp(); keyboardSim.MouseButtonDown(); keyboardSim.MouseButtonUp(); Thread.Sleep(3000); keyboardSim.KeyDown(loot); keyboardSim.KeyUp(loot); found = true; } Thread.Sleep(1); if (found) { break; } } if (found) { break; } } Cursor.Position = new Point(X, Y); SetForegroundWindow(activeWindow); }
public bool WalkToPoint(float targetX, float targetY, float targetZ, bool value, float currentX, float currentY, float currentZ) { float bodyx = magic.ReadFloat((uint)TbcOffsets.General.PlayerCorpseX); float bodyy = 0; float bodyz = 0; dead = false; if (bodyx != 0) { bodyy = magic.ReadFloat((uint)TbcOffsets.General.PlayerCorpseY); bodyz = magic.ReadFloat((uint)TbcOffsets.General.PlayerCorpseZ); dead = true; } float startingX = currentX; float startingY = currentY; float startingZ = currentZ; bool inCombat = value; float dX = targetX - startingX; float dY = targetY - startingY; float dZ = targetZ - startingZ; float rotation = (float)Math.Atan2(targetY - startingY, targetX - startingX); if (rotation < 0) { rotation = rotation + (2f * (float)Math.PI); } float myRotation = magic.ReadFloat((uint)TbcOffsets.General.PlayerRotation); myRotation = float.Parse(myRotation.ToString("0.0")); rotation = float.Parse(rotation.ToString("0.0")); float angle1; float angle2; float distance = (float)Math.Sqrt(dX * dX + dY * dY + dZ * dZ); while ((distance > 3f && distance <= 100f) && !halt) { if ((!settings.IgnoreMobs || !settings.IgnorePlayers) && (!inCombat || magic.ReadUInt(magic.ReadUInt((uint)TbcOffsets.General.PlayerBase) + (uint)TbcOffsets.General.CombatStateOffset) == (int)TbcOffsets.CombatState.InCombat && magic.ReadUInt64((uint)TbcOffsets.General.TargetGuid) != 0)) { if (inCombat) { inCombat = bot.GetCombat.CombatMode(); } else { inCombat = bot.GetCombat.CombatMode(); if (inCombat) { return(true); } } } int playerHealth = objectManager.GetPlayer().Health; if (playerHealth <= 0 && profile.IsGhostSet) { bot.GetOther.ReleaseScript(); dead = true; Thread.Sleep(1000); return(true); } else if (playerHealth <= 0 && !profile.IsGhostSet) { bot.Halt(); } if (dead) { float gX = bodyx - startingX; float gY = bodyy - startingY; float gZ = bodyz - startingZ; if ((float)Math.Sqrt(gX * gX + gY * gY + gZ * gZ) < 30) { keyboardSim.KeyUp(walk); keyboardSim.KeyUp(turnleft); keyboardSim.KeyUp(turnright); while (magic.ReadFloat((uint)TbcOffsets.General.PlayerCorpseX) != 0) { bot.GetOther.RetrieveScript(); } bot.GetOther.Rebuff(); dead = false; break; } } if (!profile.IgnoreZ && startingZ > targetZ) { if (startingZ - targetZ > 0.3f) { keyboardSim.KeyDown(godown); } else { keyboardSim.KeyUp(godown); } } else if (!profile.IgnoreZ && startingZ < targetZ) { if (targetZ - startingZ > 0.3f) { keyboardSim.KeyDown(goup); } else { keyboardSim.KeyUp(goup); } } if (myRotation != rotation) { if (myRotation >= rotation) { angle1 = myRotation - rotation; angle2 = rotation + (2 * (float)Math.PI - myRotation); if (angle1 < angle2) { if (angle1 > 0.3) { keyboardSim.KeyDown(turnright); keyboardSim.KeyUp(turnleft); } else { keyboardSim.KeyUp(turnleft); keyboardSim.KeyUp(turnright); } if (angle1 < Math.PI / 2 && distance > 3) { keyboardSim.KeyDown(walk); } } else { if (angle2 > 0.3) { keyboardSim.KeyDown(turnleft); keyboardSim.KeyUp(turnright); } else { keyboardSim.KeyUp(turnleft); keyboardSim.KeyUp(turnright); } if (angle2 < Math.PI / 2 && distance > 3) { keyboardSim.KeyDown(walk); } } } else if (myRotation < rotation) { angle1 = rotation - myRotation; angle2 = myRotation + (2 * (float)Math.PI - rotation); if (angle1 < angle2) { if (angle1 > 0.3) { keyboardSim.KeyDown(turnleft); keyboardSim.KeyUp(turnright); } else { keyboardSim.KeyUp(turnleft); keyboardSim.KeyUp(turnright); } if (angle1 < Math.PI / 2 && distance > 3) { keyboardSim.KeyDown(walk); } } else { if (angle2 > 0.3) { keyboardSim.KeyDown(turnright); keyboardSim.KeyUp(turnleft); } else { keyboardSim.KeyUp(turnleft); keyboardSim.KeyUp(turnright); } if (angle2 < Math.PI / 2 && distance > 3) { keyboardSim.KeyDown(walk); } } } } else { keyboardSim.KeyDown(walk); keyboardSim.KeyUp(turnleft); keyboardSim.KeyUp(turnright); Random random = new Random(); if (random.Next(10) == 0) { keyboardSim.KeyDown(goup); keyboardSim.KeyUp(goup); } } startingX = magic.ReadFloat((uint)TbcOffsets.General.PlayerX); startingY = magic.ReadFloat((uint)TbcOffsets.General.PlayerY); startingZ = magic.ReadFloat((uint)TbcOffsets.General.PlayerZ); dX = targetX - startingX; dY = targetY - startingY; dZ = targetZ - startingZ; myRotation = magic.ReadFloat((uint)TbcOffsets.General.PlayerRotation); rotation = (float)Math.Atan2(targetY - startingY, targetX - startingX); if (rotation < 0) { rotation = rotation + (2f * (float)Math.PI); } myRotation = float.Parse(myRotation.ToString("0.0")); rotation = float.Parse(rotation.ToString("0.0")); float temp = distance; distance = (float)Math.Sqrt(dX * dX + dY * dY + dZ * dZ); if (temp - distance == 0) { Antistuck(); } } keyboardSim.KeyUp(walk); keyboardSim.KeyUp(turnleft); keyboardSim.KeyUp(turnright); return(false); }
public bool CombatMode() { ulong target = magic.ReadUInt64((uint)TbcOffsets.General.TargetGuid); bool stuck = false; //Investigate bool combatSuccessful = false; if (target == 0) { keyboardSim.KeyDown(targetKey); keyboardSim.KeyUp(targetKey); } else { objectManager.PopulateList(); List <WorkWork.Memory.Object> objs = objectManager.GetObjects(); for (int i = 0; i < objs.Count; i++) { WorkWork.Memory.Object obj = objs[i]; int type = obj.Type; if ((type == 4 && !settings.IgnorePlayers) || (type == 3 && !settings.IgnoreMobs)) { ulong guid = obj.Guid; if (target == guid && obj.Health > 0 && !stuck) { if (type == 3) { string name = obj.Name; foreach (String ignoredMob in profile.GetIgnoredMobs()) { if (name == ignoredMob) { stuck = true; keyboardSim.KeyDown(targetKey); keyboardSim.KeyUp(targetKey); } } } foreach (WorkWork.Memory.Object ignoredObjects in ignoredMobs) { if (ignoredObjects.Guid == guid) { stuck = true; keyboardSim.KeyDown(targetKey); keyboardSim.KeyUp(targetKey); } else { foreach (ulong ignoredMobGuid in profile.getIgnoredMobsGuid) { if (guid == ignoredMobGuid) { stuck = true; keyboardSim.KeyDown(targetKey); keyboardSim.KeyUp(targetKey); } } } } var watch = Stopwatch.StartNew(); int startingHP = objectManager.GetPlayer().Health; int startingMP = objectManager.GetPlayer().Mana; int currentCombo = 0; while (obj.Health > 0 && !halt && !stuck) { currentCombo = DpsRotation(obj, currentCombo); if (AutoAttack() && objectManager.GetPlayer().Health > 0) { bot.GetPathing.WalkToMob(obj, 5); } if (watch.ElapsedMilliseconds > averageTime * 3 && averageTime > 0) { ignoredMobs.Add(obj); stuck = true; } if (halt || (objectManager.GetPlayer().Health <= 0) || bot.GetPathing.Dead || magic.ReadFloat((uint)TbcOffsets.General.PlayerCorpseX) != 0) { stuck = true; } } watch.Stop(); if (!stuck) { int counter; int endingHP = objectManager.GetPlayer().Health; if (endingHP < startingHP) { endingHP = startingHP - endingHP; endingHP += endingHP / 2; healthPerMob[hpCounter] = endingHP; hpCounter++; if (hpCounter == 10) { hpCounter = 0; } counter = 0; bot.AverageHealth = 0; foreach (int hp in healthPerMob) { if (hp > 0) { counter++; bot.AverageHealth += hp; } } if (counter > 0) { bot.AverageHealth /= counter; } } if (objectManager.GetPlayer().MaxMana > 0) { int endingMP = objectManager.GetPlayer().Mana; if (endingMP < startingMP) { endingMP = startingMP - endingMP; endingMP += endingMP / 2; manaPerMob[mpCounter] = endingMP; mpCounter++; if (mpCounter == 10) { mpCounter = 0; } counter = 0; bot.AverageMana = 0; foreach (int mp in manaPerMob) { if (mp > 0) { counter++; bot.AverageMana += mp; } } if (counter > 0) { bot.AverageMana /= counter; } } } if (magic.ReadUInt(magic.ReadUInt((uint)TbcOffsets.General.PlayerBase) + (uint)TbcOffsets.General.CombatStateOffset) == (int)TbcOffsets.CombatState.InCombat && magic.ReadUInt64((uint)TbcOffsets.General.TargetGuid) != 0) { CombatMode(); } timePerMob[timeCounter] = watch.ElapsedMilliseconds; timeCounter++; if (timeCounter == 10) { timeCounter = 0; } averageTime = 0; counter = 0; foreach (long temp in timePerMob) { if (temp > 0) { counter++; averageTime += temp; } } if (counter > 0) { averageTime /= counter; } if (objectManager.GetPlayer().Health > 0) { if (settings.Looting) { bot.GetPathing.WalkToMob(obj, 3); bot.GetOther.Interact(); if (settings.Skinning) { bot.GetOther.Interact(); } } combatSuccessful = true; bot.MobsKilled++; statistics.Changed = true; bot.GetOther.Regen(); afterCombatSpells(currentCombo, "aftercombat"); } } break; } else if (target == guid && obj.Health <= 0) { keyboardSim.KeyDown(targetKey); keyboardSim.KeyUp(targetKey); break; } } } } return(combatSuccessful); }