Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <fakemeta>
- #include <regex>
- new NoChangeName,FixEdNick,g_Logs,LOG_FILE[]="addons/amxmodx/logs/name_users.log",NamesChangesNum[33];
- new Regex:re, ret
- new szSpam[][]={
- "skype", "icq", "connect", "guns", ":27", ":25",":26",":24",":23",":22",":21",":20",
- "http:", "https:", "www.", ".net", ".com", ".ua", ".ru", ".info", ".org", ".tv", ".su", ".biz", ".eu", ".uc", ".ee", ".name", ".ucoz",
- ".net", ".de", ".uk", ".lv", ".at", ".3dn", ".my", ".su", ".do", ".am", ".es", ".hu", ".ae", ".po", ".pl", ".lt", ".ro",
- ".rf",".myl",":28","gamelive","megafrag","amx","sv_","mp_","cl_","gl_"
- }
- public szBug[][]={";",":","@",".","#","$","%","&","+","'","/","\","hostname","rcon","password"}
- public plugin_init() {
- register_plugin("Name Users", "1.0", "Seroff");
- register_forward(FM_ClientUserInfoChanged, "forward_client_userinfochanged");
- NoChangeName=register_cvar("us_changename","1");
- FixEdNick=register_cvar("us_fixname","0");
- g_Logs=register_cvar("us_logs","1");
- new err[32]
- re = regex_compile("(?:\w+\.[a-z]{2,4}\b|(?:\s*\d+\s*\.){3})", ret, err, 31, "i")
- if (re!=REGEX_OK) server_print("Error: %s (%d)", err, ret)
- }
- public forward_client_userinfochanged(id, buffer) {
- if(is_user_hltv(id) || is_user_bot(id)) return 0;
- static oldname[32], newname[32];
- get_user_name(id, oldname, sizeof (oldname)-1);
- engfunc(EngFunc_InfoKeyValue, buffer, "name", newname, sizeof(newname)-1);
- if (equal(newname, oldname)){
- return FMRES_IGNORED;
- }
- if(default_name(newname)){
- userkick(id,"DefaultName",newname);
- }
- if(!get_pcvar_num(NoChangeName)){
- usernick(id,newname);
- if(++NamesChangesNum[id] >= 3){
- NamesChangesNum[id]=0;
- userkick(id,"Fast NickChanger",newname);
- }
- }else{
- static szUserName[33]; pev(id, pev_netname, szUserName, sizeof(szUserName)-1);
- if (szUserName[0] == '^0'){
- return FMRES_IGNORED;
- }
- if(get_pcvar_num(FixEdNick)){
- if(!equal(oldname, newname)){
- set_user_info(id, "name", oldname);
- return FMRES_HANDLED
- }
- }else{
- static szUserInfo[33]; engfunc(EngFunc_InfoKeyValue, buffer, "name", szUserInfo, sizeof(szUserInfo)-1);
- if (equal(szUserInfo, szUserName)){
- return FMRES_IGNORED;
- }
- engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", szUserName);
- userkick(id,"Запрещается менять ник во время игры на сервере",szUserName);
- }
- }
- return FMRES_SUPERCEDE
- }
- bool:default_name(const text[]){
- new deff[][]={"Player","unnamed","Free-cs","Butcher","Free-Boost","GS-M","Strikes"}
- for(new i=0; i < sizeof(deff); i++){
- if(containi(text, deff[i]) != -1){
- return true;
- }
- }
- return false
- }
- public usernick(id,szName[]){
- new nick_t[32];
- nick_t[id]=0;
- new matchs = regex_match_c(szName, re, ret);
- if(matchs > 0){
- userkick(id,"BugNick",szName);
- }
- if(strlen(szName) < 4){
- server_cmd("kick #%d ^"Ваш ник слишком короткий!^"",get_user_userid(id));
- return 0;
- }
- for(new n=0; n < strlen(szName); n++){
- if(szName[n]=='.'){
- nick_t[id]++
- }
- }
- if(get_pcvar_num(FixEdNick) && (szName[0] == '+' || szName[0] == '#')){
- set_user_info(id,"name",szName[1]);
- }else if(!get_pcvar_num(FixEdNick) && (szName[0] == '+' || szName[0] == '#')){
- userkick(id,"BugNick",szName);
- }
- for(new i=0; i < sizeof(szBug); i++){
- if(containi(szName, szBug[i]) != -1){
- if(get_pcvar_num(FixEdNick)){
- replace_all(szName,strlen(szName),szBug[i],"");
- set_user_info(id,"name",szName);
- return 0;
- }else{
- userkick(id,"BugNick",szName);
- return 0;
- }
- }
- }
- if(nick_t[id]>=2){
- userkick(id,"Spam Nick",szName);
- }
- if(default_name(szName)){
- userkick(id,"DefaultName",szName);
- }
- for(new i=0; i < sizeof(szSpam); i++){
- if(containi(szName, szSpam[i]) != -1){
- if(get_pcvar_num(FixEdNick)){
- replace_all(szName,strlen(szName),szSpam[i],"");
- set_user_info(id,"name",szName);
- return 0;
- }else{
- userkick(id,"Spam Nick",szName);
- return 0;
- }
- }
- }
- return 0;
- }
- public client_putinserver(id){
- if(is_user_bot(id)) return 0;
- static UserName[32];
- NamesChangesNum[id]=0;
- get_user_info(id,"name",UserName,sizeof(UserName)-1);
- usernick(id,UserName);
- return 0;
- }
- public userkick(id,szReason[],szUserName[]){
- user_console(id,"*********************");
- if(get_pcvar_num(g_Logs))
- {
- log_to_file(LOG_FILE,"[Nick Detector] «%s» | Reason : %s",szUserName,szReason);
- }
- if(get_pcvar_num(NoChangeName)){
- user_console(id, "Извините, на сервере запрещена смена ника.");
- user_console(id, "Выйдите с сервера, смените свой ник и возвращайтесь.");
- }else{
- switch(szReason[0]){
- case 'F':user_console(id, "Запрещается менять часто ник.");
- case 'S':user_console(id, "Запрещается использовать ник со спамом!");
- case 'B':user_console(id, "Запрещается использовать ник для осуществления бага!");
- case 'D':user_console(id, "Запрещается использовать стандартный ник");
- }
- }
- user_console(id,"Спасибо за понимание.");
- user_console(id,"*********************");
- server_cmd("kick #%d ^"%s^"",get_user_userid(id),szReason);
- }
- stock user_console(id,const msg_content[],any:...){
- new msg[192];
- new szPrefix[]="Nick Detector";
- vformat(msg, sizeof(msg)-1, msg_content, 3);
- format(msg,sizeof(msg)-1,"[%s] %s^n",szPrefix,msg);
- message_begin(MSG_ONE, 8, {0,0,0}, id);
- write_string(msg);
- message_end();
- }
- public plugin_end() regex_free(re);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement