[CS: Source] Демо менеджер (RUS only)

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
Re: Демо менеджер [2] (RUS only)

ЗАМЕЧЕНО ЧТО ЕСЛИ В НАЗВАНИИ ЕСТЬ ПРОБЕЛЫ ТО ОНА МОЖЕТ НЕ ВОСПРОИЗВОДИТСЯ ТАК ЧТО ЛУЧШЕ ЗАМЕНЯТЬ ИХ НА _

нет проблем с запуском, просто название демки надо будет писать в ковычках!
Например: playdemo "test 2.dem"

new maxClients = GetMaxClients();

for (new i = 1; i <= maxClients; i++)

зачем получать макс. игроков, если SM уже сделал это - MaxClients

лучше убери new maxClients = GetMaxClients();

и поставь вместо for (new i = 1; i <= maxClients; i++)

на for (new i = 1; i <= MaxClients; i++)


Распознать или отфильтровать бота можно так
if (IsFakeClient(idx))

вместо
if(!StrContains(UserSteamId, "BOT", false))


можно сделать не только в начале записи демки показ статуса, но при подключении и отключении игроков.

PHP:
public OnClientPutInServer(client)
{
	if (!IsFakeClient(client))
	{
		for (new i = 1; i <= MaxClients; i++) 
		{
			ClientCommand(i,"echo \"ИГРОКИ/STEAMID:\"");
			ClientCommand(i,"echo \" \"");
			for (new idx = 1; idx <= MaxClients; idx++)
			{
				if (!IsClientInGame(idx))
				{
					continue;
				}
				new String:UserAllInfo[128];
				decl String:UserName[65];
				decl String:UserSteamId[32];
				GetClientName(idx, UserName, sizeof(UserName));
				GetClientAuthString(idx, UserSteamId, sizeof(UserSteamId));

				if(!IsFakeClient(i))
				{
					continue;
				}

				Format(UserAllInfo, sizeof(UserAllInfo),"%s --> %s", UserName, UserSteamId);
				ClientCommand(i,"echo \"%s\"", UserAllInfo);
			}
			ClientCommand(i,"echo \" \"");
			ClientCommand(i,"echo \"**************************************************\"");
		}
	}
}

public OnClientDisconnect(client)
{
	if (!IsFakeClient(client))
	{
		for (new i = 1; i <= MaxClients; i++) 
		{
			ClientCommand(i,"echo \"ИГРОКИ/STEAMID:\"");
			ClientCommand(i,"echo \" \"");
			for (new idx = 1; idx <= MaxClients; idx++)
			{
				if (!IsClientInGame(idx))
				{
					continue;
				}
				new String:UserAllInfo[128];
				decl String:UserName[65];
				decl String:UserSteamId[32];
				GetClientName(idx, UserName, sizeof(UserName));
				GetClientAuthString(idx, UserSteamId, sizeof(UserSteamId));

				if(!IsFakeClient(i))
				{
					continue;
				}

				Format(UserAllInfo, sizeof(UserAllInfo),"%s --> %s", UserName, UserSteamId);
				ClientCommand(i,"echo \"%s\"", UserAllInfo);
			}
			ClientCommand(i,"echo \" \"");
			ClientCommand(i,"echo \"**************************************************\"");
		}
	}
}
 
Последнее редактирование:

kv.acid

Участник
Сообщения
2,025
Реакции
755
_creotiv_, Еще обратил внимание на баг, если создаешь отличную от той, что по умолчанию (DEMO_MANAGER_DEMOS) директорию, то она по любому создается при рестарте. Мб подправите!
можно сделать не только в начале записи демки показ статуса, но при подключении и отключении игроков.
Мб уже соберете в кучу исходник :)
 

_creotiv_

Участник
Сообщения
96
Реакции
114
у меня в папку не пускает, в чём дело ? и почему доступно только root админам... я вот хочу что б коадминм тож было доступно
блин даже незнаю :) пиши по подробнее я админ один и сервере,и он у меня не на хостинге а на своём компе поэтому проверить несмогу.


не пробывал



нет проблем с запуском, просто название демки надо будет писать в ковычках!
Например: playdemo "test 2.dem"
я использую demoui для удобства :)


зачем получать макс. игроков, если SM уже сделал это - MaxClients
лучше убери new maxClients = GetMaxClients();
и поставь вместо for (new i = 1; i <= maxClients; i++)
на for (new i = 1; i <= MaxClients; i++)
:D у меня проблемы с этим я вечно путаю этих клиентов, юзер ид, и индексы, можно попробывать


можно сделать не только в начале записи демки показ статуса, но при подключении и отключении игроков.
можно :) думал уже, а если сервер на который заходят и выходят вечно много людей не слишком будет? можно просто по таймеру настройку добавить чтобы спустя какоето время выводилась инфа! но можно и так



Еще обратил внимание на баг, если создаешь отличную от той, что по умолчанию (DEMO_MANAGER_DEMOS) директорию, то она по любому создается при рестарте. Мб подправите!
при рестарте чего? :) и пример надо
 

kv.acid

Участник
Сообщения
2,025
Реакции
755
Еще обратил внимание на баг, если создаешь отличную от той, что по умолчанию (DEMO_MANAGER_DEMOS) директорию, то она по любому создается при рестарте. Мб подправите!
при рестарте чего? и пример надо
При запуске сервера или его рестарте он принудительно создает эту папку DEMO_MANAGER_DEMOS, хотя я указал в cvars другое место для сохранения демо. При смене карты такое не происходит, все работает нормально!

Ну а если еще замутишь то, что предложил FrozDark то вообще будет "конфЭтка"
можно сделать не только в начале записи демки показ статуса, но при подключении и отключении игроков.
 

_creotiv_

Участник
Сообщения
96
Реакции
114
Распознать или отфильтровать бота можно так
if (IsFakeClient(idx))
вместо
if(!StrContains(UserSteamId, "BOT", false))
это я тестировал на ботах потому что когда тестил я был один на сервере. сделал временно, чтобы уж всё проверить. да вообщем то разницы не много можно переделать

При запуске сервера или его рестарте он принудительно создает эту папку DEMO_MANAGER_DEMOS, хотя я указал в cvars другое место для сохранения демо. При смене карты такое не происходит, все работает нормально!
понятно. щас попробую добавить проверку директории при старте плагина. и при старте карты)
 
Последнее редактирование модератором:

_creotiv_

Участник
Сообщения
96
Реакции
114
а нет ступил. ошибка тут:
public OnConfigsExecuted()
{
/*if (!DirExists(g_DemosDirectory))
{
CreateDirectory(g_DemosDirectory, true);
PrintToServer("[SourceTvDemoManager] Creating Directory --> %s ", g_DemosDirectory);
}*/


Нужно закоментировать строки как выше! или удалить)
 

kv.acid

Участник
Сообщения
2,025
Реакции
755
а нет ступил. ошибка тут:
public OnConfigsExecuted()
{
/*if (!DirExists(g_DemosDirectory))
{
CreateDirectory(g_DemosDirectory, true);
PrintToServer("[SourceTvDemoManager] Creating Directory --> %s ", g_DemosDirectory); }*/
Нужно закоментировать строки как выше! или удалить)
Скомпилил, все норм вроде.
Ну а что скажешь по поводу предложения FrozDark в моем предыдущем посту?
 

_creotiv_

Участник
Сообщения
96
Реакции
114
можно сделать не только в начале записи демки показ статуса, но при подключении и отключении игроков.
ну это без проблем. выводить полный список? или только тех кто подключается/отключается?
 

kv.acid

Участник
Сообщения
2,025
Реакции
755
ну это без проблем. выводить полный список? или только тех кто подключается/отключается?
Корректнее наверно было так, вывод тех кто играл в момент/на протяжении записи демо.
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
он имеет ввиду, вывод полного списка, после любого подключения или отключения игрока, кроме ботов
 

_creotiv_

Участник
Сообщения
96
Реакции
114
Ну вроде сделал. теперь при отключении/подключении юзеров в консоль выводится инфо о том кто подключился и список игроков на данный момент
При отключении так же. инфо о том кто отключился а ниже все кто на данный момент остались
Ну и проблему с созданием папки по дефолту тоже решил. чуть чуть по другому :)
 

ZloyMonah

Dark Guardian
Сообщения
479
Реакции
71
Прошу прощение за глупый вопрос, но как правильно писать, с спектра надо или нет!
Я со сторы спектра писал демку а когда посмотрел так оно вообще в другом ракурсе и непонятно где камера!.. Подскажи ыы ))))
 

KapaT

Эгоист
Сообщения
1,988
Реакции
535
ZloyMonah,не пробывал эти ракурсы менять?
 

ZloyMonah

Dark Guardian
Сообщения
479
Реакции
71
Дык как? я в спектрах просто как в рпг(за играком)... и все пишу... а проиграю потом, гон какой-то!
Могу кинуть то что записало!
 

_creotiv_

Участник
Сообщения
96
Реакции
114
Народ гоните чтоли? демки пишутся при помощи Source tv а Source tv записывает всю игру и всех игроков! не путайте это с записью демки со стороны клиента
 

palanich

Участник
Сообщения
114
Реакции
5
Ребята, на сколько я понял данный плагин не ведет запись постоянно? Можно ли его настроить так, чтобы он писал демки постоянно на каждой карте, и чтобы после записи отправлял их на фтп сервер?
 
Сверху Снизу