Jelentkezz be, hogy követhesd  
Követő(k) 0
asdhero

[Script]Animált dxAblak

3 hozzászólás ebben a témában

Sziasztok.

Elkészítettem nektek, akár tanulás, akár felhasználás céljára egy dxWindow rendszert!

Amit tudni kell róla:

- Animált ( Oldalról becsúszó animáció )

- 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!

Köszönöm a megtisztelő figyelmet :)  :wave:

Egy kép:

k6vv5sl14fvw6cyxv5lj.png

--[[

--//* Created By: [s]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
)

1 személy kedveli ezt

Megosztás


Megosztás link alapján
Megosztás egy közösségi oldalon

Regisztrálj vagy jelentkezz be, hogy válaszolhass

Csak felhasználóként kommentelhetsz.

Regisztrálj

Légy közösségünk tagja még ma! Csak fél perc.


Regisztrálok

Jelentkezz be

Már van felhasználód? Lépj be!


Bejelentkezek
Jelentkezz be, hogy követhesd  
Követő(k) 0