114 lines
		
	
	
		
			No EOL
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			No EOL
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
player = PlayerPedId()
 | 
						|
LocalEntities = {} -- UtilityNet
 | 
						|
 | 
						|
LoadUtilityFrameworkIfFound()
 | 
						|
LoadJobsAndListenForChanges()
 | 
						|
 | 
						|
--#region Loops
 | 
						|
    StartCacheUpdateLoop()
 | 
						|
    StartMarkersRenderLoop()
 | 
						|
    StartIObjectsEnterLeaveLoop()
 | 
						|
    
 | 
						|
    StartDialoguesDrawingLoop()
 | 
						|
    StartN3dRenderLoop()
 | 
						|
 | 
						|
    StartUtilityNetRenderLoop()
 | 
						|
--#endregion
 | 
						|
    
 | 
						|
--#region Interaction
 | 
						|
    IsControlJustPressed("E", EmitInteraction)
 | 
						|
    IsControlJustPressed("LRIGHT_INDEX", EmitInteraction)
 | 
						|
 | 
						|
    RegisterCommand('utility', function(_, args)
 | 
						|
        if args[1] and args[2] then
 | 
						|
            TriggerEvent("Utility:Pressed_"..args[1].."_"..args[2])
 | 
						|
        end
 | 
						|
    end, true)
 | 
						|
--#endregion
 | 
						|
 | 
						|
--#region Events
 | 
						|
    RegisterNetEvent("Utility:SwapModel", function(coords, model, newmodel)
 | 
						|
        RequestModel(newmodel)
 | 
						|
 | 
						|
        while not HasModelLoaded(newmodel) do
 | 
						|
            Citizen.Wait(1)
 | 
						|
        end
 | 
						|
 | 
						|
        CreateModelSwap(coords, 0.7, model, newmodel)
 | 
						|
    end)
 | 
						|
 | 
						|
    RegisterNetEvent("Utility:StartParticleFxOnNetworkEntity", function(ptxAsset, name, obj, ...)
 | 
						|
        RequestNamedPtfxAsset(ptxAsset)
 | 
						|
 | 
						|
        while not HasNamedPtfxAssetLoaded(ptxAsset) do
 | 
						|
            Citizen.Wait(1)
 | 
						|
        end
 | 
						|
 | 
						|
        SetPtfxAssetNextCall(ptxAsset)
 | 
						|
        --print(name, obj, NetToObj(obj), GetEntityModel(NetToObj(obj)))
 | 
						|
        StartNetworkedParticleFxLoopedOnEntity(name, NetToObj(obj), ...)
 | 
						|
    end)
 | 
						|
 | 
						|
    RegisterNetEvent("Utility:FreezeNoNetworkedEntity", function(coords, model)
 | 
						|
        local obj = GetClosestObjectOfType(coords, 3.0, model)
 | 
						|
 | 
						|
        if obj > 0 then
 | 
						|
            FreezeEntityPosition(obj, true)
 | 
						|
        end
 | 
						|
    end)
 | 
						|
 | 
						|
    RegisterNetEvent("Utility:Create", function(type, id, table, res)
 | 
						|
        if table.slice then
 | 
						|
            SetSliceUsed(table.slice, true)
 | 
						|
        end
 | 
						|
 | 
						|
        if table.job then
 | 
						|
            table.candraw = CheckIfCanView(table.job)
 | 
						|
        else
 | 
						|
            table.candraw = true
 | 
						|
        end
 | 
						|
 | 
						|
        Utility.Cache[type][id] = table 
 | 
						|
 | 
						|
        if type == "Blips" then
 | 
						|
            JobChange()
 | 
						|
        end
 | 
						|
    end)
 | 
						|
 | 
						|
    RegisterNetEvent("Utility:Edit", function(type, id, field, new_data)
 | 
						|
        if field == "slice" then
 | 
						|
            -- Update used slice groups
 | 
						|
            local oldSlice = Utility.Cache[type][id][field]
 | 
						|
            local canClearOldSlice = true
 | 
						|
 | 
						|
            for k,v in pairs(Utility.Cache[type]) do
 | 
						|
                if v.slice == oldSlice then
 | 
						|
                    canClearOldSlice = false
 | 
						|
                    break
 | 
						|
                end
 | 
						|
            end
 | 
						|
 | 
						|
            if canClearOldSlice then
 | 
						|
                SetSliceUsed(oldSlice, false)
 | 
						|
            end
 | 
						|
            
 | 
						|
            SetSliceUsed(new_data, true)
 | 
						|
        end
 | 
						|
 | 
						|
        Utility.Cache[type][id][field] = new_data 
 | 
						|
    end)
 | 
						|
 | 
						|
    RegisterNetEvent("Utility:Remove", function(type, id)
 | 
						|
        Utility.Cache[type][id] = nil 
 | 
						|
    end)
 | 
						|
 | 
						|
    RegisterNetEvent("Utility:FakeTrigger", function(type, id)
 | 
						|
        Emit(type, true, id)
 | 
						|
    end)
 | 
						|
 | 
						|
    if Config.EmitterTriggerForSyncedVariable then
 | 
						|
        RegisterNetEvent("Utility:SyncValue_emit", function(name, old_value, value)
 | 
						|
            Emit(name, false, value)
 | 
						|
        end)
 | 
						|
    end
 | 
						|
--#endregion |