mirror of
https://github.com/jimathy/rpemotes.git
synced 2026-03-31 06:33:51 -04:00
refactor/feat: cleaning, minor fixes, new feature to disable specific emotes in vehicle (#129)
Changes: • cleaning • deleted unused code • indentation fixes • minor fixes (proper source usage in server side) • new feature to disable specific emotes from playing inside an vehicle
This commit is contained in:
@@ -325,7 +325,7 @@ Colours = {
|
||||
}
|
||||
|
||||
--[[
|
||||
Utils.lua
|
||||
Utils.lua
|
||||
Utilities
|
||||
--]]
|
||||
|
||||
@@ -395,7 +395,7 @@ function Controller()
|
||||
return not IsInputDisabled(2)
|
||||
end
|
||||
|
||||
--[[
|
||||
--[[
|
||||
UIResRectangle.lua
|
||||
Elements
|
||||
--]]
|
||||
|
||||
24
README.md
24
README.md
@@ -145,7 +145,7 @@ SqlKeybinding = false,
|
||||
|
||||
If you do not want to use the SQL features keep the `oxmysql` region in fxmanifest.lua commented out.
|
||||
|
||||
Alternatively, you can use the keybind command that comes with FiveM without having to use SQL, by entering the following into F8:
|
||||
Alternatively, you can use the keybind command that comes with FiveM without having to use SQL, by entering the following into F8:
|
||||
|
||||
`bind keyboard "Yourbutton" "e youremote"`. To remove the keybind, type `"unbind keyboard "Yourbutton"`.
|
||||
|
||||
@@ -176,7 +176,7 @@ Much like everything else in the menu, server owners can change these keybinds t
|
||||
Server owners can opt in to either overriding the stealth/action animation when pressing the LEFT CONTROL keybind or have players tap LEFT CONTROL twice to switch from stealth to crouch (when enabled in the config.lua file)
|
||||
|
||||
|
||||
**Crouching:**
|
||||
**Crouching:**
|
||||
|
||||
RIGHT CONTROL. Players can move forward, back, left and right as well as turning around. Press SPACEBAR to switch from stomach to back. Pressing RIGHT CONTROL key while running will have the player "dive into" a crouching animation.
|
||||
|
||||
@@ -200,7 +200,7 @@ Alternatively, you can use the 🌟 Favorite menu to find an emote and press ent
|
||||
|
||||
Exit Emotes are used to make cancelling an animation more smoother and dynamic, such as getting up off a chair or throwing a cigarette out instead of dropping it.
|
||||
|
||||
You can add your own Exit Emotes under `AnimationListCustom.lua`'s new `CustomDP.Exits = {}` array.
|
||||
You can add your own Exit Emotes under `AnimationListCustom.lua`'s new `CustomDP.Exits = {}` array.
|
||||
|
||||
Below is an example of how this would look:
|
||||
|
||||
@@ -300,13 +300,13 @@ For localhost servers, comment out onesync from your server.cfg and add the foll
|
||||
|
||||
You can put this before your gamebuild enforcement, aka `+set sv_enforceGameBuild XXXX`
|
||||
|
||||
* Set the desired language and settings in the config.lua under `MenuLanguage = 'en',`
|
||||
* Set the desired language and settings in the config.lua under `MenuLanguage = 'en',`
|
||||
|
||||
* Qb-Core server owners, set `Framework = 'qb-core'` in the config file, otherwise leave it as false.
|
||||
|
||||
* To use the SQL features, install the [oxmysql](https://github.com/overextended/oxmysql) resource then open `keybinds.lua` in RPEmotes. If you do not want to use the SQL features, comment out the `oxmysql` region in fxmanifest.lua.
|
||||
|
||||
Alternatively, you can use the keybind command that comes with FiveM without having the SQL, by entering the following into F8:
|
||||
Alternatively, you can use the keybind command that comes with FiveM without having the SQL, by entering the following into F8:
|
||||
|
||||
`bind keyboard "Yourbutton" "e youremote"`. To remove the keybind, type `"unbind keyboard "Yourbutton"`.
|
||||
|
||||
@@ -385,7 +385,7 @@ Because the menu gets updated frequently, the files get overwritten. To avoid th
|
||||
|
||||
Add your animation code to the `AnimationListCustom.lua` and make a backup of this file, call it `BackUpAnimationListCustom.lua`.
|
||||
|
||||
Whenever an update is released, rename `BackUpAnimationListCustom.lua` to `AnimationListCustom.lua`, click yes to overwrite, and you're good to go.
|
||||
Whenever an update is released, rename `BackUpAnimationListCustom.lua` to `AnimationListCustom.lua`, click yes to overwrite, and you're good to go.
|
||||
|
||||
It is also a good idea to keep a backup of your config file.
|
||||
Below is an example:
|
||||
@@ -417,11 +417,11 @@ If you want to modify RpEmotes ***(does not apply if you want to use it for pers
|
||||
|
||||
|
||||
|
||||
✅ You are allowed to use the custom animations explicitly provided within this repository only
|
||||
✅ You are allowed to use the custom animations explicitly provided within this repository only
|
||||
|
||||
✅ You are allowed to add your own custom animations to this resource and use it on your server. The entire content must remain on your server and not be reuploaded.
|
||||
|
||||
❌ You are not allowed to re-distribute the custom animations provided with this repository either on websites, forums, tebex store or discord.
|
||||
❌ You are not allowed to re-distribute the custom animations provided with this repository either on websites, forums, tebex store or discord.
|
||||
|
||||
❌ You are not allowed to claim the custom animations provided within this resource as your own work
|
||||
|
||||
@@ -431,16 +431,16 @@ If you want to modify RpEmotes ***(does not apply if you want to use it for pers
|
||||
|
||||
**All** custom animations and props were added with permissions from the creators and does **not** contain any paid or leaked work.
|
||||
|
||||
All animation creators have ***specifically*** asked that their content remains free and that the RPEmotes team and community do not try to profit from them, claim them as their own or reupload them anywhere else but TayMcKenzieNZ's GitHub unless express permission has been arranged and granted by their respective creators, therefore you may not extract the animations and / or use them for your own menus.
|
||||
All animation creators have ***specifically*** asked that their content remains free and that the RPEmotes team and community do not try to profit from them, claim them as their own or reupload them anywhere else but TayMcKenzieNZ's GitHub unless express permission has been arranged and granted by their respective creators, therefore you may not extract the animations and / or use them for your own menus.
|
||||
|
||||
|
||||
A huge thank you to the following people for their amazing contributions made to the menu 🫶🏻 :
|
||||
A huge thank you to the following people for their amazing contributions made to the menu 🫶🏻 :
|
||||
|
||||
- Thank you to [Tigerle](https://forum.cfx.re/u/tigerle_studios) for providing the additional code required to make Shared Emotes work to it's full extent
|
||||
|
||||
- Thank you to [SMGMissy](https://forum.cfx.re/u/smgmissy/) for assisting with custom pride flags and how to stream them
|
||||
|
||||
- Thank you to [MissSnowie](https://www.gta5-mods.com/users/MissySnowie) for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord and for the motivational and overal moral support
|
||||
- Thank you to [MissSnowie](https://www.gta5-mods.com/users/MissySnowie) for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord and for the motivational and overal moral support
|
||||
|
||||
- A huge thank you to [Kibook](https://github.com/kibook) for the addition of the Animal Emotes sub menu
|
||||
|
||||
@@ -458,7 +458,7 @@ A huge thank you to the following people for their amazing contributions made t
|
||||
|
||||
- Thank you to [northsqrd](https://github.com/0sqrd) for adding the search function, Animal Emotes config, mobile phone prop texture variants and general contributions
|
||||
|
||||
- Thank you to crusopaul and Eki for discussing KVP and initializing it to the menu for persistent walkstyles
|
||||
- Thank you to crusopaul and Eki for discussing KVP and initializing it to the menu for persistent walkstyles
|
||||
|
||||
- Thank you to [Amnilka](https://www.gta5-mods.com/users/frabi) for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Config.Languages = {
|
||||
['pt'] = { -- Brazilian Portuguese 🇧🇷
|
||||
['pt'] = { -- Brazilian Portuguese 🇧🇷
|
||||
['emotes'] = 'Emotes 🎬',
|
||||
['danceemotes'] = "🕺 Emotes de Danças",
|
||||
['animalemotes'] = "🐩 Emotes de Animais",
|
||||
@@ -59,7 +59,6 @@ Config.Languages = {
|
||||
['firework'] = "Pressione ~y~G~w~ para usar o fogo de artifício",
|
||||
['poop'] = "Pressione ~y~G~w~ para fazer cocô", -- Translated using smodin.io
|
||||
['puke'] = "Pressione ~y~G~w~ para vomitar",
|
||||
|
||||
},
|
||||
['cs'] = { -- Czech 🇨🇿
|
||||
['emotes'] = 'Animace 🎬',
|
||||
@@ -422,7 +421,7 @@ Config.Languages = {
|
||||
['searchshifttofav'] = "Maintenir L-Shift et appuyer sur entrer pour marquer comme favorie.",
|
||||
['searchcantsetfav'] = "Les emotes partagées ne peuvent pas être mise en favorie.",
|
||||
['invalidvariation'] = "Variation de texture invalide. Les sélections valides sont : %s",
|
||||
['firework'] = "Appuyez sur ~y~Gw~ pour utiliser des feux d'artifice", -- GOOGLE TRANSLATED
|
||||
['firework'] = "Appuyez sur ~y~Gw~ pour utiliser des feux d'artifice", -- GOOGLE TRANSLATED
|
||||
['poop'] = "Appuyez sur ~y~G~w~ pour faire caca.", -- Translated using smodin.io
|
||||
['puke'] = "Appuyez sur ~y~G~w~ pour vomir.",
|
||||
},
|
||||
@@ -909,7 +908,7 @@ Config.Languages = {
|
||||
['searchshifttofav'] = "Удерживайте L-Shift и нажмите Enter, чтобы установить в избранное.",
|
||||
['searchcantsetfav'] = "Парные эмоции не могут быть добавлены в избранное.",
|
||||
['invalidvariation'] = "Недопустимая вариация текстуры. Допустимые варианты: %s",
|
||||
['firework'] = "Нажмите ~y~Gw~, чтобы запустить фейерверк.", -- GOOGLE TRANSLATED
|
||||
['firework'] = "Нажмите ~y~Gw~, чтобы запустить фейерверк.", -- GOOGLE TRANSLATED
|
||||
['poop'] = "Нажмите ~y~G~w~, чтобы какать",
|
||||
['puke'] = "Нажмите ~y~G~w~ для рвоты",
|
||||
},
|
||||
@@ -969,7 +968,7 @@ Config.Languages = {
|
||||
['searchshifttofav'] = "Mantén L-Shift y presiona Enter para guardar como favorito.",
|
||||
['searchcantsetfav'] = "Las animaciones compartidas no pueden ser guardadas como favoritas.",
|
||||
['invalidvariation'] = "Variación de textura no válida. Las opciones válidas son: %s",
|
||||
['firework'] = "Presione ~y~Gw~ para usar los fuegos artificiales",
|
||||
['firework'] = "Presione ~y~Gw~ para usar los fuegos artificiales",
|
||||
['poop'] = "Presione ~y~G~w~ para hacer caca",
|
||||
['puke'] = "Presiona ~y~G~w~ para vomitar", ---- Translated via smodin.io
|
||||
},
|
||||
@@ -1094,5 +1093,5 @@ Config.Languages = {
|
||||
['firework'] = "Havai fişeği kullanmak için ~y~G~w~ tuşlarına basın",
|
||||
['poop'] = "Kaka yapmak için ~y~G~w~ tuşlarına basın",
|
||||
['puke'] = "Kusmak için ~y~G~w~ tuşlarına basın",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,8 +13,6 @@ CustomDP.Exits = {}
|
||||
CustomDP.Emotes = {}
|
||||
CustomDP.PropEmotes = {}
|
||||
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------------------
|
||||
--| I don't think you should change the code below unless you know what you are doing |--
|
||||
-----------------------------------------------------------------------------------------
|
||||
|
||||
@@ -164,10 +164,10 @@ local function CrouchKeyPressed()
|
||||
local crouchKey = GetControlInstructionalButton(0, 0xD2D0BEBA, false)
|
||||
local duckKey = GetControlInstructionalButton(0, 36, false)
|
||||
|
||||
-- If they are the same and we aren't prone, then check if we are in stealth mode and how long ago the last button press was.
|
||||
-- If they are the same and we aren't prone, then check if we are in stealth mode and how long ago the last button press was.
|
||||
if crouchKey == duckKey and not IsProne then
|
||||
local timer = GetGameTimer()
|
||||
|
||||
|
||||
-- If we are in stealth mode and we have already pressed the button in the last second
|
||||
if GetPedStealthMovement(playerPed) == 1 and timer - lastKeyPress < 1000 then
|
||||
DisableControlAction(0, 36, true) -- Disable INPUT_DUCK this frame
|
||||
@@ -399,7 +399,7 @@ local function CrawlKeyPressed()
|
||||
return
|
||||
end
|
||||
inAction = true
|
||||
|
||||
|
||||
-- If we are pointing then stop pointing
|
||||
if Pointing then
|
||||
Pointing = false
|
||||
|
||||
@@ -3,8 +3,6 @@ local AnimationDuration = -1
|
||||
local ChosenAnimation = ""
|
||||
local ChosenDict = ""
|
||||
local ChosenAnimOptions = false
|
||||
local MostRecentChosenAnimation = ""
|
||||
local MostRecentChosenDict = ""
|
||||
local MovementType = 0
|
||||
local PlayerGender = "male"
|
||||
local PlayerHasProp = false
|
||||
@@ -22,7 +20,6 @@ local CanCancel = true
|
||||
local InExitEmote = false
|
||||
IsInAnimation = false
|
||||
|
||||
|
||||
-- Remove emotes if needed
|
||||
|
||||
local emoteTypes = {
|
||||
@@ -96,10 +93,10 @@ end
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
TriggerEvent('chat:addSuggestion', '/e', 'Play an emote',
|
||||
{ { name = "emotename", help = "dance, camera, sit or any valid emote." },
|
||||
{ { name = "emotename", help = "dance, camera, sit or any valid emote." },
|
||||
{ name = "texturevariation", help = "(Optional) 1, 2, 3 or any number. Will change the texture of some props used in emotes, for example the color of a phone. Enter -1 to see a list of variations." } })
|
||||
TriggerEvent('chat:addSuggestion', '/emote', 'Play an emote',
|
||||
{ { name = "emotename", help = "dance, camera, sit or any valid emote." },
|
||||
{ { name = "emotename", help = "dance, camera, sit or any valid emote." },
|
||||
{ name = "texturevariation", help = "(Optional) 1, 2, 3 or any number. Will change the texture of some props used in emotes, for example the color of a phone. Enter -1 to see a list of variations." } })
|
||||
if Config.SqlKeybinding then
|
||||
TriggerEvent('chat:addSuggestion', '/emotebind', 'Bind an emote',
|
||||
@@ -123,17 +120,17 @@ if Config.SqlKeybinding then
|
||||
RegisterCommand('emotebinds', function(source, args, raw) EmoteBindsStart(source, args, raw) end, false)
|
||||
end
|
||||
if Config.MenuKeybindEnabled then
|
||||
RegisterCommand('emoteui', function(source, args, raw) OpenEmoteMenu() end, false)
|
||||
RegisterCommand('emoteui', function() OpenEmoteMenu() end, false)
|
||||
RegisterKeyMapping("emoteui", "Open rpemotes menu", "keyboard", Config.MenuKeybind)
|
||||
else
|
||||
RegisterCommand('emotemenu', function(source, args, raw) OpenEmoteMenu() end, false)
|
||||
RegisterCommand('emotemenu', function() OpenEmoteMenu() end, false)
|
||||
end
|
||||
RegisterCommand('emotes', function(source, args, raw) EmotesOnCommand() end, false)
|
||||
RegisterCommand('emotes', function() EmotesOnCommand() end, false)
|
||||
RegisterCommand('walk', function(source, args, raw) WalkCommandStart(source, args, raw) end, false)
|
||||
RegisterCommand('walks', function(source, args, raw) WalksOnCommand() end, false)
|
||||
RegisterCommand('emotecancel', function(source, args, raw) EmoteCancel() end, false)
|
||||
RegisterCommand('walks', function() WalksOnCommand() end, false)
|
||||
RegisterCommand('emotecancel', function() EmoteCancel() end, false)
|
||||
|
||||
RegisterCommand('handsup', function(source, args, raw)
|
||||
RegisterCommand('handsup', function()
|
||||
if Config.HandsupKeybindEnabled then
|
||||
if IsEntityPlayingAnim(PlayerPedId(), "missminuteman_1ig_2", "handsup_base", 51) then
|
||||
EmoteCancel()
|
||||
@@ -399,7 +396,7 @@ function EmoteCommandStart(source, args, raw)
|
||||
for k, v in ipairs(RP.PropEmotes[name].AnimationOptions.PropTextureVariations) do
|
||||
str = str .. string.format("\n(%s) - %s", k, v.Name)
|
||||
end
|
||||
|
||||
|
||||
EmoteChatMessage(string.format(Config.Languages[lang]['invalidvariation'], str), true)
|
||||
OnEmotePlay(RP.PropEmotes[name], 0)
|
||||
return
|
||||
@@ -502,6 +499,10 @@ function OnEmotePlay(EmoteName, textureVariation)
|
||||
return false
|
||||
end
|
||||
|
||||
if EmoteName.AnimationOptions and EmoteName.AnimationOptions.NotInVehicle and InVehicle then
|
||||
return EmoteChatMessage("You can't play this animation while in vehicle.")
|
||||
end
|
||||
|
||||
if ChosenAnimOptions and ChosenAnimOptions.ExitEmote then
|
||||
if RP.Exits[ChosenAnimOptions.ExitEmote][2] ~= EmoteName[2] then
|
||||
return
|
||||
@@ -639,7 +640,7 @@ function OnEmotePlay(EmoteName, textureVariation)
|
||||
RunAnimationThread()
|
||||
MostRecentDict = ChosenDict
|
||||
MostRecentAnimation = ChosenAnimation
|
||||
|
||||
|
||||
if EmoteName.AnimationOptions then
|
||||
if EmoteName.AnimationOptions.Prop then
|
||||
PropName = EmoteName.AnimationOptions.Prop
|
||||
@@ -658,9 +659,9 @@ function OnEmotePlay(EmoteName, textureVariation)
|
||||
if not AddPropToPlayer(PropName, PropBone, PropPl1, PropPl2, PropPl3, PropPl4, PropPl5, PropPl6, textureVariation) then return end
|
||||
if SecondPropEmote then
|
||||
if not AddPropToPlayer(SecondPropName, SecondPropBone, SecondPropPl1, SecondPropPl2, SecondPropPl3,
|
||||
SecondPropPl4, SecondPropPl5, SecondPropPl6, textureVariation) then
|
||||
SecondPropPl4, SecondPropPl5, SecondPropPl6, textureVariation) then
|
||||
DestroyAllProps()
|
||||
return
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@ end
|
||||
|
||||
local EmoteTable = {}
|
||||
local FavEmoteTable = {}
|
||||
local KeyEmoteTable = {}
|
||||
local DanceTable = {}
|
||||
local AnimalTable = {}
|
||||
local PropETable = {}
|
||||
@@ -47,7 +46,7 @@ local ShareTable = {}
|
||||
local FavoriteEmote = ""
|
||||
|
||||
if Config.FavKeybindEnabled then
|
||||
RegisterCommand('emotefav', function(source, args, raw) FavKeybind() end)
|
||||
RegisterCommand('emotefav', function() FavKeybind() end)
|
||||
|
||||
RegisterKeyMapping("emotefav", "Execute your favorite emote", "keyboard", Config.FavKeybind)
|
||||
|
||||
@@ -168,14 +167,14 @@ function AddEmoteMenu(menu)
|
||||
|
||||
for a, b in pairsByKeys(RP.PropEmotes) do
|
||||
x, y, z = table.unpack(b)
|
||||
|
||||
if b.AnimationOptions.PropTextureVariations then
|
||||
|
||||
if b.AnimationOptions.PropTextureVariations then
|
||||
propitem = NativeUI.CreateListItem(z, b.AnimationOptions.PropTextureVariations, 1, "/e (" .. a .. ")")
|
||||
propmenu:AddItem(propitem)
|
||||
else
|
||||
propitem = NativeUI.CreateItem(z, "/e (" .. a .. ")")
|
||||
propmenu:AddItem(propitem)
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(PropETable, a)
|
||||
if not Config.SqlKeybinding then
|
||||
@@ -245,7 +244,7 @@ function AddEmoteMenu(menu)
|
||||
propmenu.OnItemSelect = function(sender, item, index)
|
||||
EmoteMenuStart(PropETable[index], "props")
|
||||
end
|
||||
|
||||
|
||||
propmenu.OnListSelect = function(menu, item, itemIndex, listIndex)
|
||||
EmoteMenuStart(PropETable[itemIndex], "props", item:IndexToItem(listIndex).Value)
|
||||
end
|
||||
@@ -320,7 +319,7 @@ if Config.Search then
|
||||
local item = NativeUI.CreateItem(v.data[3], desc)
|
||||
searchMenu:AddItem(item)
|
||||
end
|
||||
|
||||
|
||||
if v.table == "Dances" and Config.SharedEmotesEnabled then
|
||||
local item2 = NativeUI.CreateItem(v.data[3], "")
|
||||
sharedDanceMenu:AddItem(item2)
|
||||
@@ -335,10 +334,10 @@ if Config.Search then
|
||||
local data = results[index]
|
||||
|
||||
if data == Config.Languages[lang]['sharedanceemotes'] then return end
|
||||
if data == Config.Languages[lang]['rfavorite'] then
|
||||
if data == Config.Languages[lang]['rfavorite'] then
|
||||
FavoriteEmote = ""
|
||||
ShowNotification(Config.Languages[lang]['rfavorite'], 2000)
|
||||
return
|
||||
return
|
||||
end
|
||||
|
||||
if favEnabled and IsControlPressed(0, 21) then
|
||||
@@ -362,7 +361,7 @@ if Config.Search then
|
||||
SimpleNotify(Config.Languages[lang]['sentrequestto'] .. GetPlayerName(target))
|
||||
else
|
||||
SimpleNotify(Config.Languages[lang]['nobodyclose'])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -6,17 +6,18 @@ RegisterNetEvent("ServerEmoteRequest", function(target, emotename, etype)
|
||||
local ped = GetPlayerPed(source)
|
||||
|
||||
if target == -1 then
|
||||
return
|
||||
end
|
||||
local tped = GetPlayerPed(target)
|
||||
local pedcoord = GetEntityCoords(ped)
|
||||
local targetcoord = GetEntityCoords(tped)
|
||||
return
|
||||
end
|
||||
local tped = GetPlayerPed(target)
|
||||
local pedcoord = GetEntityCoords(ped)
|
||||
local targetcoord = GetEntityCoords(tped)
|
||||
|
||||
local distance = #(pedcoord - targetcoord)
|
||||
local distance = #(pedcoord - targetcoord)
|
||||
|
||||
if distance > 3 then
|
||||
return
|
||||
end
|
||||
|
||||
if distance > 3 then
|
||||
return
|
||||
end
|
||||
TriggerClientEvent("ClientEmoteRequestReceive", target, emotename, etype)
|
||||
end)
|
||||
|
||||
@@ -24,17 +25,18 @@ RegisterNetEvent("ServerValidEmote", function(target, requestedemote, otheremote
|
||||
local ped = GetPlayerPed(source)
|
||||
|
||||
if target == -1 then
|
||||
return
|
||||
end
|
||||
local tped = GetPlayerPed(target)
|
||||
local pedcoord = GetEntityCoords(ped)
|
||||
local targetcoord = GetEntityCoords(tped)
|
||||
return
|
||||
end
|
||||
local tped = GetPlayerPed(target)
|
||||
local pedcoord = GetEntityCoords(ped)
|
||||
local targetcoord = GetEntityCoords(tped)
|
||||
|
||||
local distance = #(pedcoord - targetcoord)
|
||||
local distance = #(pedcoord - targetcoord)
|
||||
|
||||
if distance > 3 then
|
||||
return
|
||||
end
|
||||
|
||||
if distance > 3 then
|
||||
return
|
||||
end
|
||||
TriggerClientEvent("SyncPlayEmote", source, otheremote, target)
|
||||
TriggerClientEvent("SyncPlayEmoteSource", target, requestedemote, source)
|
||||
end)
|
||||
@@ -89,7 +91,7 @@ end)
|
||||
local function addKeybindEventHandlers()
|
||||
RegisterNetEvent("rp:ServerKeybindExist", function()
|
||||
local src = source
|
||||
local srcid = GetPlayerIdentifier(source)
|
||||
local srcid = GetPlayerIdentifier(src)
|
||||
MySQL.query('SELECT * FROM dpkeybinds WHERE `id`=@id;', { id = srcid }, function(dpkeybinds)
|
||||
if dpkeybinds[1] then
|
||||
TriggerClientEvent("rp:ClientKeybindExist", src, true)
|
||||
@@ -104,7 +106,7 @@ local function addKeybindEventHandlers()
|
||||
|
||||
RegisterNetEvent("rp:ServerKeybindCreate", function()
|
||||
local src = source
|
||||
local srcid = GetPlayerIdentifier(source)
|
||||
local srcid = GetPlayerIdentifier(src)
|
||||
MySQL.insert('INSERT INTO dpkeybinds (`id`, `keybind1`, `emote1`, `keybind2`, `emote2`, `keybind3`, `emote3`, `keybind4`, `emote4`, `keybind5`, `emote5`, `keybind6`, `emote6`) VALUES (@id, @keybind1, @emote1, @keybind2, @emote2, @keybind3, @emote3, @keybind4, @emote4, @keybind5, @emote5, @keybind6, @emote6);'
|
||||
,
|
||||
{ id = srcid, keybind1 = "num4", emote1 = "", keybind2 = "num5", emote2 = "", keybind3 = "num6", emote3 = "",
|
||||
@@ -117,7 +119,7 @@ local function addKeybindEventHandlers()
|
||||
|
||||
RegisterNetEvent("rp:ServerKeybindGrab", function()
|
||||
local src = source
|
||||
local srcid = GetPlayerIdentifier(source)
|
||||
local srcid = GetPlayerIdentifier(src)
|
||||
MySQL.query('SELECT keybind1, emote1, keybind2, emote2, keybind3, emote3, keybind4, emote4, keybind5, emote5, keybind6, emote6 FROM `dpkeybinds` WHERE `id` = @id'
|
||||
,
|
||||
{ ['@id'] = srcid }, function(kb)
|
||||
|
||||
@@ -7,9 +7,9 @@ if Config.CheckForUpdates then
|
||||
local function CheckMenuVersion()
|
||||
PerformHttpRequest('https://raw.githubusercontent.com/TayMcKenzieNZ/rpemotes/master/version.txt', function(err, text, headers)
|
||||
local currentVersion = GetResourceMetadata(GetCurrentResourceName(), 'version')
|
||||
if not text then
|
||||
if not text then
|
||||
VersionLog('error', 'Currently unable to run a version check.')
|
||||
return
|
||||
return
|
||||
end
|
||||
VersionLog('success', ('Current Version: %s'):format(currentVersion))
|
||||
VersionLog('success', ('Latest Version: %s'):format(text))
|
||||
@@ -20,6 +20,6 @@ if Config.CheckForUpdates then
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
CheckMenuVersion()
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ end)
|
||||
|
||||
if Config.SqlKeybinding then
|
||||
QBCore.Commands.Add('emotebind', 'Bind an emote', {{ name="key", help="num4, num5, num6, num7. num8, num9. Numpad 4-9!"}, { name="emotename", help="dance, camera, sit or any valid emote."}}, true, function(source, args)
|
||||
TriggerClientEvent('animations:client:BindEmote', source, args)
|
||||
TriggerClientEvent('animations:client:BindEmote', source, args)
|
||||
end)
|
||||
|
||||
QBCore.Commands.Add('emotebinds', 'Check your currently bound emotes.', {}, false, function(source)
|
||||
@@ -30,7 +30,7 @@ if Config.SqlKeybinding then
|
||||
end
|
||||
|
||||
QBCore.Commands.Add('emotemenu', 'Open rpemotes menu (F3) by default.', {}, false, function(source)
|
||||
TriggerClientEvent('animations:client:EmoteMenu', source)
|
||||
TriggerClientEvent('animations:client:EmoteMenu', source)
|
||||
end)
|
||||
|
||||
QBCore.Commands.Add('em', 'Open rpemotes menu (F3) by default.', {}, false, function(source)
|
||||
@@ -38,11 +38,11 @@ QBCore.Commands.Add('em', 'Open rpemotes menu (F3) by default.', {}, false, func
|
||||
end)
|
||||
|
||||
QBCore.Commands.Add('emotes', 'List available emotes.', {}, false, function(source)
|
||||
TriggerClientEvent('animations:client:ListEmotes', source)
|
||||
TriggerClientEvent('animations:client:ListEmotes', source)
|
||||
end)
|
||||
|
||||
QBCore.Commands.Add('walk', 'Set your walkingstyle.', {{ name="style", help="/walks for a list of valid styles"}}, true, function(source, args)
|
||||
TriggerClientEvent('animations:client:Walk', source, args)
|
||||
TriggerClientEvent('animations:client:Walk', source, args)
|
||||
end)
|
||||
|
||||
QBCore.Commands.Add('walks', 'List available walking styles.', {}, false, function(source)
|
||||
@@ -50,5 +50,5 @@ QBCore.Commands.Add('walks', 'List available walking styles.', {}, false, functi
|
||||
end)
|
||||
|
||||
QBCore.Commands.Add('nearby', 'Share emote with a nearby player.', {{ name="emotename", help="hug, handshake, bro or any valid shared emote."}}, true, function(source, args)
|
||||
TriggerClientEvent('animations:client:Nearby', source, args)
|
||||
TriggerClientEvent('animations:client:Nearby', source, args)
|
||||
end)
|
||||
Reference in New Issue
Block a user