155 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
---StringToArray
 | 
						|
---
 | 
						|
--- Reference : Frazzle <3
 | 
						|
---
 | 
						|
---@param str string
 | 
						|
function StringToArray(str)
 | 
						|
    local charCount = #str
 | 
						|
    local strCount = math.ceil(charCount / 99)
 | 
						|
    local strings = {}
 | 
						|
 | 
						|
    for i = 1, strCount do
 | 
						|
        local start = (i - 1) * 99 + 1
 | 
						|
        local clamp = math.clamp(#string.sub(str, start), 0, 99)
 | 
						|
        local finish = ((i ~= 1) and (start - 1) or 0) + clamp
 | 
						|
 | 
						|
        strings[i] = string.sub(str, start, finish)
 | 
						|
    end
 | 
						|
 | 
						|
    return strings
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
---AddText
 | 
						|
---
 | 
						|
--- Reference : Frazzle <3
 | 
						|
---
 | 
						|
---@param str string
 | 
						|
function AddText(str)
 | 
						|
    local str = tostring(str)
 | 
						|
    local charCount = #str
 | 
						|
 | 
						|
    if charCount < 100 then
 | 
						|
        AddTextComponentSubstringPlayerName(str)
 | 
						|
    else
 | 
						|
        local strings = StringToArray(str)
 | 
						|
 | 
						|
        for s = 1, #strings do
 | 
						|
            AddTextComponentSubstringPlayerName(strings[s])
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
---GetLineCount
 | 
						|
---
 | 
						|
--- Reference : Frazzle <3
 | 
						|
---
 | 
						|
---@param Text string
 | 
						|
---@param X number
 | 
						|
---@param Y number
 | 
						|
---@param Font number
 | 
						|
---@param Scale number
 | 
						|
---@param R number
 | 
						|
---@param G number
 | 
						|
---@param B number
 | 
						|
---@param A number
 | 
						|
---@param Alignment string
 | 
						|
---@param DropShadow boolean
 | 
						|
---@param Outline boolean
 | 
						|
---@param WordWrap number
 | 
						|
---@return function
 | 
						|
---@public
 | 
						|
function GetLineCount(Text, X, Y, Font, Scale, R, G, B, A, Alignment, DropShadow, Outline, WordWrap)
 | 
						|
    ---@type table
 | 
						|
    local Text, X, Y = tostring(Text), (tonumber(X) or 0) / 1920, (tonumber(Y) or 0) / 1080
 | 
						|
    SetTextFont(Font or 0)
 | 
						|
    SetTextScale(1.0, Scale or 0)
 | 
						|
    SetTextColour(tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(A) or 255)
 | 
						|
    if DropShadow then
 | 
						|
        SetTextDropShadow()
 | 
						|
    end
 | 
						|
    if Outline then
 | 
						|
        SetTextOutline()
 | 
						|
    end
 | 
						|
    if Alignment ~= nil then
 | 
						|
        if Alignment == 1 or Alignment == "Center" or Alignment == "Centre" then
 | 
						|
            SetTextCentre(true)
 | 
						|
        elseif Alignment == 2 or Alignment == "Right" then
 | 
						|
            SetTextRightJustify(true)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if tonumber(WordWrap) and tonumber(WordWrap) ~= 0 then
 | 
						|
        if Alignment == 1 or Alignment == "Center" or Alignment == "Centre" then
 | 
						|
            SetTextWrap(X - ((WordWrap / 1920) / 2), X + ((WordWrap / 1920) / 2))
 | 
						|
        elseif Alignment == 2 or Alignment == "Right" then
 | 
						|
            SetTextWrap(0, X)
 | 
						|
        else
 | 
						|
            SetTextWrap(X, X + (WordWrap / 1920))
 | 
						|
        end
 | 
						|
    else
 | 
						|
        if Alignment == 2 or Alignment == "Right" then
 | 
						|
            SetTextWrap(0, X)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    BeginTextCommandLineCount("CELL_EMAIL_BCON")
 | 
						|
    AddText(Text)
 | 
						|
    return GetTextScreenLineCount(X, Y)
 | 
						|
end
 | 
						|
 | 
						|
---RenderText
 | 
						|
---
 | 
						|
--- Reference : https://github.com/iTexZoz/NativeUILua_Reloaded/blob/master/UIElements/UIResText.lua#L189
 | 
						|
---
 | 
						|
---@param Text string
 | 
						|
---@param X number
 | 
						|
---@param Y number
 | 
						|
---@param Font number
 | 
						|
---@param Scale number
 | 
						|
---@param R number
 | 
						|
---@param G number
 | 
						|
---@param B number
 | 
						|
---@param A number
 | 
						|
---@param Alignment string
 | 
						|
---@param DropShadow boolean
 | 
						|
---@param Outline boolean
 | 
						|
---@param WordWrap number
 | 
						|
---@return nil
 | 
						|
---@public
 | 
						|
function RenderText(Text, X, Y, Font, Scale, R, G, B, A, Alignment, DropShadow, Outline, WordWrap)
 | 
						|
    ---@type table
 | 
						|
    local Text, X, Y = tostring(Text), (tonumber(X) or 0) / 1920, (tonumber(Y) or 0) / 1080
 | 
						|
    SetTextFont(Font or 0)
 | 
						|
    SetTextScale(1.0, Scale or 0)
 | 
						|
    SetTextColour(tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(A) or 255)
 | 
						|
    if DropShadow then
 | 
						|
        SetTextDropShadow()
 | 
						|
    end
 | 
						|
    if Outline then
 | 
						|
        SetTextOutline()
 | 
						|
    end
 | 
						|
    if Alignment ~= nil then
 | 
						|
        if Alignment == 1 or Alignment == "Center" or Alignment == "Centre" then
 | 
						|
            SetTextCentre(true)
 | 
						|
        elseif Alignment == 2 or Alignment == "Right" then
 | 
						|
            SetTextRightJustify(true)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if tonumber(WordWrap) and tonumber(WordWrap) ~= 0 then
 | 
						|
        if Alignment == 1 or Alignment == "Center" or Alignment == "Centre" then
 | 
						|
            SetTextWrap(X - ((WordWrap / 1920) / 2), X + ((WordWrap / 1920) / 2))
 | 
						|
        elseif Alignment == 2 or Alignment == "Right" then
 | 
						|
            SetTextWrap(0, X)
 | 
						|
        else
 | 
						|
            SetTextWrap(X, X + (WordWrap / 1920))
 | 
						|
        end
 | 
						|
    else
 | 
						|
        if Alignment == 2 or Alignment == "Right" then
 | 
						|
            SetTextWrap(0, X)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    BeginTextCommandDisplayText("CELL_EMAIL_BCON")
 | 
						|
    AddText(Text)
 | 
						|
    EndTextCommandDisplayText(X, Y)
 | 
						|
end
 |