N1kS Posted January 15, 2012 Share Posted January 15, 2012 dxDrawText(team1NameC.." "..team1ScoreC.." : "..team2ScoreC.." "..team2NameC, textWidth/2.1 - 65, textGeight/25, textPosRight, textPosBottom, tocolor(255, 0, 0, 255), scale, "default-bold") Собственно вот так выводиться текст, нужно окрасить цвет команд в разные цвета, возможно ли это сделать? Да, возможен вариант создания 3 отдельных текстов, но так всплывают некоторые баги. Link to comment
MX_Master Posted January 15, 2012 Share Posted January 15, 2012 Не то чтобы возможен, а обязателен (: вариант из нескольких dxDrawText, потому что для одной прорисовки только 1 цвет/ На форуме даже есть функция, которая разбивает текст согласно HEX цветам, найденным в строке текста, и рисует текст несколькими dxDrawText нашел.. function dxDrawColorText(str, ax, ay, bx, by, color, scale, font, alignX, alignY) if alignX then if alignX == "center" then local w = dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font) ax = ax + (bx-ax)/2 - w/2 elseif alignX == "right" then local w = dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font) ax = bx - w end end if alignY then if alignY == "center" then local h = dxGetFontHeight(scale, font) ay = ay + (by-ay)/2 - h/2 elseif alignY == "bottom" then local h = dxGetFontHeight(scale, font) ay = by - h end end local pat = "(.-)#(%x%x%x%x%x%x)" local s, e, cap, col = str:find(pat, 1) local last = 1 while s do if cap == "" and col then color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255) end if s ~= 1 or cap ~= "" then local w = dxGetTextWidth(cap, scale, font) dxDrawText(cap, ax, ay, ax + w, by, color, scale, font) ax = ax + w color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255) end last = e + 1 s, e, cap, col = str:find(pat, last) end if last <= #str then cap = str:sub(last) local w = dxGetTextWidth(cap, scale, font) dxDrawText(cap, ax, ay, ax + w, by, color, scale, font) end end Link to comment
N1kS Posted January 15, 2012 Author Share Posted January 15, 2012 Извините, но мне обязательно использовать эту функцию? По сути мне нужно просто 3 цвета. Неужели нет другого варианта? Link to comment
StUNt71 Posted January 15, 2012 Share Posted January 15, 2012 Сам нарисуй каждую надпись отдельно. dxDrawText(...) dxDrawText(...) dxDrawText(...) Link to comment
N1kS Posted January 15, 2012 Author Share Posted January 15, 2012 Прочтите внимательно мое первое сообщение. 3 текста должны быть рядом. И когда содержание первого текста длинное, то он налезает на след. текст. Link to comment
StUNt71 Posted January 15, 2012 Share Posted January 15, 2012 Тогда нужна функция выше или сам можешь рассчитывать это. Link to comment
N1kS Posted January 15, 2012 Author Share Posted January 15, 2012 Честно говоря - не понимаю, как использовать данную функцию. Link to comment
N1kS Posted January 15, 2012 Author Share Posted January 15, 2012 UP, подскажите пожалуйста - как использовать функцию? Link to comment
MX_Master Posted January 15, 2012 Share Posted January 15, 2012 также как dxDrawText, в событиях onClientHUDRender onClientRender onClientPreRender Link to comment
N1kS Posted January 15, 2012 Author Share Posted January 15, 2012 Это то понятно, но какая переменная отвечает за текст и его цвет? Простите, за глупый вопрос. Вроде бы не 0 в LUA, а банальных вещей не вижу. Link to comment
MX_Master Posted January 16, 2012 Share Posted January 16, 2012 dxDrawColorText("#FF0000team1 #FFFFFF: #00FF00team2", ...) если хочешь выровнять относительно ":", то это уже другой вопрос - dxGetTextWidth в помощь Link to comment
N1kS Posted January 16, 2012 Author Share Posted January 16, 2012 А можно ли как то узнать координаты текста на экране? Link to comment
MX_Master Posted January 16, 2012 Share Posted January 16, 2012 dx text это не элемент, он рисуется только в 1 кадре в тех координатах, куда ты сам указал в функции прорисовки текста Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now