Framework = 'standalone' PlayerLoaded, PlayerData = nil, {} local function InitializeFramework() if GetResourceState('es_extended') == 'started' then ESX = exports['es_extended']:getSharedObject() Framework = 'esx' RegisterNetEvent('esx:playerLoaded', function(xPlayer) PlayerData = xPlayer PlayerLoaded = true end) RegisterNetEvent('esx:onPlayerLogout', function() PlayerData = {} PlayerLoaded = false end) AddEventHandler('esx:setPlayerData', function(key, value) PlayerData[key] = value end) AddEventHandler('onResourceStart', function(resourceName) if GetCurrentResourceName() ~= resourceName then return end PlayerData = ESX.GetPlayerData() PlayerLoaded = true end) elseif GetResourceState('qb-core') == 'started' then QBCore = exports['qb-core']:GetCoreObject() Framework = 'qb' AddEventHandler('QBCore:Client:OnPlayerLoaded', function() PlayerData = QBCore.Functions.GetPlayerData() end) RegisterNetEvent('QBCore:Client:OnPlayerUnload', function() PlayerData = {} end) AddEventHandler('onResourceStart', function(resourceName) if GetCurrentResourceName() ~= resourceName then return end PlayerData = QBCore.Functions.GetPlayerData() end) end print('[RPEmotes-Reborn] Framework initialized: ' .. Framework) end function CanDoAction() if Framework == 'esx' then return PlayerLoaded and not PlayerData.dead elseif Framework == 'qb' then return LocalPlayer.state.isLoggedIn and not (PlayerData.metadata.inlaststand or PlayerData.metadata.isdead) end -- here you can implement your own standalone framework check return true end InitializeFramework() -- EVENTS RegisterNetEvent('animations:client:PlayEmote', function(args) if CanDoAction() then EmoteCommandStart(args) end end) if Config.Keybinding then RegisterNetEvent('animations:client:BindEmote', function(args) if CanDoAction() then EmoteBindStart(nil, args) end end) RegisterNetEvent('animations:client:EmoteBinds', function() if CanDoAction() then ListKeybinds() end end) RegisterNetEvent('animations:client:EmoteDelete', function(args) if CanDoAction() then DeleteEmote(args) end end) end RegisterNetEvent('animations:client:EmoteMenu', function() if CanDoAction() then OpenEmoteMenu() end end) RegisterNetEvent('animations:client:Walk', function(args) if CanDoAction() then WalkCommandStart(args) end end) RegisterNetEvent('animations:client:ListWalks', function() if CanDoAction() then WalksOnCommand() end end)