ed
This commit is contained in:
		
							parent
							
								
									cd945f7aff
								
							
						
					
					
						commit
						fdb2ec1452
					
				
					 3046 changed files with 68309 additions and 12 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								resources/[defaultmaps]/prompt_sandy_cityhall/client/client.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/[defaultmaps]/prompt_sandy_cityhall/client/client.lua
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										139
									
								
								resources/[defaultmaps]/prompt_sandy_cityhall/client/open.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								resources/[defaultmaps]/prompt_sandy_cityhall/client/open.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,139 @@
 | 
			
		|||
-- IMPORTANT DISCLAIMER:
 | 
			
		||||
-- This file contains critical functions for elevator operation.
 | 
			
		||||
-- DO NOT modify anything unless you know exactly what you are doing.
 | 
			
		||||
-- Any incorrect changes can break the entire elevator system.
 | 
			
		||||
 | 
			
		||||
-- Global system variables
 | 
			
		||||
isInsideElevator = false
 | 
			
		||||
currentTextUI = nil
 | 
			
		||||
 | 
			
		||||
-- Function to update screen text
 | 
			
		||||
-- @param newText - New text to display (nil to hide)
 | 
			
		||||
function updateTextUI(newText)
 | 
			
		||||
    if currentTextUI ~= newText then
 | 
			
		||||
        if newText then
 | 
			
		||||
            lib.showTextUI(newText)
 | 
			
		||||
        else
 | 
			
		||||
            lib.hideTextUI()
 | 
			
		||||
        end
 | 
			
		||||
        currentTextUI = newText
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Function to get floor menu options
 | 
			
		||||
-- @returns table - Menu options for available floors
 | 
			
		||||
function getFloorMenu()
 | 
			
		||||
    local options = {}
 | 
			
		||||
    local currentFloor = GlobalState.elevator.currentFloor
 | 
			
		||||
    
 | 
			
		||||
    -- If elevator is moving, show disabled option
 | 
			
		||||
    if GlobalState.elevator.isMoving then
 | 
			
		||||
        return {
 | 
			
		||||
            {
 | 
			
		||||
                title = Config.Messages.elevatorMoving,
 | 
			
		||||
                disabled = true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    -- Create options for each floor
 | 
			
		||||
    for floor, floorData in ipairs(Config.Elevator.floors) do
 | 
			
		||||
        -- Don't show current floor as an option
 | 
			
		||||
        if floor ~= currentFloor then
 | 
			
		||||
            table.insert(options, {
 | 
			
		||||
                title = floorData.label,
 | 
			
		||||
                description = floorData.description,
 | 
			
		||||
                icon = 'building',
 | 
			
		||||
                onSelect = function()
 | 
			
		||||
                    SelectFloor(floor,currentFloor) -- Execute this function to select the floor (this move the elevator and plays the animation)
 | 
			
		||||
                end
 | 
			
		||||
            })
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    return options
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Inside elevator zone
 | 
			
		||||
-- This zone handles all interactions when player is inside the elevator
 | 
			
		||||
local insideZone = lib.zones.box({
 | 
			
		||||
    -- Zone position and size from config
 | 
			
		||||
    coords = Config.Elevator.insideZone.coords,
 | 
			
		||||
    size = Config.Elevator.insideZone.size,
 | 
			
		||||
    rotation = Config.Elevator.insideZone.rotation,
 | 
			
		||||
 | 
			
		||||
    -- Called when player enters elevator
 | 
			
		||||
    onEnter = function()
 | 
			
		||||
        isInsideElevator = true
 | 
			
		||||
        SetInteriorProbeLength(50.0) -- Prevents texture loss in interior (CRITICAL, MAKE SURE TO KEEP THIS)
 | 
			
		||||
    end,
 | 
			
		||||
 | 
			
		||||
    -- Called when player exits elevator
 | 
			
		||||
    onExit = function()
 | 
			
		||||
        isInsideElevator = false
 | 
			
		||||
        updateTextUI(nil) -- Hide any UI text
 | 
			
		||||
        SetInteriorProbeLength(0.0) -- Reset interior probe length
 | 
			
		||||
    end,
 | 
			
		||||
 | 
			
		||||
    -- Called every frame while player is inside elevator
 | 
			
		||||
    inside = function()
 | 
			
		||||
        -- Only allow floor selection if elevator is not moving
 | 
			
		||||
        if not GlobalState.elevator.isMoving then
 | 
			
		||||
            -- Show floor selection prompt
 | 
			
		||||
            updateTextUI('[E] ' .. Config.Messages.selectFloor)
 | 
			
		||||
 | 
			
		||||
            -- Check if player pressed the interaction key (E)
 | 
			
		||||
            if IsControlJustPressed(0, 38) then
 | 
			
		||||
                -- Register and show the floor selection menu
 | 
			
		||||
                lib.registerContext({
 | 
			
		||||
                    id = 'elevator_floor_menu',
 | 
			
		||||
                    title = Config.Messages.elevatorTitle,
 | 
			
		||||
                    options = getFloorMenu() -- Get available floor options
 | 
			
		||||
                })
 | 
			
		||||
                lib.showContext('elevator_floor_menu')
 | 
			
		||||
            end
 | 
			
		||||
        else
 | 
			
		||||
            updateTextUI(nil) -- Hide UI text while elevator is moving
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Elevator call zone
 | 
			
		||||
-- This zone handles calling the elevator from outside
 | 
			
		||||
local callZone = lib.zones.box({
 | 
			
		||||
    -- Zone position and size from config
 | 
			
		||||
    coords = Config.Elevator.callZone.coords,
 | 
			
		||||
    size = Config.Elevator.callZone.size,
 | 
			
		||||
    rotation = Config.Elevator.callZone.rotation,
 | 
			
		||||
 | 
			
		||||
    -- Called when player exits the call zone
 | 
			
		||||
    onExit = function()
 | 
			
		||||
        updateTextUI(nil) -- Hide any UI text
 | 
			
		||||
    end,
 | 
			
		||||
 | 
			
		||||
    -- Called every frame while player is in call zone
 | 
			
		||||
    inside = function()
 | 
			
		||||
        local state = GlobalState.elevator
 | 
			
		||||
        
 | 
			
		||||
        -- Show "elevator moving" text if elevator is in motion
 | 
			
		||||
        if state.isMoving then
 | 
			
		||||
            updateTextUI(Config.Messages.elevatorMoving)
 | 
			
		||||
        else
 | 
			
		||||
            -- Get player position and nearest floor
 | 
			
		||||
            local playerCoords = GetEntityCoords(cache.ped)
 | 
			
		||||
            local nearestFloor = getNearestFloor(playerCoords.z)
 | 
			
		||||
            
 | 
			
		||||
            -- Only show call prompt if elevator is on a different floor
 | 
			
		||||
            if nearestFloor ~= state.currentFloor then
 | 
			
		||||
                updateTextUI('[E] ' .. Config.Messages.callElevator)
 | 
			
		||||
                
 | 
			
		||||
                -- Check if player pressed interaction key and is not inside elevator
 | 
			
		||||
                if IsControlJustPressed(0, 38) and not isInsideElevator then
 | 
			
		||||
                    CallElevator(playerCoords,nearestFloor) -- Call elevator to player's floor                    
 | 
			
		||||
                end
 | 
			
		||||
            else
 | 
			
		||||
                updateTextUI(nil) -- Hide UI text if elevator is already on this floor
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								resources/[defaultmaps]/prompt_sandy_cityhall/client/utils.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/[defaultmaps]/prompt_sandy_cityhall/client/utils.lua
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue