77 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- Client-side freeze handling (put this in a client file)
 | 
						|
RegisterNetEvent('ox_commands:freeze', function(freezeStatus, notify)
 | 
						|
    local playerPed = PlayerPedId()
 | 
						|
    FreezeEntityPosition(playerPed, freezeStatus)
 | 
						|
    
 | 
						|
    if notify then
 | 
						|
        lib.notify({
 | 
						|
            title = freezeStatus and 'Frozen' or 'Unfrozen',
 | 
						|
            description = freezeStatus and 'You have been frozen by an admin' or 'You have been unfrozen by an admin',
 | 
						|
            type = freezeStatus and 'error' or 'success'
 | 
						|
        })
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
-- Server-side commands (put this in a server file)
 | 
						|
lib.addCommand('freeze', {
 | 
						|
    help = 'Freeze a player',
 | 
						|
    params = {
 | 
						|
        {
 | 
						|
            name = 'target',
 | 
						|
            type = 'playerId',
 | 
						|
            help = 'Target player server ID',
 | 
						|
            optional = true  -- Makes target optional (self-target if omitted)
 | 
						|
        }
 | 
						|
    },
 | 
						|
    restricted = 'group.admin'
 | 
						|
}, function(source, args, raw)
 | 
						|
    local target = args.target or source  -- If no target specified, target self
 | 
						|
    local entity = GetPlayerPed(target)
 | 
						|
 | 
						|
    if entity ~= 0 then
 | 
						|
        TriggerClientEvent('ox_commands:freeze', target, true, source ~= target)  -- Only notify if targeting someone else
 | 
						|
        lib.notify(source, {
 | 
						|
            title = 'Success',
 | 
						|
            description = ('Player %d frozen'):format(target),
 | 
						|
            type = 'success'
 | 
						|
        })
 | 
						|
    else
 | 
						|
        lib.notify(source, {
 | 
						|
            title = 'Error',
 | 
						|
            description = 'Invalid target player',
 | 
						|
            type = 'error'
 | 
						|
        })
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
lib.addCommand('thaw', {
 | 
						|
    help = 'Unfreeze a player',
 | 
						|
    params = {
 | 
						|
        {
 | 
						|
            name = 'target',
 | 
						|
            type = 'playerId',
 | 
						|
            help = 'Target player server ID',
 | 
						|
            optional = true  -- Makes target optional (self-target if omitted)
 | 
						|
        }
 | 
						|
    },
 | 
						|
    restricted = 'group.admin'
 | 
						|
}, function(source, args, raw)
 | 
						|
    local target = args.target or source  -- If no target specified, target self
 | 
						|
    local entity = GetPlayerPed(target)
 | 
						|
 | 
						|
    if entity ~= 0 then
 | 
						|
        TriggerClientEvent('ox_commands:freeze', target, false, source ~= target)  -- Only notify if targeting someone else
 | 
						|
        lib.notify(source, {
 | 
						|
            title = 'Success',
 | 
						|
            description = ('Player %d unfrozen'):format(target),
 | 
						|
            type = 'success'
 | 
						|
        })
 | 
						|
    else
 | 
						|
        lib.notify(source, {
 | 
						|
            title = 'Error',
 | 
						|
            description = 'Invalid target player',
 | 
						|
            type = 'error'
 | 
						|
        })
 | 
						|
    end
 | 
						|
end)
 | 
						|
 |