All pastes #1362990 Raw Edit

sonic2_mousecontrol.lua

public lua v1 · immutable
#1362990 ·published 2009-03-17 03:14 UTC
rendered paste body
addr_xcamera = 0xFFEE00addr_ycamera = 0xFFEE04addr_ost = 0xFFB000addr_ostgeneral = addr_ost + 0x400addr_ostend = 0xFFD5FFost_length = 0x40xmouse = 0ymouse = 0xmousedelta = 0ymousedelta = 0gens.registerbefore( function()	local xcamera = memory.readword(addr_xcamera)	local ycamera = memory.readword(addr_ycamera)	local input_state = input.get()		xmousedelta = input_state.xmouse - xmouse	ymousedelta = input_state.ymouse - ymouse	xmouse = input_state.xmouse	ymouse = input_state.ymouse		local i, entry, x1, y1, x2, y2, outline_color	for i=addr_ost,addr_ostend,ost_length do		entry = ostentry(i)		if entry then			local width, height						if entry.widthhalf == 0 then				width = entry.width			else				width = entry.widthhalf			end						if entry.heighthalf == 0 then				height = 8			else				height = entry.heighthalf			end						x1 = (entry.x - width) - xcamera			y1 = (entry.y - height) - ycamera			x2 = (entry.x + width) - xcamera			y2 = (entry.y + height) - ycamera						if (xmouse >= x1 and ymouse >= y1) and				(xmouse <= x2 and ymouse <= y2) then				outline_color = {255, 0, 0, 255}								if input_state.leftclick then					memory.writeword(i + 0x08, xcamera + xmouse) -- x					memory.writeword(i + 0x0C, ycamera + ymouse) -- y					memory.writeword(i + 0x10, xmousedelta * 100) -- xspeed					memory.writeword(i + 0x12, ymousedelta * 100) -- yspeed				end			else				outline_color = {255, 255, 255, 255}			end						gui.box(x1, y1, x2, y2, {0, 0, 0, 0}, outline_color)		end	endend)function ostentry(address)	local entry = {}		entry.id          = memory.readbyte(address)	if entry.id == 0 or entry.id == nil then return nil end		entry.renderflags = memory.readbyte(address + 0x01)	entry.artindex    = memory.readword(address + 0x02)	entry.mappings    = memory.readdword(address + 0x04)	entry.x           = memory.readword(address + 0x08)	entry.xsub        = memory.readword(address + 0x0A)	entry.y           = memory.readword(address + 0x0C)	entry.ysub        = memory.readword(address + 0x0E)	entry.xspeed      = memory.readword(address + 0x10)	entry.yspeed      = memory.readword(address + 0x12)	entry.inertia     = memory.readword(address + 0x14)	entry.heighthalf  = memory.readbyte(address + 0x16)	entry.widthhalf   = memory.readbyte(address + 0x17)	entry.priority    = memory.readbyte(address + 0x18)	entry.width       = memory.readbyte(address + 0x19)	entry.dispframe   = memory.readbyte(address + 0x1A)	entry.animframe   = memory.readbyte(address + 0x1B)	entry.animnum     = memory.readbyte(address + 0x1C)	entry.animrestart = memory.readbyte(address + 0x1D)	entry.animtime    = memory.readbyte(address + 0x1E)	entry.collision   = memory.readbyte(address + 0x20)	entry.colcustom   = memory.readbyte(address + 0x21)	entry.status      = memory.readbyte(address + 0x22)	entry.respawn     = memory.readbyte(address + 0x23)	entry.counter     = memory.readbyte(address + 0x24)	entry.counter2    = memory.readbyte(address + 0x25)	entry.angle       = memory.readbyte(address + 0x26)	entry.angle2      = memory.readbyte(address + 0x27)	entry.subtype     = memory.readbyte(address + 0x28)	entry.parent      = memory.readword(address + 0x3E)		return entryend