Скриптер
Участник
Пользователь
- Сообщения
- 56
- Реакции
- 84
Drumanid добавил(а) новый ресурс:
Simple Duel | Простая дуэль - У игроков есть возможность сыграть дуэль когда они остались 1 на 1.
Нажмите на эту ссылку, чтобы узнать больше Модуль для этого плагина... (Simple duel)
Simple duel sound - воспроизводит музыку/звуки во время и после завершения дуэли.
Писал для примера, для кодеров.
Simple Duel | Простая дуэль - У игроков есть возможность сыграть дуэль когда они остались 1 на 1.
Нажмите на эту ссылку, чтобы узнать больше
17 Ноя 2018
Simple duel sound - воспроизводит музыку/звуки во время и после завершения дуэли.
Писал для примера, для кодеров.
Код:
// Путь к звуку, который будет воспроизведен проигравшему в дуэли. Путь прописываем без 'sound/'
// -
// Default: ""
simple_duel_losing_sound ""
// Путь к звуку, который будет воспроизведен во время подготовки к дуэли. Путь прописываем без 'sound/'
// -
// Default: ""
simple_duel_preparation_sound ""
// Музыка во время дуэли, пути прописываем без 'sound/' и через ','
// Пример: 'duel/001.mp3,duel/002.mp3' и т.д. Максимальное кол-во: 10
// -
// Default: ""
simple_duel_sound ""
// Как воспроизводить музыку? 0 - по очереди / 1 - рандом
// -
// Default: "0"
// Minimum: "0.000000"
// Maximum: "1.000000"
simple_duel_type_sound "0"
// Путь к звуку, который будет воспроизведен победителю в дуэли. Путь прописываем без 'sound/'
// -
// Default: ""
simple_duel_victory_sound ""
// Громкость звуков/музыки | 0.1 - Минимально / 1.0 - Максимально
// -
// Default: "0.5"
// Minimum: "0.000000"
// Maximum: "1.000000"
simple_duel_volume_sound "0.5"
Код:
#include <simple_duel>
#include <sdktools_stringtables>
#include <sdktools_sound>
public Plugin myinfo =
{
name = "[Simple Duel] Sound",
author = "Drumanid",
version = "1.0.0",
url = "Discord: Drumanid#9108 | Site: dev-cs.ru"
};
#define LC(%0) for(int %0 = 1; %0 <= MaxClients; ++%0) if(IsClientInGame(%0) && !IsFakeClient(%0))
#define SZF(%0) %0, sizeof(%0)
#define Hook(%0,%1) %0.AddChangeHook(view_as<ConVarChanged>(%1))
int g_iSound,
g_iCount;
float g_fVolume;
char g_sPreparation[128],
g_sVictory[128],
g_sLosing[128],
g_sSound[10][128],
g_sStopSound[128];
bool g_bType;
public void OnPluginStart()
{
ConVar hCvar = CreateConVar("simple_duel_preparation_sound", "", "Путь к звуку, который будет воспроизведен во время подготовки к дуэли. Путь прописываем без 'sound/'"); Hook(hCvar, CvarHookPreparation); hCvar.GetString(SZF(g_sPreparation));
hCvar = CreateConVar("simple_duel_victory_sound", "", "Путь к звуку, который будет воспроизведен победителю в дуэли. Путь прописываем без 'sound/'"); Hook(hCvar, CvarHookVictory); hCvar.GetString(SZF(g_sVictory));
hCvar = CreateConVar("simple_duel_losing_sound", "", "Путь к звуку, который будет воспроизведен проигравшему в дуэли. Путь прописываем без 'sound/'"); Hook(hCvar, CvarHookLosing); hCvar.GetString(SZF(g_sLosing));
hCvar = CreateConVar("simple_duel_sound", "", "Музыка во время дуэли, пути прописываем без 'sound/' и через ','\nПример: 'duel/001.mp3,duel/002.mp3' и т.д. Максимальное кол-во: 10"); Hook(hCvar, CvarHookSound); ConvertSound(hCvar);
hCvar = CreateConVar("simple_duel_volume_sound", "0.5", "Громкость звуков/музыки | 0.1 - Минимально / 1.0 - Максимально", _, true, 0.0, true, 1.0); Hook(hCvar, CvarHookVolume); g_fVolume = hCvar.FloatValue;
hCvar = CreateConVar("simple_duel_type_sound", "0", "Как воспроизводить музыку? 0 - по очереди / 1 - рандом", _, true, 0.0, true, 1.0); Hook(hCvar, CvarHookType); g_bType = hCvar.BoolValue;
AutoExecConfig(true, "simple_duel_sound");
}
void CvarHookPreparation(ConVar hCvar) { hCvar.GetString(SZF(g_sPreparation)); }
void CvarHookVictory(ConVar hCvar) { hCvar.GetString(SZF(g_sVictory)); }
void CvarHookLosing(ConVar hCvar) { hCvar.GetString(SZF(g_sLosing)); }
void CvarHookSound(ConVar hCvar) { ConvertSound(hCvar); }
void CvarHookVolume(ConVar hCvar) { g_fVolume = hCvar.FloatValue; }
void CvarHookType(ConVar hCvar) { g_bType = hCvar.BoolValue; }
public void OnConfigsExecuted()
{
g_iCount = 0;
DownloadAndPrecacheFile(g_sPreparation);
DownloadAndPrecacheFile(g_sVictory);
DownloadAndPrecacheFile(g_sLosing);
if(g_sSound[0][0] == 0) return;
for(int i; i < g_iSound; i++) DownloadAndPrecacheFile(g_sSound[i]);
}
public void SD_Events(int iEvent)
{
switch(iEvent)
{
case 0: PlaySoundAll(g_sPreparation);
case 1:
{
SoundStop();
if(g_sSound[0][0] == 0) return;
if(g_bType) PlaySoundAll(g_iSound > 1 ? g_sSound[GetRandomInt(0, g_iSound -1)]:g_sSound[0]);
else
{
if(g_iCount > g_iSound) g_iCount = 0;
PlaySoundAll(g_sSound[g_iCount]); g_iCount++;
}
}
case 2:
{
SoundStop();
PlaySound(SD_GetWinner(), g_sVictory);
PlaySound(SD_GetLoser(), g_sLosing);
}
}
}
void ConvertSound(ConVar hCvar)
{
char sBuffer[1024]; hCvar.GetString(SZF(sBuffer));
g_iSound = ExplodeString(sBuffer, ",", g_sSound, sizeof(g_sSound), sizeof(g_sSound[]));
}
void DownloadAndPrecacheFile(const char[] sSound)
{
if(sSound[0] == 0) return;
char sBuffer[134];
FormatEx(SZF(sBuffer), "sound/%s", sSound);
AddFileToDownloadsTable(sBuffer);
FormatEx(SZF(sBuffer), "*%s", sSound);
AddToStringTable(FindStringTable("soundprecache"), sBuffer);
}
void PlaySoundAll(const char[] sSound)
{
if(sSound[0] == 0) return;
FormatEx(SZF(g_sStopSound), "*%s", sSound);
LC(i) EmitSoundToClient(i, g_sStopSound, SOUND_FROM_PLAYER, SNDCHAN_STATIC, SNDLEVEL_NONE, SND_NOFLAGS, g_fVolume);
}
void PlaySound(int iClient, const char[] sSound)
{
if(iClient < 1 || sSound[0] == 0) return;
char sBuffer[130]; FormatEx(SZF(sBuffer), "*%s", sSound)
EmitSoundToClient(iClient, sBuffer, _, _, _, _, g_fVolume);
}
void SoundStop()
{
if(g_sStopSound[0] == 0) return;
LC(i) StopSound(i, SNDCHAN_STATIC, g_sStopSound);
g_sStopSound[0] = 0;
}
Download all Attachments
-
1.4 KB Просмотры: 1
-
4.6 KB Просмотры: 2
Последнее редактирование: