Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- EDITABLE (NO RECOMMENDED)
- parts = 10 -- amount of sides that is displayed behind the vehicle (you can see the corners)
- partLength = 1 -- length of every part in SA coördinates
- lineThickness = 15 -- thickness of every line (not sure about the unit)
- xOff, yOff, zOff = 0, -2.5, 0 -- offset of the rainbow
- fadeLength = 5 -- amount of parts from the end to the front that's in the fade, for some reason it starts bugging when you make it larger than 5
- colors = { -- colors in the rainbow in RGB
- { 255, 0, 0 },
- { 255, 150, 0 },
- { 255, 255, 0 },
- { 50, 255, 0 },
- { 0, 150, 255 },
- { 100, 50, 255 }
- }
- -- DO NOT EDIT ANYTHING BELOW HERE, UNLESS YOU KNOW WHAT YOU'RE DOING
- lineOffsetZMultiplier = 0.01
- vehicleTable = {}
- oldPosTable = {}
- partsTable = {}
- if fadeLength >= parts then
- fadeLength = parts - 1
- end
- startFade = parts - fadeLength
- fadeIndex = 255 / fadeLength
- lineOffsetZ = lineThickness * lineOffsetZMultiplier
- lineStartZ = zOff + #colors * lineOffsetZ * 0.5
- function render ()
- for i, v in pairs ( getElementsByType ( "vehicle" ) ) do
- if not vehicleTable[v] then
- vehicleTable[v] = {}
- else
- local vx, vy, vz = getElementPosition ( v )
- local matrix = getElementMatrix ( v )
- local x = xOff * matrix[1][1] + yOff * matrix[2][1] + zOff * matrix[3][1] + 1 * matrix[4][1]
- local y = xOff * matrix[1][2] + yOff * matrix[2][2] + zOff * matrix[3][2] + 1 * matrix[4][2]
- local z = xOff * matrix[1][3] + yOff * matrix[2][3] + zOff * matrix[3][3] + 1 * matrix[4][3]
- if oldPosTable[v] then
- local oldX, oldY, oldZ = unpack ( oldPosTable[v] )
- if getDistanceBetweenPoints3D ( x, y, z, oldX, oldY, oldZ ) > partLength then
- table.insert ( vehicleTable[v], { oldX, oldY, oldZ, x, y, z } )
- oldPosTable[v] = { x, y, z }
- end
- for i, part in pairs ( vehicleTable[v] ) do
- if #vehicleTable[v] <= parts or i >= #vehicleTable[v] - parts then
- local a = 255
- if i < #vehicleTable[v] - parts + fadeLength then
- local index = i - ( #vehicleTable[v] - parts )
- a = 255 * fadeIndex * ( fadeLength - index )
- end
- local px1, py1, pz1, px2, py2, pz2 = unpack ( part )
- drawRainbow ( px1, py1, pz1, px2, py2, pz2, a )
- end
- end
- drawRainbow ( x, y, z, oldX, oldY, oldZ, 255 )
- else
- oldPosTable[v] = { x, y, z }
- end
- end
- end
- end
- addEventHandler ( "onClientRender", getRootElement(), render )
- function drawRainbow ( x1, y1, z1, x2, y2, z2, alpha )
- for i, color in pairs ( colors ) do
- local i = #colors - i
- local r, g, b = unpack ( color )
- local z1 = z1 + - lineStartZ + ( i - 1 ) * lineOffsetZ
- local z2 = z2 + - lineStartZ + ( i - 1 ) * lineOffsetZ
- dxDrawLine3D ( x1, y1, z1, x2, y2, z2, tocolor(r, g, b, alpha), lineThickness )
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement