Shagwrath Posted June 16, 2013 Share Posted June 16, 2013 (edited) My script seems simple, but i'm under a size restraint so i'm trying to do the code as clean and efficient as possible. Anyways I have 18 markers, split into 3 tables, and im trying to set the color of all the markers in the table with setMarkerColor. Here's my script: server.lua function intHelveteLights() local s = 2 local yP = 2411 m_1 = createMarker(2564.4,yP,23.3, "corona",s,0,0,255,255) m_4 = createMarker(2571.4,yP,23.3, "corona",s,0,0,255,255) m_7 = createMarker(2578.4,yP,23.3, "corona",s,0,0,255,255) m_10 = createMarker(2585,yP,23.3, "corona",s,0,0,255,255) m_13 = createMarker(2592.4,yP,23.3,"corona",s,0,0,255,255) m_16 = createMarker(2599,yP,23.3, "corona",s,0,0,255,255) m_2 = createMarker(2566.4,yP,23.3, "corona",s,255,0,0,255) m_5 = createMarker(2573.4,yP,23.3, "corona",s,255,0,0,255) m_8 = createMarker(2580.4,yP,23.3, "corona",s,255,0,0,255) m_11 = createMarker(2587,yP,23.3, "corona",s,255,0,0,255) m_14 = createMarker(2594.4,yP,23.3,"corona",s,255,0,0,255) m_17 = createMarker(2601,yP,23.3, "corona",s,255,0,0,255) m_3 = createMarker(2568.4,yP,23.3, "corona",s,0,255,0,255) m_6 = createMarker(2575.4,yP,23.3, "corona",s,0,255,0,255) m_9 = createMarker(2582.4,yP,23.3, "corona",s,0,255,0,255) m_12 = createMarker(2589,yP,23.3, "corona",s,0,255,0,255) m_15 = createMarker(2596.4,yP,23.3,"corona",s,0,255,0,255) m_18 = createMarker(2603,yP,23.3, "corona",s,0,255,0,255) e_1 = createMarker(2581.3,2409.7,35.1, "corona",s,255,0,0,255) e_2 = createMarker(2585.3,2409.7,35.1, "corona",s,255,0,0,255) tier1 = { {m_1}, {m_4}, {m_7}, {m_10}, {m_13}, {m_16} } tier2 = { {m_2}, {m_5}, {m_8}, {m_11}, {m_14}, {m_17} } tier3 = { {m_3}, {m_6}, {m_9}, {m_12}, {m_15}, {m_18} } helveteStageLights = setTimer( function(tier1,tier2,tier3) local a = 255 randCol = math.random(1,10) outputChatBox("randCol: "..randCol) if randCol == 1 then --RED-- setMarkerColor(tier1,255,0,0,a) setMarkerColor(tier2,255,0,0,a) setMarkerColor(tier3,255,0,0,a) elseif randCol == 2 then --GREEN-- setMarkerColor(tier1,0,255,0,a) setMarkerColor(tier2,0,255,0,a) setMarkerColor(tier3,0,255,0,a) elseif randCol == 3 then --BLUE-- setMarkerColor(tier1,0,0,255,a) setMarkerColor(tier2,0,0,255,a) setMarkerColor(tier3,0,0,255,a) elseif randCol == 4 then --HELVETE-- setMarkerColor(tier1,0,102,107,a) setMarkerColor(tier2,0,102,107,a) setMarkerColor(tier3,0,102,107,a) elseif randCol == 5 then --YELLOW-- setMarkerColor(tier1,255,255,0,a) setMarkerColor(tier2,255,255,0,a) setMarkerColor(tier3,255,255,0,a) elseif randCol == 6 then --WHITE-- setMarkerColor(tier1,255,255,255,a) setMarkerColor(tier2,255,255,255,a) setMarkerColor(tier3,255,255,255,a) elseif randCol == 7 then --2 TONE 1-- red/blue/red setMarkerColor(tier1,255,0,0,a) setMarkerColor(tier2,0,0,255,a) setMarkerColor(tier3,255,0,0,a) elseif randCol == 8 then --2 TONE 2-- yellow/green/yellow setMarkerColor(tier1,255,255,0,a) setMarkerColor(tier2,0,255,0,a) setMarkerColor(tier3,255,255,0,a) elseif randCol == 9 then --3 TONE 1-- red/green/blue setMarkerColor(tier1,255,0,0,a) setMarkerColor(tier2,0,255,0,a) setMarkerColor(tier3,0,0,255,a) elseif randCol == 10 then --3 TONE 2-- yellow/pink/? setMarkerColor(tier1,255,255,0,a) setMarkerColor(tier2,255,0,255,a) setMarkerColor(tier3,0,255,255,a) end end,1000,0) end addEventHandler("onResourceStart",getRootElement(),intHelveteLights) any help would be greatly appreciated. Thanks! Edited June 16, 2013 by Guest Link to comment
Castillo Posted June 16, 2013 Share Posted June 16, 2013 Use loops. http://lua.lickert.net/loop/index_en.html Link to comment
Shagwrath Posted June 16, 2013 Author Share Posted June 16, 2013 Ive been trying this and i get an error saying "bad argument #1 to 'ipairs'(table expected, got nil)" for i,v in ipairs(tier1) do setMarkerColor(v,255,0,0,a) end i still don't get what I'm doing wrong Link to comment
iPrestege Posted June 17, 2013 Share Posted June 17, 2013 No it's not right . Here's an example : local aTable = { [aMarker] = true, } addCommandHandler ('aMarkerColor', function ( ) for v in pairs ( aTable ) do setMarkerColor ( v,255,0,0,255 ) end end ) Link to comment
mcer Posted June 17, 2013 Share Posted June 17, 2013 Idk if the unpack option works here too, U make me a new query!! Link to comment
iPrestege Posted June 17, 2013 Share Posted June 17, 2013 Yes you can but with a other way. Link to comment
Castillo Posted June 17, 2013 Share Posted June 17, 2013 To put them in a table, you can do: tier1 = { createMarker(2564.4,yP,23.3, "corona",s,0,0,255,255), createMarker(2571.4,yP,23.3, "corona",s,0,0,255,255), createMarker(2578.4,yP,23.3, "corona",s,0,0,255,255), createMarker(2585,yP,23.3, "corona",s,0,0,255,255), createMarker(2592.4,yP,23.3,"corona",s,0,0,255,255), createMarker(2599,yP,23.3, "corona",s,0,0,255,255) } tier2 = { m_2 = createMarker(2566.4,yP,23.3, "corona",s,255,0,0,255), m_5 = createMarker(2573.4,yP,23.3, "corona",s,255,0,0,255), m_8 = createMarker(2580.4,yP,23.3, "corona",s,255,0,0,255), m_11 = createMarker(2587,yP,23.3, "corona",s,255,0,0,255), m_14 = createMarker(2594.4,yP,23.3,"corona",s,255,0,0,255), m_17 = createMarker(2601,yP,23.3, "corona",s,255,0,0,255) } tier3 = { createMarker(2568.4,yP,23.3, "corona",s,0,255,0,255), createMarker(2575.4,yP,23.3, "corona",s,0,255,0,255), createMarker(2582.4,yP,23.3, "corona",s,0,255,0,255), createMarker(2589,yP,23.3, "corona",s,0,255,0,255), createMarker(2596.4,yP,23.3,"corona",s,0,255,0,255), createMarker(2603,yP,23.3, "corona",s,0,255,0,255) } Link to comment
Shagwrath Posted June 17, 2013 Author Share Posted June 17, 2013 tested and working. thanks guys makes a lot more sense to me now function intHelveteLights() local s = 2 local yP = 2411 m_1 = createMarker(2564.4,yP,23.3, "corona",s,0,0,255,255) m_4 = createMarker(2571.4,yP,23.3, "corona",s,0,0,255,255) m_7 = createMarker(2578.4,yP,23.3, "corona",s,0,0,255,255) m_10 = createMarker(2585,yP,23.3, "corona",s,0,0,255,255) m_13 = createMarker(2592.4,yP,23.3,"corona",s,0,0,255,255) m_16 = createMarker(2599,yP,23.3, "corona",s,0,0,255,255) m_2 = createMarker(2566.4,yP,23.3, "corona",s,255,0,0,255) m_5 = createMarker(2573.4,yP,23.3, "corona",s,255,0,0,255) m_8 = createMarker(2580.4,yP,23.3, "corona",s,255,0,0,255) m_11 = createMarker(2587,yP,23.3, "corona",s,255,0,0,255) m_14 = createMarker(2594.4,yP,23.3,"corona",s,255,0,0,255) m_17 = createMarker(2601,yP,23.3, "corona",s,255,0,0,255) m_3 = createMarker(2568.4,yP,23.3, "corona",s,0,255,0,255) m_6 = createMarker(2575.4,yP,23.3, "corona",s,0,255,0,255) m_9 = createMarker(2582.4,yP,23.3, "corona",s,0,255,0,255) m_12 = createMarker(2589,yP,23.3, "corona",s,0,255,0,255) m_15 = createMarker(2596.4,yP,23.3,"corona",s,0,255,0,255) m_18 = createMarker(2603,yP,23.3, "corona",s,0,255,0,255) e_1 = createMarker(2581.3,2409.7,35.1, "corona",s,255,0,0,255) e_2 = createMarker(2585.3,2409.7,35.1, "corona",s,255,0,0,255) local tier1 = { [m_1] = true, [m_4] = true, [m_7] = true, [m_10] = true, [m_13] = true, [m_16] = true } local tier2 = { [m_2] = true, [m_5] = true, [m_8] = true, [m_11] = true, [m_14] = true, [m_17] = true } local tier3 = { [m_3] = true, [m_6] = true, [m_9] = true, [m_12] = true, [m_15] = true, [m_18] = true } helveteStageLights = setTimer( function() local a = 255 randCol = math.random(1,10) if randCol == 1 then --RED-- for v in pairs ( tier1 and tier2 and tier3 ) do setMarkerColor(v,255,0,0,a) end for v in pairs ( tier2 ) do setMarkerColor(v,255,0,0,a) end for v in pairs ( tier3 ) do setMarkerColor(v,255,0,0,a) end elseif randCol == 2 then --GREEN-- for v in pairs ( tier1 ) do setMarkerColor(v,0,255,0,a) end for v in pairs ( tier2 ) do setMarkerColor(v,0,255,0,a) end for v in pairs ( tier3 ) do setMarkerColor(v,0,255,0,a) end elseif randCol == 3 then --BLUE-- for v in pairs ( tier1 ) do setMarkerColor(v,0,0,255,a) end for v in pairs ( tier2 ) do setMarkerColor(v,0,0,255,a) end for v in pairs ( tier3 ) do setMarkerColor(v,0,0,255,a) end elseif randCol == 4 then --HELVETE-- for v in pairs ( tier1 ) do setMarkerColor(v,0,102,107,a) end for v in pairs ( tier2 ) do setMarkerColor(v,0,102,107,a) end for v in pairs ( tier3 ) do setMarkerColor(v,0,102,107,a) end elseif randCol == 5 then --YELLOW-- for v in pairs ( tier1 ) do setMarkerColor(v,255,255,0,a) end for v in pairs ( tier2 ) do setMarkerColor(v,255,255,0,a) end for v in pairs ( tier3 ) do setMarkerColor(v,255,255,0,a) end elseif randCol == 6 then --WHITE-- for v in pairs ( tier1 ) do setMarkerColor(v,255,255,255,a) end for v in pairs ( tier2 ) do setMarkerColor(v,255,255,255,a) end for v in pairs ( tier3 ) do setMarkerColor(v,255,255,255,a) end elseif randCol == 7 then --2 TONE 1-- red/blue/red for v in pairs ( tier1 ) do setMarkerColor(v,255,0,0,a) end for v in pairs ( tier2 ) do setMarkerColor(v,0,255,0,a) end for v in pairs ( tier3 ) do setMarkerColor(v,0,0,255,a) end elseif randCol == 8 then --2 TONE 2-- yellow/green/yellow for v in pairs ( tier1 ) do setMarkerColor(v,255,255,0,a) end for v in pairs ( tier2 ) do setMarkerColor(v,0,255,0,a) end for v in pairs ( tier3 ) do setMarkerColor(v,255,255,0,a) end elseif randCol == 9 then --3 TONE 1-- red/green/blue for v in pairs ( tier1 ) do setMarkerColor(v,255,0,0,a) end for v in pairs ( tier2 ) do setMarkerColor(v,0,255,0,a) end for v in pairs ( tier3 ) do setMarkerColor(v,0,0,255,a) end elseif randCol == 10 then --3 TONE 2-- yellow/pink/? for v in pairs ( tier1 ) do setMarkerColor(v,255,255,0,a) end for v in pairs ( tier2 ) do setMarkerColor(v,255,0,255,a) end for v in pairs ( tier3 ) do setMarkerColor(v,0,255,255,a) end end end,1000,0) end addEventHandler("onResourceStart",getRootElement(),intHelveteLights) Link to comment
iPrestege Posted June 17, 2013 Share Posted June 17, 2013 You're welcome. P.S : Using SolidSnake's Code would be more better . Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now