I'm saying that when you SetSpritePosition(spr , x# , y#) that x# and y# refer to the upper left corner of the sprite, so SetSpritePosition(spr , GetPointerX() , GetPointerY()) will always put the sprite to the right and below your finger (for the most part). If you want to position the sprite by it's center use SetSpritePositionByOffset() the default offset is the center of the sprite.
If GetPointerX/Y and pressed and state are all returning values correctly then there is no reason that GetSpriteHitTest() shouldn't be working because it is essentially the same as using:
pX# = GetPointerX()
pY# = GetPointerY()
sprX0# = GetSpriteX(spr)
sprX1# = sprX0# + GetSpriteWidth(spr)
sprY0# = GetSpriteY(spr)
sprY1# = sprY0# + GetSpriteHeight(spr)
if sprX0# <= pX# and px# <= sprX1#
if sprY0# <= pY# and pY# <= sprY1#
spriteWas_Hit = 1
endif
endif
The same goes for GetSpriteHit, but that simply iterates through all of the sprites instead and chooses the sprite with the frontmost depth first.
If Markus isn't having any issues then there's got to be something specific to your setup.