TheOne Posted December 25, 2011 Share Posted December 25, 2011 Ey , I recently wrote a script that make the wheels of your car magnet that is enabled/disabled by markers. Below you will see the script I wrote. function removeGravityFinder(veh) removeEventHandler("onClientRender",getRootElement(),magnetWheels) end function magnetWheels() local veh = getPedOccupiedVehicle(getLocalPlayer()) local x,y,z = getElementPosition(veh) local underx,undery,underz = getPositionUnderTheElement(veh) setVehicleGravity(veh,underx - x,undery - y,underz - z) end function getPositionUnderTheElement(element) local matrix = getElementMatrix (element) local offX = 0 * matrix[1][1] + 0 * matrix[2][1] - 1 * matrix[3][1] + matrix[4][1] local offY = 0 * matrix[1][2] + 0 * matrix[2][2] - 1 * matrix[3][2] + matrix[4][2] local offZ = 0 * matrix[1][3] + 0 * matrix[2][3] - 1 * matrix[3][3] + matrix[4][3] return offX,offY,offZ end function stopMagnets() removeEventHandler("onClientPlayerVehicleExit",getLocalPlayer(),removeGravityFinder) removeEventHandler("onClientRender",getRootElement(),magnetWheels) veh = getPedOccupiedVehicle(getLocalPlayer()) if veh then setVehicleGravity(veh,0,0,-1) end end function startMagnets() addEventHandler("onClientPlayerVehicleExit",getLocalPlayer(),removeGravityFinder) addEventHandler("onClientRender",getRootElement(),magnetWheels) end marker1 = createMarker(1931.306640625,-7655.42578125,49.669486999512,"corona",5,0,0,0,0) -- to start the magnets marker2 = createMarker(1931.4370117188,-8029.53125,53.335014343262,"corona",5,0,0,0,0) -- to stop the magnets addEventHandler("onClientMarkerHit", marker1, startMagnets) addEventHandler("onClientMarkerHit", marker2, stopMagnets) (I'm using MTA 1.1) Well, The script switch to Magnet mode perfectly, but there is a bug. when a player hit the marker to activate Magnet, the player active for everyone else on the server, not only for him. So I want to know if I missed some arguments or something else.. Waiting for help.. Thanks. Link to comment
TAPL Posted December 25, 2011 Share Posted December 25, 2011 try this function removeGravityFinder(veh) removeEventHandler("onClientRender",getRootElement(),magnetWheels) end function magnetWheels() local veh = getPedOccupiedVehicle(getLocalPlayer()) local x,y,z = getElementPosition(veh) local underx,undery,underz = getPositionUnderTheElement(veh) setVehicleGravity(veh,underx - x,undery - y,underz - z) end function getPositionUnderTheElement(element) local matrix = getElementMatrix (element) local offX = 0 * matrix[1][1] + 0 * matrix[2][1] - 1 * matrix[3][1] + matrix[4][1] local offY = 0 * matrix[1][2] + 0 * matrix[2][2] - 1 * matrix[3][2] + matrix[4][2] local offZ = 0 * matrix[1][3] + 0 * matrix[2][3] - 1 * matrix[3][3] + matrix[4][3] return offX,offY,offZ end function stopMagnets(hitPlayer) if hitPlayer ~= getLocalPlayer() then return end removeEventHandler("onClientPlayerVehicleExit",getLocalPlayer(),removeGravityFinder) removeEventHandler("onClientRender",getRootElement(),magnetWheels) veh = getPedOccupiedVehicle(getLocalPlayer()) if veh then setVehicleGravity(veh,0,0,-1) end end function startMagnets(hitPlayer) if hitPlayer ~= getLocalPlayer() then return end addEventHandler("onClientPlayerVehicleExit",getLocalPlayer(),removeGravityFinder) addEventHandler("onClientRender",getRootElement(),magnetWheels) end marker1 = createMarker(1931.306640625,-7655.42578125,49.669486999512,"corona",5,0,0,0,0) -- to start the magnets marker2 = createMarker(1931.4370117188,-8029.53125,53.335014343262,"corona",5,0,0,0,0) -- to stop the magnets addEventHandler("onClientMarkerHit", marker1, startMagnets) addEventHandler("onClientMarkerHit", marker2, stopMagnets) also you're not who wrote this script https://community.multitheftauto.com/index.php?p= ... ils&id=329 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