Проблем с музикален плъгин

Въпроси и проблеми свързани с AMXModX.

Модератори: Extreme, Extreme, Extreme, Extreme, Extreme, Extreme, Extreme

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от Marinovv » 03 Авг 2019, 16:13

Хей! Прощавайте, ако темата не е за тук. Прощавайте и ако заглавието е супер идиотско, но не знам как да опиша точно заглавието.

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;
}
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от mi0 » 04 Авг 2019, 10:25

Тествай

Код за потвърждение: Избери целия код

#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") || equali(nameExt, "wav")) {
			soundlist[soundCount] = name
			soundCount++
			precache_generic(nameFull)
		}
	}
	while(soundCount<Maxsounds && next_file(dh, nameFull, 63))
        
	close_dir(dh)
	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;
}
ПП: плъгина е лошо написан
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от Marinovv » 04 Авг 2019, 10:53

Благодаря, но отново няма резултат. Не разбирам. Звукът така и не се тегли. Дали пък не греша аз някъде?! Много ви моля, дайте решение. Искрено ще съм ви благодарен. :)

За мен този плъгин е важен.

Дори не разбирам, какво означава този код в .sma файла dh = open_dir("sound/music", nameFull, 63)..
Не би ли следвало от тук да е проблема изобщо с намирането на един звук. Тук звукът се издирва в sound/music, а не примерно в sound/име на папка по твое желание (sound/zwutsi/dollars.wav

А пък и тази папка music я няма в папка sound в cstrike, а само в папка valve. Дали тук има нещо ?!

В оригиналния плъгин пише директорията на един звук се посочва така: "Име на песента" "sound/име на папка/име на файла.wav примерно.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1810
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 371 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от illusion » 04 Авг 2019, 11:04

А нещо за transmit file не ти ли изкарва в конзолата като влезнеш в сървъра?

Примерно съобщение:
Error: server failed to transmit file 'sound/jailbreak/lr/1.wav'

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от Marinovv » 04 Авг 2019, 11:26

summertime vibes написа: 04 Авг 2019, 11:04 А нещо за transmit file не ти ли изкарва в конзолата като влезнеш в сървъра?

Примерно съобщение:
Error: server failed to transmit file 'sound/jailbreak/lr/1.wav'
Вярвай, нищо не изкарва. Дори в сървърът гледах log регистрите, грешки никакви! Плъгинът в играта иначе се показва коректно точно, както трябва, но звукът не се тегли. Все едно не му е зададен пътя, за изтегляне.

Дори се мъчих да си добавя звукът с папката в моята директория на играта, да симулирам, че е изтеглен файла и да видя дали ще пусне звукът в играта, но уви.

Не знам какво се случва.

Само тази грешка показва в конзолата, но тя е за друг плъгин и не е фатално.
Error: server failed to transmit file 'sound/misc/teleport.wav


Added in 18 minutes 3 seconds:
Хей, ето какво направих!

Значи добавих така пътя към файла :

"Dollars" "sound/music/dollars.wav" , както беше и преди ! Пуснах играта и в конзолата ми изписва Error: server failed to transmit file 'dollars.wav'
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от mi0 » 04 Авг 2019, 12:19

давай сега

Код за потвърждение: Избери целия код

#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") || equali(nameExt, "wav")) {
			soundlist[soundCount] = name
			soundCount++
			format(nameFull, charsmax(nameFull), "sound/music/", nameFull)
			precache_generic(nameFull)
		}
	}
	while(soundCount<Maxsounds && next_file(dh, nameFull, 63))
        
	close_dir(dh)
	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;
}
ПП:
summertime vibes написа: 04 Авг 2019, 11:04 А нещо за transmit file не ти ли изкарва в конзолата като влезнеш в сървъра?

Примерно съобщение:
Error: server failed to transmit file 'sound/jailbreak/lr/1.wav'
Няма как да му изписва, след като в плъгина частта с Precache-ването на Wav файла я няма.
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от Marinovv » 04 Авг 2019, 12:42

Не рабирам.


Invalid file type...skipping download of sound/music
така пише в конзолата на играта.

А ето как съм сложил звукът в .ini файла. "Dollars" "sound/music/dollars.wav"
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от mi0 » 04 Авг 2019, 12:47

Сега:

Код за потвърждение: Избери целия код

#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") || equali(nameExt, "wav")) {
			soundlist[soundCount] = name
			soundCount++
			format(nameFull, charsmax(nameFull), "sound/music/%s", nameFull)
			precache_generic(nameFull)
		}
	}
	while(soundCount<Maxsounds && next_file(dh, nameFull, 63))
        
	close_dir(dh)
	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;
}
Последно промяна от mi0 на 04 Авг 2019, 12:53, променено общо 1 път.
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от Marinovv » 04 Авг 2019, 12:49

При компилиране пише: //// musicmenu.sma
// C:\Games\Counter-Strike WaRzOnE\cstrike\addons\amxmodx\scripting\musicmenu.sma(1) : error 010: invalid function or declaration
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Проблем с музикален плъгин

Мнение от mi0 » 04 Авг 2019, 12:53

...

Код за потвърждение: Избери целия код

#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") || equali(nameExt, "wav")) {
			soundlist[soundCount] = name
			soundCount++
			format(nameFull, charsmax(nameFull), "sound/music/%s", nameFull)
			precache_generic(nameFull)
		}
	}
	while(soundCount<Maxsounds && next_file(dh, nameFull, 63))
        
	close_dir(dh)
	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;
}
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 30 госта