A: Это аналог известного многим плагина SteamTools Game Description Override , использующий измененные библиотеки SDKHooks с разблокированной возможностью изменения имени игры. Где и как использовать - решать вам.
Q: Чем SteamTools не угодил для Steam-серверов? (другой вариант вопроса "Это для пираток?")
A: Я сейчас наверно многих шокирую, но расширение SteamTools изначально разрабатывалось для взаимодействия со SteamCommunity, а не для изменения имени игры, которое было добавлено в него дополнительно. И при запуске это расширение устанавливает соединения с фронтэндом стима, и выполняет еще кучу ненужных действий. Если вы используете SteamTools только для того, чтобы изменять имя игры, стоит задуматься о переходе на этот вариант. Люди, которые держат высоконагруженные серверы и/или задумываются над оптимизацией ресурсов поймут сразу думаю. Основная идея все же у меня была сделать как можно меньше ненужных расширений и плагинов на сервере, а не пиратки...
Q: Как работает? Что делать, чтобы поставить? Нюансы?
A:
1) Необходим как минимум SourceMod 1.5.0-hg3821. С ранними версиями работа возможна, но не гарантируется, ниже 1.5.0-hg3795 не работает точно.
2) Заменяем необходимые файлы в папке extensions, копируем плагин
3) Указывать значение переменной sm_gamedesc необходимо в строке запуска сервера (+sm_gamedesc "blablabla"). Увы, но это ограничение SDKHooks. НАХОДУ ИЗМЕНИТЬ НЕ ПОЛУЧИТСЯ!
4) Максимальная длина - 63 ASCII символа, помните что каждый русский символ равен двум в этом случае, то есть полностью русское название может быть максимум из 31 символа.
Q: Не работает!
A: Проверьте, нет ли в errorlog'ах SM строчки "[gamedesc.smx] Game description not set, please set it in you runscript using +sm_gamedesc" - если есть, видимо при запуске не указано значение. Если же такой строчки нет, пишите свой sm plugins list и sm exts list
Q: У меня нет доступа к строке запуска! (Сервер на хостинге)
A: нужно использовать простую версию плагина (библиотеки из архива все еще нужны)
PHP:
#include <sdkhooks>
public Action:OnGetGameDescription(String:gameDesc[64])
{
strcopy(gameDesc, sizeof(gameDesc), "BLABLABLA");
return Plugin_Changed;
}
Вместо BLABLABLA подставляете свое имя игры и компилируете. После рестарта сервера имя игры сменится.
Q: Почему расширения только CSS/OB/CS:GO/L4D2? А как же остальные? Что изменял в расширении?
A: копипаст из исходников SDKHooks:
PHP:
#if SOURCE_ENGINE != SE_ORANGEBOXVALVE && SOURCE_ENGINE != SE_CSS && SOURCE_ENGINE != SE_LEFT4DEAD2 && SOURCE_ENGINE != SE_CSGO
#define GAMEDESC_CAN_CHANGE
#endif
Думаю ответ дан. Для остальных движков и так работает, а удалив это условиеи оставив один дефайн, получаем OnGetGameDescription на указанных движках.
ПРОТЕСТИРОВАНО НА: CSS Linux, CSS Windows. Предположительно должен работать и в HL2DM/TF2/DoD:S. Фактически, есть версии под CS:GO и L4D2, но их работа не гарантирована, поскольку я не знаю, есть ли вообще в этих играх возможность смены имени игры. Просьба подтвердить или опровергнуть работоспособность, если будет возможность и желание.
Q: Чем SteamTools не угодил для Steam-серверов? (другой вариант вопроса "Это для пираток?")
A: Я сейчас наверно многих шокирую, но расширение SteamTools изначально разрабатывалось для взаимодействия со SteamCommunity, а не для изменения имени игры, которое было добавлено в него дополнительно. И при запуске это расширение устанавливает соединения с фронтэндом стима, и выполняет еще кучу ненужных действий. Если вы используете SteamTools только для того, чтобы изменять имя игры, стоит задуматься о переходе на этот вариант. Люди, которые держат высоконагруженные серверы и/или задумываются над оптимизацией ресурсов поймут сразу думаю. Основная идея все же у меня была сделать как можно меньше ненужных расширений и плагинов на сервере, а не пиратки...
Q: Как работает? Что делать, чтобы поставить? Нюансы?
A:
1) Необходим как минимум SourceMod 1.5.0-hg3821. С ранними версиями работа возможна, но не гарантируется, ниже 1.5.0-hg3795 не работает точно.
2) Заменяем необходимые файлы в папке extensions, копируем плагин
3) Указывать значение переменной sm_gamedesc необходимо в строке запуска сервера (+sm_gamedesc "blablabla"). Увы, но это ограничение SDKHooks. НАХОДУ ИЗМЕНИТЬ НЕ ПОЛУЧИТСЯ!
4) Максимальная длина - 63 ASCII символа, помните что каждый русский символ равен двум в этом случае, то есть полностью русское название может быть максимум из 31 символа.
Q: Не работает!
A: Проверьте, нет ли в errorlog'ах SM строчки "[gamedesc.smx] Game description not set, please set it in you runscript using +sm_gamedesc" - если есть, видимо при запуске не указано значение. Если же такой строчки нет, пишите свой sm plugins list и sm exts list
Q: У меня нет доступа к строке запуска! (Сервер на хостинге)
A: нужно использовать простую версию плагина (библиотеки из архива все еще нужны)
PHP:
#include <sdkhooks>
public Action:OnGetGameDescription(String:gameDesc[64])
{
strcopy(gameDesc, sizeof(gameDesc), "BLABLABLA");
return Plugin_Changed;
}
Вместо BLABLABLA подставляете свое имя игры и компилируете. После рестарта сервера имя игры сменится.
Q: Почему расширения только CSS/OB/CS:GO/L4D2? А как же остальные? Что изменял в расширении?
A: копипаст из исходников SDKHooks:
PHP:
#if SOURCE_ENGINE != SE_ORANGEBOXVALVE && SOURCE_ENGINE != SE_CSS && SOURCE_ENGINE != SE_LEFT4DEAD2 && SOURCE_ENGINE != SE_CSGO
#define GAMEDESC_CAN_CHANGE
#endif
Думаю ответ дан. Для остальных движков и так работает, а удалив это условиеи оставив один дефайн, получаем OnGetGameDescription на указанных движках.
ПРОТЕСТИРОВАНО НА: CSS Linux, CSS Windows. Предположительно должен работать и в HL2DM/TF2/DoD:S. Фактически, есть версии под CS:GO и L4D2, но их работа не гарантирована, поскольку я не знаю, есть ли вообще в этих играх возможность смены имени игры. Просьба подтвердить или опровергнуть работоспособность, если будет возможность и желание.