Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getPointInFrontOfPoint(x, y, z, rZ, dist)
- local offsetRot = math.rad(rZ)
- local vx = x + dist * math.cos(offsetRot)
- local vy = y + dist * math.sin(offsetRot)
- return vx, vy, z
- end
- function GetMarrot(angle, rz)
- local marrot = 0
- if(angle > rz) then
- marrot = -(angle-rz)
- else
- marrot = rz-angle
- end
- if(marrot > 180) then
- marrot = marrot-360
- elseif(marrot < -180) then
- marrot = marrot+360
- end
- return marrot
- end
- function findRotation(x1, y1, x2, y2)
- local t = -math.deg(math.atan2(x2 - x1, y2 - y1))
- return t < 0 and t + 360 or t
- end
- local px,py,pz = getElementPosition(localPlayer)
- local prx,pry,prz = getElementRotation(localPlayer)
- local vx,vy,vz = getPointInFrontOfPoint(px,py,pz, prz+90, 15)
- local thePed = createPed(299, vx,vy,vz+1, prz+180)
- local theVehicle = createVehicle(404, vx,vy,vz+1, 0,0,prz+180)
- warpPedIntoVehicle(thePed, theVehicle)
- function UpdateBot()
- px,py,pz = getElementPosition(localPlayer)
- prx,pry,prz = getElementRotation(localPlayer)
- vx,vy,vz = getElementPosition(theVehicle)
- local vrx,vry,vrz = getElementRotation(theVehicle)
- local brakes = false
- local maxspd = 40
- local MaxDist = 4
- local vehreverse = false
- if(getDistanceBetweenPoints2D(px,py, vx, vy) < MaxDist) then
- brakes = true
- end
- if(brakes) then
- setPedAnalogControlState(thePed, "accelerate", 0)
- setPedAnalogControlState(thePed, "brake_reverse", 0)
- setPedControlState(thePed, "handbrake", true)
- setElementVelocity (theVehicle, 0,0,0)
- else
- local vxv, vyv, vzv = getElementVelocity(theVehicle)
- local s = (vxv^2 + vyv^2 + vzv^2)^(0.5)*156 -- Speed
- local rot = GetMarrot(findRotation(vx,vy,px,py),vrz)
- if(rot > 80) then
- if(rot > 100) then vehreverse = true end
- rot = 20
- elseif(rot < -20) then
- if(rot < -80) then vehreverse = true end
- rot = -20
- end
- if(vehreverse) then
- setPedAnalogControlState(thePed, "brake_reverse", 1-(s*1/maxspd))
- setPedAnalogControlState(thePed, "accelerate", 0)
- setPedControlState(thePed, "handbrake", false)
- if(s > 10) then
- setPedControlState(thePed, "handbrake", true)
- else
- if(rot > 0) then
- setPedAnalogControlState(thePed, "vehicle_left", (rot)/20)
- else
- setPedAnalogControlState(thePed, "vehicle_right", -(rot)/20)
- end
- end
- else
- if(rot > 0) then
- setPedAnalogControlState(thePed, "vehicle_right", (rot)/20)
- else
- setPedAnalogControlState(thePed, "vehicle_left", -(rot)/20)
- end
- setPedAnalogControlState(thePed, "brake_reverse", 0)
- setPedControlState(thePed, "handbrake", false)
- if(s < maxspd) then
- setPedAnalogControlState(thePed, "accelerate", 1-(s*1/maxspd))
- else
- setPedAnalogControlState(thePed, "accelerate", 0)
- setPedAnalogControlState(thePed, "brake_reverse", (s/maxspd)-1)
- end
- end
- end
- end
- setTimer(UpdateBot, 50, 0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement