function AMacro(str) -- Check to make sure the macro is there testMacro = memoryReadIntPtr(myProc,BaseAdress + addresses.macroBase,addresses.macroCheckOffsets); if not testMacro or testMacro == 0 then error("Macro has not been set up properly, please create a macro and add at least a space to the body.",1); end -- Check to make sure length is within bounds local len = string.len(str); if( len > 254 ) then error("Macro text too long by "..(len - 254), 2); end -- Write new content to the macro for i=0,len-1,1 do addresses.macroOffsets[6] = addresses.macroOffsets[6] + (i*2); memoryWriteBytePtr(myProc,BaseAdress + addresses.macroBase,addresses.macroOffsets,string.byte(str,i+1)); addresses.macroOffsets[6] = addresses.macroOffsets[6] - (i*2); end addresses.macroOffsets[6] = addresses.macroOffsets[6] + (len*2); memoryWriteBytePtr(myProc,BaseAdress + addresses.macroBase,addresses.macroOffsets,0); addresses.macroOffsets[6] = addresses.macroOffsets[6] - (len*2); -- Execute it if( settings.profile.hotkeys.MACRO ) then keyboardPress(settings.profile.hotkeys.MACRO.key); end -- There is a command delay for macros to complete. yrest(500); -- return info; -- I never did find anything but there should be a "Macro complete" or "Macro interrupted" indicator end function distance(x1, z1, y1, x2, z2, y2) if z2 == nil and y2 == nil then -- assume x1,z1,x2,z2 values (2 dimensional) z2 = x2 x2 = y1 y1 = nil end if( x1 == nil or z1 == nil or x2 == nil or z2 == nil ) then error("Error: nil value passed to distance()", 2); end if y1 == nil or y2 == nil then -- 2 dimensional calculation return math.sqrt( (z2-z1)*(z2-z1) + (x2-x1)*(x2-x1) ); else -- 3 dimensional calculation return math.sqrt( (z2-z1)*(z2-z1) + (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) ); end end