75 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| --[[ 
 | |
| OPEN SOURCE FUNCTIONS FOR CUSTOM INTEGRATIONS
 | |
| These functions allow you to add custom checks, permissions, and interactions
 | |
| NOTE: These functions run on CLIENT SIDE - use callbacks for server data
 | |
| 
 | |
| Example 1: General interaction check (distance, items, conditions, etc.)
 | |
| function CanPlayerInteract(propName, serverId)
 | |
|     local ped = PlayerPedId()
 | |
|     if propName == "prompt_sandy_is_garage_rollup" then
 | |
|         -- Check if player has specific item (using callback to server)
 | |
|         local hasKey = lib.callback.await('garage:hasKey', false)
 | |
|         return hasKey
 | |
|     elseif propName == "prompt_sandy_is_lift" then
 | |
|         return IsPedInAnyVehicle(ped, false) -- Must be in vehicle to use lift
 | |
|     end
 | |
|     return true
 | |
| end
 | |
| 
 | |
| Example 2: Job/permission specific access (use callbacks for server data)
 | |
| function HasJobAccess(propName, serverId)
 | |
|     if propName == "prompt_sandy_is_secret_door" then
 | |
|         local hasAccess = lib.callback.await('garage:checkMechanicAccess', false)
 | |
|         return hasAccess
 | |
|     elseif propName == "prompt_sandy_is_floorgate" then
 | |
|         local isAdmin = lib.callback.await('garage:checkAdminAccess', false)
 | |
|         return isAdmin
 | |
|     end
 | |
|     return true
 | |
| end
 | |
| 
 | |
| Example 3: Custom labels based on player data
 | |
| function GetCustomLabel(propName, serverId, defaultLabel)
 | |
|     if propName == "prompt_sandy_is_garage_rollup" then
 | |
|         local hasAccess = lib.callback.await('garage:checkMechanicAccess', false)
 | |
|         if hasAccess then
 | |
|             return "Open/Close Garage Door"
 | |
|         else
 | |
|             return "Access Denied - Mechanics Only"
 | |
|         end
 | |
|     elseif propName == "prompt_sandy_is_engine_full" then
 | |
|         return "Use Engine Lift - $50"
 | |
|     end
 | |
|     return defaultLabel
 | |
| end
 | |
| 
 | |
| Example 4: Custom actions on interaction
 | |
| function OnPropInteraction(propName, serverId, propState)
 | |
|     if propName == "prompt_sandy_is_secret_door" then
 | |
|         TriggerEvent('garage:showSecretMenu')
 | |
|     elseif propName == "prompt_sandy_is_engine_full" then
 | |
|         TriggerServerEvent('garage:chargeEngineUse', propState)
 | |
|         lib.notify({
 | |
|             title = 'Engine Lift',
 | |
|             description = 'Engine lift ' .. (propState and "lowered" or "raised"),
 | |
|             type = 'success'
 | |
|         })
 | |
|     end
 | |
| end 
 | |
| ]]
 | |
| 
 | |
| function CanPlayerInteract(propName, serverId)
 | |
|     return true
 | |
| end
 | |
| 
 | |
| function HasJobAccess(propName, serverId)
 | |
|     return true
 | |
| end
 | |
| 
 | |
| function GetCustomLabel(propName, serverId, defaultLabel)
 | |
|     return defaultLabel
 | |
| end
 | |
| 
 | |
| function OnPropInteraction(propName, serverId, propState)
 | |
|     
 | |
| end
 | 
