[CSGO] Кастомные звания в табе

Walderr

Участник
Сообщения
8
Реакции
38
1563845951_15-the-howling-alpha.png
После Panorama update, в CSGO появились новые возможности, например возможность изменить иконку оружия убийства.
Такая же возможность есть и для званий, но так как их стиль меняется только в зависимости от режима игры (18+2 обычный, 18+2 напарники и 15+2 опасная зона),
напрямую установить разные стили - нельзя.

Однако есть другой способ заставить эти (да и вообще любые, ограничений нет) звания отображаться.
CSGO отображает звания по их айди, для поддержки других званий, достаточно заставить игру думать что они относятся к тому же режиму, который запущен на сервере на данный момент.

Вытащив из игры нужные звания, нужно переименовать их из wingmanXX/dangerzoneXX в skillgroupXX и отправить клиенту, используя в событии OnMapStart():
AddFileToDownloadsTable("materials/panorama/images/icons/skillgroups/skillgroupXX.svg");


Далее, остается отправить массив с нужными значениями званий в энтити cs_player_manager для их отображения:
C++:
int rankOffset;
int playersRank[MAXPLAYERS+1];

public void OnMapStart()
{
    rankOffset = FindSendPropInfo("CCSPlayerResource", "m_iCompetitiveRanking");
    SDKHook(FindEntityByClassname(-1, "cs_player_manager"), SDKHook_ThinkPost, Hook_ThinkPost);
}

public void Hook_ThinkPost(int ent)
{
    SetEntDataArray(ent, rankOffset, playersRank, MAXPLAYERS+1);
}

public Action Event_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast)
{
    playersRank[client] = int yourValue;
}
Изменять звание можно не только во время появления игрока, но этот вариант один из самых удобных.

Значения 0-18 зарезервированы игрой и будут показывать обычные звания.
Для любых других нужно использовать значения, начиная с 19.

Стоит учитывать, что игрок будет загружать звания лишь раз, так что в случае если у него уже есть звание с таким номером, он будет будет видеть его, а не ваше.
Чтобы этого избежать, значения должны быть уникальными. Желательно использовать значения 1000+ (какой предел - не знаю).

Для стандартных же званий, созданы индексы:
C-подобный:
1-18 (Встроены в игру, обычный)
51-68 (Напарники)
71-85 (Опасная зона)

90 - Без звания (обычный)
92 - Без звания(напарники)
94 - Без звания(опасная зона)
91 - Звание истекло (обычный)
93 - Звание истекло(напарники)
95 - Звание истекло(опасная зона)

Они будут использоваться в качестве стандартных авторами большинства плагинов, рекомендую и вам использовать их, чтобы избежать путаницы.

Архив с готовыми стандартными званиями прикреплён.
На сервер их устанавливать не нужно, достаточно на FastDL (materials/panorama/images/icons/skillgroups/).

Примеры:
Screenshot_3.jpg


.
Screenshot_5.jpg
 

Вложения

  • skillgroups.rar
    488.6 КБ · Просмотры: 657
Последнее редактирование:

Felya

Array-based enum structs will be removed in 1.11
Сообщения
208
Реакции
83
Если вы используете Модуль плагина - [Levels Ranks] Module - FakeRank
то в конфиге вводите цифру звания
Пример:
C-подобный:
"LR_FakeRank"
{
    "FakeRank"
    {
        "1" // номер ранга
        {
            "id"    "68"        // номер таблички из таблицы счета, которая будет использоваться для данного ранга
        }
    }
}
и теперь на первом ранге будет звание глобал из напарников


Если кто-то шарит в Adobe illustrator'e вы так же можете сделать свои звания.
После того как нарисовали своё звание.
1) Сохранить как.
2) Имя файла: skillgroup<число>
2.1) Тип файла:SVG
3) Настройки должны быть такие же как на скриншоте.
43966

4) Ок.

И вот вы сделали сделали своё звание :ab:
 
Последнее редактирование:

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #4
Если вы используете Модуль плагина - [Levels Ranks] Module - FakeRank
то в конфиге вводите цифру звания
Пример:
C-подобный:
"LR_FakeRank"
{
    "FakeRank"
    {
        "1" // номер ранга
        {
            "id"    "68"        // номер таблички из таблицы счета, которая будет использоваться для данного ранга
        }
    }
}
и теперь на первом ранге будет звание глобал из напарников


Если кто-то шарит в Adobe illustrator'e вы так же можете сделать свои звания.
После того как нарисовали своё звание.
1) Сохранить как.
2) Имя файла: skillgroup<число>
2.1) Тип файла:SVG
3) Настройки должны быть такие же как на скриншоте.
Посмотреть вложение 43966
4) Ок.

И вот вы сделали сделали своё звание :ab:

В AI не работал. Нарисовать в фотошопе и потом конвертировать в SVG не катит?
 

Dimmer

Юзерок
Сообщения
192
Реакции
25
После Panorama update, в CSGO появились новые возможности, например возможность изменить иконку оружия убийства.
Такая же возможность есть и для званий, но так как их стиль меняется только в зависимости от режима игры (18+2 обычный, 18+2 напарники и 15+2 опасная зона),
напрямую установить разные стили - нельзя.

Однако есть другой способ заставить эти (да и вообще любые, ограничений нет) звания отображаться.
CSGO отображает звания по их айди, для поддержки других званий, достаточно заставить игру думать что они относятся к тому же режиму, который запущен на сервере на данный момент.

Вытащив из игры нужные звания, нужно переименовать их из wingmanXX/dangerzoneXX в skillgroupXX и отправить клиенту, используя в событии OnMapStart():
AddFileToDownloadsTable("materials/panorama/images/icons/skillgroups/skillgroupXX.svg");


Далее, остается отправить массив с нужными значениями званий в энтити cs_player_manager для их отображения:
C-подобный:
int rankOffset;
int playersRank[MAXPLAYERS+1];

public void OnMapStart()
{
    rankOffset = FindSendPropInfo("CCSPlayerResource", "m_iCompetitiveRanking");
    SDKHook(FindEntityByClassname(-1, "cs_player_manager"), SDKHook_ThinkPost, Hook_ThinkPost);
}

public void Hook_ThinkPost(int ent)
{
    SetEntDataArray((ent, rankOffset, playersRank, MAXPLAYERS+1);
}

public Action Event_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast)
{
    playersRank[client] = int yourValue;
}
Изменять звание можно не только во время появления игрока, но этот вариант один из самых удобных.

Значения 0-18 зарезервированы игрой и будут показывать обычные звания.
Для любых других нужно использовать значения, начиная с 19.

Стоит учитывать, что игрок будет загружать звания лишь раз, так что в случае если у него уже будет звание с таким номером, он будет будет видеть его, а не ваше.
Чтобы этого избежать, значения должны быть уникальными. Желательно использовать значения 1000+ (какой предел - не знаю).

Для стандартных же званий, созданы индексы:
C-подобный:
1-18 (Встроены в игру, обычный)
51-68 (Напарники)
71-85 (Опасная зона)

90 - Без звания (обычный)
92 - Без звания(напарники)
94 - Без звания(опасная зона)
91 - Звание истекло (обычный)
93 - Звание истекло(напарники)
95 - Звание истекло(опасная зона)

Они будут использоваться в качестве стандартных авторами большинства плагинов, рекомендую и вам использовать их, чтобы избежать путаницы.

Архив с готовыми стандартными званиями прикреплён.
На сервер их устанавливать не нужно, достаточно на FastDL (materials/panorama/images/icons/skillgroups/).

Примеры:
Посмотреть вложение 43960

.
Скинь админкскую табличку пж
 

Yooki

Добрая душа
Сообщения
473
Реакции
169
Сделал все правильно, все сохранил, при открытии в Illustrator все показывает, но в игре звание выглядит прозрачным. Кто знает, что делать?
44180
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #8

xek

Рыба клоун
Сообщения
1,652
Реакции
636
Пока никакой базы нету, дабы не повторялись id, предлагаю брать 6-ти значные id и более. А то уже были первые случаи повтора
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #11
Названия файлов skillgroup20, skillgroup21, skillgroup26.
Т.е форма звания правильно показывает, но цвета нет
Названия файлов skillgroup20, skillgroup21, skillgroup26.
Т.е форма звания правильно показывает, но цвета нет

писали же, чтобы указывали свои IDишники.

читай выше сообщение @spazm
 

Tavian

Участник
Сообщения
1,184
Реакции
119
После Panorama update, в CSGO появились новые возможности, например возможность изменить иконку оружия убийства.
Такая же возможность есть и для званий, но так как их стиль меняется только в зависимости от режима игры (18+2 обычный, 18+2 напарники и 15+2 опасная зона),
напрямую установить разные стили - нельзя.

Однако есть другой способ заставить эти (да и вообще любые, ограничений нет) звания отображаться.
CSGO отображает звания по их айди, для поддержки других званий, достаточно заставить игру думать что они относятся к тому же режиму, который запущен на сервере на данный момент.

Вытащив из игры нужные звания, нужно переименовать их из wingmanXX/dangerzoneXX в skillgroupXX и отправить клиенту, используя в событии OnMapStart():
AddFileToDownloadsTable("materials/panorama/images/icons/skillgroups/skillgroupXX.svg");


Далее, остается отправить массив с нужными значениями званий в энтити cs_player_manager для их отображения:
C-подобный:
int rankOffset;
int playersRank[MAXPLAYERS+1];

public void OnMapStart()
{
    rankOffset = FindSendPropInfo("CCSPlayerResource", "m_iCompetitiveRanking");
    SDKHook(FindEntityByClassname(-1, "cs_player_manager"), SDKHook_ThinkPost, Hook_ThinkPost);
}

public void Hook_ThinkPost(int ent)
{
    SetEntDataArray((ent, rankOffset, playersRank, MAXPLAYERS+1);
}

public Action Event_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast)
{
    playersRank[client] = int yourValue;
}
Изменять звание можно не только во время появления игрока, но этот вариант один из самых удобных.

Значения 0-18 зарезервированы игрой и будут показывать обычные звания.
Для любых других нужно использовать значения, начиная с 19.

Стоит учитывать, что игрок будет загружать звания лишь раз, так что в случае если у него уже есть звание с таким номером, он будет будет видеть его, а не ваше.
Чтобы этого избежать, значения должны быть уникальными. Желательно использовать значения 1000+ (какой предел - не знаю).

Для стандартных же званий, созданы индексы:
C-подобный:
1-18 (Встроены в игру, обычный)
51-68 (Напарники)
71-85 (Опасная зона)

90 - Без звания (обычный)
92 - Без звания(напарники)
94 - Без звания(опасная зона)
91 - Звание истекло (обычный)
93 - Звание истекло(напарники)
95 - Звание истекло(опасная зона)

Они будут использоваться в качестве стандартных авторами большинства плагинов, рекомендую и вам использовать их, чтобы избежать путаницы.

Архив с готовыми стандартными званиями прикреплён.
На сервер их устанавливать не нужно, достаточно на FastDL (materials/panorama/images/icons/skillgroups/).

Примеры:
Посмотреть вложение 43960

.Посмотреть вложение 43962
А где взять вот такой с надписью админ?
 

DeeperSpy

Гений, миллиардер, плейбой, филантроп, майнкрафтер
Сообщения
588
Реакции
362
Две скобки вначале
C-подобный:
public void Hook_ThinkPost(int ent)
{
    SetEntDataArray((ent, rankOffset, playersRank, MAXPLAYERS+1);
}
 

alesh15

Участник
Сообщения
45
Реакции
11
Спасибо за тему.
 
Последнее редактирование:

PEP

Участник
Сообщения
26
Реакции
1
Не очень понял что нужно с этим сделать
int rankOffset;
int playersRank[MAXPLAYERS+1];

public void OnMapStart()
{
rankOffset = FindSendPropInfo("CCSPlayerResource", "m_iCompetitiveRanking");
SDKHook(FindEntityByClassname(-1, "cs_player_manager"), SDKHook_ThinkPost, Hook_ThinkPost);
}

public void Hook_ThinkPost(int ent)
{
SetEntDataArray(ent, rankOffset, playersRank, MAXPLAYERS+1);
}

public Action Event_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast)
{
playersRank[client] = int yourValue;
}
 

anwee

Участник
Сообщения
3
Реакции
0
А какой размер своих рангов должен быть ?
 
Сверху Снизу