dzek (varez) Posted February 6, 2010 Posted February 6, 2010 hi i read somewhere here (cant find it ;/) that you cannot move objects that are stored in .map file. I'm asking becouse i did, and when i'm getting objects i can destroy it, it has type of "object" etc etc, but i cannot make it move and if i make same object via script, then move, its all ok. is that tru or there is something wrong here: function moveTo(obj, movX, movY, movZ, movTime, posX, posY, posZ) --destroyElement(obj) local test=createObject(3043, posX, posY+10, posZ) moveObject (test, 3000, posX, posY, posZ+10) moveObject (obj, 3000, -2494.3918457031, 1199.9107666016, 43.207420349121) --outputChatBox(tonumber(movTime)) --setTimer (moveTo, movTime+1000, 1, obj, posX, posY, posZ, movTime, movX, movY, movZ) end local myElements = getElementsByType ("object", getRootElement()) num=0 for key,val in ipairs(myElements) do num=num+1 --outputChatBox(num) local moving = getElementData(val, "moving") if (moving) then local posX = getElementData(val, "posX") local posY = getElementData(val, "posY") local posZ = getElementData(val, "posZ") local movX = getElementData(val, "movX") local movY = getElementData(val, "movY") local movZ = getElementData(val, "movZ") local movTime = getElementData(val, "movTime") moveTo(val, movX, movY, movZ, movTime, posX, posY, posZ) end end Multi theft auto tools - replace cars and peds, move your map or compile your Lua files online! programista php rzeszów Need free webhosting for your small site? PM me. Need help with portforwarding? PM me. Do not PM me asking for help with scripting. Having problems with port forwarding? Send me pm, I can do whole thing for you using TeamViewer (already helped about 20 people, no worries)!
Gamesnert Posted February 6, 2010 Posted February 6, 2010 Try doing tonumber(getElementData(...)). Projects: Slothbot | Maximap
Aibo Posted February 6, 2010 Posted February 6, 2010 everything moves fine, this'll move all objects: function moveAll(ms, byX, byY, byZ) for i,theObject in ipairs(getElementsByType('object')) do local x, y, z = getElementPosition(theObject) x, y, z = x + byX, y + byY, z + byZ moveObject(theObject, ms, x, y, z) end end and what are you trying to achieve with getElementData? ?
dzek (varez) Posted February 7, 2010 Author Posted February 7, 2010 @Gamesnert, actually I have replaced all values that should be loaded from map file by numbers (look at the code) moveObject (obj, 3000, -2494.3918457031, 1199.9107666016, 43.207420349121) @xbost, i will keep trying. i use getElementData for reading addional attributes in map file (i think its ok?) Multi theft auto tools - replace cars and peds, move your map or compile your Lua files online! programista php rzeszów Need free webhosting for your small site? PM me. Need help with portforwarding? PM me. Do not PM me asking for help with scripting. Having problems with port forwarding? Send me pm, I can do whole thing for you using TeamViewer (already helped about 20 people, no worries)!
Aibo Posted February 7, 2010 Posted February 7, 2010 here, this moves moving objects on the map like this one (simple elevator going up-down): <object id="testobject" model="3115" interior="0" dimension="0" posX="3446.6684570313" posY="-1914.6517333984" posZ="1.2000885009766" rotX="0" rotY="0" rotZ="0" moving="true" movTime="5000" movX="3446.6684570313" movY="-1914.6517333984" movZ="13.75008392334" /> function moveTo(obj, movX, movY, movZ, movTime, posX, posY, posZ) local x, y, z = getElementPosition(obj) if (tostring(z) ~= tostring(movZ)) or (tostring(y) ~= tostring(movY)) or (tostring(x) ~= tostring(movX)) then moveObject(obj, movTime, movX, movY, movZ) else moveObject(obj, movTime, posX, posY, posZ) end end addCommandHandler("movetest", function () for key,obj in ipairs(getElementsByType("object")) do if getElementData(obj, "moving") then local posX = getElementData(obj, "posX") local posY = getElementData(obj, "posY") local posZ = getElementData(obj, "posZ") local movX = getElementData(obj, "movX") local movY = getElementData(obj, "movY") local movZ = getElementData(obj, "movZ") local movTime = getElementData(obj, "movTime") moveTo(obj, movX, movY, movZ, movTime, posX, posY, posZ) setTimer(moveTo, movTime+1000, 0, obj, movX, movY, movZ, movTime, posX, posY, posZ) end end end ) i had to put tostring() in moveTo function, cause for some reason Lua thinks 13.75008392334 never equal 13.75008392334, even if z and movZ are the same number and i've tried tonumber() everything, still the same. ofc maybe i was just missing something there. ?
samgreen Posted February 24, 2010 Posted February 24, 2010 i had to put tostring() in moveTo function, cause for some reason Lua thinks 13.75008392334 never equal 13.75008392334, even if z and movZ are the same number and i've tried tonumber() everything, still the same. ofc maybe i was just missing something there. You should not compare floating point numbers like this. It is best to compare them with an epsilon value as such: local epsilon = 0.0000001 function compareFloats(a, b) if math.abs(a - b) < epsilon then return true end return false end I have not tested this code. Good luck! http://lua-users.org/wiki/FloatingPoint
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