CSowicze.pl - Sieć serwerów Counter-Strike. Serwery forum CS 1.6 i CS:GO
Skocz do zawartości

Zablokowane [Plugin] RoundSound


Olgierd
 Udostępnij

Rekomendowane odpowiedzi

Napisano (edytowane)

instalacja.png 

Standardowa. Wrzucamy plugin na serwer + dopisujemy do pliku plugins.ini.

 

 

 

opis.png

Podstawowy plugin od RoundSound'ów + przeróbka, która zapamiętuje nasz wybór na następne mapy.

 

 

 

pobierz.png

Spoiler
#include <amxmodx>
#include <amxmisc>
#include <ColorChat>
#include <nvault>

#define PLUGIN "RoundSound"
#define VERSION "2.1"
#define AUTHOR "speedkill"
// edit Boski Z Polski

new vault;

new Array:g_PathCT,
Array:g_PathTT,
Array:g_SoundNameCT,
Array:g_SoundNameTT;

new bool:g_RoundSound[33],
bool:g_ShowAds[33],
bool:g_FirstPlay,
bool:g_MusicPlaying;

new g_LastSong[96],
g_LastSoundPath[96],
g_Prefix[64],
g_ShowInfo[33],
g_ArraySize[4],
g_Pcvar[5],
g_ValueTeam[2],
g_ShowType,
g_MaxPlayers,
g_PlaylistType,
g_RandomMusic,
g_ShowPlaylist;


new const g_ShowNames[][]={
	"Brak",
	"Czat"
};

new const g_CvarName[][]={
	"Roundsound_ads_time",
	"Roundsound_prefix",
	"Roundsound_random_music",
	"Roundsound_show_type",
	"Roundsound_show_playlist"
};

new const g_CvarValue[][]={
	"120",
	"RoundSound",
	"0",
	"1",
	"1"
};

new const g_LangCmd[][]={
	"say /roundsound",	
	"say_team /roundsound"
};

new const g_LastLangCmd[][]={
	"say /last",
	"say_team /last"
};

enum{
	Chat_Msg = 1
};

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	for(new i = 0; i < sizeof g_LangCmd; i++){
		register_clcmd(g_LangCmd[i], "ShowRsMenu");
	}
	for(new i = 0; i < sizeof g_LastLangCmd; i++){
		register_clcmd(g_LastLangCmd[i], "ShowLastSong");
	}
	register_event("SendAudio", "PlaySoundTT", "a", "2&%!MRAD_terwin");
	register_event("SendAudio", "PlaySoundCT", "a", "2&%!MRAD_ctwin");
	
	register_logevent("RoundStart", 2, "1=Round_Start");
	
	vault = nvault_open("rsy");
	nvault_prune(vault, 0, get_systime() - (86400*28));
	
	for(new i = 0; i < sizeof g_CvarName; i++){
		g_Pcvar[i] = register_cvar(g_CvarName[i], g_CvarValue[i]);
	}
}

public plugin_precache(){
	g_PathCT = ArrayCreate(128);
	g_PathTT = ArrayCreate(128);
	
	g_SoundNameCT = ArrayCreate(96);
	g_SoundNameTT = ArrayCreate(96);
	
	LoadSounds();
}

public plugin_cfg(){
	get_pcvar_string(g_Pcvar[1], g_Prefix, charsmax(g_Prefix));
	
	g_ShowType = get_pcvar_num(g_Pcvar[3]);
	g_RandomMusic = get_pcvar_num(g_Pcvar[2]);
	g_ShowPlaylist = get_pcvar_num(g_Pcvar[4]);
	
	if(get_pcvar_num(g_Pcvar[0]) >= 30){
		set_task(get_pcvar_float(g_Pcvar[0]), "ShowAds",.flags = "b");
	}
	
	g_MaxPlayers = get_maxplayers();
	g_ValueTeam[0] = g_ValueTeam[1] = -1;
}

public client_authorized(id){
	g_RoundSound[id] = true;
	g_ShowAds[id]  = true;
	g_ShowInfo[id] = g_ShowType;
	
	new sid[64];
	get_user_authid(id,sid,63);
	new vaultkey[128];
	new vaultdata[128];
	formatex(vaultkey,charsmax(vaultkey),"%s-rsy",sid);
	
	nvault_get(vault,vaultkey,vaultdata,127);
	
	if(vaultdata[0] == '0')
	{
		g_RoundSound[id] = false;
	}
	else
	{
		g_RoundSound[id] = true;
	}
}

public LoadSounds(){
	new g_Path[128];
	formatex(g_Path[ get_configsdir(g_Path, charsmax(g_Path)) ], charsmax(g_Path), "/RoundSound.ini");
	
	if(file_exists(g_Path)){
		new g_Line[256],
		g_SoundPath[128],
		g_Name[96],
		g_Team[3],
		g_Len;
		
		for(new i = 0; read_file(g_Path, i, g_Line, charsmax(g_Line), g_Len); i++){
			if(!g_Len || !g_Line[0] || g_Line[0] == ';'){
				continue;
			}
			parse(g_Line, g_SoundPath, charsmax(g_SoundPath), g_Name, charsmax(g_Name), g_Team, charsmax(g_Team));
			
			new g_Value = strlen(g_SoundPath) - 4;
			
			log_amx("Path: %s | Title: %s | Team: %s | Format: %s", g_SoundPath, g_Name, g_Team, g_SoundPath[ g_Value ]);
			
			if(equal(g_SoundPath[ g_Value ], ".mp3") || equal(g_SoundPath[ g_Value ], ".wav")){
				if(equal(g_SoundPath[ g_Value ], ".mp3")){
					format(g_SoundPath, charsmax(g_SoundPath), "sound/%s", g_SoundPath);
					precache_generic(g_SoundPath);
				}
				else{
					precache_sound(g_SoundPath);
				}
				if(equal(g_Team, "CT")){
					ArrayPushString(g_PathCT, g_SoundPath);
					ArrayPushString(g_SoundNameCT, g_Name);
					
				}
				else if(equal(g_Team, "TT")){
					ArrayPushString(g_PathTT, g_SoundPath);
					ArrayPushString(g_SoundNameTT, g_Name);
				}
				log_amx("File %s has a good format", g_SoundPath);
			}
			else{
				log_amx("File %s has a bad format", g_SoundPath);
			}
		}
	}
	else{
		set_fail_state("File RoundSound.ini doesn't exist in configs/");
	}
	GetArraySize();
}

public GetArraySize(){
	g_ArraySize[0] = ArraySize(g_PathCT);
	g_ArraySize[1] = ArraySize(g_PathTT);
	g_ArraySize[2] = ArraySize(g_SoundNameCT);
	g_ArraySize[3] = ArraySize(g_SoundNameTT);
}

public ShowRsMenu(id){
	new g_FormatText[64];
	
	new g_Menu = menu_create("\wRoundSound ustawienia", "MenuChoose");
	
	formatex(g_FormatText, charsmax(g_FormatText), "\yRoundsound: \r[\d%s\r]", g_RoundSound[id] ? "ON" : "OFF");
	menu_additem(g_Menu, g_FormatText);
	
	menu_additem(g_Menu, "\rOdsluchaj utwory \yCT \d[\yPlaylista\d]");
	menu_additem(g_Menu, "\yOdsluchaj utwory \rTT \d[\rPlaylista\d]");
	
	formatex(g_FormatText, charsmax(g_FormatText), "\rReklamy: \y[\d%s\y]", g_ShowAds[id] ? "ON" : "OFF");
	menu_additem(g_Menu, g_FormatText);
	
	formatex(g_FormatText, charsmax(g_FormatText), "\yWyswietlanie nazwy \rutworu: \y[\d%s\y]", g_ShowNames[ g_ShowInfo[id] ]);
	menu_additem(g_Menu, g_FormatText);
	
	menu_setprop(g_Menu, MPROP_EXITNAME, "Wyjscie");
	menu_display(id, g_Menu);
}

public MenuChoose(id, g_Menu, g_Item){
	if(g_Item == MENU_EXIT){
		menu_destroy(g_Menu);
		return PLUGIN_HANDLED;
	}
	
	switch(g_Item){
		case 0:{
			rsy(id)
			ColorChat(id, TEAM_COLOR, "^x04[%s]^x03 Roundsound:^x04 %s", g_Prefix, g_RoundSound[id] ? "wlaczony" : "wylaczony");
			ShowRsMenu(id);
		}
		
		case 1..2:{
			ShowPlaylist(id, g_Item);
		}
		
		case 3:{
			g_ShowAds[id] = !g_ShowAds[id];
			ColorChat(id, TEAM_COLOR, "^x04[%s]^x03 Reklamy:^x04 %s", g_Prefix, g_ShowAds[id] ? "wlaczone" : "wylaczone");
			ShowRsMenu(id);
			
		}
		
		case 4:{
			if(g_ShowInfo[id] >= 1){
				g_ShowInfo[id] = -1;
			}
			g_ShowInfo[id]++;
			ShowRsMenu(id);
		}
	}
	menu_destroy(g_Menu);
	return PLUGIN_HANDLED;
}

public rsy(id)
{
	if(g_RoundSound[id])
	{
		g_RoundSound[id] = false;
		new sid[64];
		get_user_authid(id,sid,63);
		new vaultkey[128];
		formatex(vaultkey,charsmax(vaultkey),"%s-rsy",sid);
		nvault_set(vault,vaultkey,"0");
	}
	else
	{
		g_RoundSound[id] = true;
		new sid[64];
		get_user_authid(id,sid,63);
		new vaultkey[128];
		formatex(vaultkey,charsmax(vaultkey),"%s-rsy",sid);
		nvault_set(vault,vaultkey,"1");
	}
}

public ShowPlaylist(id, g_Type){
	new g_FormatText[64],
	g_Name[96];
	
	formatex(g_FormatText, charsmax(g_FormatText), "Playlista \d%s", g_Type == 1 ? "CT" : "TT");
	new g_Menu = menu_create(g_FormatText, "PlaylistChoose");
	
	switch(g_Type){
		case 1:{
			for(new g_Item = 0; g_Item < g_ArraySize[2]; g_Item++){
				if(g_ShowPlaylist){
					ArrayGetString(g_SoundNameCT, g_Item, g_Name, charsmax(g_Name));
				}
				else{
					formatex(g_Name, charsmax(g_Name), "Utwor numer #%d", ( g_Item + 1 ));
				}
				menu_additem(g_Menu, g_Name);
			}
		}
		case 2:{
			for(new g_Item = 0; g_Item < g_ArraySize[3]; g_Item++){
				if(g_ShowPlaylist){
					ArrayGetString(g_SoundNameTT, g_Item, g_Name, charsmax(g_Name));
				}			
				else{
					formatex(g_Name, charsmax(g_Name), "Utwor numer #%d", ( g_Item + 1));
				}
				menu_additem(g_Menu, g_Name);
			}
		}
	}
	g_PlaylistType = g_Type;
	
	menu_setprop(g_Menu, MPROP_BACKNAME, "Powrot");
	menu_setprop(g_Menu, MPROP_NEXTNAME, "Dalej");
	menu_setprop(g_Menu, MPROP_EXITNAME, "Wyjscie");
	menu_setprop(g_Menu, MPROP_NUMBER_COLOR, "\r");
	
	menu_display(id, g_Menu);
}

public PlaylistChoose(id, g_Menu, g_Item){
	if(g_Item == MENU_EXIT){
		menu_destroy(g_Menu);
		return PLUGIN_HANDLED;
	}
	
	new g_SoundPath[128];
	ArrayGetString(g_PlaylistType == 1 ? g_PathCT : g_PathTT, g_Item, g_SoundPath, charsmax(g_SoundPath));
	
	new g_Format = strlen(g_SoundPath) - 4;
	
	if(equal(g_SoundPath[ g_Format ], ".mp3")){
		client_cmd(id, "mp3 play %s", g_SoundPath);
	}
	else{
		client_cmd(id, "spk %s", g_SoundPath);
	}
	ShowPlaylist(id, g_PlaylistType);
	
	return PLUGIN_CONTINUE;
}

public ShowLastSong(id){
	if(g_FirstPlay){
		ColorChat(id, TEAM_COLOR, "^x04[%s]^x03 Ostatni utwor:^x04 %s", g_Prefix, g_LastSong);
	}
	else{
		ColorChat(id, TEAM_COLOR, "^x04[%s]^x03 Nie zostala odegrana zadna^x04 piosenka.", g_Prefix);
	}
}

public RoundStart(){
	g_MusicPlaying = false;
}

public PlaySoundTT(){
	CheckMusic(1);
}

public PlaySoundCT(){
	CheckMusic(2);
}

public CheckMusic(g_Type){
	if(!g_MusicPlaying){
		RandMusic(g_Type);
	}
}

public RandMusic(g_Type){
	new g_SoundPath[128],
	g_SoundName[128],
	g_Name[96],
	g_Format,
	g_FileFormat;
	
	
	switch(g_Type){
		case 1:{
			if(g_RandomMusic){
				g_ValueTeam[0] = random(g_ArraySize[1]);
			}
			else{
				g_ValueTeam[0]++;
				
				if(g_ValueTeam[0] >= g_ArraySize[1]){
					g_ValueTeam[0] = 0;
				}
			}
			
			ArrayGetString(g_PathTT, g_ValueTeam[0], g_SoundPath, charsmax(g_SoundPath));
			ArrayGetString(g_SoundNameTT, g_ValueTeam[0], g_Name, charsmax(g_Name));
		}
		case 2:{
			if(g_RandomMusic){
				g_ValueTeam[1] = random(g_ArraySize[0]);
			}
			else{
				g_ValueTeam[1]++;
				
				if(g_ValueTeam[1] >= g_ArraySize[0]){
					g_ValueTeam[1] = 0;
				}
			}
			
			ArrayGetString(g_PathCT, g_ValueTeam[1], g_SoundPath, charsmax(g_SoundPath));
			ArrayGetString(g_SoundNameCT, g_ValueTeam[1], g_Name, charsmax(g_Name));
		}
	}
	if(!equal(g_LastSoundPath, g_SoundPath)){
		copy(g_LastSong, charsmax(g_LastSong), g_Name);
		copy(g_LastSoundPath, charsmax(g_LastSoundPath), g_SoundPath);
		
		g_Format = strlen(g_SoundPath) - 4;
		
		if(equal(g_SoundPath[ g_Format ], ".mp3")){
			g_FileFormat = 1;
		}
		else{
			g_FileFormat = 2;
		}
		
		formatex(g_SoundName, charsmax(g_SoundName), "Teraz gramy:^x04 %s", g_Name);
		
		for(new i = 1; i <= g_MaxPlayers; i++){
			if(is_user_connected(i) && g_RoundSound[i] && !(is_user_hltv(i))){
				switch(g_FileFormat){
					case 1:{
						client_cmd(i, "mp3 play %s", g_SoundPath);
					}
					case 2:{
						client_cmd(i, "spk %s", g_SoundPath);
					}
				}
				switch(g_ShowInfo[i]){
					case Chat_Msg:{
						if(g_ShowPlaylist){
							ColorChat(i, TEAM_COLOR, "^x04[%s]^x03 %s", g_Prefix, g_SoundName);
						}
					}
				}
			}
		}
		g_MusicPlaying = true;
		g_FirstPlay = true;
	}
	else{
		RandMusic(g_Type);
	}
	return PLUGIN_CONTINUE;
}

public ShowAds(){
	for(new i = 1; i <= g_MaxPlayers; i++){
		if(is_user_connected(i) && g_ShowAds[i]){
			switch(random(4)){
				case 0:{
					ColorChat(i, TEAM_COLOR, "^x04[%s]^x03 Chcesz^x04 %s^x03 roundsound? Napisz^x04 /roundsound", g_Prefix, g_RoundSound[i] ? "wylaczyc" : "wlaczyc");
				}
				case 1:{
					if(g_ShowPlaylist){
						ColorChat(i, TEAM_COLOR, "^x04[%s]^x03 Podobala Ci sie ostatnia piosenka, a nie pamietasz jej nazwy? Napisz^x04 /last", g_Prefix);
					}
				}
				case 2:{
					ColorChat(i, TEAM_COLOR, "^x04[%s]^x03 Chcesz posluchac utworow CT / TT? Napisz^x04 /roundsound", g_Prefix);
				}
				case 3:{
					ColorChat(i, TEAM_COLOR, "^x04[%s]^x03 Chcesz wylaczyc reklamy? Napisz^x04 /roundsound", g_Prefix);
				}
			}
		}
	}
}

public plugin_end(){
	ArrayDestroy(g_PathCT);
	ArrayDestroy(g_PathTT);
	ArrayDestroy(g_SoundNameCT);
	ArrayDestroy(g_SoundNameTT);
}

 

 

Edytowane przez Boski Z Polski

Pozdrawiam fanów,

Boski Z Polski

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Olgierd zmienił tytuł na [Plugin] RoundSound
  • ferstel zablokował ten temat

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie