- 50
- 47
- Версия SA-MP
-
- 0.3.7 (R1)
Ну типа да, здрасьте. Написал скрипт, который позволяет управлять Spotify'ем - командами из самого сампа (сам хз зачем это).
Команды:
И да, на видео почему то нет разницы, когда я меняю звук, но на деле всё работает.
И ещё при использовании какой либо из этих команд - на экране будет появляться вот такой "тост":
Посмотреть вложение 49413
Команды:
- /spc pp - Пуск/Пауза;
- /spc n - Следующий трек;
- /spc p - Предыдущий трек/Перемотка в начало трека;
- /spc u - Увеличить громкость;
- /spc d - Уменьшить громкость;
И ещё при использовании какой либо из этих команд - на экране будет появляться вот такой "тост":
Посмотреть вложение 49413
C++:
#include <Windows.h>
#include "main.h"
enum SPOTIFY
{
SPOTIFY_MUTE = 524288,
SPOTIFY_VOLUMEDOWN = 589824,
SPOTIFY_VOLUMEUP = 655360,
SPOTIFY_NEXT = 720896,
SPOTIFY_PREV = 786432,
SPOTIFY_STOP = 851968,
SPOTIFY_PLAYPAUSE = 917504
};
SAMPFUNCS *SF = new SAMPFUNCS();
void CALLBACK spc(std::string param)
{
HWND Window_Handle = FindWindow(L"Chrome_WidgetWin_0", NULL);
if (param == "pp")
{
SendMessage(Window_Handle, WM_APPCOMMAND, 0, SPOTIFY_PLAYPAUSE);
}
else if (param == "n")
{
SendMessage(Window_Handle, WM_APPCOMMAND, 0, SPOTIFY_NEXT);
}
else if (param == "p")
{
SendMessage(Window_Handle, WM_APPCOMMAND, 0, SPOTIFY_PREV);
}
else if (param == "u")
{
SendMessage(Window_Handle, WM_APPCOMMAND, 0, SPOTIFY_VOLUMEUP);
}
else if (param == "d")
{
SendMessage(Window_Handle, WM_APPCOMMAND, 0, SPOTIFY_VOLUMEDOWN);
}
else {
SF->getSAMP()->getChat()->AddChatMessage(0xff32cd32, "{32CD32}[SPOTIFY CONTROLS]: {FF0000}Аргумент указан неверно!");
}
};
void __stdcall mainloop()
{
static bool initialized = false;
if (!initialized)
{
if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
{
initialized = true;
SF->getSAMP()->registerChatCommand("spc", spc);
SF->getSAMP()->getChat()->AddChatMessage(0xff32cd32, "{32CD32}[SPOTIFY CONTROLS]: {FFFFFF}Скрипт успешно загружен!");
}
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
if (dwReasonForCall == DLL_PROCESS_ATTACH)
SF->initPlugin(mainloop, hModule);
return TRUE;
}
Вложения
Последнее редактирование: