ViRuZGamiing Posted May 17, 2016 Share Posted May 17, 2016 (edited) Hi guys I'm having trouble unbinding my function, it should happen when I leave marker, it does bind on enter but not on exit. function openTrunk (theVehicle) trunkState = getVehicleDoorOpenRatio(theVehicle, 1) if (trunkState == 0) then setVehicleDoorOpenRatio(theVehicle, 1, 1, 1000) else setVehicleDoorOpenRatio(theVehicle, 1, 0, 1000) end end function bindTrunk (hitElement) if (getElementType (hitElement) == "player") then local linkedVehicle = getElementData(source, "marker") if (isElement (linkedVehicle)) then toggleControl (hitElement, "enter_exit", false) bindKey (hitElement, "f", "down", function() openTrunk(linkedVehicle) end) end end end function unbindTrunk (hitElement) if (getElementType(hitElement) == "player") then toggleControl(hitElement, "enter_exit", true) unbindKey(hitElement, "f", "down", openTrunk) end end I have this as well addEventHandler ( "onMarkerHit", vehMarker, bindTrunk) addEventHandler ( "onMarkerLeave", vehMarker, unbindTrunk) Kind Regards Edited May 18, 2016 by Guest Link to comment
ViRuZGamiing Posted May 17, 2016 Author Share Posted May 17, 2016 I've made a video showing what's wrong, with the code next to it Link to comment
ViRuZGamiing Posted May 18, 2016 Author Share Posted May 18, 2016 There seems to be a pattern tho: Walk in: key = binded Walk out: key = still binded Walk in: key doesn't work Walk out: nothing happens and repeat. EDIT: I've updated my code to make the markers client sided. SERVER function openTrunk (theVehicle) trunkState = getVehicleDoorOpenRatio(theVehicle, 1) if (trunkState == 0) then setVehicleDoorOpenRatio(theVehicle, 1, 1, 1000) else setVehicleDoorOpenRatio(theVehicle, 1, 0, 1000) end end function bindTrunk (hitElement, linkedVehicle) if (getElementType (hitElement) == "player") then if (isElement (linkedVehicle)) then toggleControl (hitElement, "enter_exit", false) bindKey (hitElement, "f", "down", function() openTrunk(linkedVehicle) end) end end end addEvent("bindTrunk", true) addEventHandler("bindTrunk", getRootElement(), bindTrunk) function unbindTrunk (hitElement) if (getElementType(hitElement) == "player") then toggleControl(hitElement, "enter_exit", true) unbindKey(hitElement, "f", "down", openTrunk) end end addEvent("unbindTrunk", true) addEventHandler("unbindTrunk", getRootElement(), bindTrunk) setTimer (function () for index, vehicle in pairs (getElementsByType ("vehicle" )) do if not (getElementData (vehicle, "markerTrue")) then setElementData(vehicle, "markerTrue", true) triggerClientEvent(getRootElement(), "carTrunkSync", getRootElement(), vehicle) end end end, 6000, 0) CLIENT function carTrunkSync (vehicle) local x, y, z = getElementPosition (vehicle) local vehMarker = createMarker ( x, y, z, "cylinder", 2.5, 255, 0, 0, 255) attachElements (vehMarker, vehicle, 0, -3, -1) setElementData (vehMarker, "marker", vehicle) addEventHandler ( "onClientMarkerHit", vehMarker, function (hitElement) local linkedVehicle = getElementData(source, "marker") triggerServerEvent("bindTrunk", getLocalPlayer(), hitElement, linkedVehicle) end) addEventHandler ( "onClientMarkerLeave", vehMarker, function (hitElement) triggerServerEvent("unbindTrunk", getLocalPlayer(), hitElement) end) end addEvent("carTrunkSync", true) addEventHandler("carTrunkSync", getRootElement(), carTrunkSync) Link to comment
Captain Cody Posted May 25, 2016 Share Posted May 25, 2016 Try making a spam delay, sometimes a marker will trigger more then once which will in simple terms fock everything up. Link to comment
Enargy, Posted May 26, 2016 Share Posted May 26, 2016 local veh function openTrunk (theVehicle) trunkState = getVehicleDoorOpenRatio(theVehicle, 1) if (trunkState == 0) then setVehicleDoorOpenRatio(theVehicle, 1, 1, 1000) else setVehicleDoorOpenRatio(theVehicle, 1, 0, 1000) end end function start() if veh == nil then openTrunk(veh) end end function bindTrunk (hitElement, linkedVehicle) if (getElementType (hitElement) == "player") then if (isElement (linkedVehicle)) then toggleControl (hitElement, "enter_exit", false) if veh == nil then veh = linkedVehicle end bindKey (hitElement, "f", "down", start) end end end addEvent("bindTrunk", true) addEventHandler("bindTrunk", getRootElement(), bindTrunk) function unbindTrunk (hitElement) if (getElementType(hitElement) == "player") then toggleControl(hitElement, "enter_exit", true) if veh ~= nil then unbindKey(hitElement, "f", "down", start) veh = nil end end end addEvent("unbindTrunk", true) addEventHandler("unbindTrunk", getRootElement(), bindTrunk) setTimer (function () for index, vehicle in pairs (getElementsByType ("vehicle" )) do if not (getElementData (vehicle, "markerTrue")) then setElementData(vehicle, "markerTrue", true) triggerClientEvent(getRootElement(), "carTrunkSync", getRootElement(), vehicle) end end end, 6000, 0) ?? 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