2026-04-14 17:41:39 +02:00

66 lines
2.4 KiB
Lua

function AddLevel(source)
local identifier = GetIdentifier(source)
local myData = GetPlayerJobData(source)
if myData then
myData.level = myData.level + 1
if not Config.XP[myData.level] then
myData.level = #Config.XP
myData.xp = Config.XP[myData.level]
else
myData.xp = 0
end
for _,v in pairs(Config.Missions) do
if v.reqLevel and myData.level == v.reqLevel then
myData.unlockedMissions[tostring(v.id)] = true
local companyIndex = tostring(v.companyIndex)
if myData.points[companyIndex] < v.reqPoint then
myData.points[companyIndex] = v.reqPoint
end
end
end
SyncPlayerDataByKey(source, "points", myData.points)
SyncPlayerDataByKey(source, "unlockedMissions", myData.unlockedMissions)
SyncPlayerDataByKey(source, "xp", myData.xp)
SyncPlayerDataByKey(source, "level", myData.level)
ExecuteSql("UPDATE codem_truckerjob SET `level` = '" ..
myData.level .. "', `xp` = '" ..
myData.xp .. "', `unlockedMissions` = '"..json.encode(myData.unlockedMissions).."', `points` = '"..json.encode(myData.points).."' WHERE `identifier` = '" .. identifier .. "'")
end
end
-- RegisterCommand('addlevel', function(source, args)
-- for i=1, tonumber(args[1]) do
-- AddLevel(source)
-- end
-- end)
function AddXP(source, xp)
local identifier = GetIdentifier(source)
local myData = GetPlayerJobData(source)
if not xp and xp <= 0 then
return
end
if myData then
local level = myData.level
if level == #Config.XP then
myData.xp = 0
return
end
myData.xp = tonumber(myData.xp) + tonumber(xp)
if Config.XP[level] and myData.xp >= Config.XP[level] then
local remainXp = Config.XP[level]-myData.xp
AddLevel(source)
if remainXp < 0 then
AddXP(source, -(remainXp))
end
else
SyncPlayerDataByKey(source, "xp", myData.xp)
end
ExecuteSql("UPDATE codem_truckerjob SET `level` = '" ..
myData.level .. "', `xp` = '" ..
myData.xp .. "' WHERE `identifier` = '" .. identifier .. "'")
end
end