Zasady Serwera (amx plugin)
Od HLDS.pl
(Różnice między wersjami)
m (Zasady Serwera przeniesiono do Zasady Serwera (amx plugin): Poprawka nazwy aby pasowała do wcześniej przyjętego nazewnictwa.) |
(+kategoria +kod pluginu) |
||
Linia 9: | Linia 9: | ||
[[Grafika:Zasady_serwera.jpg]] | [[Grafika:Zasady_serwera.jpg]] | ||
− | = | + | =Plugin= |
[http://board.counter-strike.pl/viewtopic.php?t=94804 Plik zasady.sma] | [http://board.counter-strike.pl/viewtopic.php?t=94804 Plik zasady.sma] | ||
+ | |||
+ | <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() | ||
+ | } | ||
+ | |||
+ | </sma> | ||
=Instalacja= | =Instalacja= | ||
Linia 27: | Linia 168: | ||
amx_rules_delaykick "60" // czas w sekundach, w jakim gracz nie zaakceptuje regulaminu i zostanie wykopany - domyślnie 60 | 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</c> | amx_rules_immunity "0" // 1 oznacza iż admini nie muszą akceptować regulaminu, 0 nakazuje wszystkim jego akceptacje - domyślnie 0</c> | ||
+ | [[kategoria:Pluginy_Amxx]] |
Aktualna wersja na dzień 14:19, 20 cze 2008
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:
Plugin
/* 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