Files
xmas/c_script.lua
2020-12-19 12:59:49 +01:00

173 lines
6.3 KiB
Lua

local total
local rank = 0
local start
local sx, sy = GuiElement.getScreenSize()
local alpha
local leaders
local length,lowerLimit, upperLimit = 0,0,0
local removeTimer
addEventHandler('onClientResourceStart', resourceRoot,
function()
local txd = EngineTXD('model.txd', true)
txd:import(1974)
local dff = EngineDFF('model.dff', 0)
dff:replace(1974)
local col = EngineCOL('model.col')
col:replace(1974)
end
)
addEvent("showTotal", true)
addEventHandler("showTotal", root,
function (prez)
total = prez
start = getTickCount()
if prez == 1 then
alpha = 255
removeEventHandler("onClientRender", root, intro)
addEventHandler("onClientRender", root, intro)
else
removeEventHandler("onClientRender", root, drawTotal)
addEventHandler("onClientRender", root, drawTotal)
end
end)
function drawTotal()
local now = getTickCount()
if now - start > 5000 then
removeEventHandler("onClientRender", root, drawTotal)
end
dxDrawText("You have " ..total.. " presents", 0, sy-30, sx, sy, tocolor(255,255,255,255), 1.3, "default-bold", "center", "center", false, false, false, true)
end
function intro()
local now = getTickCount()
if now - start > 15000 then
if alpha < 10 then
removeEventHandler("onClientRender", root, intro)
else
alpha = alpha - 10
end
end
dxDrawText("Welcome to the SKC Christmas Event!", 0, sy-300, sx+1, sy+1, tocolor(0,0,0,alpha), 2, "default-bold", "center", "center", false, false, false, true)
dxDrawText("Welcome to the #ff8000SKC Christmas Event!", 0, sy-300, sx, sy, tocolor(255,255,255,alpha), 2, "default-bold", "center", "center", false, false, false, true)
dxDrawText("Collect as many presents as you can.", 0, sy-220, sx+1, sy+1, tocolor(0,0,0,alpha), 1.6, "default-bold", "center", "center", false, false, false, true)
dxDrawText("Collect as many presents as you can.", 0, sy-220, sx, sy, tocolor(255,255,255,alpha), 1.6, "default-bold", "center", "center", false, false, false, true)
end
function drawLeaders()
local offsetX_SKC = 400
dxDrawRectangle(sx-200-offsetX_SKC, 10, length, 35, tocolor(0,0,0,220))
if length >= 190 then
dxDrawText("Christmas Event Leaders", sx-200-offsetX_SKC, 20, sx-10-offsetX_SKC, 40, tocolor(255,255,255,255), 1, "default-bold", "center")
for i, v in ipairs(leaders) do
if i > lowerLimit and i <= upperLimit then
if i == rank then
dxDrawRectangle(sx-170-offsetX_SKC, 24+(28*(i-lowerLimit)), 160, 28, tocolor(100,100,100,155))
else
dxDrawRectangle(sx-170-offsetX_SKC, 24+(28*(i-lowerLimit)), 160, 28, tocolor(0,0,0,155))
end
dxDrawRectangle(sx-200-offsetX_SKC, 24+(28*(i-lowerLimit)), 30, 28, tocolor(0,0,0,220))
if i < 6 then
dxDrawText(i, sx-200-offsetX_SKC, 30+(28*(i-lowerLimit)), sx-170-offsetX_SKC, 30+(30*(i-lowerLimit)), tocolor(255,255,0+((i-1)*50),255), 1, "default-bold", "center")
else
dxDrawText(i, sx-200-offsetX_SKC, 30+(28*(i-lowerLimit)), sx-170-offsetX_SKC, 30+(30*(i-lowerLimit)), tocolor(255,255,255,255), 1, "default-bold", "center")
end
dxDrawText(v[1], sx-160-offsetX_SKC, 30+(28*(i-lowerLimit)), sx-10-offsetX_SKC, 30+(30*(i-lowerLimit)), tocolor(255,255,255,255), 1, "default-bold", "left", "top", false, false, false, true)
dxDrawText(v[2], sx-31-offsetX_SKC, 30+(28*(i-lowerLimit)), sx-15-offsetX_SKC, 30+(30*(i-lowerLimit)), tocolor(255,0,0,255), 1, "default-bold", "right", "top")
if i > upperLimit then
break --don't carry on looping, this helps performance quite a bit
end
end
end
if rank > upperLimit and upperLimit > 0 then
dxDrawRectangle(sx-170-offsetX_SKC, 61+(28*(upperLimit-lowerLimit)), 160, 28, tocolor(0,0,0,155))
dxDrawRectangle(sx-200-offsetX_SKC, 61+(28*(upperLimit-lowerLimit)), 30, 28, tocolor(0,0,0,220))
dxDrawText(rank, sx-200-offsetX_SKC, 67+(28*(upperLimit-lowerLimit)), sx-170-offsetX_SKC, 100+(28*(upperLimit-lowerLimit)), tocolor(255,255,255,255), 1, "default-bold", "center")
dxDrawText(leaders[rank][1], sx-160-offsetX_SKC, 67+(28*(upperLimit-lowerLimit)), sx-10-offsetX_SKC, 100+(28*(upperLimit-lowerLimit)), tocolor(255,255,255,255), 1, "default-bold", "left", "top", false, false, false, true)
dxDrawText(leaders[rank][2], sx-31-offsetX_SKC, 67+(28*(upperLimit-lowerLimit)), sx-15-offsetX_SKC, 100+(28*(upperLimit-lowerLimit)), tocolor(255,0,0,255), 1, "default-bold", "right", "top")
end
if upperLimit == 0 then
dxDrawRectangle(sx-200-offsetX_SKC, 45, length, 25, tocolor(0,0,0,220))
dxDrawText("Mouse wheel to show", sx-200-offsetX_SKC, 45, sx-10-offsetX_SKC, 60, tocolor(255,255,255,255), 0.85, "default-bold", "center")
end
else
length = length + 5
end
end
addEvent("updateTables", true)
addEventHandler("updateTables", root,
function (data)
leaders = data
if removeTimer and removeTimer.valid then
removeTimer:reset()
elseif upperLimit == 0 then
removeTimer = Timer(removeLeaders, 15000, 1)
end
removeEventHandler("onClientRender", root, drawLeaders)
removeEventHandler("onClientRender", root, boom)
addEventHandler("onClientRender", root, drawLeaders)
local name = localPlayer.name
for i, v in ipairs(leaders) do
if v[1] == name then
rank = i
end
end
if length == 0 then
bindKey("mouse_wheel_up", "down", moveLimits)
bindKey("mouse_wheel_down", "down", moveLimits)
end
end)
function removeLeaders()
addEventHandler("onClientRender", root, boom)
end
function boom()
if length < 10 then
unbindKey("mouse_wheel_up", "down", moveLimits)
unbindKey("mouse_wheel_down", "down", moveLimits)
removeEventHandler("onClientRender", root, drawLeaders)
removeEventHandler("onClientRender", root, boom)
length = 0
else
length = length - 10
end
end
function moveLimits(button)
if length < 190 then return end
if button == "mouse_wheel_up" then
if lowerLimit > 0 then
upperLimit = upperLimit - 1
lowerLimit = lowerLimit - 1
elseif lowerLimit == 0 and upperLimit == 5 then
upperLimit = 0
removeTimer = Timer(removeLeaders, 15000, 1)
elseif upperLimit ~= 0 then
lowerLimit = 0
upperLimit = 5
end
elseif button == "mouse_wheel_down" then
if upperLimit < #leaders then
if upperLimit == 0 then
triggerServerEvent("statsForPoon", localPlayer)
if removeTimer and removeTimer.valid then
removeTimer:destroy()
end
upperLimit = 5
elseif upperLimit < 10 then
upperLimit = 10
else
upperLimit = upperLimit + 1
lowerLimit = lowerLimit + 1
end
end
end
end