function kiteThunderstorm(mymob) if mymob then mymob = CPawn(mymob.Address) else return -- no mob found yet end -- return true if mob disappeared or dead or false if still alive if mymob.Id == 0 or 1 > mymob.HP or not mymob.Alive then return true end -- Freeze mouse function local function nopmouse() -- x axis local addressX1 = addresses.functionMousePatchAddr local addressX2 = addresses.functionMousePatchAddr + addresses.mousePatchX2_offset local addressX3 = addresses.functionMousePatchAddr + addresses.mousePatchX3_offset memoryWriteString(getProc(), addressX1, string.rep(string.char(0x90),#addresses.functionMouseX1Bytes)); -- left of window memoryWriteString(getProc(), addressX2, string.rep(string.char(0x90),#addresses.functionMouseX2Bytes)); -- right of window memoryWriteString(getProc(), addressX3, string.rep(string.char(0x90),#addresses.functionMouseX3Bytes)); -- over window -- y axis local addressY1 = addresses.functionMousePatchAddr + addresses.mousePatchY1_offset local addressY2 = addresses.functionMousePatchAddr + addresses.mousePatchY2_offset local addressY3 = addresses.functionMousePatchAddr + addresses.mousePatchY3_offset memoryWriteString(getProc(), addressY1, string.rep(string.char(0x90),#addresses.functionMouseY1Bytes)); -- above window memoryWriteString(getProc(), addressY2, string.rep(string.char(0x90),#addresses.functionMouseY2Bytes)); -- below window memoryWriteString(getProc(), addressY3, string.rep(string.char(0x90),#addresses.functionMouseY3Bytes)); -- over window end -- Unfreeze mouse function local function unnopmouse() -- x axis local addressX1 = addresses.functionMousePatchAddr local addressX2 = addresses.functionMousePatchAddr + addresses.mousePatchX2_offset local addressX3 = addresses.functionMousePatchAddr + addresses.mousePatchX3_offset memoryWriteString(getProc(), addressX1, string.char(unpack(addresses.functionMouseX1Bytes))); memoryWriteString(getProc(), addressX2, string.char(unpack(addresses.functionMouseX2Bytes))); memoryWriteString(getProc(), addressX3, string.char(unpack(addresses.functionMouseX3Bytes))); -- y axis local addressY1 = addresses.functionMousePatchAddr + addresses.mousePatchY1_offset local addressY2 = addresses.functionMousePatchAddr + addresses.mousePatchY2_offset local addressY3 = addresses.functionMousePatchAddr + addresses.mousePatchY3_offset memoryWriteString(getProc(), addressY1, string.char(unpack(addresses.functionMouseY1Bytes))); memoryWriteString(getProc(), addressY2, string.char(unpack(addresses.functionMouseY2Bytes))); memoryWriteString(getProc(), addressY3, string.char(unpack(addresses.functionMouseY3Bytes))); end local angle = math.atan2(mymob.Z - player.Z, mymob.X - player.X); player:faceDirection(angle) keyboardHold(settings.hotkeys.MOVE_BACKWARD.key) RoMScript("CastSpellByName(\"Thunderstorm\")") player:aimAt(mymob) local ww = memoryReadIntPtr(getProc(),addresses.staticbase_char,addresses.windowSizeX_offset) local wh = memoryReadIntPtr(getProc(),addresses.staticbase_char,addresses.windowSizeY_offset) local clickX = math.ceil(ww/2) local clickY = math.ceil(wh/2) yrest(50) nopmouse() yrest(50) memoryWriteIntPtr(getProc(),addresses.staticbase_char,addresses.mouseX_offset,clickX) memoryWriteIntPtr(getProc(),addresses.staticbase_char,addresses.mouseY_offset,clickY) yrest(50) RoMScript("SpellTargetUnit()") yrest(50) -- unfreeze TargetPtr unnopmouse() keyboardRelease(settings.hotkeys.MOVE_BACKWARD.key) -- return false if mob gone or dead mymob:update() if mymob.Id == 0 or 1 > mymob.HP or not mymob.Alive then return true end return false end