Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------------------------------------------------------------------------------
- -- Sets the block that the player is jumping from (separate script)
- ----------------------------------------------------------------------------------------------------------------
- bx,by,bz = lookingAt()
- by=by
- hud3D.clearAll()
- quickHB(bx,by+1,bz)
- ----------------------------------------------------------------------------------------------------------------
- -- Parkour script below:
- ----------------------------------------------------------------------------------------------------------------
- function lookingAt()
- local player = getPlayer()
- yaw = player.yaw
- return table.unpack(player.lookingAt)
- end
- function centerViewOnBlock()
- local lx,ly,lz = lookingAt()
- lookAt(lx+.5,ly+.5,lz+.5, 1000)
- sleep(1000)
- end
- function isOnBlock()
- return getPlayer().onGround
- end
- function dist(a, b)
- local dx = b[1]-a[1]
- local dy = b[2]-a[2]
- local dz = b[3]-a[3]
- return math.sqrt( dx*dx + dy*dy + dz*dz)
- end
- function getDxDz()
- local x, z = tx,tz
- local px,_,pz = bx,by,bz --getPlayerBlockPos()
- local dx = x-px
- --local dy = y-py
- local dz = z-pz
- return dx,dz
- end
- function math.sign(x)
- if(x>0)then return 1 end
- if(x<0)then return -1 end
- return 0
- end
- function isInBlockBounds(x,y,z, all)
- all = all or false
- local buffer = .1 --was .2
- local px,py,pz = getPlayerPos()
- local pbx, pby ,pbz = getPlayerBlockPos()
- local dx,dz = getDxDz(x,z)
- dx = math.sign(dx)
- dz = math.sign(dz)
- --log(dx,dz)
- if(dx==1 or all)then --pos X direction
- -- log("")
- if(px > x+1+buffer)then
- --log("Over pos X")
- return false end
- end
- if(dx==-1 or all)then -- neg x
- --log("c2")
- if(px < x-buffer)then
- --log("Over neg X")
- return false end
- end
- if(dz==1 or all)then
- if(pz > z+1+buffer)then --log("Over Neg Z")
- return false end
- end
- if(dz==-1 or all)then
- if(pz < z-buffer)then --log("Over Pos Z")
- return false end
- end
- return true
- end
- function isSneaking()
- return getPlayer().isSneaking
- end
- function hasFallen(by)
- local px,py,pz = getPlayerPos()
- if(py<ty+.25 and py<by+.25)then return true end
- return false
- end
- function randomColor()
- local r = math.random(7)
- -- "&0&1&2&3&4&5&6&7&8&9&a&b&c&d&e&f"
- return ("d5e9632"):sub(r,r)
- end
- function doJump()
- --local bx,by,bz = getPlayerBlockPos()
- by = by-1
- if(isSneaking())then
- sneak(10)
- sleep(1000)
- log("&ePlayer was sneaking")
- end
- forward(-1)
- waitTick()
- sprint(true)
- while(isOnBlock() and isInBlockBounds(bx, by, bz))do
- --do nothing
- waitTick()
- end
- if(isOnBlock())then
- jump()
- while(not isInBlockBounds(tx,ty,tz, true) and not hasFallen(by))do
- --do nothing
- end
- forward(0)
- sneak(-1)
- back(600)
- sleep(800)
- log("&4&O@@&f&"..randomColor().."Jump done&4&O@@")
- else
- forward(0)
- log("&eWaited too long to jump")
- log(getPlayerPos())
- log(tx,ty,tz)
- end
- end
- function checkDist()
- local d = dist({tx,ty,tz}, {getPlayerBlockPos()})
- if(d>=6)then
- log("&cWarning distance is 6+ &f(&e"..d.."&f)")--, "choice","continue","abort")
- sleep(10000)
- return true --ans == "continue"
- else
- log("&aDistance to jump &f(&e"..d.."&f)")
- end
- return true
- end
- function quickHB(x,y,z)
- hb = hud3D.newBlock()
- hb.setPos(x,y,z)
- hb.enableDraw()
- hb.xray(true)
- end
- if(parkour)then return end
- parkour = true
- tx,ty,tz = lookingAt()
- if(not (bx and by and bz))then
- bx,by,bz = getPlayerBlockPos()
- by=by-1
- end
- --if(not isInBlockBounds(bx,by,bz))then
- -- log("&cNot in block bounds")
- -- parkour = false
- -- return
- --end
- if(checkDist())then
- hud3D.clearAll()
- quickHB(tx,ty,tz)
- quickHB(bx,by+1,bz)
- doJump()
- end
- bx,by,bz = tx,ty,tz
- parkour = false
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement