Начинающий
- Статус
- Оффлайн
- Регистрация
- 17 Фев 2023
- Сообщения
- 21
- Реакции
- 1
Кратко и понятно: Кастом клан-тег для скита.
Сделано ИИ за 5 промптов.
Можете изменить строку custom_clantag что-бы вписать свой собственный клан-тег если вам не хватает дефолтного.
Зачем? - Сам хз, вприцнипе юзабельно если надо будет обновлю с конфигами.
Сделано ИИ за 5 промптов.
Можете изменить строку custom_clantag что-бы вписать свой собственный клан-тег если вам не хватает дефолтного.
Зачем? - Сам хз, вприцнипе юзабельно если надо будет обновлю с конфигами.
Это дерьмище почему то в лоаде конфига вьебашит вам пустое поле в вводе текста, круто да?
Source:
local ffi = require("ffi")
ffi.cdef[[
typedef void(__fastcall* clantag_t)(const char*, const char*);
]]
local send_clantag_ptr = client.find_signature("engine.dll", "\x53\x56\x57\x8B\xDA\x8B\xF9\xFF\x15")
local set_clantag = ffi.cast("clantag_t", send_clantag_ptr)
local separator = ui.new_label("MISC", "Miscellaneous", "---Clantag---")
local ref_clantag_group = ui.new_checkbox("MISC", "Miscellaneous", "Enable Clantag Changer")
local ref_clantag = ui.new_textbox("MISC", "Miscellaneous", "Enter Clantag")
local ref_animation = ui.new_combobox("MISC", "Miscellaneous", "Animation", { "Static", "Typing", "Blink", "Typing v2", "Custom" })
local ref_interval = ui.new_slider("MISC", "Miscellaneous", "Tag Change Interval", 100, 2000, 500, true, "ms")
local ref_static_on_end = ui.new_checkbox("MISC", "Miscellaneous", "Set static clantag on round end")
local custom_clantag = {"penis", "penis <3"}
local function typing_animation(text)
local frames = {}
for i = 1, #text do
table.insert(frames, text:sub(1, i))
end
return frames
end
local function typing_v2_animation(text)
local frames = {}
for i = 1, #text do
table.insert(frames, text:sub(1, #text - i + 1))
end
table.insert(frames, "")
for i = 1, #text do
table.insert(frames, text:sub(1, i))
end
return frames
end
local function get_animation_frames(clantag, anim_type)
if anim_type == "Static" then
return { clantag }
elseif anim_type == "Typing" then
return typing_animation(clantag)
elseif anim_type == "Blink" then
return { clantag, "" }
elseif anim_type == "Typing v2" then
return typing_v2_animation(clantag)
elseif anim_type == "Custom" then
return custom_clantag
end
end
local tag_list = { "" }
local index = 1
local last_update_time = 0
client.set_event_callback("paint", function()
if not ui.get(ref_clantag_group) then return end
local clantag = ui.get(ref_clantag)
local anim_type = ui.get(ref_animation)
local interval = ui.get(ref_interval) / 1000
if clantag == nil or clantag == "" then return end
if clantag:match("[^%w%s%p]") then
return
end
if anim_type == "Custom" then
tag_list = custom_clantag
else
tag_list = get_animation_frames(clantag, anim_type)
end
if globals.realtime() - last_update_time >= interval then
set_clantag(tag_list[index] or "", "")
index = index % #tag_list + 1
last_update_time = globals.realtime()
end
end)