Set Image Colorkey 255,255,255
Load Image "testguy.bmp",1
Load Image "testguybot.bmp",2
Load Image "bgroundtest.bmp",3
Do
cls
Sprite 3,0,0,3
Sprite 1,MouseX(),MouseY(),1
Sprite 2,MouseX(),MouseY(),2
If SpritePixelCollision(1,3,1) = 1
Endif
Loop
function SpritePixelCollision(sprite1 as integer, sprite2 as integer, MinAlpha as integer)
local Sprite1Base as dword
local Sprite2Base as dword
local Sprite1Addr as dword
local Sprite2Addr as dword
local V as dword
if sprite collision(sprite1, sprite2) > 0
make memblock from image 255, sprite image(sprite1)
make memblock from image 256, sprite image(sprite2)
Sprite1Base = get memblock ptr(255)
Sprite2Base = get memblock ptr(256)
XPos1 = sprite x(sprite1)
YPos1 = sprite y(sprite1)
Width1 = *Sprite1Base
inc Sprite1Base, 4
Height1 = *Sprite1Base
inc Sprite1Base, 8
XPos2 = (sprite x(sprite2) - sprite offset x(sprite2)) + sprite offset x(sprite1)
YPos2 = (sprite y(sprite2) - sprite offset y(sprite2)) + sprite offset y(sprite1)
Width2 = *Sprite2Base
inc Sprite2Base, 4
Height2 = *Sprite2Base
inc Sprite2Base, 8
if XPos2 > XPos1
XStart1 = XPos2 - XPos1
XStart2 = 0
XOverlapSize = (Width1 - XStart1) - 1
if XOverlapSize >= Width2 then XOverlapSize = Width2 - 1
else
XStart2 = XPos1 - XPos2
XStart1 = 0
XOverlapSize = (Width2 - XStart2) - 1
if XOverlapSize >= Width1 then XOverlapSize = Width1 - 1
endif
if YPos2 > YPos1
YStart1 = YPos2 - YPos1
YStart2 = 0
YOverlapSize = (Height1 - YStart1) - 1
if YOverlapSize >= Height2 then YOverlapSize = Height2 - 1
else
YStart2 = YPos1 - YPos2
YStart1 = 0
YOverlapSize = (Height2 - YStart2) - 1
if YOverlapSize >= Height1 then YOperlapSize = Height1 - 1
endif
XStart1 = XStart1 << 2
XStart2 = XStart2 << 2
Width1 = Width1 << 2
Width2 = Width2 << 2
for YOffset = YOverlapSize to 0 step -1
Sprite1Addr = Sprite1Base + ((YOffset + YStart1) * Width1) + XStart1
Sprite2Addr = Sprite2Base + ((YOffset + YStart2) * Width2) + XStart2
for XOffset = XOverlapSize to 0 step -1
v = *Sprite1Addr
if (v >> 24) >= MinAlpha
v = *Sprite2Addr
if (v >> 24) >= MinAlpha
delete memblock 255
delete memblock 256
exitfunction 1
endif
endif
inc Sprite1Addr, 4
inc Sprite2Addr, 4
next XOffset
next YOffset
delete memblock 255
delete memblock 256
endif
endFunction 0
teh code.
error is something about DBPCompiler.exe getting an unexpected error.
strangely enough running it by pressing f5 seems to work...
PS. If you knew his zenicanin14 was you'd agree.
alus.portbb.com go there.
Quote: A book. I hate books. book is stupid. I know that I need codes but I dont know the codes -zenicanin14 the stupidest user in the world