talvez não precisa, até porque usar mais que 255 para cor rgb não é comum, eu acho...
Pesquisa resultou em 5 ocorrências
Voltar para “Lua, Texto com formatação na tela”
- 13 Jan 2019, 22:44
- Fórum: Utilidades
- Tópico: Lua, Texto com formatação na tela
- Respostas: 9
- Exibições: 2004
- Gênero:
Re: Lua, Texto com formatação na tela
- 13 Jan 2019, 14:43
- Fórum: Utilidades
- Tópico: Lua, Texto com formatação na tela
- Respostas: 9
- Exibições: 2004
- Gênero:
- 12 Jan 2019, 23:14
- Fórum: Utilidades
- Tópico: Lua, Texto com formatação na tela
- Respostas: 9
- Exibições: 2004
- Gênero:
Re: Lua, Texto com formatação na tela
De seu modo ficou assim
Código: Selecionar tudo
local global_fonts = {}
local function display_text_by_font(text,font,size,x,y,bold,border,shadow,r,g,b,a)
local flags = 0x0
local color = 0xFFFFFFFF
if bold then flags = flags + 0x1 end
if border then flags = flags + 0x4 end
if shadow then shadow = flags + 0x8 end
if r and g and b and a then
a = a * 0x01000000
r = r * 0x00010000
g = g * 0x00000100
b = b * 0x00000001
color = a + r + g + b
end
if global_fonts[font..size] == nil then
global_fonts[font..size] = renderCreateFont(font,size,flags)
end
renderFontDrawText(global_fonts[font..size],text,x,y,color)
end
Parece ser mais direto que usando o string.format mesmo.
SpoilerAbrir
Código: Selecionar tudo
local global_fonts = {}
local function display_text_by_font(text,font,size,x,y,bold,border,shadow,r,g,b,a)
local flags = 0x0
local color = 0xFFFFFFFF
if bold then flags = flags + 0x1 end
if border then flags = flags + 0x4 end
if shadow then shadow = flags + 0x8 end
if r and g and b and a then
a = a * 0x01000000
r = r * 0x00010000
g = g * 0x00000100
b = b * 0x00000001
color = a + r + g + b
end
if global_fonts[font..size] == nil then
global_fonts[font..size] = renderCreateFont(font,size,flags)
end
renderFontDrawText(global_fonts[font..size],text,x,y,color)
end
function main()
while true do
local x, y = 90, 90
for i,color in ipairs({
{r=255,g=0,b=0,a=255,name="VERMELHO"},
{r=0,g=255,b=0,a=255,name="VERDE"},
{r=0,g=0,b=255,a=255,name="AZUL"},
{r=0,g=0,b=0,a=255,name="PRETO"},
{r=255,g=255,b=255,a=255,name="BRANCO"},
{r=255,g=255,b=0,a=255,name="AMARELO"},
{r=255,g=175,b=0,a=255,name="LARANJA"},
}) do
display_text_by_font(color.name,'verdana',14,x,y,true,true,false,color.r,color.g,color.b,color.a)
y = y + 45
end
wait(0)
end
end
- 12 Jan 2019, 21:17
- Fórum: Utilidades
- Tópico: Lua, Texto com formatação na tela
- Respostas: 9
- Exibições: 2004
- Gênero:
Re: Lua, Texto com formatação na tela
Isto porque você já é pro em C++.Em C++ é mais fácil converter pois é só fazer um vetor/array de 4 índices de uint8_t, converter para ponteiro de uint32_t e ler o valor.
Eu espiei as conversões de
string.format
e cheguei a isto, não sei se da 100% de precisão na cor.Código: Selecionar tudo
function rgb_to_hex(R,G,B,A)
return string.format("0x%02x%02x%02x%02x",A,R,G,B)
end
Código: Selecionar tudo
local global_fonts = {}
local function display_text_by_font(text,font,size,x,y,bold,border,shadow,r,g,b,a)
local flags = 0x0
local color = 0xFFFFFFFF
if bold then flags = flags + 0x1 end
if border then flags = flags + 0x4 end
if shadow then shadow = flags + 0x8 end
if r and g and b and a then
color = string.format("0x%02x%02x%02x%02x",a,r,g,b)
end
if global_fonts[font..size] == nil then
global_fonts[font..size] = renderCreateFont(font,size,flags)
end
renderFontDrawText(global_fonts[font..size],text,x,y,color)
end
function main()
while true do
local x, y = 90, 90
for i,color in ipairs({
{r=255,g=0,b=0,a=100,name="VERMELHO"},
{r=0,g=255,b=0,a=100,name="VERDE"},
{r=0,g=0,b=255,a=100,name="AZUL"},
{r=0,g=0,b=0,a=255,name="PRETO"},
{r=255,g=255,b=255,a=255,name="BRANCO"},
}) do
display_text_by_font(color.name,'verdana',10,x,y,true,true,false,color.r,color.g,color.b,color.a)
y = y + 45
end
wait(0)
end
end
- 06 Jan 2019, 11:56
- Fórum: Utilidades
- Tópico: Lua, Texto com formatação na tela
- Respostas: 9
- Exibições: 2004
- Gênero:
Lua, Texto com formatação na tela
As vezes queremos exibir um texto na tela e ficamos limitado ao
Outra forma é apelar para o
Esta função permite exibir um texto de forma simples na tela de diferentes tamanhos e diferentes fontes, até mesmo símbolos.
Function
Já se nota que é simples a usar.
Exemplo de uso
O inconveniente é que a cor deve ser em Hex. no entanto pesquisando pela internet achei esta função e dei uma ajustada para ela atender melhor ao uso neste caso
melhorado com auxilio do @Fabio ↓
PrintStringNow(str)
, que não é uma boa já que vários outros mods já o usam ou até mesmo missões o usam. Também em alguns casos pode ficar estranho o uso deste comando. Outra forma é apelar para o
displayText
que requer vários preparos par ao usar ou dependências externas.Esta função permite exibir um texto de forma simples na tela de diferentes tamanhos e diferentes fontes, até mesmo símbolos.
Function
Código: Selecionar tudo
local global_fonts = {}
local function display_text_by_font(text,font,size,x,y,bold,border,shadow,r,g,b,a)
local flags = 0x0
local color = 0xFFFFFFFF
if bold then flags = flags + 0x1 end
if border then flags = flags + 0x4 end
if shadow then shadow = flags + 0x8 end
if r and g and b and a then
a = a * 0x01000000
r = r * 0x00010000
g = g * 0x00000100
b = b * 0x00000001
color = a + r + g + b
end
if global_fonts[font..size] == nil then
global_fonts[font..size] = renderCreateFont(font,size,flags)
end
renderFontDrawText(global_fonts[font..size],text,x,y,color)
end
Já se nota que é simples a usar.
Código: Selecionar tudo
display_text_by_font(text,font,size,x,y,bold,border,shadow,r,g,b,a)
Exemplo de uso
Código: Selecionar tudo
local global_fonts = {}
local function display_text_by_font(text,font,size,x,y,bold,border,shadow,r,g,b,a)
local flags = 0x0
local color = 0xFFFFFFFF
if bold then flags = flags + 0x1 end
if border then flags = flags + 0x4 end
if shadow then shadow = flags + 0x8 end
if r and g and b and a then
a = a * 0x01000000
r = r * 0x00010000
g = g * 0x00000100
b = b * 0x00000001
color = a + r + g + b
end
if global_fonts[font..size] == nil then
global_fonts[font..size] = renderCreateFont(font,size,flags)
end
renderFontDrawText(global_fonts[font..size],text,x,y,color)
end
function main()
while true do
display_text_by_font("Hello Word!",'verdana',20,90,90,true,true,false,255,255,255,255)
wait(0)
end
end
O inconveniente é que a cor deve ser em Hex. no entanto pesquisando pela internet achei esta função e dei uma ajustada para ela atender melhor ao uso neste caso
melhorado com auxilio do @Fabio ↓