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

Wysłany: 2017-11-12, 01:52


EvilXmik







Wiek: 28
Na forum: 3620 dni
Posty: 148
Nick w MP: EvilXmik

Piwa: 399

Respekt: 50

Witam mam taki problem i? nie wiem jak doda? do skryptu na nametag koloru
Na chacie jest kolor ale na 3dnicku nie ma prosz? o pomoc
Za pomoc stawiam R* i :piwo:

Tutaj macie kod
Kod:


srfont = dxCreateFont("DFHEIMDU_id.ttf",16)

g_Root = getRootElement()
g_ResRoot = getResourceRootElement(getThisResource())
g_Players = getElementsByType('player')
g_Me = getLocalPlayer()

nametag = {}
local nametags = {}
local g_screenX,g_screenY = guiGetScreenSize()
local bHideNametags = false

local NAMETAG_SCALE = 0.3 --Overall adjustment of the nametag, use this to resize but constrain proportions
local NAMETAG_ALPHA_DISTANCE = 50 --Distance to start fading out
local NAMETAG_DISTANCE = 100 --Distance until we're gone
local NAMETAG_ALPHA = 255 --The overall alpha level of the nametag
--The following arent actual pixel measurements, they're just proportional constraints
local NAMETAG_TEXT_BAR_SPACE = 1
local NAMETAG_WIDTH = 50
local NAMETAG_HEIGHT = 5
local NAMETAG_TEXTSIZE = 0.3
local NAMETAG_OUTLINE_THICKNESS = 1.2


--
local NAMETAG_ALPHA_DIFF = NAMETAG_DISTANCE - NAMETAG_ALPHA_DISTANCE
NAMETAG_SCALE = 1/NAMETAG_SCALE * 800 / g_screenY

-- Ensure the name tag doesn't get too big
local maxScaleCurve = { {0, 0}, {3, 3}, {13, 5} }
-- Ensure the text doesn't get too small/unreadable
local textScaleCurve = { {0, 0.8}, {0.8, 1.2}, {99, 99} }
-- Make the text a bit brighter and fade more gradually
local textAlphaCurve = { {0, 0}, {25, 100}, {120, 190}, {255, 190} }

setPedTargetingMarkerEnabled ( false )

function nametag.create ( player )
nametags[player] = true
end

function nametag.destroy ( player )
nametags[player] = nil
end

addEventHandler ( "onClientPreRender", g_Root,
function()
if getElementData(getLocalPlayer(), "state.hud") == "disabled" then
return
end
-- Hideous quick fix --
for i,player in ipairs(g_Players) do
if isElement(player) then
if player ~= g_Me then
setPlayerNametagShowing ( player, false )
if not nametags[player] then
nametag.create ( player )
end
end
end
end
if bHideNametags then
return
end
local x,y,z = getCameraMatrix()

for player in pairs(nametags) do
while true do
if not isElement(player) then break end
if getElementDimension(player) ~= getElementDimension(g_Me) then break end
local px,py,pz = getElementPosition ( player )
if not isLineOfSightClear(x, y, z, px, py, pz, true, false, false, true, false, true) then break end
local pdistance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz )
if pdistance <= NAMETAG_DISTANCE then
--Get screenposition
local sx,sy = getScreenFromWorldPosition ( px, py, pz+0.95, 0.06 )
if not sx or not sy then break end
--Calculate our components
local scale = 1/(NAMETAG_SCALE * (pdistance / NAMETAG_DISTANCE))
local alpha = ((pdistance - NAMETAG_ALPHA_DISTANCE) / NAMETAG_ALPHA_DIFF)
alpha = (alpha < 0) and NAMETAG_ALPHA or NAMETAG_ALPHA-(alpha*NAMETAG_ALPHA)
scale = math.evalCurve(maxScaleCurve,scale)
local textscale = math.evalCurve(textScaleCurve,scale)
local textalpha = math.evalCurve(textAlphaCurve,alpha)
local outlineThickness = NAMETAG_OUTLINE_THICKNESS*(scale)
--Draw our text
local playerName = getPlayerName(player):gsub("#%x%x%x%x%x%x","")
local r,g,b = getPlayerNametagColor(player)
local offset = (scale) * NAMETAG_TEXT_BAR_SPACE/2
local w = dxGetTextWidth(playerName, textscale * NAMETAG_TEXTSIZE, srfont) / 2
local myR = getElementData(localPlayer, "reputation.reputation")
local playerR = getElementData(player, "reputation.reputation")

local drawX = sx - NAMETAG_WIDTH*scale/2
drawY = sy + offset
local width,height = NAMETAG_WIDTH*scale, NAMETAG_HEIGHT*scale
dxDrawText ( playerName, sx, sy - offset, sx, sy - offset, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false, true, true )
if myR and playerR then
if getElementData(localPlayer, "reputation.criminal") == false and getElementData(player, "reputation.criminal") == false then
rr, rg, rb = 158, 210, 229
elseif getElementData(localPlayer, "reputation.criminal") == true and getElementData(player, "reputation.criminal") == false then
rr, rg, rb = 217, 25, 31
elseif getElementData(localPlayer, "reputation.criminal") == false and getElementData(player, "reputation.criminal") == true then
rr, rg, rb = 217, 25, 31
elseif getElementData(localPlayer, "reputation.criminal") == true and getElementData(player, "reputation.criminal") == true then
rr, rg, rb = 246, 231, 89
end
else
rr, rg, rb = r, g, b
end
dxDrawText ( playerName, sx, sy - offset, sx, sy - offset, tocolor(rr,rg,rb,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false, true, true )
nameWidth = dxGetTextWidth ( playerName, textscale*NAMETAG_TEXTSIZE, srfont )
teamWidth = nameWidth
local team = getPlayerTeam(player)
if team then
dxDrawText ( "["..getTeamName(team).."]", sx, sy - offset + 6*scale, sx, sy - offset + 6*scale, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE*0.75, srfont, "center", "bottom", false, false, false, true, true )
dxDrawText ( "["..getTeamName(team).."]", sx, sy - offset + 6*scale, sx, sy - offset + 6*scale, tocolor(rr,rg,rb,255), textscale*NAMETAG_TEXTSIZE*0.75, srfont, "center", "bottom", false, false, false, true, true )
teamWidth = dxGetTextWidth ( "["..getTeamName(team).."]", textscale*NAMETAG_TEXTSIZE*0.75, srfont )
end
local imageSize = dxGetFontHeight ( textscale*NAMETAG_TEXTSIZE, srfont )
if getElementData(player, "reputation.class") and fileExists ( ":reputation/class/classicon_"..getElementData(player, "reputation.class")..".png" ) then
dxDrawImage ( sx - math.max(nameWidth/2, teamWidth/2) - imageSize - 1*scale, sy - imageSize, imageSize, imageSize, ":reputation/class/classicon_"..getElementData(player, "reputation.class")..".png" )
end
if getElementData(player, "reputation.status") and fileExists ( ":reputation/reputation/goodevil_"..getElementData(player, "reputation.status")..".png" ) then
dxDrawImage ( sx + math.max(nameWidth/2, teamWidth/2) + 1*scale, sy - imageSize, imageSize, imageSize, ":reputation/reputation/goodevil_"..getElementData(player, "reputation.status")..".png" )
end
end
break
end
end
end
)


---------------THE FOLLOWING IS THE MANAGEMENT OF NAMETAGS-----------------
addEventHandler('onClientResourceStart', g_Root,
function()
for i,player in ipairs(getElementsByType"player") do
if player ~= g_Me then
nametag.create ( player )
end
end
end
)

addEventHandler ( "onClientPlayerJoin", g_Root,
function()
if source == g_Me then return end
setPlayerNametagShowing ( source, false )
nametag.create ( source )
end
)

addEventHandler ( "onClientPlayerQuit", g_Root,
function()
nametag.destroy ( source )
end
)

-- Math functions
function math.lerp(from,to,alpha)
return from + (to-from) * alpha
end

-- curve is { {x1, y1}, {x2, y2}, {x3, y3} ... }
function math.evalCurve( curve, input )
-- First value
if input<curve[1][1] then
return curve[1][2]
end
-- Interp value
for idx=2,#curve do
if input<curve[idx][1] then
local x1 = curve[idx-1][1]
local y1 = curve[idx-1][2]
local x2 = curve[idx][1]
local y2 = curve[idx][2]
-- Find pos between input points
local alpha = (input - x1)/(x2 - x1);
-- Map to output points
return math.lerp(y1,y2,alpha)
end
end
-- Last value
return curve[#curve][2]
end

function dxDrawColorText(str, ax, ay, bx, by, color, scale, font,alignX,alignY,clip, wordBreak, postGUI)
local pat = "(.-)#(%x%x%x%x%x%x)"
local s, e, cap, col = str:find(pat, 1)
local last = 1
while s do
if s ~= 1 or cap ~= "" then
local w = dxGetTextWidth(cap, scale, font)
dxDrawText(cap, ax, ay, ax + w, by, color, scale, font,alignX,alignY,clip, wordBreak, postGUI)
ax = ax + w
color = tocolor(tonumber("0x"..string.sub(col, 1, 2)), tonumber("0x"..string.sub(col, 3, 4)), tonumber("0x"..string.sub(col, 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,alignX,alignY,clip, wordBreak, postGUI)
end
end


https://imgur.com/a/2vHrP

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-12, 19:18


_Haze

Peace Yo!






Wiek: 24
Na forum: 4184 dni
Posty: 1648
Nick w MP: Haze

Piwa: 2628

Respekt: 1020
Respekt: 1020


Więcej informacji znajdziesz w Wikipedii MTA:

dxDrawText

14 argument w dxDrawText oznacza kolor

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 02:07


EvilXmik







Wiek: 28
Na forum: 3620 dni
Posty: 148
Nick w MP: EvilXmik

Piwa: 399

Respekt: 50

M?g? by? mi pokaza? jak to zrobi? ? Prosz?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 06:27


_Haze

Peace Yo!






Wiek: 24
Na forum: 4184 dni
Posty: 1648
Nick w MP: Haze

Piwa: 2628

Respekt: 1020
Respekt: 1020

14argument w dxDrawText odpowiada za kolor, musi byc wiec na true

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 14:20


EvilXmik







Wiek: 28
Na forum: 3620 dni
Posty: 148
Nick w MP: EvilXmik

Piwa: 399

Respekt: 50

o to o ? "colorCoded=false"
Dobra tylko gdzie to wepchn?? ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 15:55


Szydlo

Stance Works






Wiek: 25
Na forum: 3585 dni
Posty: 343
Nick w MP: Szydlo

Piwa: 4

Respekt: 105,3
Respekt: 105,3

Tak to jest to, no po postgui musisz to da?.(Musisz wszystkie uzupe?ni? do tego colorCoded)

Podpis
Aktualny najlepszy kontakt do mnie: Szydlo#8134 (Discord)
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-14, 14:58


EvilXmik







Wiek: 28
Na forum: 3620 dni
Posty: 148
Nick w MP: EvilXmik

Piwa: 399

Respekt: 50

co? takiego ?
Kod:


function dxDrawColorText(str, ax, ay, bx, by, color, scale, font,alignX,alignY,clip, wordBreak, postGUI,colorCoded)
local pat = "(.-)#(%x%x%x%x%x%x)"
local s, e, cap, col = str:find(pat, 1)
local last = 1
while s do
if s ~= 1 or cap ~= "" then
local w = dxGetTextWidth(cap, scale, font)
dxDrawText(cap, ax, ay, ax + w, by, color, scale, font,alignX,alignY,clip, wordBreak, postGUI,colorCoded)
ax = ax + w
color = tocolor(tonumber("0x"..string.sub(col, 1, 2)), tonumber("0x"..string.sub(col, 3, 4)), tonumber("0x"..string.sub(col, 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,alignX,alignY,clip, wordBreak, postGUI,colorCoded)
end
end


[ Dodano: 2017-11-16, 17:26 ]
Kiedy kto? odp ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-21, 19:49


Szydlo

Stance Works






Wiek: 25
Na forum: 3585 dni
Posty: 343
Nick w MP: Szydlo

Piwa: 4

Respekt: 105,3
Respekt: 105,3

Przetestuj i sprawd? po prostu.

Podpis
Aktualny najlepszy kontakt do mnie: Szydlo#8134 (Discord)
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-21, 22:01


EvilXmik







Wiek: 28
Na forum: 3620 dni
Posty: 148
Nick w MP: EvilXmik

Piwa: 399

Respekt: 50

Teraz wgl nic si? nie zmienia :'(

Postaw piwo autorowi tego posta
 

 
Tagi: jak :: dodać :: kolor
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » 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