Иконка ресурса

SDKHooks Game Description Override 1.0

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
  • Автор ресурса
  • #1
Окончательно решил все проблемы компиляции и наконец-то сделал нормальную версию...

Q: Что это?
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, но их работа не гарантирована, поскольку я не знаю, есть ли вообще в этих играх возможность смены имени игры. Просьба подтвердить или опровергнуть работоспособность, если будет возможность и желание.

PS: Спасибо за давнюю изначальную идею @bardak :)
------------
Пост с последней версией
Благодарим пользователя @rom4s .
 
Последнее редактирование модератором:

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

тогда уж лучше использовать MemPatch (вернее, можно использовать)
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
  • Автор ресурса
  • #3
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

тогда уж лучше использовать MemPatch (вернее, можно использовать)

Можно, но я все же придерживаюсь минимизации.. SDKHooks используется на очень большом количестве серверов, и я не вижу смысла опять же грузить отдельное расширение для конкретного действия... Плюс как-то читал про возможные краши от подобных расширений (Или это было в MemHack...)...

Хотя, сделать конкретно расширение для возможности изменения имени игры, хе-хе...
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Можно, но я все же придерживаюсь минимизации.. SDKHooks используется на очень большом количестве серверов, и я не вижу смысла опять же грузить отдельное расширение для конкретного действия... Плюс как-то читал про возможные краши от подобных расширений (Или это было в MemHack...)...

Хотя, сделать конкретно расширение для возможности изменения имени игры, хе-хе...

ну это расширение имеет широкий спектр, да и не сказать, что он много грузит. Один раз пропатчит память и все, можно отключать или оставить. В SDKHooks forward OnGetGameDescription вызывается вроде как каждый фрейм, получается 66 раз в секунду
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
  • Автор ресурса
  • #5
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

ну это расширение имеет широкий спектр, да и не сказать, что он много грузит. Один раз пропатчит память и все, можно отключать или оставить. В SDKHooks forward OnGetGameDescription вызывается вроде как каждый фрейм, получается 66 раз в секунду

Если бы он вызывался каждый фрейм, то я бы не писал, чо имя игры возможно изменить только при запуске.
PHP:
#ifdef GAMEDESC_CAN_CHANGE
inline void HookGetGameDescription()
{
	assert(g_hookOnGetGameDescription == 0);
	g_hookOnGetGameDescription = SH_ADD_HOOK(IServerGameDLL, GetGameDescription, gamedll, SH_MEMBER(&g_Interface, &SDKHooks::Hook_GetGameDescription), false);
}
#endif
Он вызывается, судя по ковырянию в hl2sdk, только при старте сервера, когда получается информация о игре, и все... Я понимаю так...
 
Сообщения
2,587
Реакции
1,343
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Ну а если сервер на хосте - как вписать это в строку запуска?
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

тогда менять исходник, скомпилировать и просто вставить на сервер и запустить
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
  • Автор ресурса
  • #11
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Ну а если сервер на хосте - как вписать это в строку запуска?

PHP:
#include <sdkhooks>
public Action:OnGetGameDescription(String:gameDesc[64])
{
    strcopy(gameDesc, sizeof(gameDesc), "BLABLABLA");
    return Plugin_Changed;
}
Это весь плагин, инклудить см не нужно. Изменяешь BLABLABLA, компилируешь - и не наод никакой строки запуска. Помни только, что замена происходит при старте сервера, находу плагин загрузить/изменить не удастся, для изменения имени надо будет ребутать сервер. Смена карты тоже не сменит имя игры...
Надо добавить в первый пост мол для тех кто не может добавить в строку запуска можно использовать другой вариант...
 

sintez

★CS.ORG.RU★
Сообщения
272
Реакции
45
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Проверенно на новой CS Source SteamPipe полёт нормальный sm 1.6.0
 

pihmih

Участник
Сообщения
512
Реакции
23
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Чем отличается sdkhooks из сорсмода 1.5.0 от библиотек из архива?
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,867
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

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
когда же читать научимся:)
 

Romeo98rus

Участник
Сообщения
193
Реакции
5
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

PHP:
#include <sdkhooks>
public Action:OnGetGameDescription(String:gameDesc[64])
{
    strcopy(gameDesc, sizeof(gameDesc), "BLABLABLA");
    return Plugin_Changed;
}
Это весь плагин, инклудить см не нужно. Изменяешь BLABLABLA, компилируешь - и не наод никакой строки запуска. Помни только, что замена происходит при старте сервера, находу плагин загрузить/изменить не удастся, для изменения имени надо будет ребутать сервер. Смена карты тоже не сменит имя игры...
Надо добавить в первый пост мол для тех кто не может добавить в строку запуска можно использовать другой вариант...

Подскажите где компелировать? http://www.sourcemod.net/compiler.php тут ошибку выдает!
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
  • Автор ресурса
  • #16

Romeo98rus

Участник
Сообщения
193
Реакции
5
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

а если у меня Ос винда . а сервер на хосте линукс?
Работать будет?
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
  • Автор ресурса
  • #18
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Romeo98rus, плагины совместимы, сколько раз говорить уже.. Нужен только правильный файл расширения, плагины одинаковы!
 

Petrovich

Участник
Сообщения
204
Реакции
49
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Не работает.

#include <sourcemod>
#include <sdkhooks>
new Handle:g_Desc;
public Plugin:myinfo =
{
name = "GameDesc override (SDKHooks)",
author = "KorDen",
description = "Overriding game description using modified SDKHooks",
version = "1.0",
url = "http://css32.ru/"
};
public OnPluginStart()
{
g_Desc=CreateConVar("sm_gamedesc","","Set game descption when server loading (64 symbols max)");
}
public Action:OnGetGameDescription(String:gameDesc[64])
{
decl String:desc[64];
GetConVarString(g_Desc,desc,sizeof(desc));
if (StrEqual(desc,""))
{
LogError("Game description not set, please set it in you runscript using +sm_gamedesc");
}
else
{
PrintToServer("[SM] Game description set to %s",desc);
strcopy(gameDesc, sizeof(gameDesc), "BLABLABLA");
}
return Plugin_Changed;
}

В исходнике все несколько отличается, не как в первом посте. Может BLABLABLA уже не туда писать надо?
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,867
Re: [CSS/OB/CS:GO/L4D2] SDKHooks Game Description Override

Petrovich, прочти оооооочеень внимательно первый пост
 
Сверху Снизу