public GameObject(ProcessMemoryReader reader, int memoryAddress) { this.reader = reader; MemoryAddress = memoryAddress; float x = reader.ReadFloat(memoryAddress + Offsets.ObjPos); float y = reader.ReadFloat(memoryAddress + Offsets.ObjPos + 4); float z = reader.ReadFloat(memoryAddress + Offsets.ObjPos + 8); Position = new Vector3(x, y, z); Health = reader.ReadFloat(memoryAddress + Offsets.ObjHealth); Team = reader.ReadInt(memoryAddress + Offsets.ObjTeam); int name = reader.ReadInt(memoryAddress + Offsets.ObjName); if (name != 0) { Name = reader.ReadCString(name, 256); } int missilePointer = reader.ReadInt(MemoryAddress + Offsets.MissileSpellInfo); if (missilePointer == 0) { SpellName = null; return; } int spellPointer = reader.ReadInt(missilePointer + Offsets.SpellInfoSpellData); if (spellPointer == 0) { SpellName = null; return; } int spellName = reader.ReadInt(spellPointer + Offsets.SpellDataMissileName); if (spellName == 0) { SpellName = null; return; } SpellName = reader.ReadCString(spellName, 256); }
public void StartCharmBot() { var process = Process.GetProcesses().Where(p => p.ProcessName.ToLower().Contains("league of legends")).FirstOrDefault(); var reader = new ProcessMemoryReader() { Process = process }; reader.Open(); dispatcher.BeginInvoke((Action)(() => { MemoryReaderStatusChanged?.Invoke(true); })); try { GameObject localPlayer = new GameObject(reader, reader.ReadInt(reader.ModuleBaseAddr + Offsets.LocalPlayer)); int objectManagerPointer = reader.ReadInt(reader.ModuleBaseAddr + Offsets.ObjectManager); float charmEffectSeenAt = -1; var seenCharm = false; while (true) { process = Process.GetProcesses().Where(p => p.ProcessName.ToLower().Contains("league of legends")).FirstOrDefault(); if (process == null) { break; } var gameObjects = GameObject.GetGameObjects(reader, objectManagerPointer); var enemyChampions = gameObjects.Where(g => g.Team != localPlayer.Team && isChampion(g.Name) || (g.Name?.ToLower()?.Contains("dummy") ?? false)).ToList(); var ahriCharm = gameObjects.Where(c => c.SpellName == "AhriSeduceMissile").FirstOrDefault(); var gameTime = reader.ReadFloat(reader.ModuleBaseAddr + Offsets.GameTime); foreach (var champ in enemyChampions) { champ.ReadBuffs(); var ahriCharmBuff = champ.ActiveBuffs.FirstOrDefault(b => b.Name == "AhriSeduce" && gameTime < b.EndTime && charmEffectSeenAt < b.StartTime); if (ahriCharmBuff != null) { if (!seenCharm) { CharmBotCharmCast?.Invoke(gameTime); } CharmBotCharmHit?.Invoke(gameTime, champ.Name); charmEffectSeenAt = ahriCharmBuff.StartTime; } } if (ahriCharm != null) { if (!seenCharm) { CharmBotCharmCast?.Invoke(gameTime); } seenCharm = true; } else { seenCharm = false; } Thread.Sleep(10); } } catch (Exception) { } finally { dispatcher.BeginInvoke((Action)(() => { MemoryReaderStatusChanged?.Invoke(false); })); reader.Close(); } }