Хочу проиграть звук после соединения клиента, через функцию OnClientConnected

AMD

Участник
Сообщения
180
Реакции
18
Ну во первых хочу сразу подметить что я не уверен в том что я беру ту функцию которая мне подходит.

Пример с вики:
PHP:
#include <sourcemod>
#include <sdktools>
 
new const String:FULL_SOUND_PATH[] = "sound/custom/ur.mp3";
new const String:RELATIVE_SOUND_PATH[] = "*custom/ur.mp3";
 
public OnPluginStart()
{
	RegConsoleCmd( "sm_testsound", sm_testsound );
}
 
public OnMapStart()
{
	AddFileToDownloadsTable( FULL_SOUND_PATH );
	FakePrecacheSound( RELATIVE_SOUND_PATH );
}
 
public Action:sm_testsound( client, argc )
{
	EmitSoundToClient( client, RELATIVE_SOUND_PATH );
 
	return Plugin_Handled;
}
 
stock FakePrecacheSound( const String:szPath[] )
{
	AddToStringTable( FindStringTable( "soundprecache" ), szPath );
}
Ну тут вроде ясно, вызывается действие sm_testsound и музыка играет.

Но как вызвать это действие через OnClientConnected я тупо не понимаю как составить код, примеры мне особо не понятны, я не знаю интернационал(

Пробывал как то худо бедно заюзать
OnClientConnected

Syntax:
forward OnClientConnected(client);

Usage:
client Client index.
не получилось, это форвард как он используется и где объявляется не знаю, не ну примерно догадываюсь.

Пробывал так, но сразу понел что бред.
PHP:
public OnClientConnected( client, id)
{
	EmitSoundToClient( client, RELATIVE_SOUND_PATH );
 
	return Plugin_Handled;
}

Как верно написать код?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
AMD, лучше в OnClientPostAdminCheck(client);
 
  • Мне нравится
Реакции: AMD

AMD

Участник
Сообщения
180
Реакции
18
AMD, лучше в OnClientPostAdminCheck(client);

Спасибо конечно, но синтаксис тот же((
OnClientPostAdminCheck

Syntax:
forward OnClientPostAdminCheck(client);

Usage:
client Client index.
:crazy:

P.S. Просто не до конца понимаю алгоритм написания чего либо.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
PHP:
#include <sourcemod> 
#include <sdktools>

#define SOUND_PATH "ur.mp3"
  
public OnMapStart() 
{
	PrecacheSound(SOUND_PATH);
	decl String:sPath[PLATFORM_MAX_PATH];
	FormatEx(sPath, sizeof(sPath), "sound/custom/%s", SOUND_PATH);
    AddFileToDownloadsTable(sPath); 
}

public OnClientPostAdminCheck(client)
{ 
	if(client && !IsFakeClient(client)) ClientCommand(client, "playgamesound %s", SOUND_PATH);
}

Еще не научился работать с папкой custom, если кто хочет поделиться опытом - буду рад.
 

AMD

Участник
Сообщения
180
Реакции
18
PHP:
#include <sourcemod> 
#include <sdktools>

#define SOUND_PATH "ur.mp3"
  
public OnMapStart() 
{
	PrecacheSound(SOUND_PATH);
	decl String:sPath[PLATFORM_MAX_PATH];
	FormatEx(sPath, sizeof(sPath), "sound/custom/%s", SOUND_PATH);
    AddFileToDownloadsTable(sPath); 
}

public OnClientPostAdminCheck(client)
{ 
	if(client && !IsFakeClient(client)) ClientCommand(client, "playgamesound %s", SOUND_PATH);
}

Еще не научился работать с папкой custom, если кто хочет поделиться опытом - буду рад.

Попробовал твой код, не работает(
Сделал так:
PHP:
#include <sourcemod>
#include <sdktools>
 
new const String:FULL_SOUND_PATH[] = "sound/a/nd.mp3";
new const String:RELATIVE_SOUND_PATH[] = "*a/nd.mp3";
 
public OnMapStart()
{
	AddFileToDownloadsTable( FULL_SOUND_PATH );
	FakePrecacheSound( RELATIVE_SOUND_PATH );
}
 
public OnClientPostAdminCheck( client )
{
	EmitSoundToClient( client, RELATIVE_SOUND_PATH );
}
 
stock FakePrecacheSound( const String:szPath[] )
{
	AddToStringTable( FindStringTable( "soundprecache" ), szPath );
}
Работает, но после закрытие motd звук блочится, наверное это из за того что в момент респавна вызываются другие *.mp3.

Вообще хочется использовать твой код, ибо там проверка на фэйк клиент, и decl используется, вроде как лучше.
 
Сверху Снизу