Initial repo cleanup

This commit is contained in:
ElPumpo
2020-01-04 13:35:47 +01:00
parent 9be9b07e75
commit 9348b5176c
5 changed files with 173 additions and 241 deletions
+8 -6
View File
@@ -1,15 +1,17 @@
resource_manifest_version '05cfa83c-a124-4cfa-a768-c24a5811d8f9'
description 'ESX Sit'
version '1.0.3'
server_scripts {
'config.lua',
'lists/seat.lua',
'server.lua'
}
client_scripts {
'config.lua',
'lists/seat.lua',
'client.lua'
}
server_scripts {
'config.lua',
'lists/seat.lua',
'server.lua'
}
+41 -91
View File
@@ -1,23 +1,5 @@
local Keys = {
["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57,
["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177,
["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18,
["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182,
["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81,
["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70,
["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178,
["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173,
["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118
}
ESX = nil
local sitting = false
local lastPos = nil
local currentSitObj = nil
local currentScenario = nil
local debugProps = {}
local debugProps, sitting, lastPos, currentSitCoords, currentScenario = {}
Citizen.CreateThread(function()
while ESX == nil do
@@ -26,139 +8,107 @@ Citizen.CreateThread(function()
end
end)
function DrawText3D(x,y,z, text, r,v,b)
local onScreen,_x,_y = World3dToScreen2d(x,y,z)
local px,py,pz = table.unpack(GetGameplayCamCoords())
local dist = GetDistanceBetweenCoords(px,py,pz, x,y,z, 1)
local scale = (1/dist)*2
local fov = (1/GetGameplayCamFov())*100
local scale = scale*fov
if onScreen then
SetTextScale(0.0*scale, 1.1*scale)
SetTextFont(0)
SetTextProportional(1)
SetTextColour(r, v, b, 255)
SetTextDropshadow(0, 0, 0, 0, 255)
SetTextEdge(2, 0, 0, 0, 150)
SetTextDropShadow()
SetTextOutline()
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(text)
DrawText(_x,_y)
end
end
if Config.Debug then
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if #debugProps > 0 then
for i=1, #debugProps, 1 do
local coords = GetEntityCoords(debugProps[i])
local hash = GetEntityModel(debugProps[i])
local id = coords.x .. coords.y .. coords.z
local model = "unknown"
local model = 'unknown'
for i=1, #Config.Interactables, 1 do
local seat = Config.Interactables[i]
if hash == GetHashKey(seat) then
model = seat
break
end
end
local txt = "ID: " .. id .. "\nHASH: " .. hash .. '\nMODEL: ' ..
DrawText3D(coords.x, coords.y, coords.z + 2.0, txt, 0, 255, 255)
local text = ('ID: %s~n~HASH: %s~n~MODEL: %s'):format(id, hash, model)
ESX.Game.Utils.DrawText3D({
x = coords.x,
y = coords.y,
z = coords.z + 2.0
}, text)
end
if #debugProps == 0 then
Citizen.Wait(500)
end
end
end)
end
local playerPed = GetPlayerPed(-1)
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = PlayerPedId()
if sitting and not IsPedUsingScenario(playerPed, currentScenario) then
wakeup()
end
if (GetLastInputMethod(2) and IsControlJustPressed(1, 38) and IsControlPressed(1, 21)) and not IsPedInAnyVehicle(playerPed, true) then
if IsControlJustPressed(1, 38) and IsControlPressed(1, 21) and IsInputDisabled(0) and IsPedOnFoot(playerPed) then
if sitting then
wakeup()
else
local object, distance = ESX.Game.GetClosestObject(Config.Interactables)
if Config.debug then
if Config.Debug then
table.insert(debugProps, object)
end
if distance < 1.5 then
local hash = GetEntityModel(object)
local data = nil
local modelName = nil
local found = false
for k,v in pairs(Config.Sitable) do
if GetHashKey(k) == hash then
data = v
modelName = k
found = true
sit(object, k, v)
break
end
end
if found == true then
sit(object, modelName, data)
end
end
end
end
end
end)
function wakeup()
local playerPed = GetPlayerPed(-1)
local playerPed = PlayerPedId()
ClearPedTasks(playerPed)
sitting = false
SetEntityCoords(playerPed, lastPos)
FreezeEntityPosition(playerPed, false)
FreezeEntityPosition(currentSitObj, false)
TriggerServerEvent('esx_interact:leavePlace', currentSitObj)
currentSitObj = nil
currentScenario = nil
TriggerServerEvent('esx_sit:leavePlace', currentSitCoords)
currentSitCoords, currentScenario = nil, nil
end
function sit(object, modelName, data)
local pos = GetEntityCoords(object)
local id = pos.x .. pos.y .. pos.z
ESX.TriggerServerCallback('esx_interact:getPlace', function(occupied)
local objectCoords = pos.x .. pos.y .. pos.z
ESX.TriggerServerCallback('esx_sit:getPlace', function(occupied)
if occupied then
ESX.ShowNotification("Cette place est prise...")
ESX.ShowNotification('Cette place est prise...')
else
local playerPed = GetPlayerPed(-1)
lastPos = GetEntityCoords(playerPed)
currentSitObj = id
local playerPed = PlayerPedId()
lastPos, currentSitCoords = GetEntityCoords(playerPed), objectCoords
TriggerServerEvent('esx_interact:takePlace', id)
TriggerServerEvent('esx_sit:takePlace', objectCoords)
FreezeEntityPosition(object, true)
currentScenario = data.scenario
TaskStartScenarioAtPosition(playerPed, currentScenario, pos.x, pos.y, pos.z - data.verticalOffset, GetEntityHeading(object)+180.0, 0, true, true)
TaskStartScenarioAtPosition(playerPed, currentScenario, pos.x, pos.y, pos.z - data.verticalOffset, GetEntityHeading(object) + 180.0, 0, true, true)
sitting = true
end
end)
end
+112 -113
View File
@@ -1,117 +1,116 @@
Config = {}
Config = {}
Config.MaxDistance = 1.5
Config.debug = false
Config.Debug = false
Config.Interactables = {
"prop_bench_01a",
"prop_bench_01b",
"prop_bench_01c",
"prop_bench_02",
"prop_bench_03",
"prop_bench_04",
"prop_bench_05",
"prop_bench_06",
"prop_bench_05",
"prop_bench_08",
"prop_bench_09",
"prop_bench_10",
"prop_bench_11",
"prop_fib_3b_bench",
"prop_ld_bench01",
"prop_wait_bench_01",
"hei_prop_heist_off_chair",
"hei_prop_hei_skid_chair",
"prop_chair_01a",
"prop_chair_01b",
"prop_chair_02",
"prop_chair_03",
"prop_chair_04a",
"prop_chair_04b",
"prop_chair_05",
"prop_chair_06",
"prop_chair_05",
"prop_chair_08",
"prop_chair_09",
"prop_chair_10",
"prop_chateau_chair_01",
"prop_clown_chair",
"prop_cs_office_chair",
"prop_direct_chair_01",
"prop_direct_chair_02",
"prop_gc_chair02",
"prop_off_chair_01",
"prop_off_chair_03",
"prop_off_chair_04",
"prop_off_chair_04b",
"prop_off_chair_04_s",
"prop_off_chair_05",
"prop_old_deck_chair",
"prop_old_wood_chair",
"prop_rock_chair_01",
"prop_skid_chair_01",
"prop_skid_chair_02",
"prop_skid_chair_03",
"prop_sol_chair",
"prop_wheelchair_01",
"prop_wheelchair_01_s",
"p_armchair_01_s",
"p_clb_officechair_s",
"p_dinechair_01_s",
"p_ilev_p_easychair_s",
"p_soloffchair_s",
"p_yacht_chair_01_s",
"v_club_officechair",
"v_corp_bk_chair3",
"v_corp_cd_chair",
"v_corp_offchair",
"v_ilev_chair02_ped",
"v_ilev_hd_chair",
"v_ilev_p_easychair",
"v_ret_gc_chair03",
"prop_ld_farm_chair01",
"prop_table_04_chr",
"prop_table_05_chr",
"prop_table_06_chr",
"v_ilev_leath_chr",
"prop_table_01_chr_a",
"prop_table_01_chr_b",
"prop_table_02_chr",
"prop_table_03b_chr",
"prop_table_03_chr",
"prop_torture_ch_01",
"v_ilev_fh_dineeamesa",
"v_ilev_fh_kitchenstool",
"v_ilev_tort_stool",
"v_ilev_fh_kitchenstool",
"v_ilev_fh_kitchenstool",
"v_ilev_fh_kitchenstool",
"v_ilev_fh_kitchenstool",
"hei_prop_yah_seat_01",
"hei_prop_yah_seat_02",
"hei_prop_yah_seat_03",
"prop_waiting_seat_01",
"prop_yacht_seat_01",
"prop_yacht_seat_02",
"prop_yacht_seat_03",
"prop_hobo_seat_01",
"prop_rub_couch01",
"miss_rub_couch_01",
"prop_ld_farm_couch01",
"prop_ld_farm_couch02",
"prop_rub_couch02",
"prop_rub_couch03",
"prop_rub_couch04",
"p_lev_sofa_s",
"p_res_sofa_l_s",
"p_v_med_p_sofa_s",
"p_yacht_sofa_01_s",
"v_ilev_m_sofa",
"v_res_tre_sofa_s",
"v_tre_sofa_mess_a_s",
"v_tre_sofa_mess_b_s",
"v_tre_sofa_mess_c_s",
"prop_roller_car_01",
"prop_roller_car_02",
}
'prop_bench_01a',
'prop_bench_01b',
'prop_bench_01c',
'prop_bench_02',
'prop_bench_03',
'prop_bench_04',
'prop_bench_05',
'prop_bench_06',
'prop_bench_05',
'prop_bench_08',
'prop_bench_09',
'prop_bench_10',
'prop_bench_11',
'prop_fib_3b_bench',
'prop_ld_bench01',
'prop_wait_bench_01',
'hei_prop_heist_off_chair',
'hei_prop_hei_skid_chair',
'prop_chair_01a',
'prop_chair_01b',
'prop_chair_02',
'prop_chair_03',
'prop_chair_04a',
'prop_chair_04b',
'prop_chair_05',
'prop_chair_06',
'prop_chair_05',
'prop_chair_08',
'prop_chair_09',
'prop_chair_10',
'prop_chateau_chair_01',
'prop_clown_chair',
'prop_cs_office_chair',
'prop_direct_chair_01',
'prop_direct_chair_02',
'prop_gc_chair02',
'prop_off_chair_01',
'prop_off_chair_03',
'prop_off_chair_04',
'prop_off_chair_04b',
'prop_off_chair_04_s',
'prop_off_chair_05',
'prop_old_deck_chair',
'prop_old_wood_chair',
'prop_rock_chair_01',
'prop_skid_chair_01',
'prop_skid_chair_02',
'prop_skid_chair_03',
'prop_sol_chair',
'prop_wheelchair_01',
'prop_wheelchair_01_s',
'p_armchair_01_s',
'p_clb_officechair_s',
'p_dinechair_01_s',
'p_ilev_p_easychair_s',
'p_soloffchair_s',
'p_yacht_chair_01_s',
'v_club_officechair',
'v_corp_bk_chair3',
'v_corp_cd_chair',
'v_corp_offchair',
'v_ilev_chair02_ped',
'v_ilev_hd_chair',
'v_ilev_p_easychair',
'v_ret_gc_chair03',
'prop_ld_farm_chair01',
'prop_table_04_chr',
'prop_table_05_chr',
'prop_table_06_chr',
'v_ilev_leath_chr',
'prop_table_01_chr_a',
'prop_table_01_chr_b',
'prop_table_02_chr',
'prop_table_03b_chr',
'prop_table_03_chr',
'prop_torture_ch_01',
'v_ilev_fh_dineeamesa',
'v_ilev_fh_kitchenstool',
'v_ilev_tort_stool',
'v_ilev_fh_kitchenstool',
'v_ilev_fh_kitchenstool',
'v_ilev_fh_kitchenstool',
'v_ilev_fh_kitchenstool',
'hei_prop_yah_seat_01',
'hei_prop_yah_seat_02',
'hei_prop_yah_seat_03',
'prop_waiting_seat_01',
'prop_yacht_seat_01',
'prop_yacht_seat_02',
'prop_yacht_seat_03',
'prop_hobo_seat_01',
'prop_rub_couch01',
'miss_rub_couch_01',
'prop_ld_farm_couch01',
'prop_ld_farm_couch02',
'prop_rub_couch02',
'prop_rub_couch03',
'prop_rub_couch04',
'p_lev_sofa_s',
'p_res_sofa_l_s',
'p_v_med_p_sofa_s',
'p_yacht_sofa_01_s',
'v_ilev_m_sofa',
'v_res_tre_sofa_s',
'v_tre_sofa_mess_a_s',
'v_tre_sofa_mess_b_s',
'v_tre_sofa_mess_c_s',
'prop_roller_car_01',
'prop_roller_car_02',
}
+2 -2
View File
@@ -1,5 +1,5 @@
Config.Sitable = {
--Only verticalOffset works right now!
--Only verticalOffset works right now!
--all scenarios: pastebin.com/6mrYTdQv
-- BENCH
@@ -124,4 +124,4 @@ Config.Sitable = {
-- MISC
prop_roller_car_01 = { scenario = 'PROP_HUMAN_SEAT_BENCH', verticalOffset = -0.5, forwardOffset = 0.0, leftOffset = 0.0},
prop_roller_car_02 = { scenario = 'PROP_HUMAN_SEAT_BENCH', verticalOffset = -0.5, forwardOffset = 0.0, leftOffset = 0.0}
}
}
+10 -29
View File
@@ -1,37 +1,18 @@
ESX = nil
local SeatsTaken = {}
local seatsTaken = {}
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
-- SEATS
RegisterServerEvent('esx_interact:takePlace')
AddEventHandler('esx_interact:takePlace', function(object)
table.insert(SeatsTaken, object)
RegisterNetEvent('esx_sit:takePlace')
AddEventHandler('esx_sit:takePlace', function(objectCoords)
seatsTaken[objectCoords] = true
end)
RegisterServerEvent('esx_interact:leavePlace')
AddEventHandler('esx_interact:leavePlace', function(object)
local _SeatsTaken = {}
for i=1, #SeatsTaken, 1 do
if object ~= SeatsTaken[i] then
table.insert(_SeatsTaken, SeatsTaken[i])
end
end
SeatsTaken = _SeatsTaken
RegisterNetEvent('esx_sit:leavePlace')
AddEventHandler('esx_sit:leavePlace', function(objectCoords)
seatsTaken[objectCoords] = nil
end)
ESX.RegisterServerCallback('esx_interact:getPlace', function(source, cb, id)
local found = false
for i=1, #SeatsTaken, 1 do
if SeatsTaken[i] == id then
found = true
end
end
cb(found)
end)
ESX.RegisterServerCallback('esx_sit:getPlace', function(source, cb, objectCoords)
cb(seatsTaken[objectCoords])
end)