Jump to content

Neon Lights Script


Nitride

Recommended Posts

Please can you guys help me, since MTA 1.1 this script doesn't want to work anymore. This script is meant to create a neon light under your car.

Server

--determine whether color change can be made with a command 
cmd = true 
--the command to use 
thecmd = "neon" 
function neon(plr,cmd,r,g,b,a) 
if not r then openGui(plr) return true end 
if tonumber(tostring(r)) == nil then r,g,b,a = getColorFromString(r) 
end 
if not a then a = 200 end 
veh = getPedOccupiedVehicle(plr) 
if veh and r and g and b then 
model = getElementModel(veh) 
if canHaveNeon(veh) then  
if haveNeon(veh) then 
setNeonColor(veh,tonumber(r),tonumber(g),tonumber(b)) 
end 
end 
end 
end 
  
if cmd then 
addCommandHandler(thecmd,neon) 
end 
  
function setNeonColor(vehicle,r,g,b) 
setElementData(vehicle,"neonlight",tostring(r)..","..tostring(g)..","..tostring(b)..","..tostring(a)) 
for i,mark in ipairs(getElementsByType("marker")) do 
local type = getMarkerType(mark) 
if type == "corona" then 
local data1 = getElementData(vehicle,"neonMarker1") 
local data2 = getElementData(vehicle,"neonMarker2") 
if data1 == mark or data2 == mark then 
setMarkerColor(mark,r,g,b,80) 
end 
end 
end 
return true 
end 
  
  
  
function haveNeon(vehicle) 
local data = getElementData(vehicle,"haveneon") 
if data then 
return true 
else 
return false 
end 
end 
  
function addNeon(vehicle,state) 
if getElementType(vehicle) == "vehicle" then 
if state then 
setElementData(vehicle,"haveneon",true) 
x,y,z = getElementPosition(vehicle) 
-- 
local exist = nil 
for i,mark in ipairs(getElementsByType("marker")) do 
data = getElementData(vehicle,"neonMarker1") 
if data == mark then 
local exist = mark 
end 
end 
if not exist then 
local marker1 = createMarker(x,y,z,"corona",2,0,0,0,0) 
attachElements(marker1,vehicle,0,-1,-1.2) 
setElementData(vehicle,"neonMarker1",marker1) 
local marker2 = createMarker(x,y,z,"corona",2,0,0,0,0) 
attachElements(marker2,vehicle,0,1,-1.2) 
setElementData(vehicle,"neonMarker2",marker2) 
end 
-- 
return true 
else 
setElementData(vehicle,"haveneon",false) 
setElementData(veh,"neonlight","off!!!") 
-- 
for i,mark in ipairs(getElementsByType("marker")) do 
local type = getMarkerType(mark) 
if type == "corona" then 
local data1 = getElementData(vehicle,"neonMarker1") 
local data2 = getElementData(vehicle,"neonMarker2") 
if data1 == mark or data2 == mark then 
setMarkerColor(mark,0,0,0,0) 
end 
end 
end 
-- 
return true 
end 
else 
return false 
end 
end 
function canHaveNeon(veh) 
model = getElementModel(veh) 
    if veh and getElementType(veh) == "vehicle" then 
    x = mayHaveNeon(model) 
    return x 
    else 
    return false 
    end 
end 
  
function mayHaveNeon(model) 
if model ~= 592 and model ~= 511 and model ~= 584 and model ~= 512 and model ~= 593 and model ~= 417 and 
model ~= 487 and model ~= 553 and model ~= 488 and model ~= 563 and model ~= 476 and model ~= 519 and 
model ~= 460 and model ~= 469 and model ~= 513 and model ~= 472 and model ~= 473 and model ~= 493 and 
model ~= 595 and model ~= 484 and model ~= 430 and model ~= 453 and model ~= 452 and model ~= 446 and 
model ~= 454 and model ~= 403 and model ~= 514 and model ~= 443 and model ~= 515 and model ~= 455 and 
model ~= 406 and model ~= 486 and model ~= 578 and model ~= 532 and model ~= 524 and model ~= 498 and 
model ~= 609 and model ~= 568 and model ~= 457 and model ~= 508 and model ~= 571 and model ~= 539 and 
model ~= 606 and model ~= 607 and model ~= 485 and model and model ~= 581 and model ~= 509 and  
model ~= 481 and model ~= 462 and model ~= 521 and model ~= 463 and model ~= 510 and model ~= 522 and  
model ~= 461 and model ~= 448 and model ~= 468 and model ~= 586 and model ~= 485 and model ~= 552 and 
model ~= 431 and model ~= 438 and model ~= 437 and model ~= 574 and model ~= 525 and model ~= 408 and 
model ~= 416 and model ~= 433 and model ~= 427 and model ~= 490 and model ~= 528 and model ~= 407 and  
model ~= 544 and model ~= 523 and model ~= 470 and model ~= 596 and model ~= 597 and model ~= 598 and  
model ~= 599 and model ~= 432 and model ~= 601 and model ~= 428 and model ~= 499 and model ~= 449 and  
model ~= 537 and model ~= 538 and model ~= 570 and model ~= 569 and model ~= 590 and model ~= 441 and  
model ~= 464 and model ~= 501 and model ~= 465 and model ~= 564 and model ~= 594 then 
return true 
else 
return false 
end 
end 
  
  
function deactivateNeon(vehicle) 
if getElementType(vehicle) == "vehicle" then 
setElementData(vehicle,"neonlight","off!!!") 
for i,mark in ipairs(getElementsByType("marker")) do 
local type = getMarkerType(mark) 
if type == "corona" then 
local data1 = getElementData(vehicle,"neonMarker1") 
local data2 = getElementData(vehicle,"neonMarker2") 
if data1 == mark or data2 == mark then 
setMarkerColor(mark,0,0,0,0) 
end 
end 
end 
return true 
else 
return false 
end 
end 
  
function openGui(plr) 
local veh = getPedOccupiedVehicle(plr) 
if haveNeon(veh) then 
triggerClientEvent(plr,"openNeonGui",root) 
end 
end 
  
addEventHandler("onPlayerJoin",root,function() 
for i,veh in ipairs(getElementsByType("vehicle")) do 
data = getElementData(veh,"neonlight") 
setElementData(veh,"neonlight",data) 
end 
end) 
  
for i,veh in ipairs(getElementsByType("vehicle")) do 
deactivateNeon(veh) 
end 
  
addEvent("closeNeonGui",true) 
addEventHandler("closeNeonGui",root,function(r,g,b) 
local veh = getPedOccupiedVehicle(source) 
setNeonColor(veh,r,g,b) 
end) 

Client

sx,sy = guiGetScreenSize() 
function wantNeon(state)
if state == true then
addEventHandler("onClientPreRender",root,loop)
else
removeEventHandler("onClientPreRender",root,loop)
end
end
function loop()
for i,veh in ipairs(getElementsByType("vehicle")) do
x,y,z = getElementPosition(veh)
a,b,c = getElementPosition(getLocalPlayer())
dis = getDistanceBetweenPoints3D(x,y,z,a,b,c)
vis = isElementOnScreen(veh)
if vis and dis < 50 then
x,y,rot = getElementRotation(veh)
if x < 50 or x > 310 then
if y < 50 or y > 310 then
if getElementData(veh,"neonlight") ~= "off!!!" then
drawIt(veh,rot)
end
end
end
end
end
end
 
addEventHandler("onClientPreRender",root,loop)
 
function drawIt(veh,rot)
x,y,z = getElementPosition(veh)
az = getGroundPosition(x,y,z)
dis = getDistanceBetweenPoints3D(x,y,z,x,y,az)
if dis < 2 then
a = 100
model = getElementModel(veh)
data = getElementData(veh,"neonlight")
if data then
r = tonumber(gettok(data,1,string.byte(",")))
g = tonumber(gettok(data,2,string.byte(",")))
b = tonumber(gettok(data,3,string.byte(",")))
ck = tonumber(gettok(data,4,string.byte(",")))
--if ck and ck <= 255 and ck >= 0 then a = ck end
rot = rot
if
--rot < 1 or rot > 359
1 == 1
then
rx,ry,rz = getElementRotation(veh)
x,y,z = getElementPosition(veh)
r3 = rz-30
r4 = rz-150
r3 = math.abs(r3-360)
r4 = math.abs(r4-360)
r1 = r3-60
r2 = r4-300
r1 = math.rad(r1)
r2 = math.rad(r2)
r3 = math.rad(r3)
r4 = math.rad(r4)
cr1 = math.cos(r1)
sr1 = math.sin(r1)
cr2 = math.cos(r2)
sr2 = math.sin(r2)
cr3 = math.cos(r3)
sr3 = math.sin(r3)
cr4 = math.cos(r4)
sr4 = math.sin(r4)
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
cr1 = 1.03*cr1
sr1 = 1.03*sr1
cr2 = 1.03*cr2
sr2 = 1.03*sr2
cr3 = 1.03*cr3
sr3 = 1.03*sr3
cr4 = 1.03*cr4
sr4 = 1.03*sr4
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
 
cr1 = 1.02*cr1
sr1 = 1.02*sr1
cr2 = 1.02*cr2
sr2 = 1.02*sr2
cr3 = 1.02*cr3
sr3 = 1.02*sr3
cr4 = 1.02*cr4
sr4 = 1.02*sr4
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
 
cr1 = 1.02*cr1
sr1 = 1.02*sr1
cr2 = 1.02*cr2
sr2 = 1.02*sr2
cr3 = 1.02*cr3
sr3 = 1.02*sr3
cr4 = 1.02*cr4
sr4 = 1.02*sr4
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
 
cr1 = 1.02*cr1
sr1 = 1.02*sr1
cr2 = 1.02*cr2
sr2 = 1.02*sr2
cr3 = 1.02*cr3
sr3 = 1.02*sr3
cr4 = 1.02*cr4
sr4 = 1.02*sr4
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
 
cr1 = 1.02*cr1
sr1 = 1.02*sr1
cr2 = 1.02*cr2
sr2 = 1.02*sr2
cr3 = 1.02*cr3
sr3 = 1.02*sr3
cr4 = 1.02*cr4
sr4 = 1.02*sr4
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
 
cr1 = 1.02*cr1
sr1 = 1.02*sr1
cr2 = 1.02*cr2
sr2 = 1.02*sr2
cr3 = 1.02*cr3
sr3 = 1.02*sr3
cr4 = 1.02*cr4
sr4 = 1.02*sr4
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
 
cr1 = 1.02*cr1
sr1 = 1.02*sr1
cr2 = 1.02*cr2
sr2 = 1.02*sr2
cr3 = 1.02*cr3
sr3 = 1.02*sr3
cr4 = 1.02*cr4
sr4 = 1.02*sr4
x1 = sr1+x
y1 = cr1+y
x2 = sr2+x
y2 = cr2+y
x3 = sr3+x
y3 = cr3+y
x4 = sr4+x
y4 = cr4+y
az1 = getGroundPosition(x1,y1,z+2)
az2 = getGroundPosition(x2,y2,z+2)
az3 = getGroundPosition(x3,y3,z+2)
az4 = getGroundPosition(x4,y4,z+2)
dxDrawLine3D(x1,y1,az1,x2,y2,az2,tocolor(r,g,b,a),3)
dxDrawLine3D(x3,y3,az3,x4,y4,az4,tocolor(r,g,b,a),3)
 
cr1 = 1.02*cr1
sr1 = 1.02*sr1
cr2 = 1.02*cr2
sr2 = 1.02*sr2
cr3 = 1.02*cr3
sr3 = 1.02*sr3
cr4 = 1.02*cr4
sr4 = 1.02*sr4
x1 = sr1+x
Edited by Guest
Link to comment
addEventHandler("onPlayerJoin",root,function() 
for i,veh in ipairs(getElementsByType("vehicle")) do 
data = getElementData(veh,"neonlight") 
setElementData(veh,"neonlight",data) 
end 
end) 

addEventHandler("onPlayerJoin",root,function() 
for i,veh in ipairs(getElementsByType("vehicle")) do 
data = getElementData(veh,"neonlight") 
if data then setElementData(veh,"neonlight",data) end 
end 
end) 

Link to comment
addEventHandler("onPlayerJoin",root,function() 
for i,veh in ipairs(getElementsByType("vehicle")) do 
data = getElementData(veh,"neonlight") 
setElementData(veh,"neonlight",data) 
end 
end) 

addEventHandler("onPlayerJoin",root,function() 
for i,veh in ipairs(getElementsByType("vehicle")) do 
data = getElementData(veh,"neonlight") 
if data then setElementData(veh,"neonlight",data) end 
end 
end) 

[19:07:28] WARNING: neon\neon.lua:43: Bad argument @ 'getElementData' [Expected element at argument 1, got boolean]

Link to comment

[19:07:28] WARNING: neon\neon.lua:43: Bad argument @ 'getElementData' [Expected element at argument 1, got boolean]

  
function haveNeon(vehicle) 
local data = getElementData(vehicle,"haveneon") or false 
if data then 
return true 
else 
return false 
end 
end 
  

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...