191 lines
		
	
	
		
			No EOL
		
	
	
		
			6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			No EOL
		
	
	
		
			6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
function GetResolution()
 | 
						|
    local W, H = GetActiveScreenResolution()
 | 
						|
    if (W/H) > 3.5 then
 | 
						|
        return GetScreenResolution()
 | 
						|
    else
 | 
						|
        return W, H
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function FormatXWYH(Value, Value2)
 | 
						|
    return Value/1920, Value2/1080
 | 
						|
end
 | 
						|
 | 
						|
function math.round(num, numDecimalPlaces)
 | 
						|
	return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
 | 
						|
end
 | 
						|
 | 
						|
function tobool(input)
 | 
						|
	if input == "true" or tonumber(input) == 1 or input == true then
 | 
						|
		return true
 | 
						|
	else
 | 
						|
		return false
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
function string.split(inputstr, sep)
 | 
						|
	if sep == nil then
 | 
						|
		sep = "%s"
 | 
						|
	end
 | 
						|
	local t={} ; i=1
 | 
						|
	for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
 | 
						|
		t[i] = str
 | 
						|
		i = i + 1
 | 
						|
	end
 | 
						|
 | 
						|
	return t
 | 
						|
end
 | 
						|
 | 
						|
function string.starts(String, Start)
 | 
						|
	return string.sub(String, 1, string.len(Start)) == Start
 | 
						|
end
 | 
						|
 | 
						|
function IsMouseInBounds(X, Y, Width, Height)
 | 
						|
	local MX, MY = math.round(GetControlNormal(0, 239) * 1920), math.round(GetControlNormal(0, 240) * 1080)
 | 
						|
    MX, MY = FormatXWYH(MX, MY)
 | 
						|
    X, Y = FormatXWYH(X, Y)
 | 
						|
    Width, Height = FormatXWYH(Width, Height)
 | 
						|
	return (MX >= X and MX <= X + Width) and (MY > Y and MY < Y + Height)
 | 
						|
end
 | 
						|
 | 
						|
function GetSafeZoneBounds()
 | 
						|
	local SafeSize = GetSafeZoneSize()
 | 
						|
	SafeSize = math.round(SafeSize, 2)
 | 
						|
	SafeSize = (SafeSize * 100) - 90
 | 
						|
	SafeSize = 10 - SafeSize
 | 
						|
 | 
						|
	local W, H = 1920, 1080
 | 
						|
 | 
						|
	return {X = math.round(SafeSize * ((W/H) * 5.4)), Y = math.round(SafeSize * 5.4)}
 | 
						|
end
 | 
						|
 | 
						|
function Controller()
 | 
						|
	return not IsInputDisabled(2)
 | 
						|
end
 | 
						|
 | 
						|
--[[
 | 
						|
 | 
						|
function UIMenu:ProcessMouse()
 | 
						|
	if not self._Visible or self.JustOpened or #self.Items == 0 or tobool(Controller()) or not self.Settings.MouseControlsEnabled then
 | 
						|
		EnableControlAction(0, 2, true)
 | 
						|
		EnableControlAction(0, 1, true)
 | 
						|
		EnableControlAction(0, 25, true)
 | 
						|
		EnableControlAction(0, 24, true)
 | 
						|
		if self.Dirty then
 | 
						|
			for _, Item in pairs(self.Items) do
 | 
						|
				if Item:Hovered() then
 | 
						|
					Item:Hovered(false)
 | 
						|
				end
 | 
						|
			end
 | 
						|
		end
 | 
						|
		return
 | 
						|
	end
 | 
						|
 | 
						|
	local SafeZone = GetSafeZoneBounds()
 | 
						|
 | 
						|
	local Limit = #self.Items - 1
 | 
						|
	local Counter = 0
 | 
						|
 | 
						|
	ShowCursorThisFrame()
 | 
						|
 | 
						|
	if #self.Items > self.Pagination.Total + 1 then
 | 
						|
		Limit = self.Pagination.Max
 | 
						|
	end
 | 
						|
 | 
						|
	if IsMouseInBounds(0, 0, 30, 1080) and self.Settings.MouseEdgeEnabled then
 | 
						|
		SetGameplayCamRelativeHeading(GetGameplayCamRelativeHeading() + 5)
 | 
						|
		SetCursorSprite(6)
 | 
						|
	elseif IsMouseInBounds(GetScreenResolutionMaintainRatio().Width - 30, 0, 30, 1080) and self.Settings.MouseEdgeEnabled then
 | 
						|
		SetGameplayCamRelativeHeading(GetGameplayCamRelativeHeading() - 5)
 | 
						|
		SetCursorSprite(7)	
 | 
						|
	elseif self.Settings.MouseEdgeEnabled then
 | 
						|
		SetCursorSprite(1)
 | 
						|
	end
 | 
						|
 | 
						|
	for i = self.Pagination.Min + 1, Limit, 1 do
 | 
						|
		local X, Y = self.Position.X, self.Position.Y + 144 - 37 + self.Subtitle.ExtraY + (Counter * 38)
 | 
						|
		local Width, Height = 431 + self.WidthOffset, 38
 | 
						|
		local Item = self.Items[i]
 | 
						|
		local Type, SubType = Item()
 | 
						|
 | 
						|
		DrawRectangle(X, Y, Width, Height, 255, 0, 0, 150)
 | 
						|
		if SubType == "UIMenuListItem" or SubType == "UIMenuSliderItem" then
 | 
						|
			DrawRectangle(Item.LeftArrow.X, Item.LeftArrow.Y, Item.LeftArrow.Width, Item.LeftArrow.Height, 0, 255, 0, 150)
 | 
						|
			DrawRectangle(Item.RightArrow.X, Item.RightArrow.Y, Item.RightArrow.Width, Item.RightArrow.Height, 0, 255, 0, 150)
 | 
						|
		end
 | 
						|
 | 
						|
		if IsMouseInBounds(X, Y, Width, Height) then
 | 
						|
			Item:Hovered(true)
 | 
						|
			if IsDisabledControlJustPressed(0, 24) then
 | 
						|
				if Item:Selected() and Item:Enabled() then
 | 
						|
					if SubType == "UIMenuListItem" then
 | 
						|
						if IsMouseInBounds(Item.LeftArrow.X, Item.LeftArrow.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then
 | 
						|
							self:GoLeft()
 | 
						|
						elseif not IsMouseInBounds(Item.RightArrow.X, Item.RightArrow.Y, Item.RightArrow.Width, Item.RightArrow.Height) then
 | 
						|
							self:SelectItem()
 | 
						|
						end
 | 
						|
						if IsMouseInBounds(Item.RightArrow.X, Item.RightArrow.Y, Item.RightArrow.Width, Item.RightArrow.Height) then
 | 
						|
							self:GoRight()
 | 
						|
						elseif not IsMouseInBounds(Item.LeftArrow.X, Item.LeftArrow.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then
 | 
						|
							self:SelectItem()
 | 
						|
						end
 | 
						|
					elseif SubType == "UIMenuSliderItem" then
 | 
						|
						if IsMouseInBounds(Item.LeftArrow.X, Item.LeftArrow.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then
 | 
						|
							self:GoLeft()
 | 
						|
						elseif not IsMouseInBounds(Item.RightArrow.X, Item.RightArrow.Y, Item.RightArrow.Width, Item.RightArrow.Height) then
 | 
						|
							self:SelectItem()
 | 
						|
						end
 | 
						|
						if IsMouseInBounds(Item.RightArrow.X, Item.RightArrow.Y, Item.RightArrow.Width, Item.RightArrow.Height) then
 | 
						|
							self:GoRight()
 | 
						|
						elseif not IsMouseInBounds(Item.LeftArrow.X, Item.LeftArrow.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then
 | 
						|
							self:SelectItem()
 | 
						|
						end
 | 
						|
					else
 | 
						|
						self:SelectItem()
 | 
						|
					end
 | 
						|
				elseif not Item:Selected() then
 | 
						|
					self:CurrentSelection(i-1)
 | 
						|
					PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true)
 | 
						|
					self.OnIndexChange(self, self:CurrentSelection())
 | 
						|
					self.ReDraw = true
 | 
						|
				elseif not Item:Enabled() and Item:Selected() then
 | 
						|
					PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true)
 | 
						|
				end
 | 
						|
			end
 | 
						|
		else
 | 
						|
			Item:Hovered(false)
 | 
						|
		end
 | 
						|
		Counter = Counter + 1
 | 
						|
	end
 | 
						|
 | 
						|
	local ExtraX, ExtraY = self.Position.X, 144 + 38 * (self.Pagination.Total + 1) + self.Position.Y - 37 + self.Subtitle.ExtraY
 | 
						|
 | 
						|
	if #self.Items <= self.Pagination.Total + 1 then return end
 | 
						|
 | 
						|
	if IsMouseInBounds(ExtraX, ExtraY, 431 + self.WidthOffset, 18) then
 | 
						|
		self.Extra.Up:Colour(30, 30, 30, 255)
 | 
						|
		if IsDisabledControlJustPressed(0, 24) then
 | 
						|
			if #self.Items > self.Pagination.Total + 1 then
 | 
						|
				self:GoUpOverflow()
 | 
						|
			else
 | 
						|
				self:GoUp()
 | 
						|
			end
 | 
						|
		end
 | 
						|
	else
 | 
						|
		self.Extra.Up:Colour(0, 0, 0, 200)
 | 
						|
	end
 | 
						|
 | 
						|
	if IsMouseInBounds(ExtraX, ExtraY + 18, 431 + self.WidthOffset, 18) then
 | 
						|
		self.Extra.Down:Colour(30, 30, 30, 255)
 | 
						|
		if IsDisabledControlJustReleased(0, 24) then
 | 
						|
			if #self.Items > self.Pagination.Total + 1 then
 | 
						|
				self:GoDownOverflow()
 | 
						|
			else
 | 
						|
				self:GoDown()
 | 
						|
			end
 | 
						|
		end			
 | 
						|
	else
 | 
						|
		self.Extra.Down:Colour(0, 0, 0, 200)
 | 
						|
	end
 | 
						|
end
 | 
						|
--]] |