-
Автор темы
- #1
Привет!
Так как в подавляющем большинстве горепаст легендвара (и не только него) по умолчанию есть не крутой "лестничный" клантег такого вида:
я решил поделиться с вами более правильной реализацией динамического клантега, хоть и с немного другой "анимацией".
Вот и сам код с небольшими комментариями (вполне возможно, что неверными, кекв):
Если я не ошибаюсь, анимацию можно ускорять/замедлять, уменьшая/увеличивая значение lastTime.
std::rotate сдвигает элементы влево в заданном диапазоне таким образом, что элемент, который является серединой, станет первым.
Подробнее об std::rotate -
Насколько сильно я тут бред написал не знаю, буду рад любой аргументированной критике.
Если кто-то даст гифку как это выглядит, буду благодарен.
All credits to Aristois :)
Так как в подавляющем большинстве горепаст легендвара (и не только него) по умолчанию есть не крутой "лестничный" клантег такого вида:
я решил поделиться с вами более правильной реализацией динамического клантега, хоть и с немного другой "анимацией".
Вот и сам код с небольшими комментариями (вполне возможно, что неверными, кекв):
C++:
void Misc::ClantagChanger() noexcept
{
if (!g_Options.Clantag) {
Utils::SetClantag(""); // if clantag changer disabled - set zero tag. bad way, but who cares
return;
}
static std::string tag = "Sciit.cc "; // definition of var with your tag
static float lastTime{ };
float curtime = g_GlobalVars->curtime; // gets curtime
// https://github.com/ValveSoftware/source-sdk-2013/blob/master/mp/src/public/globalvars_base.h#L41-L56
// main part
if (curtime > lastTime) // wait while curtime will bigger then old curtime + 0.9f
{
{
std::rotate( std::begin(tag), std::next(std::begin(tag)), std::end(tag) ); // shift our tag
Utils::SetClantag(tag.c_str()); // set our shifted tag
lastTime = curtime + 0.9f; // updating lastTime, you can set your additional value
if (fabs(lastTime - curtime) > 1.f) // if module of subtraction of lastTime from curtime bigger than 1.f
lastTime = curtime; // then lastTime = curtime (idk when this part is used xd)
}
}
}
std::rotate сдвигает элементы влево в заданном диапазоне таким образом, что элемент, который является серединой, станет первым.
Подробнее об std::rotate -
Пожалуйста, авторизуйтесь для просмотра ссылки.
Насколько сильно я тут бред написал не знаю, буду рад любой аргументированной критике.
Если кто-то даст гифку как это выглядит, буду благодарен.
All credits to Aristois :)
Последнее редактирование: