Zasady Serwera (amx plugin)

Od HLDS.pl
Skocz do: nawigacji, wyszukiwania

Spis treści

Opis

Proste zasady serwera mojego autorstwa. Gracz wchodząc na serwer musi je zaakceptować, inaczej zostanie wykopany. Plugin ma kilka "zabezpieczeń" których nie mają inne, są nimi:

  • Wyłączone komendy radiowe dopóki gracz nie zaakceptuje zasad (aby nie mógł "zasłonić" komendami radiowymi regulaminu)
  • Jeżeli mimo to znajdzie na to jakiś sposób na ukrycie zasad to po określonym czasie (domyślnie minuta) dostaje kicka za nie zaakceptowanie

Pojawiają się ona od razu po wejściu do drużyny. Po akceptacji/odrzuceniu regulaminu dodatkowo pojawia się informacja na chacie. Całość prezentuje się następująco:

Zasady serwera.jpg

Plugin

Plik zasady.sma

/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <amxmisc>
 
#define PLUGIN "Akceptacja zasad"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"
 
#define Keys (1<<0)|(1<<1)
 
new enabled
new delay
new immunity
new file[84]
new joined[33], accepted[33]
 
public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("TeamInfo","join_team","a","2=TERRORIST","2=CT")
	
	enabled = register_cvar("amx_rules_enabled","1")
	delay = register_cvar("amx_rules_delaykick","60.0")
	immunity = register_cvar("amx_rules_immunity","0")
	
	register_clcmd("radio1","hook")
	register_clcmd("radio2","hook")
	register_clcmd("radio3","hook")
	
	register_menucmd(register_menuid("Zasady serwera"), Keys, "klawisze")
	
	static configsdir[64]	
	get_localinfo("amxx_configsdir", configsdir, 63)	
	format(file , 83 , "%s/rules.txt" , configsdir)
	
	if(!file_exists(file)) 
	{
		write_file(file, "; Wpisz tutaj swoje zasady!")
		write_file(file, "; Linie zaczynajace sie od ; to komentarze")
	}	
}
 
public join_team()
{
	if(!get_pcvar_num(enabled))
		return PLUGIN_CONTINUE
		
	// pobrano z cs-puchatek.pl
	new id = read_data(1)
	
	if(get_pcvar_num(immunity) && get_user_flags(id) & ADMIN_KICK)
		return PLUGIN_CONTINUE
	
	joined[id]++
	
	if(joined[id] != 2) // check for first join
		return PLUGIN_CONTINUE	
	
	new i, num, text[127], rules[440]
	
	for(i = 0; read_file(file, i, text, 127, num); i++) 
	{
		if(num > 0 && text[0] != ';') 
		{
			add(rules,439,text)
			add(rules,439,"^n")
		}
	}
	
	new body[512]
	formatex(body,511,"\dZasady serwera:^n\r%s^n\yAkceptujesz zasady?^n\w1. Nie^n2. Tak^n",rules)	
	show_menu(id, Keys, body, -1, "Zasady serwera")
	
	set_task(get_pcvar_float(delay),"check_player",id)
	
	return PLUGIN_CONTINUE
}
 
public klawisze(id, key) 
{
	new name[33], msg[100]
	get_user_name(id,name,32)
	
	switch (key) 
	{
		case 0: 
		{			
			formatex(msg,99,"^x04%s nie zaakceptowal zasad serwera.",name)			
			for(new i = 1; i <= get_playersnum(); i++)
				print_message(i,msg)			
			
			server_cmd("kick #%d Nie zaakceptowales zasad",get_user_userid(id)) 
		}
		case 1:
		{
			formatex(msg,99,"^x04%s zaakceptowal zasady serwera.",name)			
			for(new i = 1; i <= get_playersnum(); i++)
				print_message(i,msg)	
			
			print_message(id,"^x03Zyczymy milej gry na serwerze.")
			// pobrano z cs-puchatek.pl
			accepted[id] = 1
		}
	}
}
 
public client_disconnect(id)
{
	joined[id] = 0
	accepted[id] = 0
}
 
public check_player(id)
{
	if(!accepted[id])
		server_cmd("kick #%d Nie zaakceptowales zasad!",get_user_userid(id))
}
 
public hook(id)
{
	if(!accepted[id])
		return PLUGIN_HANDLED	
		
	return PLUGIN_CONTINUE
}
 
public print_message(id, msg[]) 
{	
	if(!is_user_connected(id))
		return	
	
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), {0,0,0}, id)
	write_byte(id)
	write_string(msg)
	message_end()
}

Instalacja

  • Ściągamy z punktu download plik .sma.
  • Wchodzimy na przeglądarkowy kompilator pluginów AMXX, klikamy na "Przeglądaj", wybieramy plik zasady.sma oraz klikamy "Compile".
  • Ściągamy skompilowany plugin na dysk. Łączymy się na FTP serwera, wrzucamy plik zasady.sma do addons/amxmodx/scripting oraz zasady.amxx do addons/amxmodx/plugins.
  • Edytujemy plik plugins.ini oraz na jego końcu dopisujemy zasady.amxx.

Konfiguracja

  • Tworzymy nowy plik o nazwie rules.ini oraz wpisujemy do niego zasady serwera (* Notka * - Nie wpisuj nigdzie słów "zasady serwera" itd. bo plugin sam je pokaże - wpisz same regułki)
  • Uploadujemy ten plik do katalogu addons/amxmodx/configs

To na tyle. Zasady serwera będą już działać, lecz dla bardziej wymagających są CVAR'y (konfiguracja ich polega na dopisaniu do pliku amxx.cfg bądź server.cfg linijki w postaci nazwa_cvar "wartość", bez tekstu za znakami //)

amx_rules_enabled "1" // 1 włącza zasady, 0 wyłącza - domyślnie 1
amx_rules_delaykick "60" // czas w sekundach, w jakim gracz nie zaakceptuje regulaminu i zostanie wykopany - domyślnie 60
amx_rules_immunity "0" // 1 oznacza iż admini nie muszą akceptować regulaminu, 0 nakazuje wszystkim jego akceptacje - domyślnie 0 
Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia