• Please report every thread you think might be harmful or does not meet expectations or the link is offline, you will be refunded the credits you paid and the Thread Starter recieves a message to update his content, if its malicious we remove it and warn and eventualy the TS if it reoccurs.

QBUS NP-EMOTE FIXED Keybinds Working and Save in Database (1 Viewer)

Asnt73

Active member
Joined
Aug 7, 2022
Messages
74
Reaction score
6
Points
8
Age
26
Location
Nepal
Credits
810

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
Joined
Apr 16, 2023
Messages
65
Reaction score
6
Points
8
Credits
2,419
-=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
Joined
Apr 16, 2023
Messages
65
Reaction score
6
Points
8
Credits
2,419
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
Joined
Aug 7, 2022
Messages
74
Reaction score
6
Points
8
Age
26
Location
Nepal
Credits
810
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
Joined
Aug 7, 2022
Messages
74
Reaction score
6
Points
8
Age
26
Location
Nepal
Credits
810
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
Joined
Apr 16, 2023
Messages
65
Reaction score
6
Points
8
Credits
2,419
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
Joined
Apr 16, 2023
Messages
65
Reaction score
6
Points
8
Credits
2,419
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
Joined
Aug 7, 2022
Messages
74
Reaction score
6
Points
8
Age
26
Location
Nepal
Credits
810
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
Joined
Aug 7, 2022
Messages
74
Reaction score
6
Points
8
Age
26
Location
Nepal
Credits
810
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
Joined
Jul 17, 2022
Messages
22
Reaction score
0
Points
1
Credits
211
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?
 

Asnt73

Active member
Joined
Aug 7, 2022
Messages
74
Reaction score
6
Points
8
Age
26
Location
Nepal
Credits
810
can u also send me your ensure list aswell?
ensure np-db
ensure npx
ensure np-lib
ensure np-locales
ensure np-ui
ensure np-polyzone
ensure np-polytarget
ensure np-keybinds
ensure interactions
ensure isPed
ensure [np-emote]
 

Users who are viewing this thread

Top