HighLeaks
Help

NP-EMOTE FIXED Keybinds Working and Save in Database

Asnt73 Asnt73 Started 65 replies 7,612 views 50 Credits

Download Link Locked

Pay 50 credits to unlock the download link for 24 hours.

Login to unlock
#1
[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
#1
hi, number of resources ?
#2
Drag and Drop QBCOre , SQL Inside File . Also can set keybinds by commands .
#3




Striker9090,

wrote:



hi, number of resources ?




i have put most of np base resources but you can use with only 3 to 4 , I think
#4
what radialmenu do you use?
#5




Asnt73,

wrote:



[MEDIA=imgur]3JrtgHT[/MEDIA]

[MEDIA=imgur]p8xI5oO[/MEDIA]

https://streamable.com/dod7nd

-=Stripped Content=-

Drag and Drop QBCOre , SQ...




quick emotes is not working
#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')
#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[/value][/index][/category][/keybinds]
#8




bboy41,

wrote:



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
#9




dafkeduck,

wrote:



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
#10




Asnt73,

wrote:



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]
#11




Asnt73,

wrote:



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]
#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 {

// 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 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);

}

});

});[/characterid][/characterid][/characterid][/value][/characterid][/value][/index][/category][/keybinds][/emote][/emote]
#13




bboy41,

wrote:



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
#14




Asnt73,

wrote:



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
#15




hunny0260,

wrote:



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
#16




Asnt73,

wrote:



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?
#17
[attachment removed]

How To Fix This Error?[/attachment]
#18
can u also send me your ensure list aswell?
#19




sanmeetsingh,

wrote:



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]
#20
don't work give me 50 back !

[CHARGE=50] fix[/CHARGE]