ViRuZGamiing Posted May 17, 2016 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
ViRuZGamiing Posted May 17, 2016 Author Posted May 17, 2016 I've made a video showing what's wrong, with the code next to it
ViRuZGamiing Posted May 18, 2016 Author 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)
Captain Cody Posted May 25, 2016 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.
Enargy, Posted May 26, 2016 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) ??
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