Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.85 KB | None | 0 0
  1. function getPointInFrontOfPoint(x, y, z, rZ, dist)
  2.     local offsetRot = math.rad(rZ)
  3.     local vx = x + dist * math.cos(offsetRot)
  4.     local vy = y + dist * math.sin(offsetRot)  
  5.     return vx, vy, z
  6. end
  7.  
  8. function GetMarrot(angle, rz)
  9.     local marrot = 0
  10.     if(angle > rz) then
  11.         marrot = -(angle-rz)
  12.     else
  13.         marrot = rz-angle
  14.     end
  15.    
  16.     if(marrot > 180) then
  17.         marrot = marrot-360
  18.     elseif(marrot < -180) then
  19.         marrot = marrot+360
  20.     end
  21.     return marrot
  22. end
  23.  
  24. function findRotation(x1, y1, x2, y2)
  25.     local t = -math.deg(math.atan2(x2 - x1, y2 - y1))
  26.     return t < 0 and t + 360 or t
  27. end
  28.  
  29. local px,py,pz = getElementPosition(localPlayer)
  30. local prx,pry,prz = getElementRotation(localPlayer)
  31. local vx,vy,vz = getPointInFrontOfPoint(px,py,pz, prz+90, 15)
  32. local thePed = createPed(299, vx,vy,vz+1, prz+180)
  33. local theVehicle = createVehicle(404, vx,vy,vz+1, 0,0,prz+180)
  34. warpPedIntoVehicle(thePed, theVehicle)
  35.  
  36. function UpdateBot()
  37.     px,py,pz = getElementPosition(localPlayer)
  38.     prx,pry,prz = getElementRotation(localPlayer)
  39.     vx,vy,vz = getElementPosition(theVehicle)
  40.     local vrx,vry,vrz = getElementRotation(theVehicle)
  41.     local brakes = false
  42.     local maxspd = 40
  43.     local MaxDist = 4
  44.     local vehreverse = false
  45.    
  46.     if(getDistanceBetweenPoints2D(px,py, vx, vy) < MaxDist) then
  47.         brakes = true
  48.     end
  49.    
  50.     if(brakes) then
  51.         setPedAnalogControlState(thePed, "accelerate", 0)
  52.         setPedAnalogControlState(thePed, "brake_reverse", 0)
  53.         setPedControlState(thePed, "handbrake", true)
  54.         setElementVelocity (theVehicle, 0,0,0)
  55.     else
  56.         local vxv, vyv, vzv = getElementVelocity(theVehicle)
  57.         local s = (vxv^2 + vyv^2 + vzv^2)^(0.5)*156 -- Speed
  58.         local rot = GetMarrot(findRotation(vx,vy,px,py),vrz)
  59.    
  60.         if(rot > 80) then
  61.             if(rot > 100) then vehreverse = true end
  62.             rot = 20
  63.         elseif(rot < -20) then
  64.             if(rot < -80) then vehreverse = true end
  65.             rot = -20
  66.         end
  67.        
  68.         if(vehreverse) then
  69.             setPedAnalogControlState(thePed, "brake_reverse", 1-(s*1/maxspd))
  70.             setPedAnalogControlState(thePed, "accelerate", 0)
  71.             setPedControlState(thePed, "handbrake", false)
  72.             if(s > 10) then
  73.                 setPedControlState(thePed, "handbrake", true)
  74.             else
  75.                 if(rot > 0) then
  76.                     setPedAnalogControlState(thePed, "vehicle_left", (rot)/20)
  77.                 else
  78.                     setPedAnalogControlState(thePed, "vehicle_right", -(rot)/20)
  79.                 end
  80.             end
  81.         else
  82.             if(rot > 0) then
  83.                 setPedAnalogControlState(thePed, "vehicle_right", (rot)/20)
  84.             else
  85.                 setPedAnalogControlState(thePed, "vehicle_left", -(rot)/20)
  86.             end
  87.        
  88.             setPedAnalogControlState(thePed, "brake_reverse", 0)
  89.             setPedControlState(thePed, "handbrake", false)
  90.             if(s < maxspd) then
  91.                 setPedAnalogControlState(thePed, "accelerate", 1-(s*1/maxspd))
  92.             else
  93.                 setPedAnalogControlState(thePed, "accelerate", 0)
  94.                 setPedAnalogControlState(thePed, "brake_reverse", (s/maxspd)-1)
  95.             end
  96.         end
  97.     end
  98. end
  99. setTimer(UpdateBot, 50, 0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement