mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-31 02:08:55 +00:00
@@ -1,32 +1,17 @@
|
||||
CreateThread(function()
|
||||
local isDead = false
|
||||
|
||||
while true do
|
||||
local sleep = 1500
|
||||
local player = PlayerId()
|
||||
|
||||
if NetworkIsPlayerActive(player) then
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
if IsPedFatallyInjured(playerPed) and not isDead then
|
||||
sleep = 0
|
||||
isDead = true
|
||||
|
||||
local killerEntity, deathCause = GetPedSourceOfDeath(playerPed), GetPedCauseOfDeath(playerPed)
|
||||
local killerClientId = NetworkGetPlayerIndexFromPed(killerEntity)
|
||||
|
||||
if killerEntity ~= playerPed and killerClientId and NetworkIsPlayerActive(killerClientId) then
|
||||
PlayerKilledByPlayer(GetPlayerServerId(killerClientId), killerClientId, deathCause)
|
||||
else
|
||||
PlayerKilled(deathCause)
|
||||
end
|
||||
|
||||
elseif not IsPedFatallyInjured(playerPed) and isDead then
|
||||
sleep = 0
|
||||
isDead = false
|
||||
end
|
||||
AddEventHandler('gameEventTriggered', function(event, data)
|
||||
if event ~= 'CEventNetworkEntityDamage' then return end
|
||||
local victim, victimDied = data[1], data[4]
|
||||
if not IsPedAPlayer(victim) then return end
|
||||
local player = PlayerId()
|
||||
local playerPed = PlayerPedId()
|
||||
if victimDied and NetworkGetPlayerIndexFromPed(victim) == player and IsPedDeadOrDying(victim, true) then
|
||||
local killerEntity, deathCause = GetPedSourceOfDeath(playerPed), GetPedCauseOfDeath(playerPed)
|
||||
local killerClientId = NetworkGetPlayerIndexFromPed(killerEntity)
|
||||
if killerEntity ~= playerPed and killerClientId and NetworkIsPlayerActive(killerClientId) then
|
||||
PlayerKilledByPlayer(GetPlayerServerId(killerClientId), killerClientId, deathCause)
|
||||
else
|
||||
PlayerKilled(deathCause)
|
||||
end
|
||||
Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ Config.RemoveHudCommonents = {
|
||||
[22] = false, --HUD_WEAPONS
|
||||
}
|
||||
|
||||
Config.MaxAdminVehicles = true -- admin vehicles spawn with max vehcle settings
|
||||
Config.MaxAdminVehicles = false -- admin vehicles spawn with max vehcle settings
|
||||
Config.CustomAIPlates = 'ESX.A111' -- Custom plates for AI vehicles
|
||||
-- Pattern string format
|
||||
--1 will lead to a random number from 0-9.
|
||||
|
||||
@@ -300,10 +300,14 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
end
|
||||
|
||||
function self.canCarryItem(name, count, metadata)
|
||||
local currentWeight, itemWeight = self.weight, ESX.Items[name].weight
|
||||
local newWeight = currentWeight + (itemWeight * count)
|
||||
if ESX.Items[name] then
|
||||
local currentWeight, itemWeight = self.weight, ESX.Items[name].weight
|
||||
local newWeight = currentWeight + (itemWeight * count)
|
||||
|
||||
return newWeight <= self.maxWeight
|
||||
return newWeight <= self.maxWeight
|
||||
else
|
||||
print(('[^3WARNING^7] Item ^5"%s"^7 was used but does not exist!'):format(name))
|
||||
end
|
||||
end
|
||||
|
||||
function self.canSwapItem(firstItem, firstItemCount, testItem, testItemCount)
|
||||
|
||||
@@ -16,7 +16,7 @@ Core.PlayerFunctionOverrides = {}
|
||||
|
||||
AddEventHandler('esx:getSharedObject', function(cb)
|
||||
local Invoke = GetInvokingResource()
|
||||
print(('[^3WARNING^7] ^5%s^7 used ^5esx:getSharedObject^7, this method is deprecated and should not be used! Refer to ^5https://docs.esx-framework.org/tutorials/sharedevent^7 for more info!'):format(Invoke))
|
||||
print(('[^3WARNING^7] ^5%s^7 used ^5esx:getSharedObject^7, this method is deprecated and should not be used, On 30/11/2022 esx:getSharedObject will come to EOL and be fully removed! Refer to ^5https://docs.esx-framework.org/tutorials/sharedevent^7 for more info!'):format(Invoke))
|
||||
cb(ESX)
|
||||
end)
|
||||
|
||||
@@ -121,4 +121,4 @@ RegisterNetEvent("esx:ReturnVehicleType", function(Type, Request)
|
||||
Core.ClientCallbacks[Request](Type)
|
||||
Core.ClientCallbacks[Request] = nil
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
+100
-96
@@ -1,7 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||
<script src="nui://game/ui/jquery.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
|
||||
|
||||
@@ -9,7 +10,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>ESX Context HUD</title>
|
||||
|
||||
<style type="text/css">
|
||||
<style type="text/css">
|
||||
:root {
|
||||
--item-main: #242424;
|
||||
--item-unselectable: #161616;
|
||||
@@ -17,7 +18,8 @@
|
||||
--item-disabled: #393939;
|
||||
}
|
||||
|
||||
html,body {
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
outline: none;
|
||||
@@ -48,20 +50,20 @@
|
||||
|
||||
.center {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.left {
|
||||
top: 50%;
|
||||
left: 25%;
|
||||
transform: translate(-50%,-50%);
|
||||
left: 25%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.right {
|
||||
top: 50%;
|
||||
left: 75%;
|
||||
transform: translate(-50%,-50%);
|
||||
left: 75%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.item {
|
||||
@@ -76,17 +78,17 @@
|
||||
background: var(--item-hover);
|
||||
}
|
||||
|
||||
.item > i {
|
||||
.item>i {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.item > div {
|
||||
.item>div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.item > div > i {
|
||||
.item>div>i {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
@@ -135,100 +137,101 @@
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: rgb(20,20,20);
|
||||
border-radius: 5px;
|
||||
background: rgb(20, 20, 20);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: rgb(30,30,30);
|
||||
background: rgb(30, 30, 30);
|
||||
}
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
flex-direction: row-reverse;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
gap: 5px;
|
||||
display: flex;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
flex-direction: row-reverse;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
/* Hide the browser's default checkbox */
|
||||
.container input {
|
||||
position: relative;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
height: 0;
|
||||
width: 0;
|
||||
position: relative;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
height: 0;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
/* Create a custom checkbox */
|
||||
.checkmark {
|
||||
position: relative;
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
border-radius: 8px;
|
||||
background-color: #eee;
|
||||
position: relative;
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
border-radius: 8px;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
/* On mouse-over, add a grey background color */
|
||||
.container:hover input ~ .checkmark {
|
||||
background-color: #ccc;
|
||||
.container:hover input~.checkmark {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
/* When the checkbox is checked, add a blue background */
|
||||
.container input:checked ~ .checkmark {
|
||||
background-color: #2196F3;
|
||||
.container input:checked~.checkmark {
|
||||
background-color: #2196F3;
|
||||
}
|
||||
|
||||
/* Create the checkmark/indicator (hidden when not checked) */
|
||||
.checkmark:after {
|
||||
content: "";
|
||||
position: relative;
|
||||
display: none;
|
||||
content: "";
|
||||
position: relative;
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Show the checkmark when checked */
|
||||
.container input:checked ~ .checkmark:after {
|
||||
display: block;
|
||||
.container input:checked~.checkmark:after {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="container" class="right">
|
||||
<div class="item unselectable">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
<i class="fas fa-info-circle"></i>
|
||||
<div>
|
||||
<b>Unselectable Item</b>
|
||||
<i>Testing, testing a description here.</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item disabled">
|
||||
<i class="fas fa-times"></i>
|
||||
<i class="fas fa-times"></i>
|
||||
<div>
|
||||
<b>Disabled Item</b>
|
||||
<i>Testing, testing a description here.</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<i class="fas fa-check"></i>
|
||||
<i class="fas fa-check"></i>
|
||||
<div>
|
||||
<b>Item</b>
|
||||
<i>Testing, testing a description here. Generic words to force overflow.</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
const container = document.getElementById("container")
|
||||
|
||||
const CreateElement = (tag = "div",className = "",parent) => {
|
||||
const CreateElement = (tag = "div", className = "", parent) => {
|
||||
const e = document.createElement(tag)
|
||||
e.className = className
|
||||
|
||||
@@ -239,48 +242,48 @@
|
||||
return e
|
||||
}
|
||||
|
||||
function Open(eles,position = "right") {
|
||||
function Open(eles, position = "right") {
|
||||
container.innerHTML = ""
|
||||
container.className = position
|
||||
|
||||
for (let i=0;i<eles.length;i++) {
|
||||
for (let i = 0; i < eles.length; i++) {
|
||||
let ele = eles[i]
|
||||
let item = CreateElement("div","item",container)
|
||||
let item = CreateElement("div", "item", container)
|
||||
|
||||
let icon = CreateElement("i",ele.icon,item)
|
||||
let div = CreateElement("div","",item)
|
||||
let icon = CreateElement("i", ele.icon, item)
|
||||
let div = CreateElement("div", "", item)
|
||||
|
||||
let title = CreateElement("b","",div)
|
||||
let title = CreateElement("b", "", div)
|
||||
title.innerHTML = ele.title
|
||||
|
||||
if (ele.description) {
|
||||
let desc = CreateElement("i","",div)
|
||||
let desc = CreateElement("i", "", div)
|
||||
desc.innerHTML = ele.description || ""
|
||||
}
|
||||
|
||||
if (ele.input) {
|
||||
if (ele.inputType == "radio") {
|
||||
for (let j=0;j<ele.inputValues.length;j++) {
|
||||
for (let j = 0; j < ele.inputValues.length; j++) {
|
||||
let v = ele.inputValues[j]
|
||||
let container = CreateElement("label","container",div)
|
||||
container.innerHTML = v.text
|
||||
let container = CreateElement("label", "container", div)
|
||||
container.innerHTML = v.text
|
||||
|
||||
let input = CreateElement("INPUT","",container)
|
||||
let input = CreateElement("INPUT", "", container)
|
||||
input.type = "radio"
|
||||
input.name = i+1
|
||||
input.name = i + 1
|
||||
input.checked = (ele.inputValue || ele.inputPlaceholder || -1) == v.value
|
||||
|
||||
let span = CreateElement("SPAN","checkmark",container)
|
||||
let span = CreateElement("SPAN", "checkmark", container)
|
||||
|
||||
input.onchange = function() {
|
||||
$.post(`https://${GetParentResourceName()}/changed`,JSON.stringify({
|
||||
index:i+1,
|
||||
value:v.value
|
||||
}))
|
||||
input.onchange = function () {
|
||||
$.post(`https://${GetParentResourceName()}/changed`, JSON.stringify({
|
||||
index: i + 1,
|
||||
value: v.value
|
||||
}))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let input = CreateElement("input","",div)
|
||||
let input = CreateElement("input", "", div)
|
||||
input.type = ele.inputType
|
||||
|
||||
if (ele.inputValue) {
|
||||
@@ -296,34 +299,34 @@
|
||||
if (ele.inputMin) input.min = ele.inputMin;
|
||||
if (ele.inputMax) input.max = ele.inputMax;
|
||||
|
||||
input.onchange = function() {
|
||||
input.onchange = function () {
|
||||
let v = Number(input.value)
|
||||
|
||||
if (ele.inputMin) {
|
||||
v = Math.max(ele.inputMin,v)
|
||||
v = Math.max(ele.inputMin, v)
|
||||
}
|
||||
|
||||
if (ele.inputMax) {
|
||||
v = Math.min(ele.inputMax,v)
|
||||
v = Math.min(ele.inputMax, v)
|
||||
}
|
||||
|
||||
input.value = v
|
||||
input.value = v
|
||||
|
||||
$.post(`https://${GetParentResourceName()}/changed`,JSON.stringify({
|
||||
index:i+1,
|
||||
value:v
|
||||
}))
|
||||
$.post(`https://${GetParentResourceName()}/changed`, JSON.stringify({
|
||||
index: i + 1,
|
||||
value: v
|
||||
}))
|
||||
}
|
||||
break
|
||||
break
|
||||
|
||||
case "text":
|
||||
input.onchange = function() {
|
||||
$.post(`https://${GetParentResourceName()}/changed`,JSON.stringify({
|
||||
index:i+1,
|
||||
value:input.value
|
||||
}))
|
||||
input.onchange = function () {
|
||||
$.post(`https://${GetParentResourceName()}/changed`, JSON.stringify({
|
||||
index: i + 1,
|
||||
value: input.value
|
||||
}))
|
||||
}
|
||||
break
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -332,9 +335,9 @@
|
||||
} else if (ele.unselectable) {
|
||||
item.className += " unselectable"
|
||||
} else if (!ele.input) {
|
||||
item.onclick = function() {
|
||||
$.post(`https://${GetParentResourceName()}/selected`,JSON.stringify({
|
||||
index:i+1
|
||||
item.onclick = function () {
|
||||
$.post(`https://${GetParentResourceName()}/selected`, JSON.stringify({
|
||||
index: i + 1
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -353,7 +356,7 @@
|
||||
Closed()
|
||||
}
|
||||
|
||||
window.addEventListener("message",(e) => {
|
||||
window.addEventListener("message", (e) => {
|
||||
let data = e.data
|
||||
|
||||
if (!data.func || !window[data.func]) {
|
||||
@@ -363,14 +366,14 @@
|
||||
window[data.func](...data.args)
|
||||
})
|
||||
|
||||
window.addEventListener("keydown",(e) => {
|
||||
if (e.key == "Escape" || e.key == "Backspace") {
|
||||
if (e.target.tagName.toLowerCase() == "input") {
|
||||
return
|
||||
}
|
||||
window.addEventListener("keydown", (e) => {
|
||||
if (e.key == "Escape" || e.key == "Backspace") {
|
||||
if (e.target.tagName.toLowerCase() == "input") {
|
||||
return
|
||||
}
|
||||
|
||||
Close()
|
||||
}
|
||||
Close()
|
||||
}
|
||||
})
|
||||
|
||||
// Open([
|
||||
@@ -433,4 +436,5 @@
|
||||
// ])
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -29,7 +29,6 @@ files {
|
||||
'html/index.html',
|
||||
'html/js/script.js',
|
||||
'html/css/style.css',
|
||||
'html/img/esx_identity.png'
|
||||
}
|
||||
|
||||
dependency 'es_extended'
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB |
@@ -182,7 +182,7 @@ if ESX.GetConfig().Multichar then
|
||||
elements[#elements+1] = {title = label,icon = "fa-regular fa-user", value = v.id}
|
||||
end
|
||||
end
|
||||
if #elements < slots then
|
||||
if #elements - 1 < slots then
|
||||
elements[#elements+1] = {title = _('create_char'), icon = "fa-solid fa-plus", value = (#elements+1), new = true}
|
||||
end
|
||||
|
||||
|
||||
@@ -74,20 +74,6 @@ local function PedHandler(ids)
|
||||
SetPedCanRagdoll(npc, false)
|
||||
SetEntityAsMissionEntity(npc, true, true)
|
||||
SetEntityDynamic(npc, false)
|
||||
|
||||
if Config.Target then
|
||||
exports.ox_target:addGlobalPed(npc, {
|
||||
options = {{
|
||||
icon = "fas fa-money-bill-wave",
|
||||
label = TranslateCap('access_bank'),
|
||||
action = function()
|
||||
OpenUi()
|
||||
end
|
||||
}},
|
||||
distance = 2
|
||||
})
|
||||
end
|
||||
|
||||
Peds[id] = npc
|
||||
end
|
||||
end
|
||||
@@ -105,9 +91,6 @@ local function PedHandler(ids)
|
||||
|
||||
if del then
|
||||
DeletePed(handle)
|
||||
if Config.Target then
|
||||
exports.ox_target:removeGlobalPed(handle, {TranslateCap('access_bank')})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -117,9 +100,7 @@ end
|
||||
function OpenUi(atm)
|
||||
atm = atm or false
|
||||
isInMenu = true
|
||||
if not Config.Target then
|
||||
ESX.HideUI()
|
||||
end
|
||||
ESX.HideUI()
|
||||
ESX.TriggerServerCallback('esx_banking:getPlayerData', function(data)
|
||||
SendNUIMessage({
|
||||
showMenu = true,
|
||||
@@ -154,7 +135,7 @@ local function CloseUi()
|
||||
showMenu = false
|
||||
})
|
||||
|
||||
if not Config.Target and (isInMarker or isInAtmMarker) then
|
||||
if (isInMarker or isInAtmMarker) then
|
||||
ESX.TextUI(TranslateCap('press_e_banking'))
|
||||
Listen4Key()
|
||||
end
|
||||
@@ -174,40 +155,6 @@ local function StartThread()
|
||||
CreateThread(function()
|
||||
CreateBlips()
|
||||
|
||||
if Config.Target then
|
||||
exports.ox_target:addModel(Config.AtmModels, {
|
||||
options = {{
|
||||
icon = 'fas fa-credit-card',
|
||||
label = TranslateCap('access_bank'),
|
||||
action = function()
|
||||
OpenUi(true)
|
||||
end
|
||||
}},
|
||||
distance = 1.5
|
||||
})
|
||||
if not Config.EnablePeds then
|
||||
for i = 1, #Config.Banks do
|
||||
local targetInfo = Config.Banks[i].Position
|
||||
exports.ox_target:addBoxZone('openBank' .. i, targetInfo.xyz, 1.5, 1.5, {
|
||||
name = 'openBank' .. i,
|
||||
heading = targetInfo.w,
|
||||
minZ = targetInfo.z - 1.0,
|
||||
maxZ = targetInfo.z + 1.5,
|
||||
debugPoly = Config.Debug
|
||||
}, {
|
||||
options = {{
|
||||
icon = 'fas fa-money-bill-wave',
|
||||
label = TranslateCap('access_bank'),
|
||||
action = function()
|
||||
OpenUi()
|
||||
end
|
||||
}},
|
||||
distance = 2.0
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
while PlayerLoaded do
|
||||
_PlayerPedId = PlayerPedId()
|
||||
_GetEntityCoords = GetEntityCoords(_PlayerPedId)
|
||||
@@ -225,11 +172,11 @@ local function StartThread()
|
||||
PedHandler(closestPed)
|
||||
end
|
||||
|
||||
if not Config.Target and not isInMenu and IsPedOnFoot(PlayerPedId()) then
|
||||
if IsPedOnFoot(PlayerPedId()) then
|
||||
local closestBank = {}
|
||||
|
||||
for i = 1, #Config.AtmModels do
|
||||
local atm = GetClosestObjectOfType(_GetEntityCoords, 3.0, Config.AtmModels[i], false)
|
||||
local atm = GetClosestObjectOfType(_GetEntityCoords, 8.0, Config.AtmModels[i], false)
|
||||
if atm ~= 0 then
|
||||
local atmOffset = GetOffsetFromEntityInWorldCoords(atm, 0.0, -0.7, 0.0)
|
||||
local atmHeading = GetEntityHeading(atm)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
Config = {
|
||||
Debug = false,
|
||||
DrawMarker = 10,
|
||||
Target = false, -- ox_target (https://github.com/overextended/ox_target)
|
||||
Locale = 'en',
|
||||
EnablePeds = true,
|
||||
AtmModels = {`prop_fleeca_atm`, `prop_atm_01`, `prop_atm_02`, `prop_atm_03`},
|
||||
|
||||
@@ -48,7 +48,7 @@ AddEventHandler('esx_banking:doingType', function(typeData)
|
||||
end
|
||||
amount = ESX.Math.Round(amount)
|
||||
|
||||
if amount == nil or amount <= 0 then
|
||||
if amount == nil or (not typeData.pincode and amount <= 0) then
|
||||
TriggerClientEvent("esx:showNotification", source, TranslateCap('invalid_amount'), "error")
|
||||
else
|
||||
if typeData.deposit and amount <= money then
|
||||
@@ -79,7 +79,7 @@ AddEventHandler('esx_banking:doingType', function(typeData)
|
||||
TriggerClientEvent("esx:showNotification", source,
|
||||
TranslateCap(string.format('%s_money', key), amount, typeData.transfer.playerId), "success")
|
||||
else
|
||||
TriggerClientEvent("esx:showNotification", source, TranslateCap(string.format('%s_money', key), amount), "success")
|
||||
TriggerClientEvent("esx:showNotification", source, TranslateCap(string.format('%s_money', key), typeData.pincode and (string.format("%04d", amount)) or amount), "success")
|
||||
end
|
||||
if not typeData.pincode then
|
||||
BANK.LogTransaction(source, string.upper(key), amount, bankMoney)
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
Locales["it"] = {
|
||||
["parking_blip_name"] = 'Garage',
|
||||
["Impound_blip_name"] = 'sequestro',
|
||||
["access_parking"] = 'premi [E] per accedere al parcheggio.',
|
||||
["access_Impound"] = 'premi [E] per accedere al sequestro.',
|
||||
["park_veh"] = 'premi [E] per parcheggiare il veicolo.',
|
||||
["not_owning_veh"] = 'non possiedi questo veicolo!',
|
||||
['veh_released' ] = ' Veicolo recuperato con successo. ' ,
|
||||
['veh_Impound_released'] = ' Veicolo recuperato con successo dal sequestro. ' ,
|
||||
['veh_stored'] = ' Veicolo depositato con successo ' ,
|
||||
['veh_impounded'] = ' Veicolo sequestrato ' ,
|
||||
['no_veh_parking'] = ' Nessun veicolo immagazzinato qui. ' ,
|
||||
['no_veh_impounded'] = ' Nessun veicolo sequestrato. ' ,
|
||||
['no_veh_Impound'] = ' non hai veicoli sequestrati. ' ,
|
||||
['veh_model'] = ' Modello ' ,
|
||||
['veh_plate'] = ' targa ' ,
|
||||
['veh_condition'] = ' Condizione ' ,
|
||||
['veh_action ' ] = ' Azione ' ,
|
||||
['impound_action' ] = ' Sequestro ' ,
|
||||
['veh_exit' ] = ' Ritira veicolo ' ,
|
||||
['pay_impound' ] = ' Paga sequestro ' ,
|
||||
['veh_block' ] = ' Impossibile recuperare il veicolo, la posizione di spawn è bloccata. ' ,
|
||||
['pay_Impound_bill' ] = 'hai pagato ~g~$%s~s~ al sequestro. ' ,
|
||||
['missing_money' ] = ' Non hai abbastanza soldi. '
|
||||
}
|
||||
@@ -17,6 +17,15 @@ AddEventHandler('esx_lscustom:installMod', function()
|
||||
TriggerServerEvent('esx_lscustom:refreshOwnedVehicle', myCar)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_lscustom:restoreMods', function(netId, props)
|
||||
local xVehicle = NetworkGetEntityFromNetworkId(netId)
|
||||
if props ~= nil then
|
||||
if DoesEntityExist(xVehicle) then
|
||||
ESX.Game.SetVehicleProperties(xVehicle, props)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_lscustom:cancelInstallMod')
|
||||
AddEventHandler('esx_lscustom:cancelInstallMod', function()
|
||||
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
|
||||
@@ -51,7 +60,6 @@ AddEventHandler('onResourceStop', function(resource)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
function OpenLSMenu(elems, menuName, menuTitle, parent)
|
||||
ESX.UI.Menu.Open('default', GetCurrentResourceName(), menuName, {
|
||||
title = menuTitle,
|
||||
@@ -82,7 +90,7 @@ function OpenLSMenu(elems, menuName, menuTitle, parent)
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if isRimMod then
|
||||
price = math.floor(vehiclePrice * data.current.price / 100)
|
||||
TriggerServerEvent('esx_lscustom:buyMod', price)
|
||||
@@ -120,6 +128,7 @@ function OpenLSMenu(elems, menuName, menuTitle, parent)
|
||||
lsMenuIsShowed = false
|
||||
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
|
||||
FreezeEntityPosition(vehicle, false)
|
||||
TriggerServerEvent('esx_lscustom:stopModing', myCar.plate)
|
||||
myCar = {}
|
||||
end
|
||||
end, function(data, menu) -- on change
|
||||
@@ -170,7 +179,6 @@ function GetAction(data)
|
||||
local playerPed = PlayerPedId()
|
||||
local vehicle = GetVehiclePedIsIn(playerPed, false)
|
||||
local currentMods = ESX.Game.GetVehicleProperties(vehicle)
|
||||
|
||||
if data.value == 'modSpeakers' or data.value == 'modTrunk' or data.value == 'modHydrolic' or data.value ==
|
||||
'modEngineBlock' or data.value == 'modAirFilter' or data.value == 'modStruts' or data.value == 'modTank' then
|
||||
SetVehicleDoorOpen(vehicle, 4, false)
|
||||
@@ -503,6 +511,9 @@ CreateThread(function()
|
||||
local vehicle = GetVehiclePedIsIn(playerPed, false)
|
||||
FreezeEntityPosition(vehicle, true)
|
||||
myCar = ESX.Game.GetVehicleProperties(vehicle)
|
||||
|
||||
local netId = NetworkGetNetworkIdFromEntity(vehicle)
|
||||
TriggerServerEvent('esx_lscustom:startModing', myCar, netId)
|
||||
|
||||
ESX.UI.Menu.CloseAll()
|
||||
GetAction({
|
||||
|
||||
@@ -0,0 +1,269 @@
|
||||
Locales['it'] = {
|
||||
['by_default'] = 'default',
|
||||
['installed'] = 'installato',
|
||||
['already_own'] = 'possiedi già: %s',
|
||||
['not_enough_money'] = 'non puoi permetterti questa mod!',
|
||||
['purchased'] = 'hai acquistato la mod!',
|
||||
['press_custom'] = 'premi ~b~[E]~s~ per personalizzare il tuo veicolo',
|
||||
['level'] = 'livello %s',
|
||||
['neon'] = 'neon',
|
||||
['blip_name'] = 'los Santos Customs',
|
||||
-- Paint Colors
|
||||
-- Black
|
||||
['black'] = 'nero',
|
||||
['graphite'] = 'grafite',
|
||||
['black_metallic'] = 'nero metallico',
|
||||
['caststeel'] = 'acciaio fuso',
|
||||
['black_anth'] = 'nero antacite',
|
||||
['matteblack'] = 'nero opaco',
|
||||
['darknight'] = 'notte oscura',
|
||||
['deepblack'] = 'nero profondo',
|
||||
['oil'] = 'olio',
|
||||
['carbon'] = 'carbonio',
|
||||
-- White
|
||||
['white'] = 'bianco',
|
||||
['vanilla'] = 'vaniglia',
|
||||
['creme'] = 'crema',
|
||||
['polarwhite'] = 'bianco polare',
|
||||
['beige'] = 'beige',
|
||||
['mattewhite'] = 'bianco opaco',
|
||||
['snow'] = 'neve',
|
||||
['cotton'] = 'cotone',
|
||||
['alabaster'] = 'alabastro',
|
||||
['purewhite'] = 'bianco puro',
|
||||
-- Grey
|
||||
['grey'] = 'grigio',
|
||||
['silver'] = 'argento',
|
||||
['metallicgrey'] = 'grigio metallico',
|
||||
['laminatedsteel'] = 'acciaio laminato',
|
||||
['darkgray'] = 'grigio scuro',
|
||||
['rockygray'] = 'grigio roccioso',
|
||||
['graynight'] = 'grigio notte',
|
||||
['aluminum'] = 'alluminio',
|
||||
['graymat'] = 'grigio opaco',
|
||||
['lightgrey'] = 'grigio chiaro',
|
||||
['asphaltgray'] = 'grigio asfalto',
|
||||
['grayconcrete'] = 'grigio cemento',
|
||||
['darksilver'] = 'argento scuro',
|
||||
['magnesite'] = 'magnesite',
|
||||
['nickel'] = 'nickel',
|
||||
['zinc'] = 'zinco',
|
||||
['dolomite'] = 'dolomite',
|
||||
['bluesilver'] = 'argento blu',
|
||||
['titanium'] = 'titanio',
|
||||
['steelblue'] = 'blu acciaio',
|
||||
['champagne'] = 'champagne',
|
||||
['grayhunter'] = 'grigio cacciatore',
|
||||
-- Red
|
||||
['red'] = 'rosso',
|
||||
['torino_red'] = 'rosso torino',
|
||||
['poppy'] = 'papavero',
|
||||
['copper_red'] = 'rosso rame',
|
||||
['cardinal'] = 'rosso cardinale',
|
||||
['brick'] = 'rosso mattone',
|
||||
['garnet'] = 'Granato',
|
||||
['cabernet'] = 'rosso cabernet',
|
||||
['candy'] = 'caramella rossa',
|
||||
['matte_red'] = 'rosso opaco',
|
||||
['dark_red'] = 'rosso scuro',
|
||||
['red_pulp'] = 'polpa rossa',
|
||||
['bril_red'] = 'rosso brillante',
|
||||
['pale_red'] = 'rosso pallido',
|
||||
['wine_red'] = 'vino rosso',
|
||||
['volcano'] = 'vulcano',
|
||||
-- Pink
|
||||
['pink'] = 'rosa',
|
||||
['electricpink'] = 'rosa elettrico',
|
||||
['brightpink'] = 'rosa brillante',
|
||||
['salmon'] = 'rosa salmone',
|
||||
['sugarplum'] = 'rosa prugna',
|
||||
-- Blue
|
||||
['blue'] = 'blu',
|
||||
['topaz'] = 'blu topazio',
|
||||
['light_blue'] = 'azzurro',
|
||||
['galaxy_blue'] = 'blu galassia',
|
||||
['dark_blue'] = 'blu scuro',
|
||||
['azure'] = 'azzurro',
|
||||
['navy_blue'] = 'blu marino',
|
||||
['lapis'] = 'blu lapislazzulo',
|
||||
['blue_diamond'] = 'blu diamante',
|
||||
['surfer'] = 'surfista',
|
||||
['pastel_blue'] = 'blu pastello',
|
||||
['celeste_blue'] = 'blu celeste',
|
||||
['rally_blue'] = 'rally Blue',
|
||||
['blue_paradise'] = 'blu Paradiso',
|
||||
['blue_night'] = 'blu notte',
|
||||
['cyan_blue'] = 'blu ciano',
|
||||
['cobalt'] = 'cobalto',
|
||||
['electric_blue'] = 'blue elettrico',
|
||||
['horizon_blue'] = 'blu orizzonte',
|
||||
['metallic_blue'] = 'blu metallico',
|
||||
['aquamarine'] = 'acquamarina',
|
||||
['blue_agathe'] = 'blu agata',
|
||||
['zirconium'] = 'zirconio',
|
||||
['spinel'] = 'spinello',
|
||||
['tourmaline'] = 'tormalina',
|
||||
['paradise'] = 'paradiso',
|
||||
['bubble_gum'] = 'blu gomma',
|
||||
['midnight_blue'] = 'blu mezzanotte',
|
||||
['forbidden_blue'] = 'blu proibito',
|
||||
['glacier_blue'] = 'blu glaciale',
|
||||
-- Yellow
|
||||
['yellow'] = 'giallo',
|
||||
['wheat'] = 'giallo grano',
|
||||
['raceyellow'] = 'giallo gara',
|
||||
['paleyellow'] = 'giallo pallido',
|
||||
['lightyellow'] = 'giallo chiaro',
|
||||
-- Green
|
||||
['green'] = 'verde',
|
||||
['met_dark_green'] = 'verde scuro metallico',
|
||||
['rally_green'] = 'verde Rally',
|
||||
['pine_green'] = 'verde pino',
|
||||
['olive_green'] = 'verde oliva',
|
||||
['light_green'] = 'verde chiaro',
|
||||
['lime_green'] = 'verde lime',
|
||||
['forest_green'] = 'verde foresta',
|
||||
['lawn_green'] = 'verde prato',
|
||||
['imperial_green'] = 'verde imperiale',
|
||||
['green_bottle'] = 'verde bottiglia',
|
||||
['citrus_green'] = 'verde agrumi',
|
||||
['green_anis'] = 'verde anici',
|
||||
['khaki'] = 'cachi',
|
||||
['army_green'] = 'verde militare',
|
||||
['dark_green'] = 'verde scuro',
|
||||
['hunter_green'] = 'verde cacciatore',
|
||||
['matte_foilage_green'] = 'verde foglia',
|
||||
-- Orange
|
||||
['orange'] = 'arancione',
|
||||
['tangerine'] = 'mandarino',
|
||||
['matteorange'] = 'arancio opaco',
|
||||
['lightorange'] = 'arancione chiaro',
|
||||
['peach'] = 'pesca',
|
||||
['pumpkin'] = 'zucca',
|
||||
['orangelambo'] = 'arancione Lambo',
|
||||
-- Brown
|
||||
['brown'] = 'marrone',
|
||||
['copper'] = 'rame',
|
||||
['lightbrown'] = 'marrone chiaro',
|
||||
['darkbrown'] = 'marrone scuro',
|
||||
['bronze'] = 'Bronzo',
|
||||
['brownmetallic'] = 'marrone metallico',
|
||||
['expresso'] = 'Espresso',
|
||||
['chocolate'] = 'cioccolato',
|
||||
['terracotta'] = 'Terracotta',
|
||||
['marble'] = 'Marmo',
|
||||
['sand'] = 'Sabbia',
|
||||
['sepia'] = 'Seppia',
|
||||
['bison'] = 'Bisonte',
|
||||
['palm'] = 'Palmo',
|
||||
['caramel'] = 'Caramello',
|
||||
['rust'] = 'Ruggine',
|
||||
['chestnut'] = 'Castagna',
|
||||
['hazelnut'] = 'nocciola',
|
||||
['shell'] = 'guscio',
|
||||
['mahogany'] = 'Mogano',
|
||||
['cauldron'] = 'marrone calderone',
|
||||
['blond'] = 'marrone biondo',
|
||||
['gravel'] = 'marrone ghiaia',
|
||||
['darkearth'] = 'marrone terra scura',
|
||||
['desert'] = 'deserto',
|
||||
-- Purple
|
||||
['purple'] = 'viola',
|
||||
['indigo'] = 'Indaco',
|
||||
['deeppurple'] = 'viola intenso',
|
||||
['darkviolet'] = 'viola scuro',
|
||||
['amethyst'] = 'emetista',
|
||||
['mysticalviolet'] = 'viola mistico',
|
||||
['purplemetallic'] = 'viola metallico',
|
||||
['matteviolet'] = 'viola opaco',
|
||||
['mattedeeppurple'] = 'viola intenso opaco',
|
||||
-- Chrome
|
||||
['chrome'] = 'cromato',
|
||||
['brushedchrome'] = 'cromato spazzolato',
|
||||
['blackchrome'] = 'nero gromato',
|
||||
['brushedaluminum'] = 'alluminio spazzolato',
|
||||
-- Metal
|
||||
['gold'] = 'oro',
|
||||
['puregold'] = 'oro puro',
|
||||
['brushedgold'] = 'oro spazzolato',
|
||||
['lightgold'] = 'oro chiaro',
|
||||
-- License Plates
|
||||
['blue_on_white_1'] = 'blu su bianco 1',
|
||||
['yellow_on_black'] = 'giallo su nero',
|
||||
['yellow_blue'] = 'giallo su blu',
|
||||
['blue_on_white_2'] = 'blu su bianco 2',
|
||||
['blue_on_white_3'] = 'blu su bianco 3',
|
||||
-- Upgrades
|
||||
['upgrades'] = 'aggiornamenti',
|
||||
['engine'] = 'motore',
|
||||
['brakes'] = 'freni',
|
||||
['transmission'] = 'trasmissione',
|
||||
['suspension'] = 'ssospensione',
|
||||
['armor'] = 'armatura',
|
||||
['turbo'] = 'turbo',
|
||||
['no_turbo'] = 'no turbo',
|
||||
-- Cosmetics
|
||||
['cosmetics'] = 'cosmetici',
|
||||
-- Body Parts
|
||||
['bodyparts'] = 'parti del corpo',
|
||||
['leftfender'] = 'parafango sinistro',
|
||||
['rightfender'] = 'parafango destro',
|
||||
['spoilers'] = 'spoiler',
|
||||
['sideskirt'] = 'gonna laterale',
|
||||
['cage'] = 'gabbia',
|
||||
['hood'] = 'cappuccio',
|
||||
['grille'] = 'griglia',
|
||||
['rearbumper'] = 'paraurti posteriore',
|
||||
['frontbumper'] = 'paraurti anteriore',
|
||||
['exhaust'] = 'scarico',
|
||||
['roof'] = 'tetto',
|
||||
-- Paint
|
||||
['respray'] = 'verici',
|
||||
['primary'] = 'primaria',
|
||||
['secondary'] = 'secondaria',
|
||||
['pearlescent'] = 'perlescente',
|
||||
-- Misc
|
||||
['headlights'] = 'fari',
|
||||
['licenseplates'] = 'targa',
|
||||
['windowtint'] = 'tinta finestrino',
|
||||
['horns'] = 'clacson',
|
||||
-- Neon
|
||||
['neons'] = 'neons',
|
||||
-- Wheels
|
||||
['wheels'] = 'ruote',
|
||||
['tiresmoke'] = 'fumo pneumatici',
|
||||
['wheel_type'] = 'tipo di ruota',
|
||||
['wheel_color'] = 'colore cerchione',
|
||||
['sport'] = 'sport',
|
||||
['muscle'] = 'muscle',
|
||||
['lowrider'] = 'lowrider',
|
||||
['suv'] = 'SUV',
|
||||
['allterrain'] = 'tutti i terreni',
|
||||
['tuning'] = 'tuning',
|
||||
['motorcycle'] = 'moto',
|
||||
['highend'] = 'fascia alta',
|
||||
|
||||
['modplateholder'] = 'targa - posteriore',
|
||||
['modvanityplate'] = 'targa - anteriore',
|
||||
['interior'] = 'interni',
|
||||
['trim'] = 'trim',
|
||||
['dashboard'] = 'cruscotto',
|
||||
['speedometer'] = 'tachimetro',
|
||||
['door_speakers'] = 'casse audio',
|
||||
['seats'] = 'sedili',
|
||||
['steering_wheel'] = 'volante',
|
||||
['gear_lever'] = 'leva del cambio',
|
||||
['quarter_deck'] = 'quarter-deck',
|
||||
['speakers'] = 'altoparlanti',
|
||||
['trunk'] = 'tronco',
|
||||
['hydraulic'] = 'idraulica',
|
||||
['engine_block'] = 'blocco motore',
|
||||
['air_filter'] = 'filtro aria',
|
||||
['struts'] = 'puntoni',
|
||||
['arch_cover'] = 'cover',
|
||||
['aerials'] = 'antenne',
|
||||
['wings'] = 'ali',
|
||||
['fuel_tank'] = 'serbatoio carburante',
|
||||
['windows'] = 'finestrini',
|
||||
['stickers'] = 'Livrea',
|
||||
}
|
||||
@@ -1,4 +1,40 @@
|
||||
local Vehicles
|
||||
local Customs = {}
|
||||
|
||||
RegisterNetEvent('esx_lscustom:startModing', function(props, netId)
|
||||
local src = tostring(source)
|
||||
if Customs[src] then
|
||||
Customs[src][props.plate] = {props = props, netId = netId}
|
||||
else
|
||||
Customs[src] = {}
|
||||
Customs[src][props.plate] = {props = props, netId = netId}
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx_lscustom:stopModing', function(plate)
|
||||
local src = tostring(source)
|
||||
if Customs[src] then
|
||||
Customs[src][tostring(plate)] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('esx:playerDropped', function(src)
|
||||
src = tostring(src)
|
||||
local playersCount = #ESX.GetExtendedPlayers()
|
||||
if Customs[src] then
|
||||
for k,v in pairs(Customs[src]) do
|
||||
local entity = NetworkGetEntityFromNetworkId(v.netId)
|
||||
if DoesEntityExist(entity) then
|
||||
if players > 0 then
|
||||
TriggerClientEvent('esx_lscustom:restoreMods', -1, v.netId, v.props)
|
||||
else
|
||||
DeleteEntity(entity)
|
||||
end
|
||||
end
|
||||
end
|
||||
Customs[src] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_lscustom:buyMod')
|
||||
AddEventHandler('esx_lscustom:buyMod', function(price)
|
||||
@@ -41,9 +77,9 @@ AddEventHandler('esx_lscustom:refreshOwnedVehicle', function(vehicleProps)
|
||||
function(result)
|
||||
if result then
|
||||
local vehicle = json.decode(result.vehicle)
|
||||
|
||||
if vehicleProps.model == vehicle.model then
|
||||
MySQL.update('UPDATE owned_vehicles SET vehicle = ? WHERE plate = ?', {json.encode(vehicleProps), vehicleProps.plate})
|
||||
Customs[tostring(source)][tostring(vehicleProps.plate)].props = props
|
||||
else
|
||||
print(('[^3WARNING^7] Player ^5%s^7 Attempted To upgrade with mismatching vehicle model'):format(xPlayer.source))
|
||||
end
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
]]
|
||||
]]
|
||||
function CCTV(PropertyID)
|
||||
DoScreenFadeOut(500)
|
||||
Wait(500)
|
||||
@@ -70,7 +70,7 @@ function CCTV(PropertyID)
|
||||
PushScaleformMovieFunctionParameterInt(4)
|
||||
N_0xe83a3e3557a56640(GetControlInstructionalButton(1, Config.CCTV.Controls.ZoomOut, true))
|
||||
N_0xe83a3e3557a56640(GetControlInstructionalButton(1, Config.CCTV.Controls.ZoomIn, true))
|
||||
InstructionButtonMessage(TranslateCap("Zoom"))
|
||||
InstructionButtonMessage(TranslateCap("zoom"))
|
||||
PopScaleformMovieFunctionVoid()
|
||||
|
||||
PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
|
||||
|
||||
@@ -103,14 +103,14 @@ if Config.Furniture.Enabled then
|
||||
PushScaleformMovieFunctionParameterInt(5)
|
||||
N_0xe83a3e3557a56640(GetControlInstructionalButton(1, Config.Furniture.Controls.Up, true))
|
||||
N_0xe83a3e3557a56640(GetControlInstructionalButton(1, Config.Furniture.Controls.Down, true))
|
||||
InstructionButtonMessage(TranslateCap("Height"))
|
||||
InstructionButtonMessage(TranslateCap("height"))
|
||||
PopScaleformMovieFunctionVoid()
|
||||
|
||||
PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
|
||||
PushScaleformMovieFunctionParameterInt(7)
|
||||
N_0xe83a3e3557a56640(GetControlInstructionalButton(1, Config.Furniture.Controls.RotateLeft, true))
|
||||
N_0xe83a3e3557a56640(GetControlInstructionalButton(1, Config.Furniture.Controls.RotateRight, true))
|
||||
InstructionButtonMessage(TranslateCap("Rotation"))
|
||||
InstructionButtonMessage(TranslateCap("rotate"))
|
||||
PopScaleformMovieFunctionVoid()
|
||||
|
||||
PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
|
||||
|
||||
@@ -281,7 +281,7 @@ function PropertyMenuElements(PropertyId)
|
||||
value = 'property_wardrobe'})
|
||||
end
|
||||
table.insert(elements,
|
||||
{title = TranslateCap("Furniture_title"), description = TranslateCap("Furniture_desc"), icon = "fas fa-boxes-stacked", value = 'property_furniture'})
|
||||
{title = TranslateCap("furniture_title"), description = TranslateCap("furniture_desc"), icon = "fas fa-boxes-stacked", value = 'property_furniture'})
|
||||
end
|
||||
end
|
||||
if (not Property.Locked or Config.OwnerCanAlwaysEnter and ESX.PlayerData.identifier == Property.Owner) and not InProperty then
|
||||
@@ -454,7 +454,7 @@ function OpenPropertyMenu(PropertyId)
|
||||
local eles = PropertyMenuElements(PropertyId)
|
||||
exports["esx_context"]:Refresh(eles)
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap("cannot_Sell"), "error")
|
||||
ESX.ShowNotification(TranslateCap("cannot_sell"), "error")
|
||||
end
|
||||
end, PropertyId, element.value)
|
||||
end
|
||||
@@ -476,7 +476,7 @@ function OpenPropertyMenu(PropertyId)
|
||||
local eles = PropertyMenuElements(PropertyId)
|
||||
exports["esx_context"]:Refresh(eles)
|
||||
else
|
||||
ESX.ShowNotification(TranslateCap("cannot_Sell"), "error")
|
||||
ESX.ShowNotification(TranslateCap("cannot_sell"), "error")
|
||||
end
|
||||
end, PropertyId)
|
||||
end
|
||||
|
||||
@@ -4,8 +4,8 @@ Locales['en'] = {
|
||||
["take_picture"] = "Take Picture",
|
||||
["rot_left_right"] = "Left/Right",
|
||||
["rot_up_down"] = "Up/Down",
|
||||
["Zoom"] = "Zoom In/Out",
|
||||
["Zoom_level"] = "Zoom Level: %s %",
|
||||
["zoom"] = "Zoom In/Out",
|
||||
["zoom_level"] = "Zoom Level: %s %",
|
||||
["night_vision"] = "Toggle Night Vision",
|
||||
["clipboard"] = "Link Copied To ~b~Cipboard",
|
||||
["picture_taken"] = "Picture Taken!",
|
||||
@@ -14,7 +14,7 @@ Locales['en'] = {
|
||||
|
||||
--- Furniture Strings ------
|
||||
|
||||
["Height"] = "Height",
|
||||
["height"] = "Height",
|
||||
["rotate"] = "Rotation",
|
||||
["place"] = "Place Furniture",
|
||||
["delete_furni"] = "Delete",
|
||||
@@ -41,7 +41,7 @@ Locales['en'] = {
|
||||
["menu_edit"] = "Edit",
|
||||
["menu_edit_desc"] = "Move and/or Delete furniture items",
|
||||
["furni_command"] = "furniture",
|
||||
["furni_Command_desc"] = "(ESX Property) Open Furniture Menu",
|
||||
["furni_command_desc"] = "(ESX Property) Open Furniture Menu",
|
||||
["furni_command_permission"] = "You ~r~Cannot~s~ Access This Menu!",
|
||||
["furni_reset_success"] = "Furniture Reset!",
|
||||
["furni_cannot_afford"] = "You Cannot Afford Todo this!",
|
||||
@@ -113,8 +113,8 @@ Locales['en'] = {
|
||||
["inventory_desc"] = "Change Position of Property Storage.",
|
||||
["wardrobe_title"] = "Wardrobe",
|
||||
["wardrobe_desc"] = "Change Position of Property Wardrobe.",
|
||||
["Furniture_title"] = "Furniture",
|
||||
["Furniture_desc"] = "Change Position of Property Furniture.",
|
||||
["furniture_title"] = "Furniture",
|
||||
["furniture_desc"] = "Change Position of Property Furniture.",
|
||||
["enter_title"] = "Enter",
|
||||
["knock_title"] = "Knock On Door",
|
||||
["buy_title"] = "Buy",
|
||||
@@ -139,11 +139,11 @@ Locales['en'] = {
|
||||
["please_finish"] = "Please Finish Setting ~b~%s~s~ Position",
|
||||
["cannot_afford"] = "You Cannot Purchase This Property!",
|
||||
["select_player"] = "Select Player",
|
||||
["cannot_Sell"] = "Cannot Sell To This Player!",
|
||||
["cannot_sell"] = "Cannot Sell To This Player!",
|
||||
["knock_on_door"] = "Knocking On Door...",
|
||||
["nobody_home"] = "It Seems Nobody is home...",
|
||||
|
||||
---------- General Strings ----------------
|
||||
---------- General Strings ----------------
|
||||
|
||||
["enabled"] = "Enabled",
|
||||
["disabled"] = "Disabled",
|
||||
@@ -166,7 +166,7 @@ Locales['en'] = {
|
||||
["cannot_access_property"] = 'You ~r~Cannot~s~ Access this property.',
|
||||
|
||||
|
||||
----------------- Creation Menu Strings ----------------
|
||||
----------------- Creation Menu Strings ----------------
|
||||
|
||||
["menu_title"] = "Property Creation",
|
||||
["element_title1"] = "Street Number",
|
||||
|
||||
@@ -4,8 +4,8 @@ Locales['nl'] = {
|
||||
["take_picture"] = "Neem foto",
|
||||
["rot_left_right"] = "Links/Rechts",
|
||||
["rot_up_down"] = "Omhoog/Omblaag",
|
||||
["Zoom"] = "Zoom In/Uit",
|
||||
["Zoom_level"] = "Zoom Level: %s %",
|
||||
["zoom"] = "Zoom In/Uit",
|
||||
["zoom_level"] = "Zoom Level: %s %",
|
||||
["night_vision"] = "Nachtcamera aanzetten",
|
||||
["clipboard"] = "Link gekopierd naar ~b~klembord",
|
||||
["picture_taken"] = "Foto genomen!",
|
||||
@@ -14,7 +14,7 @@ Locales['nl'] = {
|
||||
|
||||
--- Furniture Strings ------
|
||||
|
||||
["Height"] = "Hoogte",
|
||||
["height"] = "Hoogte",
|
||||
["rotate"] = "Rotatie",
|
||||
["place"] = "Plaats Meubel",
|
||||
["delete_furni"] = "Verwijder",
|
||||
@@ -41,7 +41,7 @@ Locales['nl'] = {
|
||||
["menu_edit"] = "Aanpassen",
|
||||
["menu_edit_desc"] = "Verplaats en/of verwijder meubels",
|
||||
["furni_command"] = "meubel",
|
||||
["furni_Command_desc"] = "(ESX Property) Open meubel menu",
|
||||
["furni_command_desc"] = "(ESX Property) Open meubel menu",
|
||||
["furni_command_permission"] = "Je ~r~Kan dit~s~ menu niet betreden!",
|
||||
["furni_reset_success"] = "Meubel Reset!",
|
||||
["furni_cannot_afford"] = "Je kan dit niet betalen!",
|
||||
@@ -113,8 +113,8 @@ Locales['nl'] = {
|
||||
["inventory_desc"] = "Verander positie van de berging.",
|
||||
["wardrobe_title"] = "Kledingkast",
|
||||
["wardrobe_desc"] = "Verander de positie van de kledingkast.",
|
||||
["Furniture_title"] = "Meubels",
|
||||
["Furniture_desc"] = "Verander de positie van een meubel",
|
||||
["furniture_title"] = "Meubels",
|
||||
["furniture_desc"] = "Verander de positie van een meubel",
|
||||
["enter_title"] = "Ga naar binnen",
|
||||
["knock_title"] = "Klop op de deur",
|
||||
["buy_title"] = "Koop",
|
||||
@@ -139,11 +139,11 @@ Locales['nl'] = {
|
||||
["please_finish"] = "Maak het plaatsen van ~b~%s~s~ eerst af.",
|
||||
["cannot_afford"] = "Je kan dit gebouw niet kopen!",
|
||||
["select_player"] = "Selecteer speler",
|
||||
["cannot_Sell"] = "Kan niet aan deze speler verkopen!",
|
||||
["cannot_sell"] = "Kan niet aan deze speler verkopen!",
|
||||
["knock_on_door"] = "Op deur kloppen...",
|
||||
["nobody_home"] = "Lijkt erop alsof niemand thuis is...",
|
||||
|
||||
---------- General Strings ----------------
|
||||
---------- General Strings ----------------
|
||||
|
||||
["enabled"] = "Aan",
|
||||
["disabled"] = "Uit",
|
||||
@@ -166,7 +166,7 @@ Locales['nl'] = {
|
||||
["cannot_access_property"] = 'Je ~r~kan niet~s~ dit gebouw betreden.',
|
||||
|
||||
|
||||
----------------- Creation Menu Strings ----------------
|
||||
----------------- Creation Menu Strings ----------------
|
||||
|
||||
["menu_title"] = "Gebouw creatie",
|
||||
["element_title1"] = "Straat nummer",
|
||||
|
||||
@@ -4,8 +4,8 @@ Locales['tc'] = {
|
||||
["take_picture"] = "拍攝照片",
|
||||
["rot_left_right"] = "左/右",
|
||||
["rot_up_down"] = "上/下",
|
||||
["Zoom"] = "放大/縮小",
|
||||
["Zoom_level"] = "縮放等級: %s %",
|
||||
["zoom"] = "放大/縮小",
|
||||
["zoom_level"] = "縮放等級: %s %",
|
||||
["night_vision"] = "切換夜視模式",
|
||||
["clipboard"] = "圖片連結已複製至 ~b~剪貼簿",
|
||||
["picture_taken"] = "已拍攝照片!",
|
||||
@@ -14,7 +14,7 @@ Locales['tc'] = {
|
||||
|
||||
--- Furniture Strings ------
|
||||
|
||||
["Height"] = "高度",
|
||||
["height"] = "高度",
|
||||
["rotate"] = "角度",
|
||||
["place"] = "放置家具",
|
||||
["delete_furni"] = "移除",
|
||||
@@ -41,7 +41,7 @@ Locales['tc'] = {
|
||||
["menu_edit"] = "編輯",
|
||||
["menu_edit_desc"] = "移動、移除家具物品",
|
||||
["furni_command"] = "furniture",
|
||||
["furni_Command_desc"] = "(ESX Property) 打開家具選單",
|
||||
["furni_command_desc"] = "(ESX Property) 打開家具選單",
|
||||
["furni_command_permission"] = "你 ~r~沒有~s~ 此選單的權限!",
|
||||
["furni_reset_success"] = "家具已重設!",
|
||||
["furni_cannot_afford"] = "你沒有足夠的金錢進行此操作!",
|
||||
@@ -113,8 +113,8 @@ Locales['tc'] = {
|
||||
["inventory_desc"] = "移動房產儲物櫃的位置",
|
||||
["wardrobe_title"] = "衣櫃",
|
||||
["wardrobe_desc"] = "移動房產衣櫃的位置",
|
||||
["Furniture_title"] = "家具",
|
||||
["Furniture_desc"] = "移動房產家具的位置",
|
||||
["furniture_title"] = "家具",
|
||||
["furniture_desc"] = "移動房產家具的位置",
|
||||
["enter_title"] = "進入",
|
||||
["knock_title"] = "敲門",
|
||||
["buy_title"] = "購買",
|
||||
@@ -139,7 +139,7 @@ Locales['tc'] = {
|
||||
["please_finish"] = "請完成 ~b~%s~s~ 的位置設定",
|
||||
["cannot_afford"] = "你無法購買這個房產!",
|
||||
["select_player"] = "選擇對象",
|
||||
["cannot_Sell"] = "無法賣給對方!",
|
||||
["cannot_sell"] = "無法賣給對方!",
|
||||
["knock_on_door"] = "敲門…",
|
||||
["nobody_home"] = "看起來沒人在家…",
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<h1 align='center'>ESX Legacy</a></h1>
|
||||
<p align="center"><img src="https://docs.esx-framework.org/severcount.svg"/></p>
|
||||
<p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://esx-framework.org/'>Website</a> - <a href='https://docs.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
<p align='center'>Want More resources? You can browse the <a href="https://github.com/esx-community/">ESX Community Github</a> or <a href="https://forum.cfx.re/tag/esx">Cfx.re Releases board</a> for more!
|
||||
|
||||
Reference in New Issue
Block a user