как сделать оверлей?

Mr.Mastire222

Известный
Автор темы
530
260
Версия MoonLoader
.026-beta
как сделать оверлей, там будет время пинг и т.д
 
Решение
Очень старался, поставь лайка пожалуйста и лучший ответ
Lua:
memory = require "memory"
encoding = require "encoding"

encoding.default = 'CP1251'
u8 = encoding.UTF8
require "lib.moonloader"

function lib_check()
    imgui = {
        ['fpath'] = getWorkingDirectory().."\\lib\\imgui.lua",
        ['updlink'] = "[URL]https://drive.google.com/u/0/uc?id=1R-NK-xH_qqQ8TB0wNoBdPpVs7X79mtT2&export=download[/URL]"
    }
    if doesFileExist("moonloader\\lib\\imgui.lua") then
      imgui = require 'imgui'
    else
      print("Не найдена ImGui библиотека, начинается автоматическая загрузка библиотеки")
      downloadUrlToFile(imgui['updlink'], imgui['fpath'], function(id, status, p1, p2)
        if status == dlstatus.STATUS_ENDDOWNLOADDATA then...

Hideme Flow

Известный
555
193
Очень старался, поставь лайка пожалуйста и лучший ответ
Lua:
memory = require "memory"
encoding = require "encoding"

encoding.default = 'CP1251'
u8 = encoding.UTF8
require "lib.moonloader"

function lib_check()
    imgui = {
        ['fpath'] = getWorkingDirectory().."\\lib\\imgui.lua",
        ['updlink'] = "[URL]https://drive.google.com/u/0/uc?id=1R-NK-xH_qqQ8TB0wNoBdPpVs7X79mtT2&export=download[/URL]"
    }
    if doesFileExist("moonloader\\lib\\imgui.lua") then
      imgui = require 'imgui'
    else
      print("Не найдена ImGui библиотека, начинается автоматическая загрузка библиотеки")
      downloadUrlToFile(imgui['updlink'], imgui['fpath'], function(id, status, p1, p2)
        if status == dlstatus.STATUS_ENDDOWNLOADDATA then
          print('Загрузка библиотеки imgui завершена.')
        end
      end)
    end
end
lib_check()

local overlay = imgui.ImBool(false)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2000) end
     sampRegisterChatCommand("overlay", function() overlay.v = not overlay.v imgui.ShowCursor = false end)
     while true do
         wait(0)
         getFps()
         imgui.Process = overlay.v
     end
end

function getFps()
    wait(500) -- Задержка при показе фпс
    getfps = memory.getfloat(0xB7CB50, true) -- получение фпс
    if tostring(getfps):find(".") then
        newfps, _ = tostring(getfps):match("(%d+).(%d+)") -- Фпс получается 152.15468468, эта функция делает 152
        if newfps == nil then
            return false
        end
        fps = newfps
    else
        fps = getfps
    end
end

function imgui.OnDrawFrame()
    if overlay.v then
        local unix_time = os.time(os.date('!*t'))
        local moscow_time = unix_time + 3 * 60 * 60
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получение своего id (нужно, чтобы получить свой пинг)
        local ping = sampGetPlayerPing(myid) -- получение пинга
        local nick = sampGetPlayerNickname(myid) -- получение ника
        local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw/1.1,sh/1.5),imgui.Cond.Always,imgui.ImVec2(0.5,0.5)) -- позиция
        imgui.Begin("##оверлей", overlay.v, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
        imgui.Text(u8"Ваш ник: "..nick)
        imgui.Text(u8"Ваш ping: "..ping)
        if fps then
            imgui.Text(u8"Ваш fps: "..fps)
        end
        imgui.Text(u8"Время: "..os.date('%H:%M:%S', moscow_time))
        imgui.End()
    end
end
 

Mr.Mastire222

Известный
Автор темы
530
260
Очень старался, поставь лайка пожалуйста и лучший ответ
Lua:
memory = require "memory"
encoding = require "encoding"

encoding.default = 'CP1251'
u8 = encoding.UTF8
require "lib.moonloader"

function lib_check()
    imgui = {
        ['fpath'] = getWorkingDirectory().."\\lib\\imgui.lua",
        ['updlink'] = "[URL]https://drive.google.com/u/0/uc?id=1R-NK-xH_qqQ8TB0wNoBdPpVs7X79mtT2&export=download[/URL]"
    }
    if doesFileExist("moonloader\\lib\\imgui.lua") then
      imgui = require 'imgui'
    else
      print("Не найдена ImGui библиотека, начинается автоматическая загрузка библиотеки")
      downloadUrlToFile(imgui['updlink'], imgui['fpath'], function(id, status, p1, p2)
        if status == dlstatus.STATUS_ENDDOWNLOADDATA then
          print('Загрузка библиотеки imgui завершена.')
        end
      end)
    end
end
lib_check()

local overlay = imgui.ImBool(false)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2000) end
     sampRegisterChatCommand("overlay", function() overlay.v = not overlay.v imgui.ShowCursor = false end)
     while true do
         wait(0)
         getFps()
         imgui.Process = overlay.v
     end
end

function getFps()
    wait(500) -- Задержка при показе фпс
    getfps = memory.getfloat(0xB7CB50, true) -- получение фпс
    if tostring(getfps):find(".") then
        newfps, _ = tostring(getfps):match("(%d+).(%d+)") -- Фпс получается 152.15468468, эта функция делает 152
        if newfps == nil then
            return false
        end
        fps = newfps
    else
        fps = getfps
    end
end

function imgui.OnDrawFrame()
    if overlay.v then
        local unix_time = os.time(os.date('!*t'))
        local moscow_time = unix_time + 3 * 60 * 60
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получение своего id (нужно, чтобы получить свой пинг)
        local ping = sampGetPlayerPing(myid) -- получение пинга
        local nick = sampGetPlayerNickname(myid) -- получение ника
        local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw/1.1,sh/1.5),imgui.Cond.Always,imgui.ImVec2(0.5,0.5)) -- позиция
        imgui.Begin("##оверлей", overlay.v, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
        imgui.Text(u8"Ваш ник: "..nick)
        imgui.Text(u8"Ваш ping: "..ping)
        if fps then
            imgui.Text(u8"Ваш fps: "..fps)
        end
        imgui.Text(u8"Время: "..os.date('%H:%M:%S', moscow_time))
        imgui.End()
    end
end
а можно без подгрузки библиотек?
 

Hideme Flow

Известный
555
193
а можно без подгрузки библиотек?
можно так
Lua:
memory = require "memory"
encoding = require "encoding"

encoding.default = 'CP1251'
u8 = encoding.UTF8
imgui = require 'imgui'

local overlay = imgui.ImBool(false)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2000) end
     sampRegisterChatCommand("overlay", function() overlay.v = not overlay.v imgui.ShowCursor = false end)
     while true do
         wait(0)
         getFps()
         imgui.Process = overlay.v
     end
end

function getFps()
    wait(500) -- Задержка при показе фпс
    getfps = memory.getfloat(0xB7CB50, true) -- получение фпс
    if tostring(getfps):find(".") then
        newfps, _ = tostring(getfps):match("(%d+).(%d+)") -- Фпс получается 152.15468468, эта функция делает 152
        if newfps == nil then
            return false
        end
        fps = newfps
    else
        fps = getfps
    end
end

function imgui.OnDrawFrame()
    if overlay.v then
        local unix_time = os.time(os.date('!*t'))
        local moscow_time = unix_time + 3 * 60 * 60
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получение своего id (нужно, чтобы получить свой пинг)
        local ping = sampGetPlayerPing(myid) -- получение пинга
        local nick = sampGetPlayerNickname(myid) -- получение ника
        local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw/1.1,sh/1.5),imgui.Cond.Always,imgui.ImVec2(0.5,0.5)) -- позиция
        imgui.Begin("##оверлей", overlay.v, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
        imgui.Text(u8"Ваш ник: "..nick)
        imgui.Text(u8"Ваш ping: "..ping)
        if fps then
            imgui.Text(u8"Ваш fps: "..fps)
        end
        imgui.Text(u8"Время: "..os.date('%H:%M:%S', moscow_time))
        imgui.End()
    end
end
 
  • Нравится
Реакции: Mr.Mastire222

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,648
2,524
можно так
Lua:
memory = require "memory"
encoding = require "encoding"

encoding.default = 'CP1251'
u8 = encoding.UTF8
imgui = require 'imgui'

local overlay = imgui.ImBool(false)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2000) end
     sampRegisterChatCommand("overlay", function() overlay.v = not overlay.v imgui.ShowCursor = false end)
     while true do
         wait(0)
         getFps()
         imgui.Process = overlay.v
     end
end

function getFps()
    wait(500) -- Задержка при показе фпс
    getfps = memory.getfloat(0xB7CB50, true) -- получение фпс
    if tostring(getfps):find(".") then
        newfps, _ = tostring(getfps):match("(%d+).(%d+)") -- Фпс получается 152.15468468, эта функция делает 152
        if newfps == nil then
            return false
        end
        fps = newfps
    else
        fps = getfps
    end
end

function imgui.OnDrawFrame()
    if overlay.v then
        local unix_time = os.time(os.date('!*t'))
        local moscow_time = unix_time + 3 * 60 * 60
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получение своего id (нужно, чтобы получить свой пинг)
        local ping = sampGetPlayerPing(myid) -- получение пинга
        local nick = sampGetPlayerNickname(myid) -- получение ника
        local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw/1.1,sh/1.5),imgui.Cond.Always,imgui.ImVec2(0.5,0.5)) -- позиция
        imgui.Begin("##оверлей", overlay.v, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
        imgui.Text(u8"Ваш ник: "..nick)
        imgui.Text(u8"Ваш ping: "..ping)
        if fps then
            imgui.Text(u8"Ваш fps: "..fps)
        end
        imgui.Text(u8"Время: "..os.date('%H:%M:%S', moscow_time))
        imgui.End()
    end
end
Что это бля
Lua:
function getFps() return math.ceil(ffi.cast("float*", 0xB7CB50)[0]) end
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,648
2,524
Там FPS жестно меняется, даже не можно уловить глазом, я сделал задержку через эту функцию
Lua:
fps = {
    last_update = 0,
    value = 0,
    get = function()
        if os.clock() - fps.last_update > 1.2 then
            fps.last_update = os.clock()
            fps.value = math.ceil(ffi.cast('float*', 0xB7CB50)[0])
        end
        return fps.value
    end
}

local currentFps = fps.get()