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
 | 
