Configuration
REVOLUTION = {}
REVOLUTION.Framework = {
type = "ESX", -- QBCore, ESX
object = function()
if REVOLUTION.Framework.type == "QBCore" then
return exports['qb-core']:GetCoreObject()
elseif REVOLUTION.Framework.type == "ESX" then
return exports["es_extended"]:getSharedObject()
end
end
}
REVOLUTION.Commands = {
["advent"] = {
["enabled"] = true,
["command"] = "advent",
},
["candyRewards"] = {
["enabled"] = true,
["command"] = "christmas",
["needed"] = {
["enabled"] = false,
["item"] = "water",
["amount"] = 5,
}
},
}
REVOLUTION.Respawn = 1 -- minutes
REVOLUTION.CandysNeeded = 1 -- How many Candy Per Spinn
REVOLUTION.CandySpawns = {
{
["amount"] = { min = 1, max = 5 },
["coords"] = vector3(157.3862, -964.0201, 30.0919),
}
}
REVOLUTION.AdventCoords = {
vector3(197.8639, -993.5316, 30.0919),
}
REVOLUTION.AdventRewards = { -- Max 24
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
}
REVOLUTION.CandyRewards = {
{
type = "item",
name = "water",
label = "Wasser",
amount = 5,
},
{
type = "item",
name = "bread",
label = "Brot",
amount = 5,
},
{
type = "item",
name = "schutzweste",
label = "Schutzweste",
amount = 5,
},
{
type = "car",
name = "adder",
label = "Lamborghini",
amount = 1,
},
{
type = "money",
name = "money",
label = "Geld",
amount = 15000,
},
{
type = "item",
name = "grapes",
label = "Trauben",
amount = 5,
},
{
type = "item",
name = "apple",
label = "Apfel",
amount = 5,
},
}
REVOLUTION.Objects = {
["tree"] = {
["enabled"] = true,
["objHash"] = `prop_xmas_tree_int`,
},
["present"] = {
["enabled"] = true,
["objHash"] = `xs_prop_trophy_presents_01a`,
},
}
REVOLUTION.Blips = {
["enabled"] = true,
["sprite"] = 781,
["color"] = 1,
["scale"] = 0.8,
["display"] = 4,
["shortRange"] = true,
["name"] = "Advents Kalender",
}
REVOLUTION.Markers = {
["enabled"] = false,
["rotate"] = true,
["jump"] = false,
["type"] = 21,
["size"] = { x = 0.5, y = 0.5, z = 0.5 },
["color"] = { r = 230, g = 41, b = 74, a = 144 },
["drawDist"] = 10.0,
}
REVOLUTION.Language = {
["openMenu"] = "~INPUT_CONTEXT~ um das Menü zu Öffnen",
["tookReward"] = "Du hast dein Geschenk vom %s. Türchen genommen",
["notDecember"] = "Die Adventzeit hat nicht begonnen",
["alreadyTook"] = "Du hast dein Geschenk vom %s. Türchen bereits genommen",
["doesntExist"] = "Es existiert kein Geschenk für das %s. Türchen",
["neededItem"] = "Du benötigst %s %s um das Süsigkeiten Roulette zu Öffnen",
["candyDoesntExist"] = "Diese Süsigkeiten Belohnung existiert nicht",
["tookCandyReward"] = "Du hast deine Süsigkeiten gegen %sx %s Eingelöst",
["takePresent"] = "~INPUT_CONTEXT~ um die Geschenkbox zu Öffnen",
["receivedCandies"] = "Du hast %sx Candies erhalten!",
["coolDown"] = "Dieses Geschenk ist noch im Cooldown!",
["alreadyTaken"] = "Du hast dieses Geschenk bereits beansprucht!",
--------- FRONTEND/UI ------------
["frontend_rewardDay"] = "Tag",
["frontend_rewardTake"] = "Nehmen",
["frontend_rewardHead"] = "ADVENTS",
["frontend_rewardDesc"] = "Kalender",
["frontend_rewardText"] = "Hier kannst du jeden Tag ein Türchen öffnen. Viel Glück!",
["frontend_CandyrewardHead"] = "CHIRSTMAS",
["frontend_CandyrewardDesc"] = "Spin",
["frontend_CandyrewardText"] = "Hier kannst du deine gesammelten Zuckerstangen für Spins eintauschen!",
["frontend_CandyrewarCandy"] = "Süsigkeiten",
["frontend_CandyrewardSpin"] = "Drücke",
["frontend_CandyrewardSpinDesc"] = "Zum Drehen",
}
REVOLUTION.TriggerServerCallback = function(name, funct, ...)
if REVOLUTION.Framework.type == "QBCore" then
QBCore.Functions.TriggerCallback(name, funct, ...)
elseif REVOLUTION.Framework.type == "ESX" then
ESX.TriggerServerCallback(name, funct, ...)
end
end
function HelpNotify(msg)
SetTextComponentFormat("STRING")
AddTextComponentString(msg)
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
end
function Notify(type, msg)
exports["rs_hud_v2"]:SendNotify(type, "Revolution | Advent", msg, 6000)
endREVOLUTION_S = {}
REVOLUTION_S.GetPlayerFromId = function(source)
if REVOLUTION.Framework.type == "QBCore" then
return QBCore.Functions.GetPlayer(source)
elseif REVOLUTION.Framework.type == "ESX" then
return ESX.GetPlayerFromId(source)
end
end
REVOLUTION_S.GetIdentifier = function(source)
for _, v in ipairs(GetPlayerIdentifiers(source)) do
if string.match(v, 'license:') then
return string.gsub(v, 'license:', '')
end
end
end
REVOLUTION_S.RegisterServerCallback = function(name, funct)
if REVOLUTION.Framework.type == "QBCore" then
QBCore.Functions.CreateCallback(name, funct)
elseif REVOLUTION.Framework.type == "ESX" then
ESX.RegisterServerCallback(name, funct)
end
end
REVOLUTION_S.AddRewardType = function(xPlayer, identifier, rewardData, cb)
if rewardData.type == "item" then
if REVOLUTION.Framework.type == "QBCore" then
xPlayer.Functions.AddItem(rewardData.name, rewardData.amount)
cb()
elseif REVOLUTION.Framework.type == "ESX" then
xPlayer.addInventoryItem(rewardData.name, rewardData.amount)
cb()
end
elseif rewardData.type == "weapon" then
if REVOLUTION.Framework.type == "QBCore" then
xPlayer.Functions.AddItem(string.upper(rewardData.name), rewardData.amount)
cb()
elseif REVOLUTION.Framework.type == "ESX" then
xPlayer.addWeapon(rewardData.name, rewardData.amount)
cb()
end
elseif rewardData.type == "account" then
if REVOLUTION.Framework.type == "QBCore" then
xPlayer.Functions.AddMoney(rewardData.name, rewardData.amount, GetCurrentResourceName())
cb()
elseif REVOLUTION.Framework.type == "ESX" then
xPlayer.addAccountMoney(rewardData.name, rewardData.amount)
cb()
end
elseif rewardData.type == "car" or rewardData.type == "boat" or rewardData.type == "airplane" then
local plate = REVOLUTION_S.CreatePlate()
Query(
"INSERT INTO owned_vehicles (owner, plate, type, stored, vehicle) VALUES (@owner, @plate, @type, @stored, @vehicle)",
{
['@owner'] = identifier,
['@plate'] = plate,
["@stored"] = 1,
["@type"] = rewardData.type,
['@vehicle'] = json.encode({
plate = plate,
model = GetHashKey(rewardData.name),
})
}, function()
cb()
end)
end
end
REVOLUTION_S.CreatePlate = function()
local plate = ""
local format = "XXX 000"
for i = 1, 3 do
format = format:gsub("X", string.char(math.random(65, 90)), 1)
end
for i = 1, 3 do
format = format:gsub("0", tostring(math.random(0, 9)), 1)
end
plate = format:gsub(" ", "")
if REVOLUTION_S.DoesPlateExist(plate) then
return REVOLUTION_S.CreatePlate()
end
return plate
end
REVOLUTION_S.DoesPlateExist = function(plate)
local status = promise:new()
Query("SELECT plate FROM owned_vehicles WHERE plate = @plate", {
["@plate"] = plate
}, function(result)
if result and #result > 0 then
status:resolve(true)
else
status:resolve(false)
end
end)
Citizen.Await(status)
return status.value
end
REVOLUTION_S.HasItem = function(xPlayer, itemName, amount)
if REVOLUTION.Framework.type == "QBCore" then
return xPlayer.Functions.GetItemByName(itemName).count >= amount
elseif REVOLUTION.Framework.type == "ESX" then
local xItem = xPlayer.getInventoryItem(itemName)
if xItem and xItem.count >= amount then
return true
end
return false
end
end
:root{
/* Main Colors */
--main-clr: #E6294A;
--shadow-clr1: rgba(230, 41, 74, 0.50);
/* BG Colors */
--bg-clr1: rgba(230, 41, 74, 0.15);
--bg-clr2: rgba(230, 41, 74, 0.28);
--bg-clr3: rgba(16, 17, 26, 0.98);
--bg-clr4: rgba(230, 41, 74, 0.65);
--bg-clr5: rgba(230, 41, 74, 0.75);
--bg-clr6: rgba(230, 41, 74, 0.10);
--bg-clr7: #22050A;
--bg-clr8: rgba(5, 5, 8, 0.99);
/* Special Door Colors */
--special-clr1: rgba(213, 154, 32, 0.15);
--special-clr2: rgba(213, 154, 32, 0.65);
}
Last updated