[YARDIM] Killmessages Font

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı furkan08

  • Yeni Üye
  • *
    • İleti: 75
: 26 Şubat 2020, 18:46:32
Merabalar Normal killmessages Font Nasıl Eklerim 


Kod
dxText = {}
dxText_mt = { __index = dxText }
local idAssign,idPrefix = 0,"c"
local g_screenX,g_screenY = guiGetScreenSize()
local visibleText = {}
------
local defaults = {
fX = 0.5,
fY = 0.5,
bRelativePosition = true,
strText = "",
bVerticalAlign = "center",
bHorizontalAlign = "center",
tColor = {255,255,255,255},
fScale = 1,
strFont = "default",
strType = "normal",
tAttributes = {},
bPostGUI = false,
bColorCoded = true,
bClip = false,
bWordWrap = true,
bVisible = true,
tBoundingBox = false, --If a bounding box is not set, it will not be used.
bRelativeBoundingBox = true,
}

local validFonts = {
default = true,
["default-bold"] = true,
clear = true,
arial = true,
pricedown = true,
bankgothic = true,
diploma = true,
beckett = true,
}

local validTypes = {
normal = true,
shadow = true,
border = true,
stroke = true, --Clone of border
}

local validAlignTypes = {
center = true,
left = true,
right = true,
}

function dxText:create(text, x, y, relative)
assert(not self.fX, "attempt to call method 'create' (a nil value)")
if type(text) ~= "string" or not tonumber(x) or not tonumber(y) then
outputDebugString("dxText:create - Bad argument",0,112,112,112)
return false
end
    local new = {}
setmetatable(new, dxText_mt)
--Add default settings
for i,v in pairs(defaults) do
new[i] = v
end
idAssign = idAssign+1
new.id = idPrefix..idAssign
new.strText = text or new.strText
new.fX = x or new.fX
new.fY = y or new.fY
if type(relative) == "boolean" then
new.bRelativePosition = relative
end
visibleText[new] = true
return new
end

function dxText:text(text)
if type(text) ~= "string" then return self.strText end
self.strText = text
return true
end

function dxText:position(x,y,relative)
if not tonumber(x) then return self.fX,self.fY end
self.fX = x
self.fY = y
if type(relative) == "boolean" then
self.bRelativePosition = relative
else
self.bRelativePosition = true
end
return true
end

function dxText:color(r,g,b,a)
if not tonumber(r) then return unpack(self.tColor) end
g = g or self.tColor[2]
b = b or self.tColor[3]
a = a or self.tColor[4]
self.tColor = {r,g,b,a}
return true
end

function dxText:scale(scale)
if not tonumber(scale) then return self.fScale end
self.fScale = scale
return true
end

function dxText:visible(bool)
if type(bool) ~= "boolean" then return self.bVisible end
self.bVisible = bool
if bool then
visibleText[self] = true
else
visibleText[self] = nil
end
return true
end

function dxText:destroy()
self.bDestroyed = true
setmetatable( self, self )
return true
end

function dxText:extent()
if self.bColorCoded then
text = string.gsub(self.strText,"#%x%x%x%x%x%x","")
else
text = self.strText
end
local extent = dxGetTextWidth(text,self.fScale,self.strFont)
if self.strType == "stroke" or self.strType == "border" then
extent = extent + self.tAttributes[1]
end
return extent
end

function dxText:height()
local height = dxGetFontHeight(self.fScale, self.strFont)
if self.strType == "stroke" or self.strType == "border" then
height = height + self.tAttributes[1]
end
return height
end

function dxText:font(font)
if not validFonts[font] then return self.strFont end
self.strFont = font
return true
end

function dxText:postGUI(bool)
if type(bool) ~= "boolean" then return self.bPostGUI end
self.bPostGUI = bool
return true
end

function dxText:clip(bool)
if type(bool) ~= "boolean" then return self.bClip end
self.bClip = bool
return true
end

function dxText:wordWrap(bool)
if type(bool) ~= "boolean" then return self.bWordWrap end
self.bWordWrap = bool
return true
end

function dxText:type(type,...)
if not validTypes[type] then return self.strType,unpack(self.tAttributes) end
self.strType = type
self.tAttributes = {...}
return true
end

function dxText:align(horzA, vertA)
if not validAlignTypes[horzA] then return self.bHorizontalAlign,self.bVerticalAlign end
vertA = vertA or self.bVerticalAlign
self.bHorizontalAlign,self.bVerticalAlign = horzA,vertA
return true
end

function dxText:boundingBox(left,top,right,bottom,relative)
if left == nil then
if self.tBoundingBox then
return unpack(boundingBox)
else
return false
end
elseif tonumber(left) and tonumber(right) and tonumber(top) and tonumber(bottom) then
self.tBoundingBox = {left,top,right,bottom}
if type(relative) == "boolean" then
self.bRelativeBoundingBox = relative
else
self.bRelativeBoundingBox = true
end
else
self.tBoundingBox = false
end
return true
end

function dxCreateCustomDX(text,left,top,right,bottom,color,scale,font,alignX,alignY,clip,wordBreak,postGUI)
if not text or not left or not top then
return false
end
local xOffset = nil
local fpat = "(.-)#(%x%x%x%x%x%x)"
local s,e,cap,col = text:find(fpat,1)
local last_end = 1
if not alignX then
alignX = "left"
elseif alignX == "center" then
xOffset = -(dxGetTextWidth(string.gsub(text,"#%x%x%x%x%x%x",""),scale,font)/2)
else
xOffset = 0
end
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
dxDrawText(cap,left+xOffset,top,left+xOffset,bottom,color,scale,font,alignX,alignY,false,false,postGUI)
xOffset = xOffset+dxGetTextWidth(cap,scale,font)
color = tocolor(tonumber("0x"..col:sub(1,2)), tonumber("0x"..col:sub(3,4)), tonumber("0x"..col:sub(5,6)),255)
end
last_end = e+1
s,e,cap,col = text:find(fpat,last_end)
end
if last_end <= #text then
cap = text:sub(last_end)
dxDrawText(cap,left+xOffset,top,left+xOffset,bottom,color,scale,font,alignX,alignY,false,false,postGUI)
xOffset = xOffset+dxGetTextWidth(cap,scale,font)
end
return true
end

addEventHandler("onClientRender",getRootElement(),
function()
for self,_ in pairs(visibleText) do
while true do
if self.bDestroyed then
visibleText[self] = nil
break
end
local l,t,r,b
--If we arent using a bounding box
if not self.tBoundingBox then
--Decide if we use relative or absolute
local p_screenX,p_screenY = 1,1
if self.bRelativePosition then
p_screenX,p_screenY = g_screenX,g_screenY
end
local fX,fY = (self.fX)*p_screenX,(self.fY)*p_screenY
if self.bHorizontalAlign == "left" then
l = fX
r = fX + g_screenX
elseif self.bHorizontalAlign == "right" then
l = fX - g_screenX
r = fX
else
l = fX - g_screenX
r = fX + g_screenX
end
if self.bVerticalAlign == "top" then
t = fY
b = fY + g_screenY
elseif self.bVerticalAlign == "bottom" then
t = fY - g_screenY
b = fY
else
t = fY - g_screenY
b = fY + g_screenY
end
elseif type(self.tBoundingBox) == "table" then
local b_screenX,b_screenY = 1,1
if self.bRelativeBoundingBox then
b_screenX,b_screenY = g_screenX,g_screenY
end
l,t,r,b = self.tBoundingBox[1],self.tBoundingBox[2],self.tBoundingBox[3],self.tBoundingBox[4]
l = l*b_screenX
t = t*b_screenY
r = r*b_screenX
b = b*b_screenY
end
local type,att1,att2,att3,att4,att5 = self:type()
if type == "border" or type == "stroke" then
att2 = att2 or 0
att3 = att3 or 0
att4 = att4 or 0
att5 = att5 or self.tColor[4]
outlinesize = att1 or 2
outlinesize = math.min(self.fScale,outlinesize) --Make sure the outline size isnt thicker than the size of the label
if outlinesize > 0 then
for offsetX=-outlinesize,outlinesize,outlinesize do
for offsetY=-outlinesize,outlinesize,outlinesize do
if not offsetX == 0 and offsetY == 0 then
dxCreateCustomDX(self.strText,l+offsetX,t+offsetY,r+offsetX,b+offsetY,tocolor(att2,att3,att4,att5),self.fScale,self.strFont,self.bHorizontalAlign,self.bVerticalAlign,self.bClip,self.bWordWrap,self.bPostGUI,self.bColorCoded)
end
end
end
end
elseif type == "shadow" then
local shadowDist = att1
att2 = att2 or 0
att3 = att3 or 0
att4 = att4 or 0
att5 = att5 or self.tColor[4]
dxCreateCustomDX(self.strText,l+shadowDist,t+shadowDist,r+shadowDist,b+shadowDist,tocolor(att2,att3,att4,att5),self.fScale,self.strFont,self.bHorizontalAlign,self.bVerticalAlign,self.bClip,self.bWordWrap,self.bPostGUI,self.bColorCoded)
end
dxCreateCustomDX(self.strText,l,t,r,b,tocolor(unpack(self.tColor)),self.fScale,self.strFont,self.bHorizontalAlign,self.bVerticalAlign,self.bClip,self.bWordWrap,self.bPostGUI,self.bColorCoded)
break
end
end
end
)

if addEvent("updateDisplays",true) then
addEventHandler("updateDisplays",getRootElement(),
function(self)
setmetatable(self,dxText_mt)
--Remove any old ones with the same id
for text,_ in pairs(visibleText) do
if text.id == self.id then
visibleText[text] = nil
end
end
if self.bVisible and not self.bDestroyed then
visibleText[self] = true
end
end
)
end
« Son Düzenleme: 31 Aralık 2020, 17:58:18 Gönderen: Narkoz »
 


MTASATURK

[YARDIM] Killmessages Font
« : 26 Şubat 2020, 18:46:32 »

Çevrimdışı ertrldtcu

  • Uzman Üye
  • *
    • İleti: 589
Yanıtla #1 : 01 Mart 2020, 02:21:02
Kod
strType						= "normal",
"normal" yerine mevcut dx fontlardan birini yazabilirsin veya Linki görebilmek için Kayıt olun yada Giriş yapın.ile kendin font oluşturabilirsin.
system