PHP Code:
/*
* If you want change server password Say/Say Team /set_pw
*
* If you want know server password Say/Say Team /pw OR /pw2all for all players
*/
#include <amxmodx>
#include <amxmisc>
#define passlen 8
#define ADMIN_ACCESS ADMIN_MAP
new players[32], num
new Reason[] = "You can't play on this server without ADMIN"
public plugin_init() {
register_plugin("ADM Only + Rand Pass","3.0","Z@C")
register_cvar("adm_for_cw", "1")
register_logevent("reset_pass",2,"1=Round_Start")
register_clcmd("say /pw","show_pass")
register_clcmd("say_team /pw","show_pass")
register_clcmd("say /pw2all","show_pass_all")
register_clcmd("say_team /pw2all","show_pass_all")
register_clcmd("say /set_pw","change_pass")
register_clcmd("say_team /set_pw","change_pass")
}
public client_authorized(id) {
if (get_cvar_num("adm_for_cw") == 1) {
if (!is_user_hltv(id) || !is_user_bot(id)) {
new admin = 0
new hltv = 0
get_players(players, num)
for(new i = 0; i <= num; i++) {
if (is_user_hltv(players[i])) {
hltv++
}
if (access(players[i], ADMIN_ACCESS)) {
admin++
}
}
if (!access(id, ADMIN_ACCESS) && ((num == 0) || ((num == 1) && ((hltv == 1) || (admin == 0))))) {
server_cmd("kick #%d %s", id, Reason)
admin = 0
hltv = 0
}
if (access(id, ADMIN_ACCESS) && (admin == 0)) {
set_task(15.0, "change_pass", id)
}
}
}
/*
if (get_cvar_num("adm_for_cw") == 1) {
if (access(id, ADMIN_ACCESS) && (admin == false)) {
set_task(15.0, "change_pass", id)
}
}
*/
}
public change_pass(id) {
if (access(id, ADMIN_ACCESS) && (get_cvar_num("adm_for_cw") == 1)) {
new new_pass[passlen]
set_cvar_string("sv_password", "")
for(new p = 0; p < passlen; p++) {
format(new_pass, passlen, "%s%c", new_pass, random_num('A','z'))
}
set_cvar_string("sv_password", new_pass)
client_print(id, print_chat, "Password is set: %s", new_pass)
}
return PLUGIN_HANDLED
}
public show_pass(id) {
if ((get_user_team(id) == 3) || is_user_hltv(id)){
return PLUGIN_HANDLED
}
new view_pass[passlen]
get_cvar_string("sv_password", view_pass, passlen)
client_print(id, print_chat, "Server Password: %s", view_pass)
return PLUGIN_HANDLED
}
public show_pass_all(id) {
if ((get_user_team(id) == 3) || is_user_hltv(id)){
return PLUGIN_HANDLED
}
new view_pass[passlen]
get_cvar_string("sv_password", view_pass, passlen)
for(new i = 1; i <= get_maxplayers(); i++) {
if (get_user_team(i) == 3) {
return PLUGIN_CONTINUE
} else {
client_print(id, print_chat, "Server Password: %s", view_pass)
}
}
return PLUGIN_HANDLED
}
public reset_pass() {
if (get_cvar_num("adm_for_cw") == 1) {
new res_pass[passlen]
get_cvar_string("sv_password", res_pass, passlen)
get_players(players, num)
if ((num < 2) && !equali(res_pass,"")) {
set_cvar_string("sv_password", "")
}
}
}
public client_disconnect(id) {
if (access(id, ADMIN_ACCESS) && (get_cvar_num("adm_for_cw") == 1)) {
new admin = 0
for(new i = 1; i <= get_maxplayers(); i++) {
if (access(i, ADMIN_ACCESS)) {
admin++
}
}
if (admin == 0) {
for(new i = 1; i <= get_maxplayers(); i++) {
if (!is_user_hltv(i)) {
server_cmd("kick #%d %s", i, Reason)
}
}
set_cvar_string("sv_password", "")
}
}
}
authorized:
if player is reconnect he is connect,but must kick with reason
__________________
HLDS protocol 48 (CS 1.1.2.6 build 4883 on FreeBSD 9.0)
AMXX v1.8.1.3746 | METAMOD v1.19p32 | DProto 0.9.87
Web: Nginx 1.0.10 (build 1.1), Apache 2.2.21, PHP 5.3.8, MySQL 5.5.17
Last edited by Z@C; 05-20-2007 at 06:36.
|