- | Afiseaza codul
/* AMXModX Script * * Title: Restrict Names * Author: Brad Jones * * Current Version: 1.2 * Release Date: 2005-09-27 * * This plugin will check a player's name when they enter the server and also if * they change their name mid-game. If the player's name matches a regex restriction * the player will be punished as per the cvar, 'namerest_punishment' or per a * regex-specific punishment can be acheived by placing it in the restrictnames.ini * file as in: "regex" "reason" "punishmentType" "punishmentOption". The "punishmentOption" * field is only needed if "punishmentType" is "0" (rename) or "2" (ban). The value of * "punishmentOption" should be the new name for a player for a rename punishment or the * ban length for a ban punishment. * * Much appreciated help and some code came from JTP10181. * * * CVARS: * * restnames_check_names <0|1> (default: 1) * A value of 1 will turn this plugin on. A value of 0 will turn it off. * * restnames_amxban <0|1> (default: 0) * Indicates method of banning players. * 0: ban via 'banid' * 1: ban via 'amx_ban' (use only if you have the amx_bans plugin installed) * * restnames_check_bots <0|1> (default: 1) * A value of 1 will check bots for name violations. A value of 0 will not check bots. * * restnames_log_cnt <0..11> (default: 2) * Indicates the number of previous month's logs to retain. The current month is always retained. * * CONFIG FILE (.\configs\restrictnames.ini): * * Each line in the file must be in the following format: * "regex" "reason" "punishmentType" "punishmentOption" * * "regex" is the regex phrase that detects a restricted name. * "reason" is the text that is displayed to the user to indicate why they're being punished. * "punishmentType" is the method used to punish a player * 0 = rename to custom name indicated by punishmentOption * 1 = kick the player * 2 = ban the player * "punishmentOption" is only used if the punishment type is rename or ban. * - if punishmentType is 0 (rename), punishmentOption should be the new name for the player (if not provided, the player will be kicked) * - if punishmentType is 2 (ban), punishmentOption should be the ban length in minutes (0 is permanent and the ban is also permanent if not provided) * * * VERSIONS: * * 2005-09-30 1.2a - Fixed compilation error on 1.01 and lower versions of AMXX. Thanks to "ohswildcats". * - Added option to not check immune players for name violations. Thanks to "Hawk552". * * 2005-09-27 1.2 - Added log pruning functionality. New CVAR "restnames_log_cnt" indicates how many months * of previous logs to keep. Only the most recent month to be deleted will be. * - Fixed issue where a player would be warned of impending punishment and then leave the * server before punishment commenced. Players are no longer warned. Thanks to JTP10181 * for discovering this issue. * * 2005-09-06 1.1 - Will now ban when "restnames_amxban" is set to 1. * - Separate log file is being created in the .\logs directory detailing punishments * with more information than before. Punishments were previously being logged in * the amxx log file. * - Will not check name if the user is HLTV. * - CVAR (restnames_check_bots) added to indicate whether to check bots for name violations. * - Removed CVARs "restnames_ban_time" and "restnames_default_name". * - All RENAME punishments now have to have the new name provided as * the "punishmentOption" segment in the config file. If not provided, * the player will be kicked. * - All BAN punishments now need to provide the ban length as * the "punishmentOption" segment in the config file. If not provided, * the ban is permanent. * * 2005-08-29 1.0 Initial release. */ /*----------------------------------------------------------- COMPILER OPTIONS -----------------------------------------------------------*/ //----------------------------------------------------------- // Set the flag that indicates if a player has immunity from // name violation checking, when restnames_immunity is 1. #define IMMUNITY ADMIN_IMMUNITY //----------------------------------------------------------- #include <amxmodx> #include <amxmisc> #include <amxconst> #include <fun> #include <regex> new const PLUGIN[] = "Restrict Names" new const VERSION[] = "1.2a" new const AUTHOR[] = "Brad Jones" new const FILESTEM[] = "restrictnames" // max number of words in word list #define MAX_PHRASE 63 // max length of each phrase #define MAX_PHRASE_LEN 96 // max length of each reason #define MAX_REASON_LEN 128 // max length of each reason #define MAX_PUNISH_LEN 6 // max length of new name (if punishment is rename) #define MAX_NAME_LEN 28 // max length of each config line #define MAX_CONFIG_LINE_LEN 96 + 128 + 6 + 28 + 2 // MAX_PHRASE_LEN + MAX_REASON_LEN + MAX_PUNISH_LEN + MAX_NAME_LEN + 3 spaces (between phrase/reason, reason/punish, punish/newname) new phrase[MAX_PHRASE][MAX_PHRASE_LEN + 1] new reason[MAX_PHRASE][MAX_REASON_LEN + 1] // there should be one 'player friendly' reason for each regex new punish[MAX_PHRASE] = { -1, ... } // each regex has it's own punishment new punishOption[MAX_PHRASE][MAX_NAME_LEN + 1] // 'rename' punishments should supply a base name for the player new phraseNum = 0 new g_cLogFile[32] new bool:g_aPunishQueue[33] // keeps track of punishments so announcement isn't made multiple times public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_cvar("restnames_debug", "-1") register_cvar("restnames_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY) register_dictionary("restrictnames.txt") register_cvar("restnames_check_names", "1") // 0=don't check names, 1=check names register_cvar("restnames_amxban", "0") // 0=ban with 'banid', 1=ban with 'amx_ban' register_cvar("restnames_check_bots", "1") // 0=don't check bots, 1=check bots for name violations register_cvar("restnames_log_cnt", "2") // must be set between 1 and 11. indicates how many previous months of log files to retain register_cvar("restnames_immunity", "0") // 0=all players are checked for violations, 1=everyone except admins //BUGGY: register_concmd("restnames_reloadconfig", "read_config", ADMIN_LEVEL_A, "- reloads the name restriction phrases") maintain_log_files() read_config() } public client_putinserver(id) { g_aPunishQueue[id] = false set_task(30.0,"delayed__client_putinserver",id) } public delayed__client_putinserver(id) { new playerName[32] get_user_name(id, playerName, 31) return validate_name(id, playerName) } public client_infochanged(id) { new playerName[32] get_user_info(id, "name", playerName, 31) if (get_user_team(id) > 0) validate_name(id, playerName) return PLUGIN_CONTINUE } public read_config() { // Reset the global variables to make sure we're reading clean. for (new phraseIdx = 0; phraseIdx < MAX_PHRASE; phraseIdx++ ) { copy(phrase[phraseIdx], MAX_PHRASE_LEN, "") copy(reason[phraseIdx], MAX_REASON_LEN, "") copy(punishOption[phraseIdx], MAX_NAME_LEN, "") punish[phraseIdx] = -1 } new iLen, line = 0 new filename[128] get_configsdir(filename,128) format(filename, 127, "%s/%s.ini", filename, FILESTEM) if (file_exists(filename)) { // Loop through file, reading in each line, stop if we run // out of space in our phrase list or the file is empty new configLine[MAX_CONFIG_LINE_LEN] new punishment[MAX_PUNISH_LEN] // new punishOption[MAX_NAME_LEN] while ((phraseNum < MAX_PHRASE) && (line = read_file(filename, line, configLine, MAX_CONFIG_LINE_LEN, iLen))) { if (iLen > 0) { parse(configLine, phrase[phraseNum], MAX_PHRASE_LEN - 1, reason[phraseNum], MAX_REASON_LEN, punishment, MAX_PUNISH_LEN, punishOption[phraseNum], MAX_NAME_LEN) punish[phraseNum] = str_to_num(punishment) if (punish[phraseNum] == 0 && strlen(punishOption[phraseNum]) == 0) punish[phraseNum] = 1 ++phraseNum } } log_amx("%L", LANG_SERVER, "CONFIG_LOADED", phraseNum, filename) } else { log_amx("%L", LANG_SERVER, "CONFIG_LOAD_ERROR", filename) } } public maintain_log_files() { // get the current month number new cCurrentMonth[3] get_time("%m", cCurrentMonth, 2) // set the current log file format(g_cLogFile, 31, "%s%s.log", FILESTEM, cCurrentMonth, 31) // delete old log file new iPrevMonthsToKeep = min(max(get_cvar_num("restnames_log_cnt"), 0), 11) // must keep between 0 and 11 months if (iPrevMonthsToKeep < 11) // always retain the current month { new iCurrentMonth = str_to_num(cCurrentMonth) new iMonthToDelete = constraint_offset(1, 12, iCurrentMonth, (-iPrevMonthsToKeep - 1)) new cLogToDelete[128] get_localinfo("amxx_logdir", cLogToDelete, 127) if (iMonthToDelete < 10) format(cLogToDelete, 127, "%s/%s0%d.log", cLogToDelete, FILESTEM, iMonthToDelete) else format(cLogToDelete, 127, "%s/%s%d.log", cLogToDelete, FILESTEM, iMonthToDelete) if (file_exists(cLogToDelete)) delete_file(cLogToDelete) } } public validate_name(id, playerName[]) { if (get_cvar_num("restnames_check_names") && !is_user_hltv(id)) { if (get_cvar_num("restnames_immunity") && get_user_flags(id) & IMMUNITY) return true if (is_user_bot(id) && !get_cvar_num("restnames_check_bots")) return true if (g_aPunishQueue[id]) return false new phraseIdx new matchingSegment[32] if (is_name_bad(playerName, phraseIdx, matchingSegment)) { g_aPunishQueue[id] = true // Punish the player. switch(punish[phraseIdx]) { case 0: rename_player(id, reason[phraseIdx], punishOption[phraseIdx]) case 1: kick_player(id, reason[phraseIdx]) case 2: ban_player(id, reason[phraseIdx], punishOption[phraseIdx]) } // If the player was renamed, give personal notification of reason. if (punish[phraseIdx] == 0) { set_hudmessage(255,255,110,-1.0,0.35,0,3.0,5.0,0.1,0.1, 2) show_hudmessage(id, "%L", id, "RENAME_NOTIFY_PLAYER", reason[phraseIdx]) } // Log the transgression. switch (punish[phraseIdx]) { case 0: log_to_file(g_cLogFile, "%L", LANG_SERVER, "RENAME_LOG_ENTRY", playerName, matchingSegment, phraseIdx + 1, phrase[phraseIdx], reason[phraseIdx]) case 1: log_to_file(g_cLogFile, "%L", LANG_SERVER, "KICK_LOG_ENTRY", playerName, matchingSegment, phraseIdx + 1, phrase[phraseIdx], reason[phraseIdx]) case 2: log_to_file(g_cLogFile, "%L", LANG_SERVER, "BAN_LOG_ENTRY", playerName, matchingSegment, phraseIdx + 1, phrase[phraseIdx], reason[phraseIdx]) } // Notify the masses that there was a scofflaw in our midst. switch (punish[phraseIdx]) { case 0: client_print(0, print_chat, "%L", LANG_PLAYER, "RENAME_NOTIFY_ALL", playerName, reason[phraseIdx]) case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "KICK_NOTIFY_ALL", playerName, reason[phraseIdx]) case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "BAN_NOTIFY_ALL", playerName, reason[phraseIdx]) } g_aPunishQueue[id] = false return false } } return true } public is_name_bad(const playerName[], &phraseIdx, matchingSegment[]) { new Regex:regexid new num, error[5], lplayerName[32] copy(lplayerName, 31, playerName) strtolower(lplayerName) for (new i = 0 ; i < phraseNum ; i++) { regexid = regex_match(lplayerName, phrase, num, error, 4) if ( (regexid >= REGEX_OK) ) { regex_substr(regexid, 0, matchingSegment, 31) phraseIdx = i regex_free(regexid) return true } } return false } public rename_player(id, reasonMatch[], newName[]) { new name[33] format(name, 32, "%s (%i)", newName, id) if (is_user_alive(id)) // client_cmd(id, "name ^"%s^"", name) set_user_info(id, "name", name) else if (is_user_connected(id)) { spawn(id) // client_cmd(id, "name ^"%s^"", name) set_user_info(id, "name", name) user_kill(id, 1) } } public kick_player(id, reasonMatch[]) { new userid = get_user_userid(id) server_cmd("kick #%d %L", userid, id, "KICK_REASON", reasonMatch) } public ban_player(id, reasonMatch[], banLengthStr[]) { new userid = get_user_userid(id) new banLength = str_to_num(banLengthStr) new banReason[256] format(banReason, 255, "%L", id, "BAN_REASON", reasonMatch) if(!get_cvar_num("restnames_amxban")) { server_cmd("banid %i #%i;writeid", banLength, userid) server_cmd("kick #%i %s", userid, banReason) } else { new authid[32] get_user_authid(id, authid, 31) server_cmd("amx_ban %i %s %s", banLength, authid, banReason) } } #if !defined AMXX_VERSION_NUM public abs(x) { return x>0 ? x : -x; } public constraint_offset(low, high, seed, offset) { new numElements = high - low + 1; offset += seed - low; if (offset >= 0) return low + (offset % numElements); else return high - (abs(offset) % numElements) + 1; return 0; // Makes the compiler happy -_- } #endif
Modificare Restrict Names
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
-
- Membru, skill 0
- Posts: 22
- Joined: 13 Apr 2011, 04:56
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Has thanked: 13 times
- Been thanked: 1 time
- Contact:
Vreau si eu daca se poate sa imi modificati restrict names, daca am numele NewPlayer.ro ( cel setat de mine) sa numai efectueze iar comanda pe el si daca am numele Romania sau Robert sa nu il mai schimbe, sa schimbe doar ce are .ro
-
- Membru, skill +1
- Posts: 387
- Joined: 19 Jul 2013, 15:51
- Detinator Steam: Nu
- Reputatie: Restrictie PM
- Has thanked: 11 times
- Been thanked: 35 times
Tumpach wrote:Vreau si eu daca se poate sa imi modificati restrict names, daca am numele NewPlayer.ro ( cel setat de mine) sa numai efectueze iar comanda pe el si daca am numele Romania sau Robert sa nu il mai schimbe, sa schimbe doar ce are .ro
folosestel pe al meu : http://www.extreamcs.com/forum/amxmodx/ ... 26214.html
-
- Membru, skill 0
- Posts: 22
- Joined: 13 Apr 2011, 04:56
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Has thanked: 13 times
- Been thanked: 1 time
- Contact:
LordOfNothing wrote:Tumpach wrote:Vreau si eu daca se poate sa imi modificati restrict names, daca am numele NewPlayer.ro ( cel setat de mine) sa numai efectueze iar comanda pe el si daca am numele Romania sau Robert sa nu il mai schimbe, sa schimbe doar ce are .ro
folosestel pe al meu : http://www.extreamcs.com/forum/amxmodx/ ... 26214.html
Eu as dori daca se poate sa ii schimbe numele, nu sa primeasca kick.
-
- Membru, skill +1
- Posts: 387
- Joined: 19 Jul 2013, 15:51
- Detinator Steam: Nu
- Reputatie: Restrictie PM
- Has thanked: 11 times
- Been thanked: 35 times
gata iam facut un update acu ii schimba doar numele dar sa nu uiti :
1. Nu va functiona pe serverele "STEAM"
2. Iti trebuie un fisier names.ini unde sa pui numele ilegale !(in configs)
sursa :
1. Nu va functiona pe serverele "STEAM"
2. Iti trebuie un fisier names.ini unde sa pui numele ilegale !(in configs)
sursa :
- sma | Afiseaza codul
-
- Membru, skill 0
- Posts: 22
- Joined: 13 Apr 2011, 04:56
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Has thanked: 13 times
- Been thanked: 1 time
- Contact:
LordOfNothing wrote:gata iam facut un update acu ii schimba doar numele dar sa nu uiti :
1. Nu va functiona pe serverele "STEAM"
2. Iti trebuie un fisier names.ini unde sa pui numele ilegale !(in configs)
sursa :
- sma | Afiseaza codul
Am facut un fisier names.ini in configs, am adaugat cuvintele
www.
.ro
.com
Player
Si nu functioneaza, cand am facut names.ini a mai fost facut inca unu si nu puteam sa il sterg.