forked from Simnation/Main
131 lines
No EOL
5.7 KiB
Lua
131 lines
No EOL
5.7 KiB
Lua
key_floor_up = 38 -- ARROW UP
|
|
key_floor_down = 38 -- ARROW DOWN
|
|
|
|
elevators = {
|
|
[1] = {
|
|
-- Floor -1
|
|
{977.52, 52.87, 16.21, 0, "To the restaurant"},
|
|
-- Lobby
|
|
{1002.89, 74.22, 70.22, 0, "To the lobby"},
|
|
},
|
|
}
|
|
|
|
Citizen.CreateThread(function()
|
|
-- turn positions into vectors for faster calculations
|
|
for i = 1, #elevators do
|
|
for k,floor in ipairs(elevators[i]) do
|
|
elevators[i][k] = {vector3(floor[1], floor[2], floor[3]), floor[4]}
|
|
end
|
|
end
|
|
while true do
|
|
Citizen.Wait(5)
|
|
local player = PlayerPedId()
|
|
local PlayerLocation = GetEntityCoords(player)
|
|
|
|
for i = 1, #elevators do
|
|
for k,floor in ipairs(elevators[i]) do
|
|
-- New floor
|
|
local Level = floor[1]
|
|
local distance = #(PlayerLocation - Level)
|
|
if distance < 2.0 then
|
|
-- Get the total amount of floors
|
|
local numFloors = #elevators[i]
|
|
|
|
-- Check if there are floors above and below our current floor
|
|
local floorUp = nil
|
|
if k < numFloors then
|
|
floorUp = elevators[i][k + 1]
|
|
end
|
|
local floorDown = nil
|
|
if k > 1 then
|
|
floorDown = elevators[i][k - 1]
|
|
end
|
|
|
|
-- Text to show
|
|
-- Show current floor
|
|
local message = "Restaurant"
|
|
if floorUp then
|
|
-- Show prompt to go up
|
|
message = message .. "~n~" .. "~INPUT_PICKUP~ " .. ("Exit restaurant")
|
|
end
|
|
if floorDown then
|
|
-- Show prompt to go down
|
|
message = message .. "~n~" .. "~INPUT_PICKUP~ " .. ("Go to restaurant")
|
|
end
|
|
|
|
-- Sent information how to use
|
|
MessageUpLeftCorner(message)
|
|
|
|
if floorUp ~= nil then
|
|
if IsControlJustReleased(1, key_floor_up) then
|
|
Citizen.Wait(200)
|
|
-- Lets freeze the user so he can't get away..
|
|
FreezeEntityPosition(player, true)
|
|
Citizen.Wait(200)
|
|
-- Play some sounds the make the elevator extra cool! :D
|
|
PlaySoundFrontend(-1, "CLOSED", "MP_PROPERTIES_ELEVATOR_DOORS", 1);
|
|
Citizen.Wait(1500)
|
|
PlaySoundFrontend(-1, "Hack_Success", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", 0)
|
|
Citizen.Wait(200)
|
|
PlaySoundFrontend(-1, "OPENED", "MP_PROPERTIES_ELEVATOR_DOORS", 1);
|
|
|
|
-- Is elevator a vehicle elevator?
|
|
if IsPedInAnyVehicle(player, true) then
|
|
-- Lets teleport the user / vehicle and unfreeze the user.
|
|
SetEntityCoords(GetVehiclePedIsUsing(player), floorUp[1])
|
|
FreezeEntityPosition(player, false)
|
|
else
|
|
-- Lets teleport the user / vehicle and unfreeze the user.
|
|
SetEntityCoords(player, floorUp[1])
|
|
FreezeEntityPosition(player, false)
|
|
end
|
|
end
|
|
end
|
|
|
|
if floorDown ~= nil then
|
|
if IsControlJustReleased(1, key_floor_down) then
|
|
Citizen.Wait(200)
|
|
-- Lets freeze the user so he can't get away..
|
|
FreezeEntityPosition(player, true)
|
|
Citizen.Wait(200)
|
|
-- Play some sounds the make the elevator extra cool! :D
|
|
PlaySoundFrontend(-1, "CLOSED", "MP_PROPERTIES_ELEVATOR_DOORS", 1);
|
|
Citizen.Wait(1500)
|
|
PlaySoundFrontend(-1, "Hack_Success", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", 0)
|
|
Citizen.Wait(200)
|
|
PlaySoundFrontend(-1, "OPENED", "MP_PROPERTIES_ELEVATOR_DOORS", 1);
|
|
|
|
-- Is elevator a vehicle elevator?
|
|
if IsPedInAnyVehicle(player, true) then
|
|
-- Lets teleport the user / vehicle and unfreeze the user.
|
|
SetEntityCoords(GetVehiclePedIsUsing(player), floorDown[1])
|
|
FreezeEntityPosition(player, false)
|
|
else
|
|
-- Lets teleport the user / vehicle and unfreeze the user.
|
|
SetEntityCoords(player, floorDown[1])
|
|
FreezeEntityPosition(player, false)
|
|
end
|
|
end
|
|
end
|
|
-- Get to here but you haven't been teleported? You are not close to an elevator ingame.
|
|
end
|
|
end
|
|
-- New building
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Message in left up corner.
|
|
function MessageUpLeftCorner(msg)
|
|
SetTextComponentFormat("STRING")
|
|
AddTextComponentString(msg)
|
|
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
|
|
end
|
|
|
|
|
|
-- Message above radar.
|
|
function MessageAboveRadar(msg)
|
|
SetNotificationTextEntry("STRING")
|
|
AddTextComponentString(msg)
|
|
DrawNotification(true, false)
|
|
end |