Hallo,
habe ein Problem mit der Client-File meines Achievment Systems.
Ich möchte falls man mehrere Achievment's bekommt, dass sie sozusagen Client-Side "gestackt" werden,
so dass diese hintereinander angezeigt werden. Habe etliche Varianten schon ausprobiert, bei einer Ging es, aber da war
zwischen jedem Achievment iwie immer eine längere Zeitspanne und dass nervt.
Mein momentans Script:
Lua
local x, y = guiGetScreenSize()
local sx, sy = x/1920, y/1080
local player_screen = x * y
local screen = (1920 * 1080) -- deine auflösung
local screen = screen/100 --dreisatz = 1%
local player_screen = player_screen/screen -- die Prozentzahl vom Spieler Bildschirm im Vergleich mit der größten Auflösung
local size = 1*sx
id = 0
timer = 0
draw = false
achievmentData = {}
achievmentIDs = {}
achievmentShowed = {}
achievmentName = {}
achievmentDesc = {}
achievmentXP = {}
achievmentMoney = {}
achievmentPic = {}
function showAchievment (idd, name, desc, xp, money, pic)
if id > 0 then
id = id + 1
end
setTimer ( function()
achievmentIDs[id] = idd
achievmentName[id] = name
achievmentDesc[id] = desc
achievmentXP[id] = xp
achievmentMoney[id] = money
achievmentPic[id] = pic
draw = true
timer = timer+6000*id
if not isTimer(notDraw) then
notDraw = setTimer ( draw, timer, 1, false )
end
id = id + 1
end, 6000*id, 1 )
end
addEvent ( "showAchievment", true )
addEventHandler ( "showAchievment", getRootElement(), showAchievment )
function drawAchievment ()
if draw == true then
local n = getPlayerName(getLocalPlayer())
dxDrawLine(806*sx, 77*sy, 1117*sx, 77*sy, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine(1117*sx, 77*sy, 1117*sx, (0 - 1)*sy, tocolor(0, 0, 0, 255), 1, false)
dxDrawRectangle(807*sx, 0*sy, 310*sx, 77*sy, tocolor(10, 9, 7, 185), false)
dxDrawImage(823*sx, 3*sy, 64*sx, 64*sy, ":reallife_server/neues/achievementSystem/achievmentPictures/"..achievments[id].pic, 0, 0, 0, tocolor(255, 255, 255, 255), true)
dxDrawLine(806*sx, 77*sy, 899*sx, 77*sy, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine(899*sx, 77*sy, 899*sx, (0 - 1)*sy, tocolor(0, 0, 0, 255), 1, false)
dxDrawRectangle(807*sx, 0*sy, 92*sx, 77*sy, tocolor(56, 69, 198, 220), false)
dxDrawText(achievments[id].name, 907*sx, 2*sy, 944*sx, 19*sy, tocolor(255, 255, 255, 255), 1.30, "sans", "left", "top", false, false, false, false, false)
dxDrawText(achievments[id].desc, 908*sx, 22*sy, 1107*sx, 43*sy, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, false, false, false)
dxDrawText(achievments[id].xp.." XP "..achievments[id].money.." $", 909*sx, 43*sy, 1108*sx, 64*sy, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, false, false, false)
dxDrawText("Neuer Sozialerstatus: N/a", 909*sx, 60*sy, 1108*sx, 81*sy, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, false, false, false)
end
end
addEventHandler ( "onClientRender", root, drawAchievment )
Alles anzeigen
Und ja, der Code ist hässlich und die Funktionen kann man wie gesagt verbessern, meine Frage ist wie?
Manche Code stellen sind noch von den alten Variante.
Danke vorraus.