Sziasztok.
Elkészítettem nektek, akár tanulás, akár felhasználás céljára egy dxWindow rendszert!
- A szöveg igazítva van a fejléchez, és egyértelműen a fejléc az alaphoz.
- A Design színeket ti adjátok neki. ( Gondolok itt a háttér, fejléc, keret színére! )
Használjátok egészséggel. (Ha hibát észleltek, kérlek jelezzétek és javítom!)
Egyedül arra kérlek meg benneteket, hogy ne editeljétek. Kérésre bővítem.. Akármivel!
--[[
--//* Created By: m0k3 *//--
(( Ha kérhetem ne editeljétek! ))
--]]
Window = {}
Window.__index = Window
local fontSize = 1.00 --//* Betűméret ( Ha változtatod, akkor a fejléc vele változik! ) *//--
local fontType = \"sans\" --//* Betűtípus *//--
local progressTime = 2000 --//* Animáció sebessége *//--
function Window:New(x,y,w,h,text,backgroundColor,topBackgroundColor, frameColor) --//* Működése: Window:New(x koordináta, y koordináta, szélesség, magasság, fejléc szöveg, háttér szín, fejléc szín, keret szín) *//--
local data = {}
data.x = x;
data.y = y;
data.w = w;
data.h = h;
data.text = text;
data.activ = true;
data.backgroundColor = backgroundColor;
data.topBackgroundColor = topBackgroundColor;
data.frameColor = frameColor;
if (not data.frameColor) then --//* Ha nincs keretszín akkor ad neki! *//--
data.frameColor = tocolor(0,0,0,200);
end
if (not data.backgroundColor) then --//* Ha nincs háttérszín akkor ad neki! *//--
data.backgroundColor = tocolor(0, 0, 0, 180);
end
if (not data.topBackgroundColor) then --//* Ha nincs fejlécszín akkor ad neki! *//--
data.topBackgroundColor = tocolor(0, 0, 0, 180);
end
if (not data.text) then --//* Na nincs szöveg akkor alapértelmezett az \'Ablak\' *//--
data.text = \"Ablak\";
end
data.render = function() data:windowRender() end;
addEventHandler(\"onClientRender\", root, data.render);
setmetatable(data, self);
return data;
end
function Window:windowRender()
if (not self.activ) then return; end
local intX = interpolateBetween(-self.w, 0, 0, self.x, 0, 0, getProgress(progressTime), \"OutElastic\") --//* Animáció *//--
local textX, textY = (intX+(self.w)/2)-(dxGetTextWidth(self.text, fontSize, fontType)/2), (self.y+5) --//* Szöveg igazítás *//--
dxDrawRectangle(intX, self.y, self.w, self.h, self.backgroundColor, false) --//* Háttér *//--
dxDrawRectangle(intX, self.y, self.w, dxGetFontHeight(fontSize, fontType)+10, self.topBackgroundColor, false) --//* Fejléc *//--
dxDrawRectangle(intX, self.y + dxGetFontHeight(fontSize, fontType)+10, self.w, 1, self.frameColor) --//* Fejléc alsó keret ( Csak, hogy átlátható legyen! ) *//--
if dxGetTextWidth( self.text, fontSize ) <= self.w then --//* Csak akkor írja ki, ha a szöveg belefér! *//--
dxDrawText(self.text, textX, textY, self.w, self.h, tocolor(255,255,255,255), fontSize, fontType) --//* Szöveg *//--
end
dxDrawRectangle(intX + 2, self.y - 1, self.w - 4, 1, self.frameColor) --//* Felső keret *//--
dxDrawRectangle(intX + 2, self.y + self.h, self.w - 4, 1, self.frameColor) --//* Alsó keret *//--
dxDrawRectangle(intX - 1, self.y + 2, 1, self.h - 4, self.frameColor) --//* Bal keret *//--
dxDrawRectangle(intX + self.w, self.y + 2, 1, self.h - 4, self.frameColor) --//* Jobb keret *//--
end
function getProgress( addtick )
local now = getTickCount()
local elapsedTime = now - lastTick
local duration = lastTick+addtick - lastTick
local progress = elapsedTime / duration
return progress
end
--//* Példa a használathoz! *//--
local pos = {guiGetScreenSize()}
local screenX, screenY = pos[1]/1920, pos[2]/1080
addCommandHandler(\"ablak\",
function()
lastTick = getTickCount()
tesztAblak1 = Window:New(20*screenX, 400*screenY, 100, 100, \"Teszt!\", tocolor(10,10,10,150), tocolor(60,60,150,180))
tesztAblak2 = Window:New(130*screenX, 400*screenY, 200, 200, \"Teszt!\", tocolor(10,10,10,150), tocolor(60,60,150,180))
tesztAblak3 = Window:New(340*screenX, 400*screenY, 300, 300, \"Teszt!\", tocolor(10,10,10,150), tocolor(60,60,150,180))
tesztAblak4 = Window:New(650*screenX, 400*screenY, 400, 400, \"Teszt!\", tocolor(10,10,10,150), tocolor(60,60,150,180))
end
)