You're still using just src. Change it to while(locate(usr.hold)!=src.loc). You can get rid of newloc, or set newloc to src.loc. If that doens't work, please post more of the code you're using to move, presumably the Click(). I'll actualy take time out to read through it.
var/newloc=src.loc
while(locate(usr.hold)!=newloc)
step_to(usr.hold,newloc)

This makes the piece flying, when I click it, to the most lower left turf.
In response to TheDarkChakra
Which is why you add in sleep() and it should send it to the turf that was clicked on.
sleep is under step_to
Stop just trying random things and asking why it doesn't work. Go through a debugging process and see what you are doing wrong. If you can't do that, you aren't ready to be doing this yet.
Maybe I'm not ready to be doing this yet. I just can't believe I can't make a simple checkers game. But tell me what is the debugging process?
There isn't really a set process. Find something that works to help you see what's wrong. Personally, I tend to read through the code and follow it as it should execute. If I spot something spelled wrong or where it shouldn't be, I fix it and go through the code again to see if it should execute how I want it to. If it still doesn't, I add little output messages to see how far the code is getting before hitting a snag.
Well I can't figure this one out.
So I made it so that my piece jumps over enemy pieces, it alerts when you must make the jump, it doesn't jump 2 tiles in another direction, if pieces block the jump, it can move elsewhere, it deletes the piece that is skipped and it doesn't ask to jump over below piece. But right now whenever there are 2 ways or more that you can jump it only allows a limited or no way to jump. And at certain times it doesn't say i must jump when it should. I also can sometimes jump on an occupied piece. I can't figure this out!!

The coding must be this one:

if(src == get_step(b,get_dir(usr.hold,b)))
usr.hold.Move(src)
del b
usr.hold=null
turn=!turn
return


turf/tiles/green/Click()
if(usr.player!=turn) return /*There are 2 players. One has an ID called usr.player and the other player's ID is called !usr.player*/
if(!usr.hold) return /* usr.hold is src of obj/pieces/blue/Click() or red depending on the ID*/
if((usr.player && usr.hold.y>src.y) | (!usr.player && usr.hold.y<src.y)) return /*Limiting the move from going backwards depending on who's turn it is*/

if(usr.player)// red piece is the first player's piece
for(var/obj/pieces/red/r)// checks for all pieces of red
for(var/obj/pieces/blue/b)


for(var/obj/pieces/blue/b2 in get_step(r,get_dir(r,b))) //for 1st blue in turf of red in direction of red to blue
for(var/obj/pieces/blue/b3 in get_step(b2,get_dir(r,b))) //for 2nd blue
if(src == b3.loc) return
else usr.hold.Move(src)
usr.hold=null
turn=!turn
return


for(b in view(1,r))
if(r in locate(2,3,1) && b in locate(1,4,1))
usr.hold.Move(src)
usr.hold=null
turn=!turn
world << "Global Turn is [turn]"
return
if(src == get_step(b,get_dir(usr.hold,b)))
usr.hold.Move(src)
del b
usr.hold=null
turn=!turn
return

return
if(get_dist(r,b)==1 && src!=get_step(b,get_dir(r,b)))
world << "If the piece is by another, you must jump"
return


Help would be really appreciated

EDIT: Okay this seems to work right now:

turf/tiles/green/Click()
if(usr.player!=turn) return /*There are 2 players. One has an ID called usr.player and the other player's ID is called !usr.player*/
if(!usr.hold) return /* usr.hold is src of obj/pieces/blue/Click() or red depending on the ID*/
if((usr.player && usr.hold.y>src.y) | (!usr.player && usr.hold.y<src.y)) return /*Limiting the move from going backwards depending on who's turn it is*/

if(usr.player)
for(var/obj/pieces/red/r)

for(var/obj/pieces/blue/b)


for(var/obj/pieces/blue/b2 in get_step(r,get_dir(r,b))) //for 1st blue in turf of red in direction of red to blue
for(var/obj/pieces/blue/b3 in get_step(b2,get_dir(r,b))) //for 2nd blue in turf of red in direction of red to blue
if(src == b3.loc | src==b2.loc) return
else usr.hold.Move(src)
usr.hold=null
turn=!turn
world << "[1]"
return

for(var/obj/pieces/blue/b2 in get_step(r,get_dir(r,b))) //for 1st blue in turf of red in direction of red to blue
for(var/obj/pieces/red/rrr2 in get_step(b2,get_dir(r,b))) //for red close to blue in turf of red in direction of red to blue
if(src==b2.loc | src==rrr2.loc) return
else usr.hold.Move(src)
usr.hold=null
turn=!turn
world << "[2]"
return

for(var/obj/pieces/red/rrrr2 in get_step(r,get_dir(r,b))) //for 1st blue in turf of red in direction of red to blue
for(var/obj/pieces/blue/bbb2 in get_step(rrrr2,get_dir(r,b))) //for red close to blue in turf of red in direction of red to blue
for(var/obj/pieces/p in get_step(bbb2,get_dir(r,b)))
if(src==rrrr2.loc | src==bbb2.loc) return
else usr.hold.Move(src)
usr.hold=null
turn=!turn
world << "[3]"
return

if(src==b.loc|src==r.loc) return


for(b in view(1,r))

if(r in locate(2,3,1) && b in locate(1,4,1))
usr.hold.Move(src)
usr.hold=null
turn=!turn
world << "Global Turn is [turn]"
world << "[4]"
return

for(var/obj/pieces/blue/bb2 in get_step(usr.hold,get_dir(usr.hold,src)))
usr.hold.Move(src)

usr.hold=null
turn=!turn
world << "[5]"
del bb2

return


if(get_dist(r,b)==1 && src!=get_step(b,get_dir(r,b)) && !(src==b.loc) && !(src==r.loc))
world << "You must jump"
return
Page: 1 2