Фоновая музыка на сервере

Сообщения
2
Реакции
0
Баллы
1
Не попадался мне такой плагин вроде, но может я плохо искала.

Ищу плагин , который будет проигрывать MP3 файлы самостоятельно в рандомное время.
Заходишь на сервер , и допустим либо сразу либо через минуту (настраивается в исходнике либо кваром) включается музыка (рандомный трек)
Далее по истечению допустим 2х минут (настраивается в исходнике либо кваром) опять включается музыка в рандомном порядке и тд.
 
Подобного плагина в интернете я не встречал, но могу написать для тебя за пятисоточку.
 
типа такого?
C-подобный:
#pragma semicolon 1

#include <amxmodx>

#include <api_player_music>

#define TRACK_START_DELAY 5.0

new const g_rgszMusicList[][] = {
  "media/Half-Life05.mp3",
  "media/Half-Life01.mp3",
  "media/Half-Life02.mp3",
  "media/Half-Life03.mp3",
  "media/Half-Life04.mp3"
};

new PlayerMusic_Track:g_rgiTracks[sizeof(g_rgszMusicList)];

new g_pHudObj;

public plugin_precache() {
  for (new i = 0; i < sizeof(g_rgszMusicList); ++i) {
    g_rgiTracks[i] = PlayerMusic_LoadTrack(g_rgszMusicList[i]);
  }
}

public plugin_init() {
  register_plugin("Test Music System", "1.0.0", "Hedgehog Fog");

  g_pHudObj = CreateHudSyncObj();
}

public client_putinserver(pPlayer) {
  @Player_ScheduleTrack(pPlayer);

  set_task(1.0, "Task_ShowTrackInfo", pPlayer, _, _, "b");
}

public PlayerMusic_OnTrackEnd(const pPlayer, const PlayerMusic_Track:track, bool:bStopped) {
  @Player_ScheduleTrack(pPlayer);
}

@Player_ScheduleTrack(const &pPlayer) {
  PlayerMusic_Player_PlayTrack(pPlayer, g_rgiTracks[random(sizeof(g_rgszMusicList))], TRACK_START_DELAY);
}

public Task_ShowTrackInfo(const pPlayer) {
  new PlayerMusic_Track:track = PlayerMusic_Player_GetTrack(pPlayer);
  if (track == PlayerMusic_Track_Invalid) {
    ClearSyncHud(pPlayer, g_pHudObj);
    return;
  }

  static szTrackTitle[64]; PlayerMusic_GetTrackTitle(track, szTrackTitle, charsmax(szTrackTitle));
  static szArtist[64]; PlayerMusic_GetTrackArtist(track, szArtist, charsmax(szArtist));
  static szAlbum[64]; PlayerMusic_GetTrackAlbum(track, szAlbum, charsmax(szAlbum));

  new iYear = PlayerMusic_GetTrackYear(track);

  static szMessage[512];

  new iPos = 0;

  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Currently playing: %s^n", szTrackTitle);
  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Author: %s^n", szArtist);
  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Album: %s^n", szAlbum);
  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Year: %d^n", iYear);

  if (PlayerMusic_Player_IsTrackStarted(pPlayer)) {
    iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Time Left: %.0f seconds", PlayerMusic_Player_GetTrackTimeLeft(pPlayer));
  } else {
    iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Time Left: Scheduled");
  }

  set_hudmessage(random(256), random(256), random(256), 0.025, 0.1, 0, 0.0, 1.25, 0.0, 0.0);
  ShowSyncHudMsg(pPlayer, g_pHudObj, szMessage);
}

Это не готовое решение
 
типа такого?
C-подобный:
#pragma semicolon 1

#include <amxmodx>

#include <api_player_music>

#define TRACK_START_DELAY 5.0

new const g_rgszMusicList[][] = {
  "media/Half-Life05.mp3",
  "media/Half-Life01.mp3",
  "media/Half-Life02.mp3",
  "media/Half-Life03.mp3",
  "media/Half-Life04.mp3"
};

new PlayerMusic_Track:g_rgiTracks[sizeof(g_rgszMusicList)];

new g_pHudObj;

public plugin_precache() {
  for (new i = 0; i < sizeof(g_rgszMusicList); ++i) {
    g_rgiTracks[i] = PlayerMusic_LoadTrack(g_rgszMusicList[i]);
  }
}

public plugin_init() {
  register_plugin("Test Music System", "1.0.0", "Hedgehog Fog");

  g_pHudObj = CreateHudSyncObj();
}

public client_putinserver(pPlayer) {
  @Player_ScheduleTrack(pPlayer);

  set_task(1.0, "Task_ShowTrackInfo", pPlayer, _, _, "b");
}

public PlayerMusic_OnTrackEnd(const pPlayer, const PlayerMusic_Track:track, bool:bStopped) {
  @Player_ScheduleTrack(pPlayer);
}

@Player_ScheduleTrack(const &pPlayer) {
  PlayerMusic_Player_PlayTrack(pPlayer, g_rgiTracks[random(sizeof(g_rgszMusicList))], TRACK_START_DELAY);
}

public Task_ShowTrackInfo(const pPlayer) {
  new PlayerMusic_Track:track = PlayerMusic_Player_GetTrack(pPlayer);
  if (track == PlayerMusic_Track_Invalid) {
    ClearSyncHud(pPlayer, g_pHudObj);
    return;
  }

  static szTrackTitle[64]; PlayerMusic_GetTrackTitle(track, szTrackTitle, charsmax(szTrackTitle));
  static szArtist[64]; PlayerMusic_GetTrackArtist(track, szArtist, charsmax(szArtist));
  static szAlbum[64]; PlayerMusic_GetTrackAlbum(track, szAlbum, charsmax(szAlbum));

  new iYear = PlayerMusic_GetTrackYear(track);

  static szMessage[512];

  new iPos = 0;

  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Currently playing: %s^n", szTrackTitle);
  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Author: %s^n", szArtist);
  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Album: %s^n", szAlbum);
  iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Year: %d^n", iYear);

  if (PlayerMusic_Player_IsTrackStarted(pPlayer)) {
    iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Time Left: %.0f seconds", PlayerMusic_Player_GetTrackTimeLeft(pPlayer));
  } else {
    iPos += format(szMessage[iPos], charsmax(szMessage) - iPos, "Time Left: Scheduled");
  }

  set_hudmessage(random(256), random(256), random(256), 0.025, 0.1, 0, 0.0, 1.25, 0.0, 0.0);
  ShowSyncHudMsg(pPlayer, g_pHudObj, szMessage);
}

Это не готовое решение
Этот сложный какой то.

Мне нужен простой...заходишься на сервер , в motd включается музыка (определённая-для приветствия)
Потом когда музыка при входе отыграет, запускаются игровые треки в рандомном порядке с небольшими перерывами между треками.
 
Этот сложный какой то.

Мне нужен простой...заходишься на сервер , в motd включается музыка (определённая-для приветствия)
Потом когда музыка при входе отыграет, запускаются игровые треки в рандомном порядке с небольшими перерывами между треками.
такое ИИшкой пишется в пару сек
вот, например, работает как запрашивали
C:
#include <amxmodx>

#define PLUGIN  "Music System"
#define VERSION "1.0"
#define AUTHOR  "User"

// Настройки
new const WELCOME_MUSIC[] = "sound/cszm/sound_boss_n10.mp3" // Музыка при входе
new const Float:PAUSE_TIME = 15.0                          // Пауза между треками (в секундах)

// Список фоновых треков
new const BACKGROUND_MUSIC[][] = {
    "sound/csnet/soundtrack/sound_001.mp3",
    "sound/csnet/soundtrack/sound_002.mp3",
    "sound/csnet/soundtrack/sound_003.mp3",
    "sound/csnet/soundtrack/sound_004.mp3",
    "sound/csnet/soundtrack/sound_005.mp3",
    "sound/csnet/soundtrack/sound_006.mp3"
}

new g_CurrentTrack[33] // Храним индекс текущего трека для каждого игрока

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
}

public plugin_precache() {
    precache_generic(WELCOME_MUSIC)
    for(new i = 0; i < sizeof BACKGROUND_MUSIC; i++) {
        precache_generic(BACKGROUND_MUSIC[i])
    }
}

// 1. При заlocalходе на сервер
public client_putinserver(id) {
    g_CurrentTrack[id] = 0
    // Запускаем приветствие (с небольшой задержкой, чтобы игрок успел прогрузиться)
    set_task(0.2, "PlayWelcomeMusic", id)
}

public PlayWelcomeMusic(id) {
    if(!is_user_connected(id)) return

    client_cmd(id, "mp3 play %s", WELCOME_MUSIC)
  
    // 2. После приветствия запускаем цикл фоновой музыки
    // Допустим, приветствие длится 10 секунд + пауза. Настройте время ниже:
    set_task(15.0, "PlayNextBackgroundTrack", id)
}

public PlayNextBackgroundTrack(id) {
    if(!is_user_connected(id)) return

    // Играем текущий трек
    client_cmd(id, "mp3 play %s", BACKGROUND_MUSIC[g_CurrentTrack[id]])

    // Определяем следующий трек (по порядку)
    g_CurrentTrack[id]++
    if(g_CurrentTrack[id] >= sizeof BACKGROUND_MUSIC) {
        g_CurrentTrack[id] = 0 // Возвращаемся к первому
    }

    // Ставим задачу на следующий запуск.
    // ВАЖНО: Время должно учитывать длину трека + PAUSE_TIME.
    // Т.к. AMXX не знает длину MP3, здесь стоит примерное время 180 сек.
    set_task(180.0 + PAUSE_TIME, "PlayNextBackgroundTrack", id)
}

public client_disconnected(id) {
    remove_task(id)
}

скачать бесплатно без регистрации и СМС

пример текста запроса
нужен код на языке pawn для кс 1.6который выполняет следующие действия:1) При заходе на сервер запускает музыку-приветствие2) после того как игрок зашел на сервер и ему проигралась музыка-приветствие, необходимо запускать ему фоновую музыку с перерывами между треками. Треков может быть множество и между переключениями треков нужно указывать время паузы в плагине(коде)
 

Кто просматривает тему

Назад
Верх