1. Ползвам този плъгин Music Menu By sNezz
2. Сървърът ми е на платен хост GameServers
Сега нека опиша супер странната случка. Както разбрахте, видяхте кой плъгин ползвам. Този плъгин е за музика. И ето най - интересното сега.
Сложих плъгина, точно както трябва в сървърът си чрез FTP достъп. Нали всичко окей. Плъгина работи уж коректно до някаква част. В играта плъгинът се показва коректно без Errors.
Но проблемът е в звуците! Добавих една песен, която конвертирах в .wav формат нарочно. В конфигурационния файл на плъгина посочих пътя до файла "dollars" "sound/music/dollars.wav" и запазих! Ето тук идва и основната и проблемна част. Когато вляза в сървърът си от играта, не ми тегли песента. Дори не я възпроизвежда, но това е нормално, тъй като тя не е изтеглена. Влязох в директорията на самата си игра, където трябваше да се е изтеглила песента, но уви, нито папката, нито звукът ги имаше. Писах на съпорта от GameServers и те най - учтиво даже качиха самия звук с папката да се тегли бързо, но уви няма резултат. Дори компилирах плъгина онлайн, за да се застраховам дали пък не е било от това и пак резултат нулев.
Какъв би могъл да бъде проблемът. Ползвал съм този плъгин преди много време на домашен сървър и работеше коректно. Песните, които съм слагал са се теглили, а сега на платен хостинг - греда.
Бихте ли погледнали .sma кода на плъгинът. Ето улеснявам ви, предоставям .sma кода:
Код за потвърждение: Избери целия код
#include <amxmodx>
#define VERSION "1.12"
#define Maxsounds 20
new const AUTHOR[] = "sNezz" // Why would you change this D: hmmm
new const PREFIX[] = "[Example]" // But you can change this :D ! In fact you should.. xD
new soundlist[Maxsounds][64], soundCount = 0, gMaxplayers;
new bool:is_user_listening[32];
static LANG[190]
public plugin_init() {
register_plugin("MUSIC MENU", VERSION, AUTHOR)
register_dictionary("musicmenu.txt");
// COMMANDS
register_clcmd("say /music", "cmdMusicMenu");
register_clcmd("say_team /music", "cmdMusicMenu");
register_clcmd("say_team !music", "cmdMusicMenu");
register_clcmd("say !music", "cmdMusicMenu");
// MISC
gMaxplayers = get_maxplayers()
}
public plugin_precache() {
new dh
new nameFull[64], name[64], nameExt[32]
dh = open_dir("sound/music", nameFull, 63)
do {
strtok(nameFull,name,63,nameExt,31,'.')
if (equali(nameExt, "mp3")) {
soundlist[soundCount] = name
soundCount++
}
}
while(soundCount<Maxsounds && next_file(dh, nameFull, 63))
close_dir(dh)
for (new i = 0; i < soundCount; i++) {
format(name, 63, "sound/music/%s.mp3",soundlist[i])
precache_generic(name)
}
return PLUGIN_CONTINUE
}
public musicadmin(id) {
formatex(LANG, charsmax(LANG), "%L", id, "ADMINMENU_TITLE");
new amenu = menu_create(LANG, "musicadmin_handler");
formatex(LANG, charsmax(LANG), "%L", id, "ADMINMENU_STOPALL");
menu_additem(amenu, LANG, "1");
formatex(LANG, charsmax(LANG), "%L", id, "ADMINMENU_STOPONE");
menu_additem(amenu, LANG, "2");
formatex(LANG, charsmax(LANG), "%L", id, "ADMINMENU_PLAYALL");
menu_additem(amenu, LANG, "3");
menu_display(id, amenu);
}
public musicadmin_handler(id, amenu, item) {
new iData[ 6 ];
new iAccess;
new iCallback;
new iName[ 64 ];
menu_item_getinfo(amenu, item, iAccess, iData, 6, iName, 63, iCallback);
switch(str_to_num(iData)) {
case 1:
{
for(new i;i <= gMaxplayers; i++){
if(is_user_connected(i) && !is_user_bot(i) && is_user_listening[i]) {
client_cmd(i, "mp3 stop");
client_print(i, print_chat, "%L", id, "ADMIN_STOP", PREFIX );
is_user_listening[i] = false;
}
}
}
case 2:
{
stopmenu(id);
}
case 3:
{
playmenu(id);
}
}
}
public stopmenu(id) {
new temp1[32], temp2[2], listeners;
formatex(LANG, charsmax(LANG), "%L", id, "ADMINSTOPMENU_TITLE");
new smenu = menu_create(LANG, "stopmenu_handler");
for(new i;i <= gMaxplayers; i++){
if(is_user_connected(i) && !is_user_bot(i) && is_user_listening[i]) {
get_user_name(i,temp1,32)
num_to_str(i,temp2,2)
menu_additem(smenu, temp1, temp2)
listeners++
}
}
if(!listeners){
client_print(id, print_chat, "%L", id, "NO_ONE_LISTENING", PREFIX );
return PLUGIN_HANDLED;
}
menu_display(id, smenu);
return PLUGIN_HANDLED;
}
public stopmenu_handler(id, smenu, item)
{
new data[6], iName[64]
new access, callback
menu_item_getinfo(smenu, item, access, data,5, iName, 63, callback)
new tempid = str_to_num(data)
if(!is_user_listening[tempid])
return PLUGIN_HANDLED;
client_cmd(tempid, "mp3 stop");
client_print(tempid, print_chat, "%L", id, "ADMIN_STOP", PREFIX );
is_user_listening[tempid] = false;
return PLUGIN_HANDLED
}
public playmenu(id) {
new file = fopen("addons/amxmodx/configs/music.ini", "rt")
new szData[50]
formatex(LANG, charsmax(LANG), "%L", id, "ADMINMUSICMENU_TITLE");
new pmenu = menu_create(LANG, "adminmusic_handler");
while(!feof(file)) {
new MusicName[40], MusicFile[120];
fgets(file, szData, charsmax(szData))
trim(szData)
if(!szData[0])
return PLUGIN_HANDLED;
parse(szData, MusicName, charsmax(MusicName), MusicFile, charsmax(MusicFile));
remove_quotes(MusicName);
remove_quotes(MusicFile);
menu_additem(pmenu, MusicName, MusicFile);
}
menu_display(id, pmenu);
return PLUGIN_HANDLED;
}
public adminmusic_handler(id, pmenu, item) {
new iData[ 60 ];
new iAccess;
new iCallback;
new iName[ 64 ];
menu_item_getinfo(pmenu, item, iAccess, iData, 59, iName, 63, iCallback);
if(str_to_num(iData)==2) {
musicadmin(id);
}
new file = fopen("addons/amxmodx/configs/music.ini", "rt")
new szData[500]
while(!feof(file)) {
new MusicName[40], MusicFile[120];
fgets(file, szData, charsmax(szData))
trim(szData)
if(!szData[0])
return PLUGIN_HANDLED;
parse(szData, MusicName, charsmax(MusicName), MusicFile, charsmax(MusicFile));
if(equali(MusicFile,iData)) {
for(new i; i <= gMaxplayers; i++) {
if(is_user_connected(i) && !is_user_bot(i)) {
client_cmd( i, "mp3 play %s", MusicFile);
client_print( i, print_chat, "%L", id, "FORCED_LISTENING_TO", PREFIX, MusicName ); // may this be LANG_PLAYER instead of id ? idk
is_user_listening[id] = true;
}
}
}
}
return PLUGIN_HANDLED;
}
public cmdMusicMenu(id) {
if(AUTHOR[0] != 's' && AUTHOR[4] != 'z' && AUTHOR[3] != 'z' && AUTHOR[2] != 'e' && AUTHOR[1] != 'N')
return PLUGIN_HANDLED;
new file = fopen("addons/amxmodx/configs/music.ini", "rt")
new szData[50]
formatex(LANG, charsmax(LANG), "%L", id, "MUSICMENU_TITLE");
new menu = menu_create(LANG, "music_handler");
formatex(LANG, charsmax(LANG), "%L", id, "MUSICMENU_STOP");
menu_additem(menu, LANG, "1");
if(get_user_flags(id) & ADMIN_KICK) {
formatex(LANG, charsmax(LANG), "%L", id, "MUSICMENU_ADMIN");
menu_additem(menu, LANG, "2");
}
menu_addblank(menu, 0);
while(!feof(file)) {
new MusicName[40], MusicFile[120];
fgets(file, szData, charsmax(szData))
trim(szData)
if(!szData[0])
return PLUGIN_HANDLED;
parse(szData, MusicName, charsmax(MusicName), MusicFile, charsmax(MusicFile));
remove_quotes(MusicName);
remove_quotes(MusicFile);
menu_additem(menu, MusicName, MusicFile);
menu_display(id, menu);
}
return PLUGIN_HANDLED;
}
public music_handler(id, menu, item) {
new iData[ 60 ];
new iAccess;
new iCallback;
new iName[ 64 ];
menu_item_getinfo(menu, item, iAccess, iData, 59, iName, 63, iCallback);
if(str_to_num(iData)==1) {
client_cmd(id, "mp3 stop");
is_user_listening[id] = false;
}
if(str_to_num(iData)==2) {
musicadmin(id);
}
new file = fopen("addons/amxmodx/configs/music.ini", "rt")
new szData[500]
while(!feof(file)) {
new MusicName[40], MusicFile[120];
fgets(file, szData, charsmax(szData))
trim(szData)
if(!szData[0])
return PLUGIN_HANDLED;
parse(szData, MusicName, charsmax(MusicName), MusicFile, charsmax(MusicFile));
if(equali(MusicFile,iData)) {
if(containi(MusicFile, ".mp3"))
client_cmd(id, "mp3 play %s", MusicFile);
else if(containi(MusicFile, ".wav"))
client_cmd(id, "spk %s", MusicFile);
client_print( id, print_chat, "%L", id, "LISTENING_TO", PREFIX, MusicName );
is_user_listening[id] = true;
}
}
return PLUGIN_HANDLED;
}