Advertisement
Bonika

Untitled

Jan 13th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.34 KB | None | 0 0
  1. local sx,sy = guiGetScreenSize()
  2. local oX, oY = 1920, 1080
  3. local xF = 0.7
  4.  
  5.  
  6. if fileExists("sourceC.lua") then
  7. fileDelete("sourceC.lua")
  8. end
  9.  
  10.  
  11. local hudW, hudH = 256, 256
  12. local speedoTarget = dxCreateRenderTarget(hudW, hudH, true)
  13. local currentVehicle
  14. local textures = {
  15. speedo = dxCreateTexture("files/speedo.png", "dxt5"),
  16. rpm = dxCreateTexture("files/rpm.png", "dxt5"),
  17. text = dxCreateTexture("files/text.png", "dxt5"),
  18. lines = dxCreateTexture("files/lines.png", "dxt5"),
  19. lamp = dxCreateTexture("files/lamp.png", "dxt5"),
  20. index_jobb = dxCreateTexture("files/index_jobb.png", "dxt5"),
  21. index_bal = dxCreateTexture("files/index_bal.png", "dxt5"),
  22. handbrake = dxCreateTexture("files/handbrake.png", "dxt5"),
  23. door = dxCreateTexture("files/door.png", "dxt5"),
  24. indicator = dxCreateTexture("files/indicator.png", "dxt5"),
  25. fuelindicator = dxCreateTexture("files/fuelindicator.png", "dxt5"),
  26. fuelbase = dxCreateTexture("files/fuelbase.png", "dxt5"),
  27. fuelnum = dxCreateTexture("files/fuelnum.png", "dxt5"),
  28. icon = dxCreateTexture("files/icon.png", "dxt5"),
  29. seatbelt0 = dxCreateTexture("files/seatbelt0.png", "dxt5"),
  30. seatbelt1 = dxCreateTexture("files/seatbelt1.png", "dxt5"),
  31. circle = dxCreateTexture("files/circle.png", "dxt5"),
  32. }
  33.  
  34.  
  35.  
  36. function getVehicleSpeed()
  37. if currentVehicle then
  38. local vx, vy, vz = getElementVelocity(currentVehicle)
  39. return math.sqrt(vx^2 + vy^2 + vz^2) * 187.5
  40. end
  41. return 0
  42. end
  43.  
  44.  
  45. function getVehicleGear()
  46. if getElementData(currentVehicle, "veh:ManualGear") then
  47. local controller = getVehicleController(currentVehicle)
  48. if controller == localPlayer then
  49. return getPlayerGear()
  50. else
  51. return tonumber(getElementData(currentVehicle, "veh:Gear")) or 0
  52. end
  53. else
  54. return tonumber(getVehicleCurrentGear(currentVehicle))
  55. end
  56. end
  57.  
  58. function getRPM(maxW)
  59. local gear = getVehicleGear()
  60. local speed = getVehicleSpeed()
  61. if gear == 0 then
  62. gear = 1
  63. maxW = maxW/2
  64. end
  65. local rpm = math.floor((speed/gear)*1.1)
  66. if rpm > maxW then
  67. rpm = maxW
  68. end
  69. return rpm, math.floor(speed)
  70. end
  71.  
  72. function getFormattedVehicleGear()
  73. local gear = getVehicleGear()
  74. if (gear > 0) then
  75. return gear
  76. else
  77. return "R"
  78. end
  79. end
  80.  
  81. local lastBlinkTick = 0
  82. local fuelCache = -1
  83. local speedoFont = dxCreateFont("files/bitsu.ttf", 8)
  84. local speedoFontBig = dxCreateFont("files/bitsu.ttf", 20)
  85. local rpmTemp = 0
  86. local rpmMax = 115
  87. local widget = nil
  88. local lampR, lampG, lampB = 0,0,0
  89.  
  90.  
  91. local drawP = 40
  92. local canDraw = false
  93. local tempomatText = ""
  94. local seefont = dxCreateFont(":sas_hud/files/fonts/Roboto.ttf", 10)
  95. local fuelR, fuelG, fuelB = 255,255,255
  96. function drawSpeedo()
  97. if not isPedInVehicle(localPlayer) then hideSpeedo() end
  98. if not getElementData(localPlayer, "enableall") then return end
  99. if not currentVehicle then
  100. if isElement(beltSound) then
  101. stopSound(beltSound)
  102. end
  103. setElementData(localPlayer, "seatbelt", false)
  104. return
  105. end
  106. local lampR, lampG, lampB = getVehicleHeadLightColor(currentVehicle)
  107. local speedcolor = tocolor(lampR,lampG,lampB,255)
  108. if exports.sas_hud:getNode(13, "showing") or getElementData(localPlayer, "valaszto") then
  109. local fuelX, fuelY = exports.sas_hud:getNode(13, "x"), exports.sas_hud:getNode(13, "y")
  110. local vehicleFuelamount = tonumber(getElementData(currentVehicle, "veh:fuel") or 0)
  111. if vehicleFuelamount < 20 then
  112. fuelR, fuelG, fuelB = 217, 83, 79
  113. else
  114. fuelR, fuelG, fuelB = 255, 255, 255
  115. end
  116. if lampR ~= 255 or lampG ~= 255 or lampB ~= 255 then
  117. fuelR, fuelG, fuelB = lampR, lampG, lampB
  118. end
  119.  
  120. dxDrawImage(fuelX, fuelY, 256, 256, "files/fuelbase.png", 0, 0, 0, tocolor(255, 255, 255, 255))
  121. dxDrawImage(fuelX, fuelY, 256, 256, textures.fuelnum, 0, 0, 0, tocolor(fuelR, fuelG, fuelB, 255))
  122. local fuelRotation = 1.8*vehicleFuelamount
  123. dxDrawImage(fuelX, fuelY, 256, 256, textures.fuelindicator, -90+fuelRotation-1.8, 0, 0, tocolor(255, 255, 255, 255))
  124. end
  125. if exports.sas_hud:getNode(16, "showing") or getElementData(localPlayer, "valaszto") then
  126. local nameX, nameY = exports.sas_hud:getNode(16, "x"), exports.sas_hud:getNode(16, "y")
  127. dxDrawImage(nameX, nameY, hudW, hudH, textures.circle, 0, 0, 0, tocolor(255, 255, 255, 255))
  128. local textmsg = exports["rise_vehicle"]:getVehicleRealName(getElementModel(currentVehicle)) or "Ismeretlen"
  129. dxDrawText(textmsg.."#ff9933"..tempomatText, nameX+222, nameY+20-2, nameX+222, nameY+20, tocolor(255,255,255,255), 1, seefont, "right", "top", false,false,false,true)
  130. end
  131.  
  132. dxSetRenderTarget(speedoTarget, true)
  133.  
  134. if exports.sas_hud:getNode(12, "showing") or getElementData(localPlayer, "valaszto") then
  135. local kocsispeed = getVehicleSpeed()
  136. local rpm, speed = getRPM(rpmMax)
  137. if (isVehicleOnGround(currentVehicle)) then
  138. if(rpm~=rpmTemp and math.abs(rpm-rpmTemp)>2)then
  139. if(rpm > rpmTemp)then
  140. rpmTemp = rpmTemp + math.ceil((rpm - rpmTemp) * 0.1)
  141. else
  142. rpmTemp = rpmTemp - math.ceil((rpmTemp - rpm) * 0.1)
  143. end
  144. end
  145. else
  146. if(rpmTemp>0)then
  147. rpmTemp = rpmTemp - (rpmTemp*0.05)
  148. end
  149. end
  150. if(rpmTemp<1)then
  151. rpmTemp = 1
  152. end
  153.  
  154. for i=0, kocsispeed*0.7 do
  155. dxDrawImage(0, 0, 256, 256, textures.rpm, i, 0, 0, speedcolor)
  156. end
  157. dxDrawImage(0, 0, hudW, hudH, textures.indicator, -131+kocsispeed*0.7, 0, 0, tocolor(255,255,255,255))
  158.  
  159. dxDrawText(speed, hudW, 200, 0, 0, tocolor(255,255,255,240), 1*xF, speedoFontBig, "center")
  160. dxDrawText("km/h", hudW, 228, 0, 0, tocolor(255,255,255,240), 1.2*xF, speedoFont, "center")
  161.  
  162. dxDrawText(getFormattedVehicleGear(), hudW+65, 158*xF+10, 0, 0, tocolor(255,255,255,240), 0.6*xF, speedoFontBig, "center")
  163. end
  164.  
  165. dxSetRenderTarget()
  166.  
  167. if exports.sas_hud:getNode(12, "showing") or getElementData(localPlayer, "valaszto") then
  168. local x,y = exports.sas_hud:getNode(12, "x"), exports.sas_hud:getNode(12,"y")
  169. dxDrawImage(x, y, hudW, hudH, textures.lines, 0, 0, 0, tocolor(0, 0, 0, 255))
  170.  
  171. dxDrawImage(x, y, hudW, hudH, "files/speedo.png", 0, 0, 0, tocolor(255, 255, 255, 255))
  172. dxDrawImage(x, y, hudW, hudH, textures.seatbelt0, 0, 0, 0, tocolor(255, 255, 255, 255))
  173. dxDrawImage(x, y, hudW, hudH, textures.text, 0, 0, 0, tocolor(lampR, lampG, lampB, 255))
  174. dxDrawImage(x, y, hudW, hudH, speedoTarget, 0)
  175.  
  176. dxDrawText("Nem írja", x+110, y+80, hudW, hudH, tocolor(60,60,60,200), 1.3*xF, seefont)
  177.  
  178. if not getElementData(localPlayer, "seatbelt") and canDraw then
  179. dxDrawImage(x, y, hudW, hudH, "files/seatbelt1.png", 0)
  180. end
  181. end
  182. if exports.sas_hud:getNode(14, "showing") or getElementData(localPlayer, "valaszto") then
  183. local x2,y2 = exports.sas_hud:getNode(14, "x"), exports.sas_hud:getNode(14,"y")
  184. dxDrawImage(x2, y2, hudW, hudH, "files/icon.png")
  185. if getVehicleOverrideLights(currentVehicle) == 2 then
  186. dxDrawImage(x2,y2,hudW,hudH, "files/lamp.png")
  187. end
  188. if isVehicleLocked(currentVehicle) then
  189. dxDrawImage(x2,y2,hudW,hudH, "files/door.png")
  190. end
  191. if isElementFrozen(currentVehicle) then
  192. dxDrawImage(x2,y2,hudW,hudH, "files/handbrake.png")
  193. end
  194. if getElementData(currentVehicle, "indexR") then
  195. dxDrawImage(x2,y2,hudW,hudH, "files/index_jobb.png")
  196. end
  197. if getElementData(currentVehicle, "indexL") then
  198. dxDrawImage(x2,y2,hudW,hudH, "files/index_bal.png")
  199. end
  200. end
  201. end
  202.  
  203. function showSpeedo()
  204. local vehicle = getPedOccupiedVehicle(localPlayer)
  205. if vehicle then
  206. currentVehicle = vehicle
  207. local t = getVehicleType(vehicle)
  208. if t == "Automobile" or t == "Monster Truck" or t == "Quad" or t == "Bike" or t == "Helicopter" or t == "Boat" then
  209. addEventHandler("onClientRender", root, drawSpeedo)
  210. end
  211. end
  212. end
  213.  
  214. function hideSpeedo()
  215. removeEventHandler("onClientRender", root, drawSpeedo)
  216. currentVehicle = nil
  217. lastBlinkTick = 0
  218. fuelCache = -1
  219. end
  220.  
  221. addEventHandler("onClientPlayerVehicleEnter",localPlayer,function(veh, seat)
  222. showSpeedo()
  223. if seat == 0 and ccEnabled then
  224. removeEventHandler("onClientRender", getRootElement(), cc)
  225. ccEnabled = false
  226. end
  227. setElementData(localPlayer, "seatbelt", false)
  228. beltSound = playSound("files/seatbelt.mp3", true)
  229. canDraw = true
  230. if isTimer(timer) then killTimer(timer) end
  231. timer = setTimer(function()
  232. if canDraw then
  233. canDraw = false
  234. else
  235. canDraw = true
  236. end
  237. end, 600, 0)
  238. if getElementModel(veh) == 407 then return end
  239. toggleControl("vehicle_secondary_fire", false)
  240. end)
  241.  
  242. addEventHandler("onClientResourceStart", resourceRoot, function()
  243. showSpeedo()
  244. end)
  245.  
  246. addEventHandler("onClientPlayerVehicleExit",localPlayer,function(veh)
  247. hideSpeedo()
  248. if isTimer(timer) then killTimer(timer) end
  249. if isElement(beltSound) then
  250. stopSound(beltSound)
  251. end
  252. if getElementModel(veh) == 407 then return end
  253. toggleControl("vehicle_secondary_fire", true)
  254. end)
  255.  
  256. local beltVehicles = {
  257. ["Automobile"] = true,
  258. ["Plane"] = true,
  259. ["Helicopter"] = true,
  260. ["Boat"] = true,
  261. ["Train"] = true,
  262. ["Monster Truck"] = true
  263. }
  264.  
  265. addEventHandler("onClientKey", root, function(key, pressed)
  266. if key == "F5" and pressed and currentVehicle and beltVehicles[getVehicleType(currentVehicle)] then
  267. if not getElementData(localPlayer, "seatbelt") then
  268. setElementData(localPlayer, "seatbelt", true)
  269.  
  270. stopSound(beltSound)
  271. playSound("files/seatbelton.mp3", false)
  272. triggerServerEvent("sendMeMessageOn", localPlayer)
  273. if isTimer(timer) then killTimer(timer) end
  274. else
  275. triggerServerEvent("sendMeMessageOff", localPlayer)
  276. setElementData(localPlayer, "seatbelt", false)
  277.  
  278. playSound("files/seatbeltoff.mp3", false)
  279. beltSound = playSound("files/seatbelt.mp3", true)
  280. canDraw = true
  281. if isTimer(timer) then killTimer(timer) end
  282. timer = setTimer(function()
  283. if canDraw then
  284. canDraw = false
  285. else
  286. canDraw = true
  287. end
  288. end, 600, 0)
  289. end
  290. end
  291. end)
  292.  
  293. addEventHandler("onClientElementDestroy", getRootElement(), function()
  294. if getElementType(source) == "vehicle" then
  295. setElementData(localPlayer, "seatbelt", false)
  296. end
  297. end)
  298.  
  299. addEventHandler("onClientVehicleCollision", root, function(collider, force, bodyPart, x, y, z, nx, ny, nz)
  300. if source == currentVehicle then
  301. local fDamageMultiplier = getVehicleHandling(source).collisionDamageMultiplier
  302. local realDamage = (force*fDamageMultiplier)*0.1
  303.  
  304. if realDamage > 15 then
  305. realDamage = realDamage/3
  306. if getElementData(localPlayer, "seatbelt") then
  307. setElementHealth(localPlayer, getElementHealth(localPlayer) - realDamage/2)
  308. else
  309. setElementHealth(localPlayer, getElementHealth(localPlayer) - realDamage)
  310. end
  311. end
  312. end
  313. end)
  314.  
  315.  
  316. limit = true
  317. key = "c"
  318. allowedTypes = { "Automobile", "Bike", "Boat", "Train" }
  319. local targetSpeedTmp = 0
  320. local basicSpeed = 0
  321.  
  322. function getElementSpeed(element,unit)
  323. if (unit == nil) then unit = 0 end
  324. if (isElement(element)) then
  325. local x,y,z = getElementVelocity(element)
  326. if (unit=="mph" or unit==1 or unit =='1') then
  327. return (x^2 + y^2 + z^2) ^ 0.5 * 100
  328. else
  329. return (x^2 + y^2 + z^2) ^ 0.5 * 1.61 * 100
  330. end
  331. else
  332. return false
  333. end
  334. end
  335.  
  336. function setElementSpeed(element, unit, speed)
  337. if (unit == nil) then unit = 0 end
  338. if (speed == nil) then speed = 0 end
  339. speed = tonumber(speed)
  340. local acSpeed = getVehicleSpeed(element, unit)
  341. if (acSpeed~=false) then
  342. local diff = speed/acSpeed
  343. local x,y,z = getElementVelocity(element)
  344. setElementVelocity(element,x*diff,y*diff,z*diff)
  345. return true
  346. else
  347. return false
  348. end
  349. end
  350.  
  351. function in_array(e, t)
  352. for _,v in pairs(t) do
  353. if (v==e) then return true end
  354. end
  355. return false
  356. end
  357.  
  358. function round2(num, idp)
  359. return tonumber(string.format("%." .. (idp or 0) .. "f", num))
  360. end
  361.  
  362. function angle(vehicle)
  363. local vx,vy,vz = getElementVelocity(vehicle)
  364. local modV = math.sqrt(vx*vx + vy*vy)
  365.  
  366. if not isVehicleOnGround(vehicle) then return 0,modV end
  367. local rx,ry,rz = getElementRotation(vehicle)
  368. local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz))
  369. local cosX = (sn*vx + cs*vy)/modV
  370.  
  371. return math.deg(math.acos(cosX))*0.5, modV
  372. end
  373.  
  374. function getMaxSpeed(vehicle)
  375. local handlign = getVehicleHandling(vehicle)
  376. speed = handlign["maxVelocity"]
  377. return speed
  378. end
  379.  
  380. ccEnabled = false
  381. targetSpeed = 1
  382. multiplier = 1
  383.  
  384. local Speed = 0
  385. function cc()
  386. if (not isElement(currentVehicle)) then
  387. removeEventHandler("onClientRender", getRootElement(), cc)
  388. ccEnabled=false
  389. --outputChatBox( "#EB9532[Tempomat] #ffffff A tempomat sikeresen #D24D57Kikapcsolva#ffffff.", 255,255,255,true)
  390. return false
  391. end
  392. local x,y = angle(currentVehicle)
  393. if (x<15) then
  394. local speed = getVehicleSpeed(currentVehicle)
  395. targetSpeedTmp = speed + multiplier
  396. if (targetSpeedTmp > targetSpeed) then
  397. targetSpeedTmp = targetSpeed
  398. end
  399. if (targetSpeedTmp > 3) then
  400. if (getMaxSpeed(currentVehicle) >= targetSpeedTmp) then
  401. setElementSpeed(currentVehicle, "k", targetSpeedTmp)
  402. end
  403. end
  404. end
  405. end
  406.  
  407. bindKey(key, "up", function()
  408. if currentVehicle and localPlayer == getVehicleOccupant(currentVehicle) then
  409. if getElementHealth(currentVehicle) <= 450 then return end
  410. if (ccEnabled) then
  411. removeEventHandler("onClientRender", getRootElement(), cc)
  412. ccEnabled=false
  413. tempomatText = ""
  414. else
  415. targetSpeed = getVehicleSpeed(currentVehicle)
  416. if targetSpeed > 4 then
  417. if (limit) then
  418. if in_array(getVehicleType(currentVehicle), allowedTypes) then
  419. tempomatText = " (Tempomat: "..math.floor(targetSpeed).." km/h)"
  420. addEventHandler("onClientRender", getRootElement(), cc)
  421. basicSpeed = targetSpeed
  422. ccEnabled=true
  423. end
  424. else
  425. tempomatText = " (Tempomat: "..math.floor(targetSpeed).." km/h)"
  426. addEventHandler("onClientRender", getRootElement(), cc)
  427. ccEnabled=true
  428. basicSpeed = targetSpeed
  429. end
  430. end
  431. end
  432. end
  433. end)
  434.  
  435. addEventHandler( "onClientKey", root, function(button,press)
  436. if button == "s" or button == "space" or button == "lalt" or button == "w" then
  437. if (ccEnabled) then
  438. removeEventHandler("onClientRender", getRootElement(), cc)
  439. ccEnabled=false
  440. tempomatText = ""
  441. end
  442. return true
  443. elseif button == "num_sub" and press then
  444. if (basicSpeed - 10 >= targetSpeed -1) then
  445. targetSpeed = targetSpeed - 1
  446. tempomatText = " (Tempomat: "..math.floor(targetSpeed).." km/h)"
  447. end
  448. elseif button == "num_add" and press then
  449. --if (basicSpeed + 10 <= targetSpeed +1) then
  450. targetSpeed = targetSpeed + 1
  451. tempomatText = " (Tempomat: "..math.floor(targetSpeed).." km/h)"
  452. --end
  453. end
  454. return false
  455. end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement