kevenvz Posted September 18, 2013 Share Posted September 18, 2013 Hey I got a problem, I think an average scripter can read this code: function dxMoveElement(dxElement,endX,endY,speed) local posX = getElementData(dxElement,"posX") local posY = getElementData(dxElement,"posY") addEventHandler("onClientRender",root, function moveElement(posX,posY) if (posX > endX) then setElementData(dxElement,"posX",posX - speed) elseif (posX < endX) then setElementData(dxElement,"posX",posX + speed) end if (posY > endY) then setElementData(dxElement,"posX",posY - speed) elseif (posY < endY) then setElementData(dxElement,"posX",posY + speed) end if (posY == endY) and (posX == endX) then removeEventHandler("onClientRender",root,moveElement) end end) end So I got this bug: ERROR: Loading script failed: userpanel/dxgui.lua:5: '(' expected near 'moveElement' Can anybody say what is wrong with the code? So I can fix it? Link to comment
Moderators IIYAMA Posted September 18, 2013 Moderators Share Posted September 18, 2013 function moveElement(posX,posY) if (posX > endX) then setElementData(dxElement,"posX",posX - speed) elseif (posX < endX) then setElementData(dxElement,"posX",posX + speed) end if (posY > endY) then setElementData(dxElement,"posX",posY - speed) elseif (posY < endY) then setElementData(dxElement,"posX",posY + speed) end if (posY == endY) and (posX == endX) then removeEventHandler("onClientRender",root,moveElement) end end function dxMoveElement(dxElement,endX,endY,speed) local posX = getElementData(dxElement,"posX") local posY = getElementData(dxElement,"posY") addEventHandler("onClientRender",root,moveElement) end addEventHandler("onClientRender",root,function moveElement(posX,posY) end) Link to comment
kevenvz Posted September 18, 2013 Author Share Posted September 18, 2013 Still don't work, trying to compare 2 nill values! Link to comment
Moderators IIYAMA Posted September 18, 2013 Moderators Share Posted September 18, 2013 addEventHandler("onClientRender",root,moveElement,posX,posY) Link to comment
qaisjp Posted September 18, 2013 Share Posted September 18, 2013 That will not work IIYAMA, addEventHandler doesn't take arguments. Do this: function() if (posX > endX) then setElementData(dxElement,"posX",posX - speed) elseif (posX < endX) then setElementData(dxElement,"posX",posX + speed) end if (posY > endY) then setElementData(dxElement,"posX",posY - speed) elseif (posY < endY) then setElementData(dxElement,"posX",posY + speed) end if (posY == endY) and (posX == endX) then removeEventHandler("onClientRender",root,moveElement) end end function dxMoveElement(dxElement,endX,endY,speed) local posX = getElementData(dxElement,"posX") local posY = getElementData(dxElement,"posY") addEventHandler("onClientRender",root,moveElement) end I removed the name and arguments, like so: function moveElement(posX,posY) The reason it compared two nils is because you were redeclaring the local when you made the function instead of inheriting the local environment the stack above it. Also, your method is inefficient. 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