From 9348b5176c54b625abb0664517776ad588bfcf23 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sat, 4 Jan 2020 13:35:47 +0100 Subject: [PATCH] Initial repo cleanup --- __resource.lua | 14 +-- client.lua | 132 +++++++++-------------------- config.lua | 225 ++++++++++++++++++++++++------------------------- lists/seat.lua | 4 +- server.lua | 39 +++------ 5 files changed, 173 insertions(+), 241 deletions(-) diff --git a/__resource.lua b/__resource.lua index 6eb66c8a..df1af275 100644 --- a/__resource.lua +++ b/__resource.lua @@ -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' -} \ No newline at end of file diff --git a/client.lua b/client.lua index 9836935e..0f22bd9a 100644 --- a/client.lua +++ b/client.lua @@ -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 diff --git a/config.lua b/config.lua index 916c810d..221427b9 100644 --- a/config.lua +++ b/config.lua @@ -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", -} \ No newline at end of file + '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', +} diff --git a/lists/seat.lua b/lists/seat.lua index 137fabc4..0592e9a5 100644 --- a/lists/seat.lua +++ b/lists/seat.lua @@ -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} -} \ No newline at end of file +} diff --git a/server.lua b/server.lua index f78ea11a..0d29c1d7 100644 --- a/server.lua +++ b/server.lua @@ -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) \ No newline at end of file +ESX.RegisterServerCallback('esx_sit:getPlace', function(source, cb, objectCoords) + cb(seatsTaken[objectCoords]) +end)