738 lines
30 KiB
Lua
738 lines
30 KiB
Lua
ESX.RegisterCommand(
|
|
{ "setcoords", "tp" },
|
|
"admin",
|
|
function(xPlayer, args)
|
|
xPlayer.setCoords({ x = args.x, y = args.y, z = args.z })
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Set Coordinates /setcoords Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "X Coord", value = args.x, inline = true },
|
|
{ name = "Y Coord", value = args.y, inline = true },
|
|
{ name = "Z Coord", value = args.z, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
false,
|
|
{
|
|
help = TranslateCap("command_setcoords"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "x", help = TranslateCap("command_setcoords_x"), type = "coordinate" },
|
|
{ name = "y", help = TranslateCap("command_setcoords_y"), type = "coordinate" },
|
|
{ name = "z", help = TranslateCap("command_setcoords_z"), type = "coordinate" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"setjob",
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
if not ESX.DoesJobExist(args.job, args.grade) then
|
|
return showError(TranslateCap("command_setjob_invalid"))
|
|
end
|
|
|
|
args.playerId.setJob(args.job, args.grade)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Set Job /setjob Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Job", value = args.job, inline = true },
|
|
{ name = "Grade", value = args.grade, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_setjob"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "job", help = TranslateCap("command_setjob_job"), type = "string" },
|
|
{ name = "grade", help = TranslateCap("command_setjob_grade"), type = "number" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError)
|
|
local GameBuild = tonumber(GetConvar("sv_enforceGameBuild", 1604))
|
|
if not args.car then args.car = GameBuild >= 2699 and "draugur" or "prototipo" end
|
|
ESX.DiscordLogFields("UserActions", "/car Triggered", "pink", {
|
|
{name = "Player", value = xPlayer.name, inline = true},
|
|
{name = "ID", value = xPlayer.source, inline = true},
|
|
{name = "Vehicle", value = args.car, inline = true}
|
|
})
|
|
local upgrades = Config.MaxAdminVehicles and {
|
|
plate = "ADMINCAR",
|
|
modEngine = 3,
|
|
modBrakes = 2,
|
|
modTransmission = 2,
|
|
modSuspension = 3,
|
|
modArmor = true,
|
|
windowTint = 1,
|
|
} or {}
|
|
local coords = xPlayer.getCoords(true)
|
|
local PlayerPed = GetPlayerPed(xPlayer.source)
|
|
ESX.OneSync.SpawnVehicle(args.car, coords - vector3(0,0, 0.9), GetEntityHeading(PlayerPed), upgrades, function(networkId)
|
|
local vehicle = NetworkGetEntityFromNetworkId(networkId)
|
|
Wait(250)
|
|
TaskWarpPedIntoVehicle(PlayerPed, vehicle, -1)
|
|
|
|
-- VEHICLES KEYS INTEGRATION
|
|
exports["vehicles_keys"]:giveVehicleKeysToPlayerId(xPlayer.source, GetVehicleNumberPlateText(vehicle), "temporary")
|
|
end)
|
|
end, false, {help = TranslateCap('command_car'), validate = false, arguments = {
|
|
{name = 'car',validate = false, help = TranslateCap('command_car_car'), type = 'string'}
|
|
}})
|
|
|
|
ESX.RegisterCommand(
|
|
{ "cardel", "dv" },
|
|
"admin",
|
|
function(xPlayer, args)
|
|
local ped = GetPlayerPed(xPlayer.source)
|
|
local pedVehicle = GetVehiclePedIsIn(ped, false)
|
|
|
|
if DoesEntityExist(pedVehicle) then
|
|
DeleteEntity(pedVehicle)
|
|
end
|
|
|
|
local coords = GetEntityCoords(ped)
|
|
local Vehicles = ESX.OneSync.GetVehiclesInArea(coords, tonumber(args.radius) or 5.0)
|
|
for i = 1, #Vehicles do
|
|
local Vehicle = NetworkGetEntityFromNetworkId(Vehicles[i])
|
|
if DoesEntityExist(Vehicle) then
|
|
DeleteEntity(Vehicle)
|
|
end
|
|
end
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Delete Vehicle /dv Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
})
|
|
end
|
|
end,
|
|
false,
|
|
{
|
|
help = TranslateCap("command_cardel"),
|
|
validate = false,
|
|
arguments = {
|
|
{ name = "radius", validate = false, help = TranslateCap("command_cardel_radius"), type = "number" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
{ "fix", "repair" },
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
local xTarget = args.playerId
|
|
local ped = GetPlayerPed(xTarget.source)
|
|
local pedVehicle = GetVehiclePedIsIn(ped, false)
|
|
if not pedVehicle or GetPedInVehicleSeat(pedVehicle, -1) ~= ped then
|
|
showError(TranslateCap("not_in_vehicle"))
|
|
return
|
|
end
|
|
xTarget.triggerEvent("esx:repairPedVehicle")
|
|
xPlayer.showNotification(TranslateCap("command_repair_success"), true, false, 140)
|
|
if xPlayer.source ~= xTarget.source then
|
|
xTarget.showNotification(TranslateCap("command_repair_success_target"), true, false, 140)
|
|
end
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Fix Vehicle /fix Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = xTarget.name, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_repair"),
|
|
validate = false,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"setaccountmoney",
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
if not args.playerId.getAccount(args.account) then
|
|
return showError(TranslateCap("command_giveaccountmoney_invalid"))
|
|
end
|
|
args.playerId.setAccountMoney(args.account, args.amount, "Government Grant")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Set Account Money /setaccountmoney Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Account", value = args.account, inline = true },
|
|
{ name = "Amount", value = args.amount, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_setaccountmoney"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "account", help = TranslateCap("command_giveaccountmoney_account"), type = "string" },
|
|
{ name = "amount", help = TranslateCap("command_setaccountmoney_amount"), type = "number" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"giveaccountmoney",
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
if not args.playerId.getAccount(args.account) then
|
|
return showError(TranslateCap("command_giveaccountmoney_invalid"))
|
|
end
|
|
args.playerId.addAccountMoney(args.account, args.amount, "Government Grant")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Give Account Money /giveaccountmoney Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Account", value = args.account, inline = true },
|
|
{ name = "Amount", value = args.amount, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_giveaccountmoney"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "account", help = TranslateCap("command_giveaccountmoney_account"), type = "string" },
|
|
{ name = "amount", help = TranslateCap("command_giveaccountmoney_amount"), type = "number" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"removeaccountmoney",
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
if not args.playerId.getAccount(args.account) then
|
|
return showError(TranslateCap("command_removeaccountmoney_invalid"))
|
|
end
|
|
args.playerId.removeAccountMoney(args.account, args.amount, "Government Tax")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Remove Account Money /removeaccountmoney Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Account", value = args.account, inline = true },
|
|
{ name = "Amount", value = args.amount, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_removeaccountmoney"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "account", help = TranslateCap("command_removeaccountmoney_account"), type = "string" },
|
|
{ name = "amount", help = TranslateCap("command_removeaccountmoney_amount"), type = "number" },
|
|
},
|
|
}
|
|
)
|
|
|
|
if not Config.CustomInventory then
|
|
ESX.RegisterCommand(
|
|
"giveitem",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
args.playerId.addInventoryItem(args.item, args.count)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Give Item /giveitem Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Item", value = args.item, inline = true },
|
|
{ name = "Quantity", value = args.count, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_giveitem"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "item", help = TranslateCap("command_giveitem_item"), type = "item" },
|
|
{ name = "count", help = TranslateCap("command_giveitem_count"), type = "number", Validator = {
|
|
validate = function(x) return x > 0 end,
|
|
err = TranslateCap("commanderror_argumentmismatch_positive_number", "count")
|
|
}},
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"giveweapon",
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
if args.playerId.hasWeapon(args.weapon) then
|
|
return showError(TranslateCap("command_giveweapon_hasalready"))
|
|
end
|
|
args.playerId.addWeapon(args.weapon, args.ammo)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Give Weapon /giveweapon Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Weapon", value = args.weapon, inline = true },
|
|
{ name = "Ammo", value = args.ammo, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_giveweapon"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "weapon", help = TranslateCap("command_giveweapon_weapon"), type = "weapon" },
|
|
{ name = "ammo", help = TranslateCap("command_giveweapon_ammo"), type = "number" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"giveammo",
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
if not args.playerId.hasWeapon(args.weapon) then
|
|
return showError(TranslateCap("command_giveammo_noweapon_found"))
|
|
end
|
|
args.playerId.addWeaponAmmo(args.weapon, args.ammo)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Give Ammunition /giveammo Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Weapon", value = args.weapon, inline = true },
|
|
{ name = "Ammo", value = args.ammo, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_giveweapon"),
|
|
validate = false,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "weapon", help = TranslateCap("command_giveammo_weapon"), type = "weapon" },
|
|
{ name = "ammo", help = TranslateCap("command_giveammo_ammo"), type = "number" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"giveweaponcomponent",
|
|
"admin",
|
|
function(xPlayer, args, showError)
|
|
if args.playerId.hasWeapon(args.weaponName) then
|
|
local component = ESX.GetWeaponComponent(args.weaponName, args.componentName)
|
|
|
|
if component then
|
|
if args.playerId.hasWeaponComponent(args.weaponName, args.componentName) then
|
|
showError(TranslateCap("command_giveweaponcomponent_hasalready"))
|
|
else
|
|
args.playerId.addWeaponComponent(args.weaponName, args.componentName)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Give Weapon Component /giveweaponcomponent Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Weapon", value = args.weaponName, inline = true },
|
|
{ name = "Component", value = args.componentName, inline = true },
|
|
})
|
|
end
|
|
end
|
|
else
|
|
showError(TranslateCap("command_giveweaponcomponent_invalid"))
|
|
end
|
|
else
|
|
showError(TranslateCap("command_giveweaponcomponent_missingweapon"))
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_giveweaponcomponent"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "weaponName", help = TranslateCap("command_giveweapon_weapon"), type = "weapon" },
|
|
{ name = "componentName", help = TranslateCap("command_giveweaponcomponent_component"), type = "string" },
|
|
},
|
|
}
|
|
)
|
|
end
|
|
|
|
ESX.RegisterCommand({ "clear", "cls" }, "user", function(xPlayer)
|
|
xPlayer.triggerEvent("chat:clear")
|
|
end, false, { help = TranslateCap("command_clear") })
|
|
|
|
ESX.RegisterCommand({ "clearall", "clsall" }, "admin", function(xPlayer)
|
|
TriggerClientEvent("chat:clear", -1)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Clear Chat /clearall Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
})
|
|
end
|
|
end, true, { help = TranslateCap("command_clearall") })
|
|
|
|
ESX.RegisterCommand("refreshjobs", "admin", function()
|
|
ESX.RefreshJobs()
|
|
end, true, { help = TranslateCap("command_clearall") })
|
|
|
|
if not Config.CustomInventory then
|
|
ESX.RegisterCommand("refreshitems", "admin", function(xPlayer)
|
|
local itemCount = ESX.RefreshItems()
|
|
|
|
xPlayer.showNotification(Translate("command_refreshitems_success", itemCount), true, false, 140)
|
|
end, true, { help = TranslateCap("command_refreshitems") })
|
|
|
|
ESX.RegisterCommand(
|
|
"clearinventory",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
for _, v in ipairs(args.playerId.inventory) do
|
|
if v.count > 0 then
|
|
args.playerId.setInventoryItem(v.name, 0)
|
|
end
|
|
end
|
|
TriggerEvent("esx:playerInventoryCleared", args.playerId)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Clear Inventory /clearinventory Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_clearinventory"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"clearloadout",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
for i = #args.playerId.loadout, 1, -1 do
|
|
args.playerId.removeWeapon(args.playerId.loadout[i].name)
|
|
end
|
|
TriggerEvent("esx:playerLoadoutCleared", args.playerId)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "/clearloadout Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_clearloadout"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
end
|
|
|
|
ESX.RegisterCommand(
|
|
"setgroup",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
if not args.playerId then
|
|
args.playerId = xPlayer.source
|
|
end
|
|
if args.group == "superadmin" then
|
|
args.group = "admin"
|
|
print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7")
|
|
end
|
|
args.playerId.setGroup(args.group)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "/setgroup Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Group", value = args.group, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_setgroup"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "group", help = TranslateCap("command_setgroup_group"), type = "string" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"save",
|
|
"admin",
|
|
function(_, args)
|
|
Core.SavePlayer(args.playerId)
|
|
print(("[^2Info^0] Saved Player - ^5%s^0"):format(args.playerId.source))
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_save"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand("saveall", "admin", function()
|
|
Core.SavePlayers()
|
|
end, true, { help = TranslateCap("command_saveall") })
|
|
|
|
ESX.RegisterCommand("group", { "user", "admin" }, function(xPlayer, _, _)
|
|
print(("%s, you are currently: ^5%s^0"):format(xPlayer.getName(), xPlayer.getGroup()))
|
|
end, true)
|
|
|
|
ESX.RegisterCommand("job", { "user", "admin" }, function(xPlayer, _, _)
|
|
local job = xPlayer.getJob()
|
|
|
|
print(("%s, your job is: ^5%s^0 - ^5%s^0 - ^5%s^0"):format(xPlayer.getName(), job.name, job.grade_label, job.onDuty and "On Duty" or "Off Duty"))
|
|
end, false)
|
|
|
|
ESX.RegisterCommand("info", { "user", "admin" }, function(xPlayer)
|
|
local job = xPlayer.getJob().name
|
|
print(("^2ID: ^5%s^0 | ^2Name: ^5%s^0 | ^2Group: ^5%s^0 | ^2Job: ^5%s^0"):format(xPlayer.source, xPlayer.getName(), xPlayer.getGroup(), job))
|
|
end, false)
|
|
|
|
ESX.RegisterCommand("playtime", { "user", "admin" }, function(xPlayer)
|
|
local playtime = xPlayer.getPlayTime()
|
|
local days = math.floor(playtime / 86400)
|
|
local hours = math.floor((playtime % 86400) / 3600)
|
|
local minutes = math.floor((playtime % 3600) / 60)
|
|
print(("Playtime: ^5%s^0 Days | ^5%s^0 Hours | ^5%s^0 Minutes"):format(days, hours, minutes))
|
|
end, false)
|
|
|
|
ESX.RegisterCommand("coords", "admin", function(xPlayer)
|
|
local ped = GetPlayerPed(xPlayer.source)
|
|
local coords = GetEntityCoords(ped, false)
|
|
local heading = GetEntityHeading(ped)
|
|
print(("Coords - Vector3: ^5%s^0"):format(vector3(coords.x, coords.y, coords.z)))
|
|
print(("Coords - Vector4: ^5%s^0"):format(vector4(coords.x, coords.y, coords.z, heading)))
|
|
end, false)
|
|
|
|
ESX.RegisterCommand("tpm", "admin", function(xPlayer)
|
|
xPlayer.triggerEvent("esx:tpm")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Admin Teleport /tpm Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
})
|
|
end
|
|
end, false)
|
|
|
|
ESX.RegisterCommand(
|
|
"goto",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
local targetCoords = args.playerId.getCoords()
|
|
local srcDim = GetPlayerRoutingBucket(xPlayer.source)
|
|
local targetDim = GetPlayerRoutingBucket(args.playerId.source)
|
|
|
|
if srcDim ~= targetDim then
|
|
SetPlayerRoutingBucket(xPlayer.source, targetDim)
|
|
end
|
|
xPlayer.setCoords(targetCoords)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Admin Teleport /goto Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Target Coords", value = targetCoords, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
false,
|
|
{
|
|
help = TranslateCap("command_goto"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"bring",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
local targetCoords = args.playerId.getCoords()
|
|
local playerCoords = xPlayer.getCoords()
|
|
local targetDim = GetPlayerRoutingBucket(args.playerId.source)
|
|
local srcDim = GetPlayerRoutingBucket(xPlayer.source)
|
|
|
|
if targetDim ~= srcDim then
|
|
SetPlayerRoutingBucket(args.playerId.source, srcDim)
|
|
end
|
|
args.playerId.setCoords(playerCoords)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Admin Teleport /bring Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Target Coords", value = targetCoords, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
false,
|
|
{
|
|
help = TranslateCap("command_bring"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"kill",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
args.playerId.triggerEvent("esx:killPlayer")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Kill Command /kill Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_kill"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"freeze",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
args.playerId.triggerEvent("esx:freezePlayer", "freeze")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Admin Freeze /freeze Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_freeze"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand(
|
|
"unfreeze",
|
|
"admin",
|
|
function(xPlayer, args)
|
|
args.playerId.triggerEvent("esx:freezePlayer", "unfreeze")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Admin UnFreeze /unfreeze Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_unfreeze"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
},
|
|
}
|
|
)
|
|
|
|
ESX.RegisterCommand("noclip", "admin", function(xPlayer)
|
|
xPlayer.triggerEvent("esx:noclip")
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Admin NoClip /noclip Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
})
|
|
end
|
|
end, false)
|
|
|
|
ESX.RegisterCommand("players", "admin", function()
|
|
local xPlayers = ESX.GetExtendedPlayers() -- Returns all xPlayers
|
|
print(("^5%s^2 online player(s)^0"):format(#xPlayers))
|
|
for i = 1, #xPlayers do
|
|
local xPlayer = xPlayers[i]
|
|
print(("^1[^2ID: ^5%s^0 | ^2Name : ^5%s^0 | ^2Group : ^5%s^0 | ^2Identifier : ^5%s^1]^0\n"):format(xPlayer.source, xPlayer.getName(), xPlayer.getGroup(), xPlayer.identifier))
|
|
end
|
|
end, true)
|
|
|
|
ESX.RegisterCommand(
|
|
{"setdim", "setbucket"},
|
|
"admin",
|
|
function(xPlayer, args)
|
|
SetPlayerRoutingBucket(args.playerId.source, args.dimension)
|
|
if Config.AdminLogging then
|
|
ESX.DiscordLogFields("UserActions", "Admin Set Dim /setdim Triggered!", "pink", {
|
|
{ name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true },
|
|
{ name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true },
|
|
{ name = "Target", value = args.playerId.name, inline = true },
|
|
{ name = "Dimension", value = args.dimension, inline = true },
|
|
})
|
|
end
|
|
end,
|
|
true,
|
|
{
|
|
help = TranslateCap("command_setdim"),
|
|
validate = true,
|
|
arguments = {
|
|
{ name = "playerId", help = TranslateCap("commandgeneric_playerid"), type = "player" },
|
|
{ name = "dimension", help = TranslateCap("commandgeneric_dimension"), type = "number" },
|
|
},
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
)
|
|
|