Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- ##########################################################################
- ## ##
- ## Project: 'MT-RPG' - Gamemode for MTA: San Andreas PROJECT X ##
- ## Developer: Noneatme ##
- ## License: See LICENSE in the top level directory ##
- ## ##
- ##########################################################################
- ]]
- local cFunc = {}
- local cSetting = {}
- objectmover = {}
- cSetting["attached_info"] = {}
- addEvent("onObjectmoverGroundpositionGetBack", true)
- -- FUNCTIONS --
- objectmover.attachObjectToPlayer = function(thePlayer, object)
- assert((isElement(object) and getElementType(object) == "object"), "Bad Argument @ attachObjectToPlayer (Object not an object)")
- assert((isElement(thePlayer) and getElementType(thePlayer) == "player"), "Bad Argument @ attachObjectToPlayer (Player not a player)")
- if not(cSetting["attached_info"][thePlayer]) then
- cSetting["attached_info"][thePlayer] = {}
- end
- if(cSetting["attached_info"][thePlayer]["status"] ~= true) and not(isTimer(cSetting["attached_info"][thePlayer]["attachTimer"])) then
- cSetting["attached_info"][thePlayer]["status"] = true
- cSetting["attached_info"][thePlayer]["attachedObject"] = object
- local rotx, roty, rotz = getElementRotation(thePlayer)
- local ang = getPedRotation(thePlayer)
- local x, y, z = getElementPosition(thePlayer)
- local x2, y2, z2 = getElementPosition(object)
- local sx, sy, sz = x+math.sin(math.rad(-ang))*2, y+math.cos(math.rad(-ang))*2, z
- moveObject(object, 300, sx, sy, sz, rotx, roty, rotz-180)
- cSetting["attached_info"][thePlayer]["attachTimer"] = setTimer(function()
- attachElements(object, thePlayer, 0, 2, 0)
- setElementAlpha(object, 200)
- toggleControl(thePlayer, "jump", false)
- toggleControl(thePlayer, "enter_exit", false)
- setElementCollisionsEnabled(object, false)
- end, 300, 1)
- else
- outputInfobox(thePlayer, "You are currently moving a object!", 255, 0, 0)
- end
- end
- objectmover.detachObjectFromPlayer = function(thePlayer, z, state)
- -- assert((isElement(thePlayer) and getElementType(thePlayer) == "player"), "Bad Argument @ attachObjectToPlayer (Player not a player)")
- if(state ~= true) then
- if(cSetting["attached_info"][thePlayer]["status"] == true) then
- triggerClientEvent(thePlayer, "onObjectmoverGroundpositionGet", thePlayer, cSetting["attached_info"][thePlayer]["attachedObject"])
- end
- else
- local theObject = thePlayer
- thePlayer = source
- setElementAlpha(theObject, 255)
- detachElements(theObject)
- local rotx, roty, rotz = getElementRotation(thePlayer)
- local ang = getPedRotation( thePlayer )
- local x, y, z2 = getElementPosition( thePlayer )
- local sx, sy, sz = x+math.sin(math.rad(-ang))*2, y+math.cos(math.rad(-ang))*2, z
- setElementCollisionsEnabled(theObject, true)
- setElementPosition( theObject, sx, sy, z2)
- setElementRotation( theObject, rotx, roty, rotz)
- moveObject( theObject, 300, sx, sy, z)
- setTimer(setElementPosition, 300, 1, theObject, sx, sy, sz)
- toggleControl(thePlayer, "jump", true)
- toggleControl(thePlayer, "enter_exit", true)
- setTimer(function()
- cSetting["attached_info"][thePlayer]["status"] = false
- cSetting["attached_info"][thePlayer]["attachedObject"] = nil
- end, 300, 1)
- end
- end
- objectmover.getPlayerAttachedObject = function(thePlayer)
- assert((isElement(thePlayer) and getElementType(thePlayer) == "player"), "Bad Argument @ getPlayerAttachedObject (Player not a player)")
- if not(cSetting["attached_info"][thePlayer]) then
- cSetting["attached_info"][thePlayer] = {}
- end
- return (cSetting["attached_info"][thePlayer]["attachedObject"] or false)
- end
- cFunc["check_objectmov"] = function()
- local thePlayer = source
- if(objectmover.getPlayerAttachedObject(thePlayer) ~= false) then
- local object = objectmover.getPlayerAttachedObject(thePlayer)
- local x, y, z = getElementPosition(object)
- detachElements(object)
- setElementPosition(object, x, y, z)
- setElementAlpha(object, 255)
- setElementCollisionsEnabled(object, true)
- cSetting["attached_info"][thePlayer] = {}
- end
- end
- -- EVENT HANDLERS --
- addEventHandler("onObjectmoverGroundpositionGetBack", getRootElement(), objectmover.detachObjectFromPlayer)
- addEventHandler("onPlayerQuit", getRootElement(), cFunc["check_objectmov"])
- addCommandHandler("spawnele", function(thePlayer)
- local x, y, z = getElementPosition(thePlayer)
- local object = createObject(1439, x, y, z-1)
- setElementData(object, "pickupable", true)
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement