HeK Posted April 1, 2012 Share Posted April 1, 2012 Im getting the Bad argument error on this gate script i found on the community resources, i couldn't fix it my self, i don't really wanna mess it up. Error: WARNING: [scripts]\gate\gateLoader.lua:24: Bad argument @ 'getTeamName' Script: gateList = {} gateListMoveToX = {} gateListMoveToY = {} gateListMoveToZ = {} gateListMoveTorX = {} gateListMoveTorY = {} gateListMoveTorZ = {} shapes = {} team = {} temp = {} status = {} -- 0 = not moving. 1 = moving to open. 2 = moving to close function checkClass(hitElement, matchingDimension) if ( getElementType(hitElement) == "vehicle" ) then hitElement = getVehicleController(hitElement) end for i=0,#gateList do local name = getTeamName(getPlayerTeam(hitElement)) if(name == false) then name = "false" end if ( name == team[i] or name == "true") then detection = isElementWithinColShape ( hitElement, shapes[i] ) if detection == true then move(i, false) end end end end function loadup(startedResource) gates = xmlLoadFile ( "gates.xml" ) count = xmlNodeGetChildren(gates) for i=1,#count do local gate = xmlFindChild ( gates, "gate", i-1 ) local attributes = xmlNodeGetAttributes ( gate ) for name,value in pairs ( attributes ) do temp["" .. name .. ""] = value end gateList[i] = createObject(temp["objectID"], temp["x"], temp["y"], temp["z"], temp["rx"], temp["ry"], temp["rz"]) gateListMoveToX[i] = temp["x2"] gateListMoveToY[i] = temp["y2"] gateListMoveToZ[i] = temp["z2"] gateListMoveTorX[i] = temp["rx2"] gateListMoveTorY[i] = temp["ry2"] gateListMoveTorZ[i] = temp["rz2"] outputDebugString("" .. temp["objectID"] .. "") shapes[i] = createColRectangle(temp["collisionx"], temp["collisionY"], temp["collisionZ"], temp["collisionSize"],temp["collisionSize"]) team[i] = temp["team"] setElementInterior(gateList[i], temp["interiorID"]) status[i] = 0 addEventHandler ( "onColShapeHit", shapes[i], checkClass ) end xmlUnloadFile ( gates ) end function move(gateIndex, rotate) -- 0 = not moving. 1 = moving to open. 2 = moving to close outputDebugString("moving..") x,y,z = getElementPosition(gateList[gateIndex]) rx,ry,rz = getObjectRotation(gateList[gateIndex]) if status[gateIndex] == 0 then moveObject ( gateList[gateIndex], 2000, gateListMoveToX[gateIndex], gateListMoveToY[gateIndex],gateListMoveToZ[gateIndex]) status[gateIndex] = 1 setTimer ( moveBack, 3000, 1,gateIndex, x,y,z,rx,ry,rz, raising ) end end function moveBack(index, x,y,z, raising) if status[index] == 1 then status[index] = 2 moveObject ( gateList[index], 2000, x,y,z, gateListMoveTorX[gateIndex],gateListMoveTorY[gateIndex],gateListMoveTorZ[gateIndex],rx,ry,rz ) setTimer ( resetTimer, 2000, 1, index ) end end function resetTimer(index) status[index] = 0 end addEventHandler ( "onResourceStart", getResourceRootElement(getThisResource()), loadup ) Link to comment
Castillo Posted April 1, 2012 Share Posted April 1, 2012 Try this: gateList = {} gateListMoveToX = {} gateListMoveToY = {} gateListMoveToZ = {} gateListMoveTorX = {} gateListMoveTorY = {} gateListMoveTorZ = {} shapes = {} team = {} temp = {} status = {} -- 0 = not moving. 1 = moving to open. 2 = moving to close function checkClass(hitElement, matchingDimension) if ( getElementType(hitElement) == "vehicle" ) then hitElement = getVehicleController(hitElement) end for i=0,#gateList do local name = getPlayerTeam ( hitElement ) and getTeamName ( getPlayerTeam ( hitElement ) ) or "None" if(name == false) then name = "false" end if ( name == team[i] or name == "true") then detection = isElementWithinColShape ( hitElement, shapes[i] ) if detection == true then move(i, false) end end end end function loadup(startedResource) gates = xmlLoadFile ( "gates.xml" ) count = xmlNodeGetChildren(gates) for i=1,#count do local gate = xmlFindChild ( gates, "gate", i-1 ) local attributes = xmlNodeGetAttributes ( gate ) for name,value in pairs ( attributes ) do temp["" .. name .. ""] = value end gateList[i] = createObject(temp["objectID"], temp["x"], temp["y"], temp["z"], temp["rx"], temp["ry"], temp["rz"]) gateListMoveToX[i] = temp["x2"] gateListMoveToY[i] = temp["y2"] gateListMoveToZ[i] = temp["z2"] gateListMoveTorX[i] = temp["rx2"] gateListMoveTorY[i] = temp["ry2"] gateListMoveTorZ[i] = temp["rz2"] outputDebugString("" .. temp["objectID"] .. "") shapes[i] = createColRectangle(temp["collisionx"], temp["collisionY"], temp["collisionZ"], temp["collisionSize"],temp["collisionSize"]) team[i] = temp["team"] setElementInterior(gateList[i], temp["interiorID"]) status[i] = 0 addEventHandler ( "onColShapeHit", shapes[i], checkClass ) end xmlUnloadFile ( gates ) end function move(gateIndex, rotate) -- 0 = not moving. 1 = moving to open. 2 = moving to close outputDebugString("moving..") x,y,z = getElementPosition(gateList[gateIndex]) rx,ry,rz = getObjectRotation(gateList[gateIndex]) if status[gateIndex] == 0 then moveObject ( gateList[gateIndex], 2000, gateListMoveToX[gateIndex], gateListMoveToY[gateIndex],gateListMoveToZ[gateIndex]) status[gateIndex] = 1 setTimer ( moveBack, 3000, 1,gateIndex, x,y,z,rx,ry,rz, raising ) end end function moveBack(index, x,y,z, raising) if status[index] == 1 then status[index] = 2 moveObject ( gateList[index], 2000, x,y,z, gateListMoveTorX[gateIndex],gateListMoveTorY[gateIndex],gateListMoveTorZ[gateIndex],rx,ry,rz ) setTimer ( resetTimer, 2000, 1, index ) end end function resetTimer(index) status[index] = 0 end addEventHandler ( "onResourceStart", getResourceRootElement(getThisResource()), loadup ) Link to comment
Kenix Posted April 1, 2012 Share Posted April 1, 2012 Replace 24 line with this. local uTeam = getPlayerTeam( hitElement ) local name = uTeam and getTeamName( uTeam ) or false Link to comment
HeK Posted April 1, 2012 Author Share Posted April 1, 2012 No more errors, but now it says "INFO: moving..." in the server window and the gate doesn't move. Another lua with this resource (used "code" instead of "lua", forum wasn't showing my post): Editor = {} Gate = {} Gate2 = {} Precision = {} status = {} coll = {} coll2 = {} coll3 = {} coll4 = {} -- this script mod is (no longer) PRIVATE -- - Deject3d function startBuilding(playerSource, commandName, objectid) if not objectid then outputChatBox("usage: /addgate objectid teamname", playerSource) end team = getTeamName(getPlayerTeam(playerSource)) if team == false then team = "" end for i = 1,20 do if Editor[i] == playerSource then destroyElement(Gate[i]) Gate[i] = null Editor[i] = null Precision[i] = null end if Editor[i] == null then Editor[i] = playerSource -- set Editor[i] to who made the object --creating object -v local x,y,z = getElementPosition(playerSource) object = createObject ( objectid, x + 3,y + 3,z) interior = getElementInterior ( playerSource ) setElementInterior(object,interior) --created object -^ Gate[i] = object -- added object identifier to the array, corresponds to who created it Precision[i] = .5 -- default precision bindKey(playerSource, "i", "down", moveIt) bindKey(playerSource, "j", "down", moveIt) bindKey(playerSource, "k", "down", moveIt) bindKey(playerSource, "l", "down", moveIt) bindKey(playerSource, "mouse_wheel_up", "down", moveIt) bindKey(playerSource, "mouse_wheel_down", "down", moveIt) bindKey(playerSource, "pgup", "down", moveIt) bindKey(playerSource, "pgdn", "down", moveIt) bindKey(playerSource, "u", "down", moveIt) bindKey(playerSource, "o", "down", moveIt) bindKey(playerSource, "[", "down", moveIt) bindKey(playerSource, "]", "down", moveIt) bindKey(playerSource, "enter", "down", nextPosition ,objectid, team) bindKey(playerSource, "delete", "down", removeIt, playerSource) break -- done adding our object and who created it to the arrays... stop the loop end end end function nextPosition(playerSource, key, keyState, objectid, team) unbindKey ( playerSource, "i" ) unbindKey ( playerSource, "j" ) unbindKey ( playerSource, "k" ) unbindKey ( playerSource, "l" ) unbindKey ( playerSource, "pgup" ) unbindKey ( playerSource, "pgdn" ) unbindKey ( playerSource, "mouse_wheel_down") unbindKey ( playerSource, "mouse_wheel_up" ) unbindKey ( playerSource, "enter" ) unbindKey ( playerSource, "delete" ) unbindKey ( playerSource, "u" ) unbindKey ( playerSource, "o" ) unbindKey ( playerSource, "[" ) unbindKey ( playerSource, "]" ) outputDebugString("object 1 set. object 2 controlled. ID: " .. objectid .." team: " .. team .. "") for i = 1,20 do if Editor[i] == playerSource then --creating object -v local x,y,z = getElementPosition(Gate[i]) local rx,ry,rz= getObjectRotation(Gate[i]) object = createObject ( objectid, x,y,z,rx,ry,rz) interior = getElementInterior ( playerSource ) setElementInterior(object,interior) --created object -^ Gate2[i] = object -- added object identifier to the array, corresponds to who created it Precision[i] = .5 -- default precision bindKey(playerSource, "i", "down", moveIt2) bindKey(playerSource, "j", "down", moveIt2) bindKey(playerSource, "k", "down", moveIt2) bindKey(playerSource, "l", "down", moveIt2) bindKey(playerSource, "mouse_wheel_up", "down", moveIt2) bindKey(playerSource, "mouse_wheel_down", "down", moveIt2) bindKey(playerSource, "pgup", "down", moveIt2) bindKey(playerSource, "pgdn", "down", moveIt2) bindKey(playerSource, "u", "down", moveIt2) bindKey(playerSource, "o", "down", moveIt2) bindKey(playerSource, "[", "down", moveIt2) bindKey(playerSource, "]", "down", moveIt2) bindKey(playerSource, "enter", "down", collisionObject, team, objectID) bindKey(playerSource, "delete", "down", removeIt, playerSource) break -- done adding our object and who created it to the arrays... stop the loop end end end function changePrecision(playerSource,commandName,value) if value then for i = 1,20 do if Editor[i] == playerSource then Precision[i] = value outputChatBox("Sensitivity set to: " .. value .. "", playerSource) break end end end end function moveIt(source, key, keyState) for i = 1,20 do if Editor[i] == source then object = Gate[i] prec = Precision[i] break end end if key == "i" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y + prec,z ) end if key =="j" then x,y,z = getElementPosition(object) setElementPosition ( object, x - prec,y,z ) end if key =="l" then x,y,z = getElementPosition(object) setElementPosition ( object, x + prec,y,z ) end if key =="k" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y - prec,z ) end if key =="pgup" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y,z + prec ) end if key =="pgdn" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y ,z - prec ) end -- rotation -- if key =="mouse_wheel_up" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry,rz - prec * 5) end if key =="mouse_wheel_down" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry,rz + prec * 5) end if key =="u" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry - prec*10,rz) end if key =="o" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry + prec*10,rz) end if key =="[" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx- prec*10,ry,rz) end if key =="]" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx+ prec*10,ry,rz) end end function moveIt2(source, key, keyState) for i = 1,20 do if Editor[i] == source then object = Gate2[i] prec = Precision[i] break end end if key == "i" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y + prec,z ) end if key =="j" then x,y,z = getElementPosition(object) setElementPosition ( object, x - prec,y,z ) end if key =="l" then x,y,z = getElementPosition(object) setElementPosition ( object, x + prec,y,z ) end if key =="k" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y - prec,z ) end if key =="pgup" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y,z + prec ) end if key =="pgdn" then x,y,z = getElementPosition(object) setElementPosition ( object, x,y ,z - prec ) end -- rotation -- if key =="mouse_wheel_up" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry,rz - prec * 5) end if key =="mouse_wheel_down" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry,rz + prec * 5) end if key =="u" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry - prec*10,rz) end if key =="o" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx,ry + prec*10,rz) end if key =="[" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx- prec*10,ry,rz) end if key =="]" then rx,ry,rz = getObjectRotation(object) setObjectRotation ( object, rx+ prec*10,ry,rz) end end 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