• We have a new discord! click here to join
    Any faulty links ? Report them in our discord or via our Ticket System!
    We do everything we can to protect the safety of our visitors, if any resource contains malware in any kind of form or obfuscation please report it aswell ♡♡

    Payments via Crypto: Please open a ticket, if you experience any issues, or if you miss your coin as an option in the list we have alot of wallets available.

QBCORE NP-EMOTE FIXED Keybinds Working and Save in Database (2 Viewers)

Asnt73

Active member
Aug 7, 2022
82
9
8
27
Nepal
Credits
322

Drag and Drop QBCOre , SQL Inside File . Also can set keybinds by commands .

Keybinds Default works with Shift+Numpad 0 to 6 with Numpad Off , After you can change the keys in Fivem Setting Key Binds
with Delete Key Emotes cancel

Paste this to qb-radialmenu/config.lua
{
id = "emotes",
displayName = "Emotes",
icon = "#emotes",
enableMenu = function()
local Data = QBCore.Functions.GetPlayerData()
return not Data.metadata["isdead"] and not Data.metadata["inlaststand"]
end,
functionName = "emotes:OpenMenu"
},
or for events or function use "emotes:OpenMenu"

Anything Comment Below
 

bboy41

Active member
Apr 16, 2023
121
30
28
Credits
11,352
-=Stripped Content=-
Drag and Drop QBCOre , SQL Inside File . Also can set keybinds by commands .

Keybinds Default works with Shift+Numpad 0 to 6 with Numpad Off , After you can change the keys in Fivem Setting Key Binds
with Delete Key Emotes cancel

Paste this to qb-radialmenu/config.lua
{
id = "emotes",
displayName = "Emotes",
icon = "#emotes",
enableMenu = function()
local Data = QBCore.Functions.GetPlayerData()
return not Data.metadata["isdead"] and not Data.metadata["inlaststand"]
end,
functionName = "emotes:OpenMenu"
},
or for events or function use "emotes:OpenMenu"

Anything Comment Below
quick emotes is not working
 

bboy41

Active member
Apr 16, 2023
121
30
28
Credits
11,352
if you stuck with placed emotes use this code

RegisterCommand("emotemenu", function(source)
TriggerEvent("emotes:OpenMenu")
end)
RegisterCommand("emtc", function(source)
ExecuteCommand("e c")
end)
Citizen.CreateThread(function()
TriggerEvent('chat:addSuggestion', '/emtt', 'Open emote menu', {})
TriggerEvent('chat:addSuggestion', '/emtc', 'Cancel current emote', {})
end)
RegisterKeyMapping("emotemenu", "Open emote menu", "keyboard", 'f5')
RegisterKeyMapping("emtc", "Cancel current emote", "keyboard", 'x')
 

Asnt73

Active member
Aug 7, 2022
82
9
8
27
Nepal
Credits
322
i am using "
QBCore:Server:OnPlayerLoaded" to check if emotes available withing citizenid of QBCore , so make sure you have this trigger in qb-spawn or multicharacter
see in qb-spawn
RegisterNUICallback('chooseAppa', function(data, cb)
TriggerServerEvent('QBCore:Server:OnPlayerLoaded') --- This one
end)

in multicharacter
RegisterNetEvent('qb-multicharacter:client:closeNUIdefault', function() -- This event is only for no starting apartments
TriggerServerEvent('QBCore:Server:OnPlayerLoaded') ---- Like this
end)
Just Example you can use this trigger in client side of you spawn and multicharacter script or anyother as you like
so it will create the quick emotes for you if not You can set manually
Usage: /setQuickEmote [keybinds] [category] [index] [value] , you need to set correct index EG: /setQuickEmote 0 emotes 1 kneel . like this
 
Last edited:

Asnt73

Active member
Aug 7, 2022
82
9
8
27
Nepal
Credits
322
if you stuck with placed emotes use this code

RegisterCommand("emotemenu", function(source)
TriggerEvent("emotes:OpenMenu")
end)
RegisterCommand("emtc", function(source)
ExecuteCommand("e c")
end)
Citizen.CreateThread(function()
TriggerEvent('chat:addSuggestion', '/emtt', 'Open emote menu', {})
TriggerEvent('chat:addSuggestion', '/emtc', 'Cancel current emote', {})
end)
RegisterKeyMapping("emotemenu", "Open emote menu", "keyboard", 'f5')
RegisterKeyMapping("emtc", "Cancel current emote", "keyboard", 'x')
there is already delete key mapped to stop emotes in client side you can do through that too
 

bboy41

Active member
Apr 16, 2023
121
30
28
Credits
11,352
Quick Update As emotes were not quick sync

change Previous
NPX.Procedures.register("emotes:setQuickEmote", function (pSrc, { _0x3b923e: keybinds, _0x4ccf1e: { category, index, value } }) to down below

for now only work for general soon will push update for all others or only let general emotes only.

PX.Procedures.register("emotes:setQuickEmote", function (pSrc, { _0x3b923e: keybinds, _0x4ccf1e: { category, index, value } }) {
let user = QBCore.Functions.GetPlayer(pSrc);
let characterId = user.PlayerData.citizenid;
console.log(`Received quick emote to set: Keybinds - ${keybinds}, Category - ${category}, Index - ${index}, Value - ${value}`);
exports["oxmysql"].execute("SELECT id, pQuickEmote FROM player_quick_emotes WHERE player_id = ? AND keybinds = ?", [characterId, keybinds], function (result) {
if (result && result.length > 0) {
exports["oxmysql"].execute("UPDATE player_quick_emotes SET pQuickEmote = ?, emote_index = ?, category = ? WHERE id = ?", [value, index, category, result[0].id], function () {
console.log(`Updated quick emote entry: Keybinds - ${keybinds}, Category - ${category}, Index - ${index}, Value - ${value}`);
});
} else {
exports["oxmysql"].execute("INSERT INTO player_quick_emotes (player_id, keybinds, category, emote_index, pQuickEmote) VALUES (?, ?, ?, ?, ?)", [characterId, keybinds, category, index, value], function () {
console.log(`Inserted new quick emote entry: Keybinds - ${keybinds}, Category - ${category}, Index - ${index}, Value - ${value}`);
});
}
});
return true;
});


now will work perfectly.
can you help me about it i dont understand how i do
 

bboy41

Active member
Apr 16, 2023
121
30
28
Credits
11,352
i am using "
QBCore:Server:OnPlayerLoaded" to check if emotes available withing citizenid of QBCore , so make sure you have this trigger in qb-spawn or multicharacter
see in qb-spawn
RegisterNUICallback('chooseAppa', function(data, cb)
TriggerServerEvent('QBCore:Server:OnPlayerLoaded') --- This one
end)

in multicharacter
RegisterNetEvent('qb-multicharacter:client:closeNUIdefault', function() -- This event is only for no starting apartments
TriggerServerEvent('QBCore:Server:OnPlayerLoaded') ---- Like this
end)
Just Example you can use this trigger in client side of you spawn and multicharacter script or anyother as you like
so it will create the quick emotes for you if not You can set manually
Usage: /setQuickEmote [keybinds] [category] [index] [value] , you need to set correct index EG: /setQuickEmote 0 emotes 1 kneel . like this
im not using qb-spawn and multi char im using izzy spawn and multichar maybe you can help me about it
 

Asnt73

Active member
Aug 7, 2022
82
9
8
27
Nepal
Credits
322
another update for quickemote to work for all section replace

cl_main.Js

add or replace


// Mock function to simulate loading the clip set
function loadClipSet(clipSet) {
return new Promise(resolve => {
// console.log(`Loading clip set: ${clipSet}`);
setTimeout(resolve, 1000); // Simulate async loading
});
}
// Function to set pedestrian walking style
function setPedWalkingStyle(playerPed, walkingStyle) {
loadClipSet(walkingStyle).then(() => {
SetPedMovementClipset(playerPed, walkingStyle, 0.2);
});
}

function playEmote(emote, category, index) {
// console.log('Playing emote:', emote);
if (category === 'emotes') {
const command = `e ${emote}`;
ExecuteCommand(command);
} else if (category === 'expressions') {
const playerPedId = PlayerPedId();
SetFacialIdleAnimOverride(playerPedId, emote);
} else if (category === 'walks') {
const playerPedId = PlayerPedId();
setPedWalkingStyle(playerPedId, emote);
} else if (category === 'placed') {
_0x137c20(0, [emote]);
} else if (category === 'dances') {
_0x36d7c7(index);
} else if (category === 'synced') {
_0x658340(0, [emote]);
} else {
console.log('Unknown category:', category);
}
}

// Register key mappings for quick emotes (using Numpad 0 to 6)
for (let i = 0; i <= 6; i++) {
RegisterKeyMapping(`quickEmote${i}`, `Trigger Quick Emote ${i}`, 'keyboard', `NUMPAD${i}`);
}

// Command to trigger the quick emote for Numpad numbers
for (let i = 0; i <= 6; i++) {
RegisterCommand(`quickEmote${i}`, () => {
// Check if SHIFT key is pressed
if (IsControlPressed(0, 21)) { // 21 is the control ID for SHIFT
NPX.Procedures.execute('emotes:triggerQuickEmote', i.toString());
}
}, false);
}
// Event handler to play the emote
onNet('emotes:playEmote', (emote, category , index) => {
console.log(`Playing emote: ${emote} from category: ${category}, index: ${index}`);
playEmote(emote , category , index);
});

// Register key mapping for 'Delete' key
RegisterKeyMapping('quickEmoteDelete', 'Trigger Quick Emote Delete', 'keyboard', 'DELETE');
// Command to trigger the quick emote for 'Delete' key
RegisterCommand('quickEmoteDelete', () => {
ExecuteCommand('e c');
}, false);
// Register command to get quick emotes
RegisterCommand('getQuickEmotes', () => {
NPX.Procedures.execute('emotes:getQuickEmotes');
}, false);

// Event handler for receiving quick emotes from the server
onNet('emotes:sendQuickEmotes', (quickEmotes) => {
console.log('Quick Emotes:', quickEmotes);
});

// Register command to set a quick emote with keybinds, category, index, and value
RegisterCommand('setQuickEmote', (source, args) => {
if (args.length < 4) {
console.log('Usage: /setQuickEmote [keybinds] [category] [index] [value]');
return;
}

const keybinds = args[0];
const category = args[1];
const index = parseInt(args[2]);
const value = args[3];

console.log(`Setting quick emote: Keybinds - ${keybinds}, Category - ${category}, Index - ${index}, Value - ${value}`);
NPX.Procedures.execute('emotes:setQuickEmote', { _0x3b923e: keybinds, _0x4ccf1e: { category, index, value } });
}, false);

sv_main.js

NPX.Procedures.register("emotes:setQuickEmote", function (pSrc, { _0x3b923e: keybinds, _0x4ccf1e: { category, index, value } }) {
let user = QBCore.Functions.GetPlayer(pSrc);
let characterId = user.PlayerData.citizenid;
// console.log(`Received quick emote to set: Keybinds - ${keybinds}, Category - ${category}, Index - ${index}, Value - ${value}`);
exports["oxmysql"].execute("SELECT id, pQuickEmote FROM player_quick_emotes WHERE player_id = ? AND keybinds = ?", [characterId, keybinds], function (result) {
if (result && result.length > 0) {
exports["oxmysql"].execute("UPDATE player_quick_emotes SET pQuickEmote = ?, emote_index = ?, category = ? WHERE id = ?", [value, index, category, result[0].id], function () {
// console.log(`Updated quick emote entry: Keybinds - ${keybinds}, Category - ${category}, Index - ${index}, Value - ${value}`);
});
} else {
exports["oxmysql"].execute("INSERT INTO player_quick_emotes (player_id, keybinds, category, emote_index, pQuickEmote) VALUES (?, ?, ?, ?, ?)", [characterId, keybinds, category, index, value], function () {
// console.log(`Inserted new quick emote entry: Keybinds - ${keybinds}, Category - ${category}, Index - ${index}, Value - ${value}`);
});
}
});
return true;
});




NPX.Procedures.register("emotes:getQuickEmotes", function (pSrc) {
let user = QBCore.Functions.GetPlayer(pSrc);
let characterId = user.PlayerData.citizenid;
if (!characterId) return null;
return new Promise((resolve, reject) => {
exports["oxmysql"].execute("SELECT * FROM player_quick_emotes WHERE player_id = ?", [characterId], function (result) {
if (result && result.length > 0) {
let quickEmotesData = result.map(row => ({
keybinds:row.keybinds,
category: row.category,
index: row.emote_index,
value: row.pQuickEmote
}));
TriggerClientEvent('emotes:sendQuickEmotes', pSrc, quickEmotesData);
resolve(quickEmotesData);
} else {
TriggerClientEvent('emotes:sendQuickEmotes', pSrc, []);
resolve([]);
}
});
});
});

NPX.Procedures.register("emotes:triggerQuickEmote", function (pSrc, index) {
let user = QBCore.Functions.GetPlayer(pSrc);
let characterId = user.PlayerData.citizenid;
if (!characterId) return null;
exports["oxmysql"].execute("SELECT pQuickEmote, category, emote_index FROM player_quick_emotes WHERE player_id = ? AND keybinds = ?", [characterId, index], function (result) {
if (result && result.length > 0) {
TriggerClientEvent('emotes:playEmote', pSrc, result[0].pQuickEmote, result[0].category, result[0].emote_index);
}
});
});
 
Last edited:

Asnt73

Active member
Aug 7, 2022
82
9
8
27
Nepal
Credits
322
im not using qb-spawn and multi char im using izzy spawn and multichar maybe you can help me about it
-- Register event to ensure default emotes when a player is loaded using QBCore
RegisterNetEvent('QBCore:Server:OnPlayerLoaded')
AddEventHandler('QBCore:Server:OnPlayerLoaded', function()
local player = QBCore.Functions.GetPlayer(source)
local characterId = player.PlayerData.citizenid
ensureDefaultEmotes(characterId)
end)

Here you can use your on script server event to check player load with citizenid then it will work fine or , i will look into it after add config so it will be easier
 

sanmeetsingh

Member
Jul 17, 2022
31
2
8
Credits
124
press delete key or /e c in command or in console
or goto fivem key binding and change key as per you need
it was working at start but once i did the things u asked me to do it stopped working can u just update the link with the fixed version u made?
 

Users who are viewing this thread

Top