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)
 | |
| 
 | 
