Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2018-08-13, 19:15


boszboszek

HEY






Wiek: 14
Na forum: 3646 dni
Posty: 146
Nick w MP: boszboszek

Piwa: 2176

Respekt: 261
Respekt: 261Respekt: 261Respekt: 261

Witam,
chcia?bym nauczy? wielu "skrypter?w" skalowania od?rodkowego. Bo jak patrze na niekt?rych skalowanie, to ?apie si? za g?ow?. Jedynym minusem tego skalowania jest wym?g posiadania monitora full hd.

Je?eli chcemy wyskalowa? cokolwiek - musimy pobra? rozdzielczo?? ekranu gracza.

local sx, sy = guiGetScreenSize() -- zwraca nam o? X i o? Y, np. 1920 1080



Nast?pnie tworzymy zmienn?, kt?ra b?dzie dzieli?a nasz? o? X(1920) na o? X clienta.

zmienna = 1920/sx


Czyli jak skalujemy w full hd to zmienna b?dzie r?wna 1 - wynika to z prostego obliczenia (1920/1920 = 1)

Musimy nauczy? si? te? pozycjonowa? interfejs:

Od prawej do ?rodka:
sx - wartosc/zmienna


Od lewej do ?rodka:
wartosc/zmienna


?rodek:
sx/2 - wartosc/zmienna


Od g?ry do ?rodka:
wartosc/zmienna


Od do?u do ?rodka:
sy - wartosc/zmienna


?rodek:
sy/2 - wartosc/zmienna


Pami?tajcie te?, ?e je?eli chcecie wyskalowa? obrazek w dobrej jako?ci to powi?kszenie jego musi by? proporcjonalne tzn. IMG jest w wymiarach 300x300, je?eli chcemy go poszerzy? dwukrotnie - musimy te? tak samo powi?kszy? drug? warto??, np. 600x600. Wtedy jest ma?a utrata jako?ci.

U?atwiona funkcja do skalowania interfejsu stworzona przeze mnie.

local sx, sy = guiGetScreenSize()
local zoom = 1920/sx

function scaleX(type, value)
    if type == 'center' then
        return math.floor(sx/2 - value/zoom)
    elseif type == 'left' then
        return math.floor(sx - value/zoom)
    elseif type == 'right' then
        return math.floor(value/zoom)
    end
end

function scaleY(type, value)
    if type == 'center' then
        return math.floor(sy/2 - value/zoom)
    elseif type == 'top' then
        return math.floor(value/zoom)
    elseif type == 'down' then
        return math.floor(sy - value/zoom)
    end
end

function scaleImage(value)
    return math.floor(value/zoom)
end



Przyk?ad:

local sx, sy = guiGetScreenSize()
local zoom = 1920 / sx

addEventHandler('onClientRender', root, function()
    dxDrawRectangle(sx / 2 - 300 / zoom, sy / 2 - 300 / zoom, 600 / zoom, 600 / zoom, tocolor(0, 0, 0, 220))
    dxDrawText(sx .. 'x' .. sy, sx / 2 - 300 / zoom, sy / 2 - 300 / zoom, 600 / zoom + sx / 2 - 300 / zoom, 600 / zoom + sy / 2 - 300 / zoom, tocolor(255, 255, 255, 255), 2 / zoom, 'center', 'center')
end)


Rezultat:




Mam nadziej?, ?e Wam pomog?em - je?eli s? jakie? b??dy, to prosz? o poprawienie mnie. Z g?ry dzi?kuje :D

Ostatnio zmieniony przez boszboszek 2019-06-11, 15:06, w całości zmieniany 3 razy  
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
BialyDran, Zbigniewqq
Wysłany: 2018-08-13, 19:20


Pevo

Jabłko






Wiek: 24
Na forum: 3731 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1578

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

Bardzo dobry i warto?ciowy poradnik. Wszystko pi?knie rozpisane :D

Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-08-13, 21:35


Kalizman







Wiek: 24
Na forum: 3792 dni
Posty: 1394

Piwa: 4624

Respekt: 358,8
Respekt: 358,8Respekt: 358,8Respekt: 358,8Respekt: 358,8

poleca?bym doda? na sam koniec poradnika ca?e skalowanie i jaki? przyk?ad (niekoniecznie)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-08-27, 16:09


OchIAch







Wiek: 27
Na forum: 3255 dni
Posty: 144
Nick w MP: OchIAch

Piwa: 1312

Respekt: 105,3
Respekt: 105,3

Ostrzeżeń: 100%
?rednio zrozumia?e. Dasz jaki? przyk?ad? Zamiast np. zmienna/warto?? co mam wpisa??

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-08-28, 18:30


Mikołajj







Wiek: 23
Na forum: 3026 dni
Posty: 303
Nick w MP: Mikołaj

Piwa: 132

Respekt: 91

"OchIAch" napisał/a:

?rednio zrozumia?e. Dasz jaki? przyk?ad? Zamiast np. zmienna/warto?? co mam wpisa??


Jak to co masz wpisa?? Zmienna to zmienna i definiujesz jej nazw? wed?ug siebie...

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-10-01, 18:53


DomineQ

lua mejster






Wiek: 22
Na forum: 4101 dni
Posty: 309
Nick w MP: EZ3N

Piwa: 5189

Respekt: 85,8

Czyli rozumiem to tak, ?e je?eli chc? wyskalowa? obrazek, ?eby nie traci? jako?ci, to je?eli jego wymiary to 300x300 np, to musz? go powi?kszy? x2?

Chodzi mi czy to powinno tak wygl?da?:


sx/zmienna, sy/zmienna, 600/zmienna, 600/zmienna


Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-10-04, 16:00


boszboszek

HEY






Wiek: 14
Na forum: 3646 dni
Posty: 146
Nick w MP: boszboszek

Piwa: 2176

Respekt: 261
Respekt: 261Respekt: 261Respekt: 261

"DomineQ" napisał/a:

Czyli rozumiem to tak, ?e je?eli chc? wyskalowa? obrazek, ?eby nie traci? jako?ci, to je?eli jego wymiary to 300x300 np, to musz? go powi?kszy? x2?

Chodzi mi czy to powinno tak wygl?da?:


sx/zmienna, sy/zmienna, 600/zmienna, 600/zmienna


Dok?adnie o to chodzi?o, lecz pami?taj aby? powi?ksza? obraz z umiarem, poniewa? jest to grafika rastrowa, a nie wektorowa.

[ Dodano: 2018-11-20, 18:27 ]
Stworzy?em now? funkcje, zapraszam ^^

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-11-23, 09:09


Vxen







Wiek: 28
Na forum: 4227 dni
Posty: 293

Piwa: 1299

Respekt: 130,5
Respekt: 130,5

Mo?e kto? da? jakie? skalowanie przyk?adowe jakiego? obrazka 215/215px.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-11-23, 12:00


Piorun







Wiek: 33
Na forum: 6853 dni
Posty: 1837
Nick w MP: Piorun

Piwa: 516

Respekt: 480,7
Respekt: 480,7

Z?ota zasada skalowania: nie skaluj.

Podpis
Możesz mnie znaleźć na: Facebook
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-12-07, 22:37


Vxen







Wiek: 28
Na forum: 4227 dni
Posty: 293

Piwa: 1299

Respekt: 130,5
Respekt: 130,5

Mo?e kto? da? przyk?ad na dxDrawRectangle

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-12-08, 19:22


Vruzzi







Wiek: 20
Na forum: 3010 dni
Posty: 77

Piwa: 616

Respekt: 35,8

przyda? by si? poradnik bardziej dla zielonych

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-12-10, 23:17


boszboszek

HEY






Wiek: 14
Na forum: 3646 dni
Posty: 146
Nick w MP: boszboszek

Piwa: 2176

Respekt: 261
Respekt: 261Respekt: 261Respekt: 261

"Vruzzi" napisał/a:

przyda? by si? poradnik bardziej dla zielonych


W bardziej ziemski spos?b nie mog?em tego wyt?umaczy? :(

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-01-04, 23:04


ZZiomek

..::LUA::..






Wiek: 26
Na forum: 4008 dni
Posty: 134
Nick w MP: NexBoy

Piwa: 5961

Respekt: 155,3
Respekt: 155,3Respekt: 155,3

boszboszek,
dxDrawRectangle(scaleX(center, 100), scaleY(center, 100), scaleX(center, 50), scaleY(center, 50), tocolor(0, 0, 0, 220))


W taki spos?b ma to by? zrobione?

Lub te? w taki?

dxDrawRectangle(sx/2 - 305/zoom, sy/2 - 250/zoom, sx/2 - 350/zoom, sy/2 + 50/zoom, tocolor(0, 0, 0, 220))


Podpis

Dodaj na Steam: Kod: 1093365219
Discord: NoOne#3644

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-01-13, 16:19


Zbigniewqq

Szkrypter Luła






Wiek: 24
Na forum: 3231 dni
Posty: 83
Nick w MP: Zbigniewqq

Piwa: 1083

Respekt: 61

Wszystko bardzo ?adnie wyt?umaczone (?e nawet zielony by zrozumia? xD)
Oraz bardzo dobre skalowanie :D !
Zostawiam zimne :piwo:

Podpis

100 :piwo: - 28.12.2018r.
200 :piwo: - 24.01.2019r.
300 :piwo: - 01.02.2019r.
Support-Team - 03.02.2019r.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-04-10, 09:30


Kacperiusz

.






Wiek: 24
Na forum: 2911 dni
Posty: 113

Piwa: 206

Respekt: 50

Good poradniczek. Mi si? przyda? :D .

Czekam na wi?cej poradnik?w w twoim wykonaniu.

Postaw piwo autorowi tego posta
 

 
Tagi: skalownie :: odśrodkowe.
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Poradniki do LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku