Как изменить название игры в поиске cs go

komashchenko

Идиот
Сообщения
916
Реакции
2,570
upload_2019-6-22_16-12-46.png


1) Просто заменяем в памяти стандартную строку "Counter-Strike: Global Offensive" на свою
Создаем файл с расширением .sp и в него вставляем:
C-подобный:
char sGameName[] = "✌ ХУЙНЯ ✌"; //Не больше 36 байтов вместе с 0 для ксго

#include <sdktools>

public void OnPluginStart()
{
    Handle hGameConf = LoadGameConfigFile("gamedesc.games");
    if(!hGameConf) SetFailState("Can't find gamedesc.games.txt gamedata.");
  
    Address iAddr = GameConfGetAddress(hGameConf, "gamedesc");
    delete hGameConf;
    if(iAddr == Address_Null) SetFailState("Can't find gamedesc address.");
  
    int len = strlen(sGameName);
    for(int i = 0; i <= len; i++)
    {
        StoreToAddress(iAddr+view_as<Address>(i), sGameName[i], NumberType_Int8);
    }
}
Затем компилируем его.

Создаем файл addons/sourcemod/gamedata/gamedesc.games.txt с таким содержимым:
C-подобный:
"Games"
{
    "csgo"
    {
        "Addresses"
        {
            "gamedesc"
            {
                "signature" "gamedesc"
            }
        }
      
        "Signatures"
        {
            "gamedesc"
            {
                "library"    "server"
                "windows"    "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
                "linux"        "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
            }
        }
    }
}

2) Через SteamWorks, ставить имя нужно каждый фрейм иначе оно сбрасывается
C-подобный:
#include <SteamWorks>

public void OnGameFrame()
{
    SteamWorks_SetGameDescription("✌ ВСЯКАЯ ХУЙНЯ ✌");
}
 
Последнее редактирование модератором:

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #22
Посмотреть вложение 42872

1) Просто заменяем в памяти стандартную строку "Counter-Strike: Global Offensive" на свою
C-подобный:
char sGameName[] = "✌ ХУЙНЯ ✌"; //Не больше 36 байтов вместе с 0 для ксго

#include <sdktools>

public void OnPluginStart()
{
    Handle hGameConf = LoadGameConfigFile("gamedesc.games");
    if(!hGameConf) SetFailState("Can't find gamedesc.games.txt gamedata.");
  
    Address iAddr = GameConfGetAddress(hGameConf, "gamedesc");
    delete hGameConf;
    if(iAddr == Address_Null) SetFailState("Can't find gamedesc address.");
  
    int len = strlen(sGameName);
    for(int i = 0; i <= len; i++)
    {
        StoreToAddress(iAddr+view_as<Address>(i), sGameName[i], NumberType_Int8);
    }
}
C-подобный:
"Games"
{
    "csgo"
    {
        "Addresses"
        {
            "gamedesc"
            {
                "signature" "gamedesc"
            }
        }
      
        "Signatures"
        {
            "gamedesc"
            {
                "library"    "server"
                "windows"    "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
                "linux"        "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
            }
        }
    }
}

2) Через SteamWorks, ставить имя нужно каждий фрейм иначе оно сбрасывается
C-подобный:
#include <SteamWorks>

public void OnGameFrame()
{
    SteamWorks_SetGameDescription("✌ ВСЯКАЯ ХУЙНЯ ✌");
}

Только для чего это вообще?) ни на что не влияет
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #23
Только для чего это вообще?) ни на что не влияет
Для поднятия ЧСВ сервероделу.
А если по теме - таким образом очень удобно в браузере серверов выделять режим сервера (джайл, паблик) не вынося его в хостнейм.
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #24
Для поднятия ЧСВ сервероделу.
А если по теме - таким образом очень удобно в браузере серверов выделять режим сервера (джайл, паблик) не вынося его в хостнейм.

На релевантность в поиске самой игры интересно как-то влияет или нет
 

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
Посмотреть вложение 42872

1) Просто заменяем в памяти стандартную строку "Counter-Strike: Global Offensive" на свою
C-подобный:
char sGameName[] = "✌ ХУЙНЯ ✌"; //Не больше 36 байтов вместе с 0 для ксго

#include <sdktools>

public void OnPluginStart()
{
    Handle hGameConf = LoadGameConfigFile("gamedesc.games");
    if(!hGameConf) SetFailState("Can't find gamedesc.games.txt gamedata.");
  
    Address iAddr = GameConfGetAddress(hGameConf, "gamedesc");
    delete hGameConf;
    if(iAddr == Address_Null) SetFailState("Can't find gamedesc address.");
  
    int len = strlen(sGameName);
    for(int i = 0; i <= len; i++)
    {
        StoreToAddress(iAddr+view_as<Address>(i), sGameName[i], NumberType_Int8);
    }
}
C-подобный:
"Games"
{
    "csgo"
    {
        "Addresses"
        {
            "gamedesc"
            {
                "signature" "gamedesc"
            }
        }
      
        "Signatures"
        {
            "gamedesc"
            {
                "library"    "server"
                "windows"    "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
                "linux"        "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
            }
        }
    }
}

2) Через SteamWorks, ставить имя нужно каждий фрейм иначе оно сбрасывается
C-подобный:
#include <SteamWorks>

public void OnGameFrame()
{
    SteamWorks_SetGameDescription("✌ ВСЯКАЯ ХУЙНЯ ✌");
}

PHP:
"Games"
{
    "csgo"
    {
        "Addresses"
        {
            "gamedesc"
            {
                "signature" "gamedesc"
            }
        }
      
        "Signatures"
        {
            "gamedesc"
            {
                "library"    "server"
                "windows"    "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
                "linux"        "\x43\x6F\x75\x6E\x74\x65\x72\x2D\x53\x74\x72\x69\x6B\x65\x3A\x20"
            }
        }
    }
}

а это куда?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #28
На релевантность в поиске самой игры интересно как-то влияет или нет
Нет. Абсолютно не влияет.

gamedesc.games.txt залил вставил, перезагружаю сервер описание не сменилось ошибок 0
В исходнике выше отредактировали текст, соблюдая условие про макс длину в 36 символа?
Потому что происходит замена текста в участке оперативной памяти, откуда Steam-библиотека и берёт имя игры для описания в браузере серверов. Расширить этот буфер неявно - нельзя.
А оригинальная строка (Counter-Strike: Global Offensive) имеет длину как раз в 36 символов.

Надо понимать, что кириллические символы занимают по 2 виртуальных символа, а смайлики - по 4.
Самый простой способ посчитать, сколько в итоге символов записано - это скопировать строку, создать новый "файл" в Notepad++, проверить кодировку (должна быть UTF-8 без BOM), и вставить текст в поле. Кол-во символов будет указано в поле length на панели состояния:
upload_2019-6-22_20-46-44.png
 

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
Нет. Абсолютно не влияет.


В исходнике выше отредактировали текст, соблюдая условие про макс длину в 36 символа?
Потому что происходит замена текста в участке оперативной памяти, откуда Steam-библиотека и берёт имя игры для описания в браузере серверов. Расширить этот буфер неявно - нельзя.
А оригинальная строка (Counter-Strike: Global Offensive) имеет длину как раз в 36 символов.

Надо понимать, что кириллические символы занимают по 2 виртуальных символа, а смайлики - по 4.
Самый простой способ посчитать, сколько в итоге символов записано - это скопировать строку, создать новый "файл" в Notepad++, проверить кодировку (должна быть UTF-8 без BOM), и вставить текст в поле. Кол-во символов будет указано в поле length на панели состояния:
Посмотреть вложение 42880
поменял на test и скомпилировал и все залил рестартнул ничего не поменялось.
 

KRIK73 √

Участник
Сообщения
35
Реакции
5
2) Через SteamWorks, ставить имя нужно каждый фрейм иначе оно сбрасывается
Это как ?
 
Сверху Снизу