NP-EMOTE FIXED Keybinds Working and Save in Database

posted 18-05-2024 11:52 8.404 views 66 replies 50 Credits
Asnt73
0 Posts
480 Credits
N/A Since
#1 8.404 views 66 replies
[MEDIA=imgur]3JrtgHT[/MEDIA] [MEDIA=imgur]p8xI5oO[/MEDIA] https://streamable.com/dod7nd 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 [MEDIA=imgur]AHNALlE[/MEDIA] 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
replies (20)
Striker9090
172 Posts
49,276 Credits
Dec 2022 Since
#1
hi, number of resources ?
miserable_mortgage29
15 Posts
52 Credits
May 2024 Since
#2
Drag and Drop QBCOre , SQL Inside File . Also can set keybinds by commands .
Asnt73
88 Posts
480 Credits
Aug 2022 Since
#3

Striker9090,
hi, number of resources ?

i have put most of np base resources but you can use with only 3 to 4 , I think
dafkeduck
148 Posts
1,425 Credits
Feb 2021 Since
#4
what radialmenu do you use?
bboy41
108 Posts
19,629 Credits
Apr 2023 Since
#5

Asnt73,
[MEDIA=imgur]3JrtgHT[/MEDIA]
[MEDIA=imgur]p8xI5oO[/MEDIA]
https://streamable.com/dod7nd

Drag and Drop QBCOre , SQL Inside File . Also...

quick emotes is not working
bboy41
108 Posts
19,629 Credits
Apr 2023 Since
#6
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
88 Posts
480 Credits
Aug 2022 Since
#7
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
Asnt73
88 Posts
480 Credits
Aug 2022 Since
#8

bboy41,
if you stuck with placed emotes use this code

RegisterCommand("emotemenu", function(source)
TriggerEvent("emotes:OpenMenu")
end)
...

there is already delete key mapped to stop emotes in client side you can do through that too
Asnt73
88 Posts
480 Credits
Aug 2022 Since
#9

dafkeduck,
what radialmenu do you use?

qb-radialmenu , I am not sure from where but i did edit Css and some exports myself to make it work
bboy41
108 Posts
19,629 Credits
Apr 2023 Since
#10

Asnt73,
Quick Update As emotes were not quick sync

change Previous
NPX.Procedures.register("emotes:setQuickEmote", function (pSrc, { _0x3b923e: key...

can you help me about it i dont understand how i do[/characterid][/value][/characterid]
bboy41
108 Posts
19,629 Credits
Apr 2023 Since
#11

Asnt73,
i am using "
QBCore:Server:OnPlayerLoaded" to check if emotes available withing citizenid of QBCore , so make sure you have this trigger in ...

im not using qb-spawn and multi char im using izzy spawn and multichar maybe you can help me about it[/value][/index][/category][/keybinds]
Asnt73
88 Posts
480 Credits
Aug 2022 Since
#12
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);
}
});
});
Asnt73
88 Posts
480 Credits
Aug 2022 Since
#13

bboy41,
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
hunny0260
15 Posts
771 Credits
Apr 2024 Since
#14

Asnt73,
there is already delete key mapped to stop emotes in client side you can do through that too

how to fix stuck with placed emotes
Asnt73
88 Posts
480 Credits
Aug 2022 Since
#15

hunny0260,
how to fix stuck with placed emotes

press delete key or /e c in command or in console
or goto fivem key binding and change key as per you need
sanmeetsingh
30 Posts
755 Credits
Jul 2022 Since
#16

Asnt73,
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?
sanmeetsingh
30 Posts
755 Credits
Jul 2022 Since
#17
[attachment removed]
How To Fix This Error?[/attachment]
sanmeetsingh
30 Posts
755 Credits
Jul 2022 Since
#18
can u also send me your ensure list aswell?
Asnt73
88 Posts
480 Credits
Aug 2022 Since
#19

sanmeetsingh,
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][/np]
LOLITIS
102 Posts
227 Credits
May 2021 Since
#20
don't work give me 50 back !
[CHARGE=50] fix[/CHARGE]

You must be logged in to reply

Login Register