рендер

h3ronwater

Новичок
Автор темы
24
1
Версия MoonLoader
Другое
как сделать плавную анимацию появления рендер текста
 

YarikVL

Известный
Проверенный
4,796
1,813
как сделать плавную анимацию появления рендер текста
Сделай через mimgui вывод текста и тогда сможешь воспользоваться этим:

Либо вот, почитай:
 

хуега)

РП игрок
Модератор
2,568
2,269
а как мимгуи влияет на рендер?
Рендер текста можно делать напрямую через mimgui, при помощи drawlist

Если нужен именно рендер через функции муна, то что-то типа этого примера (накидал с телефона, хз, будет ворк или не)
Lua:
function slowRendeeText(font, text, posX, posY, color)
    color = (color - 0xFF)
    for alpha = 0x0, 0xFF do
        renderNePomnuFunctiu(font, text, posX, posY, (color + alpha) )
    end
end
 
Последнее редактирование:
  • Вау
Реакции: qdIbp и Lance_Sterling

RedHolms

Известный
Проверенный
617
360
использовал такое для мимгуи, но и для рендера пойдёт
Lua:
local ffi = require "ffi"
local bit = require "bit"

ffi.cdef [[
  unsigned long __stdcall timeGetTime();
]]
local winmm = ffi.load("winmm.dll")

local bor, lshift = bit.bor, bit.lshift

local Animations = {}

local LINEAR = function(x) return x end
local SQUARED = function(x) return math.sqrt(x) end

local font = renderCreateFont("C:\\Windows\\Fonts\\arial.ttf", 14, 0)

function main()
  -- "text_anim" - название анимации, нужно просто что бы анимации различались между собой
  -- LINEAR - тип анимации, можно запихнуть туда любые математические операции.
  --  В нашем случае это просто линейная анимация. SQUARED же - более плавная (в начале и конце - медленнее, в середине - быстрее)
  -- 0.5 - скорость анимации, это просто число, чем больше - тем быстрее
  local text_anim = Animations:get("text_anim", LINEAR, 0.5)

  while not isSampAvailable() do wait(0) end

  sampRegisterChatCommand("anim_reverse", function()
    -- можем инвертировать анимацию
    text_anim.reverse = not text_anim.reverse
  end)

  -- если уже создали анимацию, можем не передавать функцию и скорость
  local anim = Animations:get("text_anim")

  while true do
    -- возвращает число между 0 и 1
    local progress = anim:get()

    -- какой-то наш цвет
    local color = 0xFFFFFF

    -- применяем прозрачность
    local alpha = math.floor(progress * 255)
    alpha = lshift(alpha, 24)
    color = bor(color, alpha)

    renderFontDrawText(font, "TEXT!!!", 500, 500, color)

    wait(0)
  end
end

function Animations:get(name, calc, speed)
  if not self[name] then
    self[name] = {
      calc = calc,
      speed = speed or 1,
      last_time = winmm.timeGetTime(),
      reverse = false,
      progress = 0,
      get = function(self)
        local retval = self.calc(self.reverse and 1 - self.progress or self.progress)
        local diff = (((winmm.timeGetTime() - self.last_time) / 1000) * speed)
        self.progress = math.clamp(self.progress + (self.reverse and -diff or diff), 0.0, 1.0)
        self.last_time = winmm.timeGetTime()
        return self.reverse and 1 - retval or retval
      end,
      reset = function(self)
        self.progress = self.reverse and 1 or 0
        self.last_time = winmm.timeGetTime()
      end
    }
  end
  return self[name]
end

function math.clamp(v, min, max)
  return math.max(math.min(v, max), min)
end
 
  • Влюблен
Реакции: bulba$h и YarikVL