Merge pull request #12 from nik0-3d/main

Fixed Chat and Jailing AND REFACTORRRR
This commit is contained in:
Niko
2022-07-16 00:13:27 -04:00
committed by GitHub
21 changed files with 152 additions and 150 deletions

View File

@@ -36,7 +36,7 @@ end
-- Hide/Show ui
function SetDisplay(bool)
local selectedCharacter = NDCore.functions:getSelectedCharacter()
local selectedCharacter = NDCore.Functions.GetSelectedCharacter()
display = bool
SetNuiFocus(bool, bool)
SendNUIMessage({
@@ -134,7 +134,7 @@ end)
RegisterNetEvent("ND_ATMs:update")
AddEventHandler("ND_ATMs:update", function(status)
Citizen.Wait(1000)
local selectedCharacter = NDCore.functions:getSelectedCharacter()
local selectedCharacter = NDCore.Functions.GetSelectedCharacter()
SendNUIMessage({
balance = "Account Balance: $" .. selectedCharacter.bank .. ".00",
success = status

View File

@@ -1,16 +1,16 @@
NDCore = exports["ND_Core"]:GetCoreObject()
NDCore.functions:versionChecker("ND_ATMs", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_ATMs/fxmanifest.lua")
NDCore.Functions.VersionChecker("ND_ATMs", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_ATMs/fxmanifest.lua")
RegisterNetEvent("ND_ATMs:withdraw")
AddEventHandler("ND_ATMs:withdraw", function(amount)
local player = source
local update = NDCore.functions:withdrawMoney(amount, player)
local update = NDCore.Functions.WithdrawMoney(amount, player)
TriggerClientEvent("ND_ATMs:update", player, update)
end)
RegisterNetEvent("ND_ATMs:deposit")
AddEventHandler("ND_ATMs:deposit", function(amount)
local player = source
local update = NDCore.functions:depositMoney(amount, player)
local update = NDCore.Functions.DepositMoney(amount, player)
TriggerClientEvent("ND_ATMs:update", player, update)
end)

View File

@@ -39,7 +39,7 @@ end
-- Hide/Show ui
function SetDisplay(bool)
local selectedCharacter = NDCore.functions:getSelectedCharacter()
local selectedCharacter = NDCore.Functions.GetSelectedCharacter()
display = bool
SetNuiFocus(bool, bool)
SendNUIMessage({
@@ -146,7 +146,7 @@ end)
RegisterNetEvent("ND_Banks:update")
AddEventHandler("ND_Banks:update", function(status)
Citizen.Wait(1000)
local selectedCharacter = NDCore.functions:getSelectedCharacter()
local selectedCharacter = NDCore.Functions.GetSelectedCharacter()
SendNUIMessage({
balance = "Account Balance: $" .. selectedCharacter.bank .. ".00",
success = status

View File

@@ -1,23 +1,23 @@
NDCore = exports["ND_Core"]:GetCoreObject()
NDCore.functions:versionChecker("ND_Banks", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Banks/fxmanifest.lua")
NDCore.Functions.VersionChecker("ND_Banks", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Banks/fxmanifest.lua")
RegisterNetEvent("ND_Banks:withdraw")
AddEventHandler("ND_Banks:withdraw", function(amount)
local player = source
local update = NDCore.functions:withdrawMoney(amount, player)
local update = NDCore.Functions.WithdrawMoney(amount, player)
TriggerClientEvent("ND_Banks:update", player, update)
end)
RegisterNetEvent("ND_Banks:deposit")
AddEventHandler("ND_Banks:deposit", function(amount)
local player = source
local update = NDCore.functions:depositMoney(amount, player)
local update = NDCore.Functions.DepositMoney(amount, player)
TriggerClientEvent("ND_Banks:update", player, update)
end)
RegisterNetEvent("ND_Banks:transfer")
AddEventHandler("ND_Banks:transfer", function(amount, target)
local player = source
local update = NDCore.functions:transferBank(amount, player, target)
local update = NDCore.Functions.TransferBank(amount, player, target)
TriggerClientEvent("ND_Banks:update", player, update)
end)

View File

@@ -19,8 +19,8 @@ function SetDisplay(bool, typeName, bg)
type = typeName,
background = background,
status = bool,
serverName = NDCore.config.serverName,
characterAmount = tablelength(NDCore.characters) .. "/" .. NDCore.config.characterLimit
serverName = NDCore.Config.serverName,
characterAmount = tablelength(NDCore.characters) .. "/" .. NDCore.Config.characterLimit
})
if config.characterSelectionAopDisplay then
SendNUIMessage({
@@ -32,7 +32,7 @@ end
function start(switch)
TriggerServerEvent("ND_CharacterSelection:checkPerms")
TriggerServerEvent("ND:getCharacters")
TriggerServerEvent("ND:GetCharacters")
if switch then
local ped = PlayerPedId()
SwitchOutPlayer(ped, 0, 1)
@@ -41,8 +41,8 @@ function start(switch)
end
SendNUIMessage({
type = "onStart",
maxStartingBank = NDCore.config.startingBank,
maxStartingCash = NDCore.config.startingCash
maxStartingBank = NDCore.Config.startingBank,
maxStartingCash = NDCore.Config.startingCash
})
if config.characterSelectionAopDisplay then
SendNUIMessage({
@@ -100,10 +100,10 @@ end)
-- Selecting a player from the iu.
RegisterNUICallback("setMainCharacter", function(data)
NDCore.functions:getCharacters(function(characters)
NDCore.selectedCharacter = characters[data.id]
NDCore.Functions.GetCharacters(function(characters)
NDCore.SelectedCharacter = characters[data.id]
end)
for _, spawn in pairs(config.spawns[NDCore.selectedCharacter.job]) do
for _, spawn in pairs(config.spawns[NDCore.SelectedCharacter.job]) do
SendNUIMessage({
type = "setSpawns",
x = spawn.x,
@@ -112,12 +112,12 @@ RegisterNUICallback("setMainCharacter", function(data)
name = spawn.name
})
end
TriggerServerEvent("ND:setCharacterOnline", NDCore.selectedCharacter.id)
TriggerServerEvent("ND:setCharacterOnline", NDCore.SelectedCharacter.id)
end)
-- Creating a character from the ui.
RegisterNUICallback("newCharacter", function(data)
if tablelength(NDCore.characters) < NDCore.config.characterLimit then
if tablelength(NDCore.characters) < NDCore.Config.characterLimit then
TriggerServerEvent("ND_CharacterSelection:newCharacter", {
firstName = data.firstName,
lastName = data.lastName,

View File

@@ -5,8 +5,8 @@ NDCore = exports["ND_Core"]:GetCoreObject()
function validateDepartment(player, department)
local departmentExists = config.departments[department]
if departmentExists then
local discordUserId = string.gsub(NDCore.functions:GetPlayerIdentifierFromType("discord", player), "discord:", "")
local roles = NDCore.functions:getUserDiscordInfo(discordUserId).roles
local discordUserId = string.gsub(NDCore.Functions.GetPlayerIdentifierFromType("discord", player), "discord:", "")
local roles = NDCore.Functions.GetUserDiscordInfo(discordUserId).roles
-- validate that the player actually has the role that they selected on the client.
for _, roleId in pairs(departmentExists) do
@@ -28,7 +28,7 @@ AddEventHandler("ND_CharacterSelection:newCharacter", function(newCharacter)
if not departmentCheck then return end
-- Create the character if the player has permission to the department.
NDCore.functions:createCharacter(player, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job, newCharacter.cash, newCharacter.bank)
NDCore.Functions.CreateCharacter(player, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job, newCharacter.cash, newCharacter.bank)
end)
-- Update the character info when edited.
@@ -41,18 +41,18 @@ AddEventHandler("ND_CharacterSelection:editCharacter", function(newCharacter)
if not departmentCheck then return end
-- Updating the character information in the database.
NDCore.functions:updateCharacterData(newCharacter.id, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job)
NDCore.Functions.UpdateCharacterData(newCharacter.id, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job)
-- Updating characters on the client.
TriggerClientEvent("ND:returnCharacters", player, NDCore.functions:getPlayerCharacters(player))
TriggerClientEvent("ND:returnCharacters", player, NDCore.Functions.GetPlayerCharacters(player))
end)
RegisterNetEvent("ND_CharacterSelection:checkPerms")
AddEventHandler("ND_CharacterSelection:checkPerms", function()
local player = source
local discordUserId = string.gsub(NDCore.functions:GetPlayerIdentifierFromType("discord", player), "discord:", "")
local discordUserId = string.gsub(NDCore.Functions.GetPlayerIdentifierFromType("discord", player), "discord:", "")
local allowedRoles = {}
local roles = NDCore.functions:getUserDiscordInfo(discordUserId).roles
local roles = NDCore.Functions.GetUserDiscordInfo(discordUserId).roles
-- Check if the players discord roles will grant them permission to the department.
for dept, roleTable in pairs(config.departments) do

View File

@@ -1,7 +1,7 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
author "Andyyy#7666"
description "ND Chat commands"
version "2.0.0"
version "2.1.0"
fx_version "cerulean"
game "gta5"

View File

@@ -1,3 +1,5 @@
NDCore = exports["ND_Core"]:GetCoreObject()
if config["/me"] then
TriggerEvent("chat:addSuggestion", "/me", "Send message in the third person (Proximity).", {{ name="Action", help="Describe your action."}})
end
@@ -21,9 +23,12 @@ end
if config["/911"].enabled then
RegisterNetEvent("ND_Chat:911")
AddEventHandler("ND_Chat:911", function(coords, callDescription)
local selectedCharacter = exports["ND_Core"]:getCharacterInfo()
local selectedCharacter
NDCore.Functions.GetSelectedCharacter(function(character)
selectedCharacter = character
end)
for _, department in pairs(config["/911"].callTo) do
if selectedCharacter.department == department then
if selectedCharacter.job == department then
local location = GetStreetNameFromHashKey(GetStreetNameAtCoord(coords.x, coords.y, coords.z))
TriggerEvent("chat:addMessage", {
color = {255, 0, 0},

View File

@@ -1,7 +1,10 @@
NDCore = exports["ND_Core"]:GetCoreObject()
NDCore.Functions.VersionChecker("ND_Chat", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Chat/fxmanifest.lua")
if config["/me"] then
RegisterCommand("me", function(source, args, rawCommand)
local player = source
local players = exports["ND_Core"]:getCharacterTable()
local players = NDCore.Functions.GetPlayers()
local playerCoords = GetEntityCoords(GetPlayerPed(player))
for serverPlayer, _ in pairs(players) do
local targetCoords = GetEntityCoords(GetPlayerPed(serverPlayer))
@@ -18,7 +21,7 @@ end
if config["/gme"] then
RegisterCommand("gme", function(source, args, rawCommand)
local player = source
local players = exports["ND_Core"]:getCharacterTable()
local players = NDCore.Functions.GetPlayers()
TriggerClientEvent("chat:addMessage", -1, {
color = {255, 0, 0},
args = {"^*GME | ^0" .. players[player].firstName .. " " .. players[player].lastName .. " (#" .. player .. ")", table.concat(args, " ")}
@@ -39,7 +42,7 @@ end
if config["/twt"] then
RegisterCommand("twt", function(source, args, rawCommand)
local player = source
local players = exports["ND_Core"]:getCharacterTable()
local players = NDCore.Functions.GetPlayers()
TriggerClientEvent("chat:addMessage", -1, {
template = "<img src='data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz%0D%0AdmcKICB2aWV3Ym94PSIwIDAgMjAwMCAxNjI1LjM2IgogIHdpZHRoPSIyMDAwIgogIGhlaWdodD0i%0D%0AMTYyNS4zNiIKICB2ZXJzaW9uPSIxLjEiCiAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv%0D%0Ac3ZnIj4KICA8cGF0aAogICAgZD0ibSAxOTk5Ljk5OTksMTkyLjQgYyAtNzMuNTgsMzIuNjQgLTE1%0D%0AMi42Nyw1NC42OSAtMjM1LjY2LDY0LjYxIDg0LjcsLTUwLjc4IDE0OS43NywtMTMxLjE5IDE4MC40%0D%0AMSwtMjI3LjAxIC03OS4yOSw0Ny4wMyAtMTY3LjEsODEuMTcgLTI2MC41Nyw5OS41NyBDIDE2MDku%0D%0AMzM5OSw0OS44MiAxNTAyLjY5OTksMCAxMzg0LjY3OTksMCBjIC0yMjYuNiwwIC00MTAuMzI4LDE4%0D%0AMy43MSAtNDEwLjMyOCw0MTAuMzEgMCwzMi4xNiAzLjYyOCw2My40OCAxMC42MjUsOTMuNTEgLTM0%0D%0AMS4wMTYsLTE3LjExIC02NDMuMzY4LC0xODAuNDcgLTg0NS43MzksLTQyOC43MiAtMzUuMzI0LDYw%0D%0ALjYgLTU1LjU1ODMsMTMxLjA5IC01NS41NTgzLDIwNi4yOSAwLDE0Mi4zNiA3Mi40MzczLDI2Ny45%0D%0ANSAxODIuNTQzMywzNDEuNTMgLTY3LjI2MiwtMi4xMyAtMTMwLjUzNSwtMjAuNTkgLTE4NS44NTE5%0D%0ALC01MS4zMiAtMC4wMzksMS43MSAtMC4wMzksMy40MiAtMC4wMzksNS4xNiAwLDE5OC44MDMgMTQx%0D%0ALjQ0MSwzNjQuNjM1IDMyOS4xNDUsNDAyLjM0MiAtMzQuNDI2LDkuMzc1IC03MC42NzYsMTQuMzk1%0D%0AIC0xMDguMDk4LDE0LjM5NSAtMjYuNDQxLDAgLTUyLjE0NSwtMi41NzggLTc3LjIwMywtNy4zNjQg%0D%0ANTIuMjE1LDE2My4wMDggMjAzLjc1LDI4MS42NDkgMzgzLjMwNCwyODQuOTQ2IC0xNDAuNDI5LDEx%0D%0AMC4wNjIgLTMxNy4zNTEsMTc1LjY2IC01MDkuNTk3MiwxNzUuNjYgLTMzLjEyMTEsMCAtNjUuNzg1%0D%0AMSwtMS45NDkgLTk3Ljg4MjgsLTUuNzM4IDE4MS41ODYsMTE2LjQxNzYgMzk3LjI3LDE4NC4zNTkg%0D%0ANjI4Ljk4OCwxODQuMzU5IDc1NC43MzIsMCAxMTY3LjQ2MiwtNjI1LjIzOCAxMTY3LjQ2MiwtMTE2%0D%0ANy40NyAwLC0xNy43OSAtMC40MSwtMzUuNDggLTEuMiwtNTMuMDggODAuMTc5OSwtNTcuODYgMTQ5%0D%0ALjczOTksLTEzMC4xMiAyMDQuNzQ5OSwtMjEyLjQxIgogICAgc3R5bGU9ImZpbGw6IzAwYWNlZCIv%0D%0APgo8L3N2Zz4K' height='16'> <b>{0}</b>: {1}",
multiline = true,
@@ -50,17 +53,17 @@ end
function hasDarkWebPermission(player, players, args)
for _, department in pairs(config["/darkweb"].canNotSee) do
if players[player].dept == department then
if players[player].job == department then
TriggerClientEvent("chat:addMessage", player, {
color = {255, 0, 0},
args = {"^*Error", players[player].dept .. " cannot access this command."}
args = {"^*Error", players[player].job .. " cannot access this command."}
})
return false
end
end
for serverPlayer, playerInfo in pairs(players) do
for _, department in pairs(config["/darkweb"].canNotSee) do
if playerInfo.dept == department then
if playerInfo.job == department then
return false
end
end
@@ -74,7 +77,7 @@ end
if config["/darkweb"].enabled then
RegisterCommand("darkweb", function(source, args, rawCommand)
local player = source
local players = exports["ND_Core"]:getCharacterTable()
local players = NDCore.Functions.GetPlayers()
hasDarkWebPermission(player, players, args)
end, false)
end

View File

@@ -1,22 +1,22 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
NDCore = {}
NDCore.selectedCharacter = nil
NDCore.SelectedCharacter = nil
NDCore.characters = {}
NDCore.functions = {}
NDCore.config = config
NDCore.Functions = {}
NDCore.Config = config
function GetCoreObject()
return NDCore
end
function NDCore.functions:getSelectedCharacter(cb)
if not cb then return NDCore.selectedCharacter end
cb(NDCore.selectedCharacter)
function NDCore.Functions.GetSelectedCharacter(cb)
if not cb then return NDCore.SelectedCharacter end
cb(NDCore.SelectedCharacter)
end
function NDCore.functions:getCharacters(cb)
if not cb then return NDCore.selectedCharacter end
function NDCore.Functions.GetCharacters(cb)
if not cb then return NDCore.SelectedCharacter end
cb(NDCore.characters)
end
@@ -25,12 +25,12 @@ if config.enableRichPrecence then
Citizen.CreateThread(function()
SetDiscordAppId(config.appId)
while true do
if NDCore.selectedCharacter then
SetRichPresence(" Playing : " .. config.serverName .. " as " .. NDCore.selectedCharacter.firstName .. " " .. NDCore.selectedCharacter.lastName)
if NDCore.SelectedCharacter then
SetRichPresence(" Playing : " .. config.serverName .. " as " .. NDCore.SelectedCharacter.firstName .. " " .. NDCore.SelectedCharacter.lastName)
SetDiscordRichPresenceAsset(config.largeLogo)
SetDiscordRichPresenceAssetText("Playing: " .. config.serverName)
SetDiscordRichPresenceAssetSmall(config.smallLogo)
SetDiscordRichPresenceAssetSmallText("Playing as: " .. NDCore.selectedCharacter.firstName .. " " .. NDCore.selectedCharacter.lastName)
SetDiscordRichPresenceAssetSmallText("Playing as: " .. NDCore.SelectedCharacter.firstName .. " " .. NDCore.SelectedCharacter.lastName)
SetDiscordRichPresenceAction(0, config.firstButtonName, config.firstButtonLink)
SetDiscordRichPresenceAction(1, config.secondButtonName, config.secondButtonLink)
end
@@ -44,13 +44,13 @@ if config.customPauseMenu then
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if NDCore.selectedCharacter then
if NDCore.SelectedCharacter then
if IsPauseMenuActive() then
BeginScaleformMovieMethodOnFrontendHeader("SET_HEADING_DETAILS")
AddTextEntry("FE_THDR_GTAO", config.serverName)
ScaleformMovieMethodAddParamPlayerNameString(NDCore.selectedCharacter.firstName .. " " .. NDCore.selectedCharacter.lastName)
PushScaleformMovieFunctionParameterString("Cash: $" .. tostring(NDCore.selectedCharacter.cash))
PushScaleformMovieFunctionParameterString("Bank: $" .. tostring(NDCore.selectedCharacter.bank))
ScaleformMovieMethodAddParamPlayerNameString(NDCore.SelectedCharacter.firstName .. " " .. NDCore.SelectedCharacter.lastName)
PushScaleformMovieFunctionParameterString("Cash: $" .. tostring(NDCore.SelectedCharacter.cash))
PushScaleformMovieFunctionParameterString("Bank: $" .. tostring(NDCore.SelectedCharacter.bank))
EndScaleformMovieMethod()
end
end
@@ -66,13 +66,13 @@ end)
-- updates the money on the client.
RegisterNetEvent("ND:updateMoney")
AddEventHandler("ND:updateMoney", function(cash, bank)
NDCore.selectedCharacter.cash = cash
NDCore.selectedCharacter.bank = bank
NDCore.SelectedCharacter.cash = cash
NDCore.SelectedCharacter.bank = bank
end)
RegisterNetEvent("ND:setCharacter")
AddEventHandler("ND:setCharacter", function(character)
NDCore.selectedCharacter = character
NDCore.SelectedCharacter = character
end)
-- Enables pvp if it's selected in the config.

View File

@@ -1,49 +1,43 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
-- Getting all the characters the player has and returning them to the client.
RegisterNetEvent("ND:getCharacters")
AddEventHandler("ND:getCharacters", function()
RegisterNetEvent("ND:GetCharacters", function()
local player = source
TriggerClientEvent("ND:returnCharacters", player, NDCore.functions:getPlayerCharacters(player))
TriggerClientEvent("ND:returnCharacters", player, NDCore.Functions.GetPlayerCharacters(player))
end)
-- Creating a new character.
RegisterNetEvent("ND:newCharacter")
AddEventHandler("ND:newCharacter", function(newCharacter)
RegisterNetEvent("ND:newCharacter", function(newCharacter)
local player = source
NDCore.functions:createCharacter(player, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job, newCharacter.cash, newCharacter.bank)
NDCore.Functions.CreateCharacter(player, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job, newCharacter.cash, newCharacter.bank)
end)
-- Update the character info when edited.
RegisterNetEvent("ND:editCharacter")
AddEventHandler("ND:editCharacter", function(newCharacter)
RegisterNetEvent("ND:editCharacter", function(newCharacter)
local player = source
NDCore.functions:updateCharacterData(newCharacter.id, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job)
NDCore.Functions.UpdateCharacterData(newCharacter.id, newCharacter.firstName, newCharacter.lastName, newCharacter.dob, newCharacter.gender, newCharacter.twt, newCharacter.job)
end)
-- Delete character from database.
RegisterNetEvent("ND:deleteCharacter")
AddEventHandler("ND:deleteCharacter", function(characterId)
RegisterNetEvent("ND:deleteCharacter", function(characterId)
local player = source
NDCore.functions:deleteCharacter(characterId)
NDCore.Functions.DeleteCharacter(characterId)
end)
-- add a player to the table.
RegisterNetEvent("ND:setCharacterOnline")
AddEventHandler("ND:setCharacterOnline", function(id)
RegisterNetEvent("ND:setCharacterOnline", function(id)
local player = source
NDCore.functions:setActiveCharacter(player, id)
NDCore.Functions.SetActiveCharacter(player, id)
end)
-- Disconnecting a player
RegisterNetEvent("ND:exitGame")
AddEventHandler("ND:exitGame", function()
RegisterNetEvent("ND:exitGame", function()
local player = source
DropPlayer(player, "Disconnected.")
end)
-- Remove player from NDCore.players table when they leave.
-- Remove player from NDCore.Players table when they leave.
AddEventHandler("playerDropped", function()
local player = source
NDCore.players[player] = nil
NDCore.Players[player] = nil
end)

View File

@@ -1,13 +1,13 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
-- Callback to update each selected character on the server.
function NDCore.functions:getPlayers(players)
if not cb then return NDCore.players end
cb(NDCore.players)
function NDCore.Functions.GetPlayers(players)
if not cb then return NDCore.Players end
cb(NDCore.Players)
end
-- Used to retrive the players discord server nickname, discord name and tag, and the roles.
function NDCore.functions:getUserDiscordInfo(discordUserId)
function NDCore.Functions.GetUserDiscordInfo(discordUserId)
local data
PerformHttpRequest("https://discordapp.com/api/guilds/" .. server_config.guildId .. "/members/" .. discordUserId, function(errorCode, resultData, resultHeaders)
if errorCode ~= 200 then
@@ -32,7 +32,7 @@ function NDCore.functions:getUserDiscordInfo(discordUserId)
end
-- Get player any identifier, available types: steam, license, xbl, ip, discord, live.
function NDCore.functions:GetPlayerIdentifierFromType(type, player)
function NDCore.Functions.GetPlayerIdentifierFromType(type, player)
local identifierCount = GetNumPlayerIdentifiers(player)
for count = 0, identifierCount do
local identifier = GetPlayerIdentifier(player, count)
@@ -44,9 +44,9 @@ function NDCore.functions:GetPlayerIdentifierFromType(type, player)
end
-- This will return the server id and ND player data of a nearby player.
function NDCore.functions:getNearbyPedToPlayer(player)
function NDCore.Functions.GetNearbyPedToPlayer(player)
local pedCoords = GetEntityCoords(GetPlayerPed(player))
for targetId, targetInfo in pairs(NDCore.players) do
for targetId, targetInfo in pairs(NDCore.Players) do
local targetCoords = GetEntityCoords(GetPlayerPed(targetId))
if #(pedCoords - targetCoords) < 2.0 and targetId ~= player then
return targetId, targetInfo
@@ -55,21 +55,21 @@ function NDCore.functions:getNearbyPedToPlayer(player)
end
-- update the players money on the client kinda like a refresh.
function NDCore.functions:updateMoney(player)
function NDCore.Functions.UpdateMoney(player)
local player = tonumber(player)
MySQL.query("SELECT cash, bank FROM characters WHERE character_id = ?", {NDCore.players[player].id}, function(result)
MySQL.query("SELECT cash, bank FROM characters WHERE character_id = ?", {NDCore.Players[player].id}, function(result)
if result then
local cash = result[1].cash
local bank = result[1].bank
NDCore.players[player].cash = cash
NDCore.players[player].bank = bank
NDCore.Players[player].cash = cash
NDCore.Players[player].bank = bank
TriggerClientEvent("ND:updateMoney", player, cash, bank)
end
end)
end
-- Transfer money from one players bank account to another.
function NDCore.functions:transferBank(amount, player, target)
function NDCore.Functions.TransferBank(amount, player, target)
local amount = tonumber(amount)
local player = tonumber(player)
local target = tonumber(target)
@@ -91,27 +91,27 @@ function NDCore.functions:transferBank(amount, player, target)
args = {"Error", "You can't send that amount."}
})
return false
elseif NDCore.players[player].bank < amount then
elseif NDCore.Players[player].bank < amount then
TriggerClientEvent("chat:addMessage", player, {
color = {255, 0, 0},
args = {"Error", "You don't have enough money."}
})
return false
else
MySQL.query.await("UPDATE characters SET bank = bank - ? WHERE character_id = ?", {amount, NDCore.players[player].id})
NDCore.functions:updateMoney(player)
MySQL.query.await("UPDATE characters SET bank = bank + ? WHERE character_id = ?", {amount, NDCore.players[target].id})
NDCore.functions:updateMoney(target)
MySQL.query.await("UPDATE characters SET bank = bank - ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
NDCore.Functions.UpdateMoney(player)
MySQL.query.await("UPDATE characters SET bank = bank + ? WHERE character_id = ?", {amount, NDCore.Players[target].id})
NDCore.Functions.UpdateMoney(target)
TriggerClientEvent("chat:addMessage", player, {
color = {0, 255, 0},
args = {"Success", "You paid " .. NDCore.players[target].firstName .. " " .. NDCore.players[target].lastName .. " $" .. amount .. "."}
args = {"Success", "You paid " .. NDCore.Players[target].firstName .. " " .. NDCore.Players[target].lastName .. " $" .. amount .. "."}
})
return true
end
end
-- Give cash from one players wallet to another.
function NDCore.functions:giveCash(amount, player, target)
function NDCore.Functions.GiveCash(amount, player, target)
local amount = tonumber(amount)
local player = tonumber(player)
local target = tonumber(target)
@@ -133,30 +133,30 @@ function NDCore.functions:giveCash(amount, player, target)
args = {"Error", "You can't give that amount."}
})
return false
elseif NDCore.players[player].cash < amount then
elseif NDCore.Players[player].cash < amount then
TriggerClientEvent("chat:addMessage", player, {
color = {255, 0, 0},
args = {"Error", "You don't have enough money."}
})
return false
else
MySQL.query.await("UPDATE characters SET cash = cash - ? WHERE character_id = ?", {amount, NDCore.players[player].id})
NDCore.functions:updateMoney(player)
MySQL.query.await("UPDATE characters SET cash = cash + ? WHERE character_id = ?", {amount, NDCore.players[target].id})
NDCore.functions:updateMoney(target)
MySQL.query.await("UPDATE characters SET cash = cash - ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
NDCore.Functions.UpdateMoney(player)
MySQL.query.await("UPDATE characters SET cash = cash + ? WHERE character_id = ?", {amount, NDCore.Players[target].id})
NDCore.Functions.UpdateMoney(target)
TriggerClientEvent("chat:addMessage", player, {
color = {0, 255, 0},
args = {"Success", "You gave " .. NDCore.players[target].firstName .. " " .. NDCore.players[target].lastName .. " $" .. amount .. "."}
args = {"Success", "You gave " .. NDCore.Players[target].firstName .. " " .. NDCore.Players[target].lastName .. " $" .. amount .. "."}
})
return true
end
end
-- Give money from a players wallet to a nearby player.
function NDCore.functions:giveCashToNearbyPlayer(player, amount)
local targetId = NDCore.functions:getNearbyPedToPlayer(player)
function NDCore.Functions.GiveCashToNearbyPlayer(player, amount)
local targetId = NDCore.Functions.GetNearbyPedToPlayer(player)
if targetId then
NDCore.functions:giveCash(amount, player, targetId)
NDCore.Functions.GiveCash(amount, player, targetId)
return true
end
TriggerClientEvent("chat:addMessage", player, {
@@ -167,59 +167,59 @@ function NDCore.functions:giveCashToNearbyPlayer(player, amount)
end
-- withdraws money from a players bank account to their wallet/cash.
function NDCore.functions:withdrawMoney(amount, player)
function NDCore.Functions.WithdrawMoney(amount, player)
local amount = tonumber(amount)
local player = tonumber(player)
if amount <= 0 then return false end
if NDCore.players[player].bank < amount then return false end
MySQL.query.await("UPDATE characters SET bank = bank - ? WHERE character_id = ?", {amount, NDCore.players[player].id})
MySQL.query.await("UPDATE characters SET cash = cash + ? WHERE character_id = ?", {amount, NDCore.players[player].id})
NDCore.functions:updateMoney(player)
if NDCore.Players[player].bank < amount then return false end
MySQL.query.await("UPDATE characters SET bank = bank - ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
MySQL.query.await("UPDATE characters SET cash = cash + ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
NDCore.Functions.UpdateMoney(player)
return true
end
-- deposits money from a players wallet/cash to their bank account.
function NDCore.functions:depositMoney(amount, player)
function NDCore.Functions.DepositMoney(amount, player)
local amount = tonumber(amount)
local player = tonumber(player)
if amount <= 0 then return false end
if NDCore.players[player].cash < amount then return false end
MySQL.query.await("UPDATE characters SET cash = cash - ? WHERE character_id = ?", {amount, NDCore.players[player].id})
MySQL.query.await("UPDATE characters SET bank = bank + ? WHERE character_id = ?", {amount, NDCore.players[player].id})
NDCore.functions:updateMoney(player)
if NDCore.Players[player].cash < amount then return false end
MySQL.query.await("UPDATE characters SET cash = cash - ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
MySQL.query.await("UPDATE characters SET bank = bank + ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
NDCore.Functions.UpdateMoney(player)
return true
end
-- Deducts money from the player, "bank" or "cash" needs to be specified.
function NDCore.functions:deductMoney(amount, player, from)
function NDCore.Functions.DeductMoney(amount, player, from)
local amount = tonumber(amount)
local player = tonumber(player)
if from == "bank" then
MySQL.query.await("UPDATE characters SET bank = bank - ? WHERE character_id = ?", {amount, NDCore.players[player].id})
MySQL.query.await("UPDATE characters SET bank = bank - ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
elseif from == "cash" then
MySQL.query.await("UPDATE characters SET cash = cash - ? WHERE character_id = ?", {amount, NDCore.players[player].id})
MySQL.query.await("UPDATE characters SET cash = cash - ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
end
NDCore.functions:updateMoney(player)
NDCore.Functions.UpdateMoney(player)
end
-- Adds money from the player, "bank" or "cash" needs to be specified.
function NDCore.functions:addMoney(amount, player, to)
function NDCore.Functions.AddMoney(amount, player, to)
local amount = tonumber(amount)
local player = tonumber(player)
if to == "bank" then
MySQL.query.await("UPDATE characters SET bank = bank + ? WHERE character_id = ?", {amount, NDCore.players[player].id})
MySQL.query.await("UPDATE characters SET bank = bank + ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
elseif to == "cash" then
MySQL.query.await("UPDATE characters SET cash = cash + ? WHERE character_id = ?", {amount, NDCore.players[player].id})
MySQL.query.await("UPDATE characters SET cash = cash + ? WHERE character_id = ?", {amount, NDCore.Players[player].id})
end
NDCore.functions:updateMoney(player)
NDCore.Functions.UpdateMoney(player)
end
-- Adds the players character to the NDCore.players table, this table consists of every players selected character.
function NDCore.functions:setActiveCharacter(player, characterId)
-- Adds the players character to the NDCore.Players table, this table consists of every players selected character.
function NDCore.Functions.SetActiveCharacter(player, characterId)
local result = MySQL.query.await("SELECT * FROM characters WHERE character_id = ?", {characterId})
if result then
local i = result[1]
NDCore.players[player] = {
NDCore.Players[player] = {
id = characterId,
firstName = i.first_name,
lastName = i.last_name,
@@ -231,13 +231,13 @@ function NDCore.functions:setActiveCharacter(player, characterId)
bank = i.bank
}
end
TriggerClientEvent("ND:setCharacter", player, NDCore.players[player])
TriggerClientEvent("ND:setCharacter", player, NDCore.Players[player])
end
-- This returns all the characters the player has.
function NDCore.functions:getPlayerCharacters(player)
function NDCore.Functions.GetPlayerCharacters(player)
local characters = {}
local result = MySQL.query.await("SELECT * FROM characters WHERE license = ?", {NDCore.functions:GetPlayerIdentifierFromType("license", player)})
local result = MySQL.query.await("SELECT * FROM characters WHERE license = ?", {NDCore.Functions.GetPlayerIdentifierFromType("license", player)})
for i = 1, #result do
local temp = result[i]
characters[temp.character_id] = {id = temp.character_id, firstName = temp.first_name, lastName = temp.last_name, dob = temp.dob, gender = temp.gender, twt = temp.twt, job = temp.job, cash = temp.cash, bank = temp.bank}
@@ -246,8 +246,8 @@ function NDCore.functions:getPlayerCharacters(player)
end
-- Creates a new character for the player and returns all their characters to the client.
function NDCore.functions:createCharacter(player, firstName, lastName, dob, gender, twt, job, cash, bank)
local license = NDCore.functions:GetPlayerIdentifierFromType("license", player)
function NDCore.Functions.CreateCharacter(player, firstName, lastName, dob, gender, twt, job, cash, bank)
local license = NDCore.Functions.GetPlayerIdentifierFromType("license", player)
if not cash or not bank or tonumber(cash) > config.startingCash or tonumber(bank) > config.startingBank then
cash = config.startingCash
bank = config.startingBank
@@ -255,21 +255,21 @@ function NDCore.functions:createCharacter(player, firstName, lastName, dob, gend
local result = MySQL.query.await("SELECT character_id FROM characters WHERE license = ?", {license})
if result and config.characterLimit > #result then
MySQL.query.await("INSERT INTO characters (license, first_name, last_name, dob, gender, twt, job, cash, bank) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", {license, firstName, lastName, dob, gender, twt, job, cash, bank})
TriggerClientEvent("ND:returnCharacters", player, NDCore.functions:getPlayerCharacters(player))
TriggerClientEvent("ND:returnCharacters", player, NDCore.Functions.GetPlayerCharacters(player))
end
end
-- Update/edit a character by character id.
function NDCore.functions:updateCharacterData(characterId, firstName, lastName, dob, gender, twt, job)
function NDCore.Functions.UpdateCharacterData(characterId, firstName, lastName, dob, gender, twt, job)
MySQL.query("UPDATE characters SET first_name = ?, last_name = ?, dob = ?, gender = ?, twt = ?, job = ? WHERE character_id = ?", {firstName, lastName, dob, gender, twt, job, characterId})
end
-- Delete a character by character id.
function NDCore.functions:deleteCharacter(characterId)
function NDCore.Functions.DeleteCharacter(characterId)
MySQL.query("DELETE FROM characters WHERE character_id = ?", {characterId})
end
function NDCore.functions:versionChecker(expectedResourceName, resourceName, downloadLink, rawGithubLink)
function NDCore.Functions.VersionChecker(expectedResourceName, resourceName, downloadLink, rawGithubLink)
if expectedResourceName ~= resourceName then
print("^1[^4" .. expectedResourceName .. "^1] WARNING^0")
print("Change the resource name to ^4" .. expectedResourceName .. " ^0or else it won't work properly!")
@@ -306,4 +306,4 @@ function NDCore.functions:versionChecker(expectedResourceName, resourceName, dow
end
end)
end
NDCore.functions:versionChecker("ND_Core", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Core/fxmanifest.lua")
NDCore.Functions.VersionChecker("ND_Core", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Core/fxmanifest.lua")

View File

@@ -1,9 +1,9 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
NDCore = {}
NDCore.players = {}
NDCore.functions = {}
NDCore.config = config
NDCore.Players = {}
NDCore.Functions = {}
NDCore.Config = config
function GetCoreObject()
return NDCore

View File

@@ -1,7 +1,7 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
NDCore = exports["ND_Core"]:GetCoreObject()
local job = NDCore.functions:getSelectedCharacter().job
local job = nil
local hasAccess = false
function drawText3D(coords, text)

View File

@@ -1,7 +1,7 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
NDCore = exports["ND_Core"]:GetCoreObject()
NDCore.functions:versionChecker("ND_Doorlocks", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Doorlocks/fxmanifest.lua")
NDCore.Functions.VersionChecker("ND_Doorlocks", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Doorlocks/fxmanifest.lua")
local updatedDoors = {}

View File

@@ -2,7 +2,7 @@
author "Andyyy#7666"
description "ND Framework Jailing"
version "2.1.0"
version "2.2.0"
fx_version "cerulean"
game "gta5"

View File

@@ -41,7 +41,7 @@ function drawText3D(coords, text)
end
function hasAccess()
local job = NDCore.functions:getSelectedCharacter().job
local job = NDCore.Functions.GetSelectedCharacter().job
for _, department in pairs(config.accessDepartments) do
if department == job then
return true

View File

@@ -1,5 +1,5 @@
NDCore = exports["ND_Core"]:GetCoreObject()
NDCore.functions:versionChecker("ND_Jailing", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Jailing/fxmanifest.lua")
NDCore.Functions.VersionChecker("ND_Jailing", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_Jailing/fxmanifest.lua")
local jailedPlayers = {}
@@ -35,12 +35,12 @@ end
RegisterNetEvent("ND_Jailing:jailPlayer")
AddEventHandler("ND_Jailing:jailPlayer", function(id, time, fine, reason)
local player = source
local players = exports["ND_Core"]:getCharacterTable()
local dept = players[player].dept
local players = NDCore.Functions.GetPlayers()
local dept = players[player].job
for _, department in pairs(config.accessDepartments) do
if department == dept then
jailedPlayers[GetPlayerIdentifierFromType("license", id)] = time
exports["ND_Core"]:deductMoney(fine, id, "bank")
NDCore.Functions.DeductMoney(fine, id, "bank")
TriggerClientEvent("ND_Jailing:jailPlayer", id, time)
sendToDiscord("Jail Logs", "**" .. GetPlayerName(player) .. "** Jailed **" .. GetPlayerName(id) .. "** for **" .. time .. " seconds** with the reason: **" .. reason .. "**.", 1595381)
TriggerClientEvent('chat:addMessage', -1, {

View File

@@ -16,13 +16,13 @@
</select>
<label class="text" for="jailtime">Time</label>
<input id="time" class="input" type="number" placeholder="In seconds" name="jailtime" min="10" required>
<input id="time" class="input" type="number" placeholder="In Seconds" name="jailtime" min="10" required>
<label class="text" for="fine">Fine</label>
<input id="fine" class="input" type="number" placeholder="In seconds" name="fine" max="" required>
<input id="fine" class="input" type="number" placeholder="$1000" name="fine" max="" required>
<label class="text" for="reason">Reason</label>
<input id="reason" class="input" type="text" placeholder="short reason" name="reason" required>
<input id="reason" class="input" type="text" placeholder="Short Reason" name="reason" required>
</div>
<hr id="line" style="position: absolute; margin: auto; left: 0; right: 0; bottom: 15%;">
<p id="error"></p>

View File

@@ -26,7 +26,7 @@ end
-- check if the players department can receive shot spotter alerts.
function isCop()
local job = NDCore.functions:getSelectedCharacter().job
local job = NDCore.Functions.GetSelectedCharacter().job
for _, department in pairs(config.receiveAlerts) do
if department == job then
return true

View File

@@ -1,7 +1,7 @@
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
NDCore = exports["ND_Core"]:GetCoreObject()
NDCore.functions:versionChecker("ND_ShotSpotter", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_ShotSpotter/fxmanifest.lua")
NDCore.Functions.VersionChecker("ND_ShotSpotter", GetCurrentResourceName(), "https://github.com/Andyyy7666/ND_Framework", "https://raw.githubusercontent.com/Andyyy7666/ND_Framework/main/ND_ShotSpotter/fxmanifest.lua")
RegisterNetEvent("ND_ShotSpotter:Trigger")
AddEventHandler("ND_ShotSpotter:Trigger", function(street, pedCoords, postal, zoneName)