Biblioteka która daje nam do rąk kilka fajnych funkcji do obsługi dźwięków
ścieżkę podajemy bez cstrike/ w ścieżce musi się zawierać rozszerzenie pliku
wszystkie funkcje same rozpoznają czy to jest plik wav czy mp3
- sfile_get_duration(szFilename[])
- get_duration(iData[SParam])
- sfile_is_valid(szFilename[])
- sfile_type(szFilename[])
- sfile_loaddata(szFilename[], iData[SParam])
- sfile_loaddata_mp3(szFilename[], iData[SParam])
- sfile_loaddata_wav(szFilename[], iData[SParam])
zwraca długość utworu jako float działa źle jeśli plik mp3 jest zakodowany z zmiennym bitrate (VBR)
1 parametr ścieżka do pliku
także zwraca długość utworu jako float ale z tą funkcją jest więcej jazdy
działa źle jeśli plik mp3 jest zakodowany z zmiennym bitrate (VBR)
1 parametr podajemy to co zwróci nam sfile_loaddata()
funkcja zwraca true jeśli plik jest obsługiwany przez cs’a czyli cs potrafi go odtworzyć
false jeśli jest inaczej
zwraca SFILE_MP3 jeśli plik to mp3 lub SFILE_WAV gdy wav jeśli nie znajdzie pliku zwraca SFILE_UNKNOWN
1 parametr ścieżka do pliku
ładuje informacje o pliku mp3 lub wav funkcja sama wybierze cóż to za plik jej dano ;D
zwraca SRES_NOT_EXISTS jeśli nie znajdzie pliku
dla pliku mp3
SRES_BAD_PARAMETERS jeśli plik będzie miał złe parametry
SRES_OK jeśli wszystko poszło dobrze
dla wav
SRES_BAD_SIGNATURE sygnatura pliku nie zgadza się z specyfikacją
SRES_OK jak mp3
1 Parametr ścieżka do pliku
2 Tablica do której zostaną zapisane są informacje
są to
SOUND_FREQ – częstotliwość dźwięku
SOUND_BYTERATE – byterate – ilość bitów na sekundę
SOUND_CHAN_NUM – ilość kanałów
SOUND_DURATION_F – czas float żeby ją poprawnie wyciągnąć używamy Float:iData[SOUND_DURATION_F]) lub get_duration(iData)
to samo co sfile_loaddata ale tylko dla plików mp3
to samo co sfile_loaddata ale tylko dla plików wav
Stałe:
SRES_BAD_PARAMETERS -2 SRES_BAD_SIGNATURE -1 SRES_NOT_EXISTS 0 SRES_OK 1
Typ pliku
SFILE_UNKNOWN SFILE_WAV SFILE_MP3
Informacje o utworze
new iData[SParam]; SOUND_FREQ SOUND_BYTERATE SOUND_CHAN_NUM SOUND_DURATION_F
Przykład kodu:
#include <amxmodx> #include <amxmisc> #include <soundinfo></soundinfo></amxmisc></amxmodx> #define PLUGIN "Wav" #define VERSION "1.0" #define AUTHOR "R3X" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_clcmd("sinfo", "sinfo",0, "<sound> //path from cstrike"); } public sinfo(id){ new szFilename[32]; read_argv(1, szFilename, 31);</sound> switch(sfile_type(szFilename)){ case SFILE_MP3: log_amx("MP3"); case SFILE_WAV: log_amx("WAV"); default: log_amx("UNKNOWN"); } new iData[SParam]; if(sfile_loaddata(szFilename, iData) == SRES_OK){ client_print(id, print_console, "Freq = %d", iData[SOUND_FREQ]); client_print(id, print_console, "ByteRate = %d", iData[SOUND_BYTERATE]); client_print(id, print_console, "Channels = %d", iData[SOUND_CHAN_NUM]); client_print(id, print_console, "Duration = %f", Float:iData[SOUND_DURATION_F]); client_print(id, print_console, "Duration = %f", sfile_get_duration(szFilename)); if(sfile_is_valid(szFilename)) client_print(id, print_console, "Valid!"); else client_print(id, print_console, "Invalid!"); } return PLUGIN_HANDLED }