Advertisement
seroff

Name Users By Seroff

Feb 23rd, 2020
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <regex>
  4.  
  5. new NoChangeName,FixEdNick,g_Logs,LOG_FILE[]="addons/amxmodx/logs/name_users.log",NamesChangesNum[33];
  6. new Regex:re, ret
  7. new szSpam[][]={
  8. "skype", "icq", "connect", "guns", ":27", ":25",":26",":24",":23",":22",":21",":20",
  9. "http:", "https:", "www.", ".net", ".com", ".ua", ".ru", ".info", ".org", ".tv", ".su", ".biz", ".eu", ".uc", ".ee", ".name", ".ucoz",
  10. ".net", ".de", ".uk", ".lv", ".at", ".3dn", ".my", ".su", ".do", ".am", ".es", ".hu", ".ae", ".po", ".pl", ".lt", ".ro",
  11. ".rf",".myl",":28","gamelive","megafrag","amx","sv_","mp_","cl_","gl_"
  12. }
  13.  
  14. public szBug[][]={";",":","@",".","#","$","%","&","+","'","/","\","hostname","rcon","password"}
  15.  
  16. public plugin_init() {
  17. register_plugin("Name Users", "1.0", "Seroff");
  18. register_forward(FM_ClientUserInfoChanged, "forward_client_userinfochanged");
  19. NoChangeName=register_cvar("us_changename","1");
  20. FixEdNick=register_cvar("us_fixname","0");
  21. g_Logs=register_cvar("us_logs","1");
  22.  
  23. new err[32]
  24. re = regex_compile("(?:\w+\.[a-z]{2,4}\b|(?:\s*\d+\s*\.){3})", ret, err, 31, "i")
  25. if (re!=REGEX_OK) server_print("Error: %s (%d)", err, ret)
  26. }
  27.  
  28. public forward_client_userinfochanged(id, buffer) {
  29. if(is_user_hltv(id) || is_user_bot(id)) return 0;
  30. static oldname[32], newname[32];
  31. get_user_name(id, oldname, sizeof (oldname)-1);
  32. engfunc(EngFunc_InfoKeyValue, buffer, "name", newname, sizeof(newname)-1);
  33. if (equal(newname, oldname)){
  34. return FMRES_IGNORED;
  35. }
  36. if(default_name(newname)){
  37. userkick(id,"DefaultName",newname);
  38. }
  39. if(!get_pcvar_num(NoChangeName)){
  40. usernick(id,newname);
  41. if(++NamesChangesNum[id] >= 3){
  42. NamesChangesNum[id]=0;
  43. userkick(id,"Fast NickChanger",newname);
  44. }
  45. }else{
  46. static szUserName[33]; pev(id, pev_netname, szUserName, sizeof(szUserName)-1);
  47. if (szUserName[0] == '^0'){
  48. return FMRES_IGNORED;
  49. }
  50. if(get_pcvar_num(FixEdNick)){
  51. if(!equal(oldname, newname)){
  52. set_user_info(id, "name", oldname);
  53. return FMRES_HANDLED
  54. }
  55. }else{
  56. static szUserInfo[33]; engfunc(EngFunc_InfoKeyValue, buffer, "name", szUserInfo, sizeof(szUserInfo)-1);
  57. if (equal(szUserInfo, szUserName)){
  58. return FMRES_IGNORED;
  59. }
  60. engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", szUserName);
  61. userkick(id,"Запрещается менять ник во время игры на сервере",szUserName);
  62. }
  63. }
  64. return FMRES_SUPERCEDE
  65. }
  66.  
  67.  
  68. bool:default_name(const text[]){
  69. new deff[][]={"Player","unnamed","Free-cs","Butcher","Free-Boost","GS-M","Strikes"}
  70. for(new i=0; i < sizeof(deff); i++){
  71. if(containi(text, deff[i]) != -1){
  72. return true;
  73. }
  74. }
  75. return false
  76. }
  77.  
  78. public usernick(id,szName[]){
  79. new nick_t[32];
  80. nick_t[id]=0;
  81. new matchs = regex_match_c(szName, re, ret);
  82. if(matchs > 0){
  83. userkick(id,"BugNick",szName);
  84. }
  85. if(strlen(szName) < 4){
  86. server_cmd("kick #%d ^"Ваш ник слишком короткий!^"",get_user_userid(id));
  87. return 0;
  88. }
  89. for(new n=0; n < strlen(szName); n++){
  90. if(szName[n]=='.'){
  91. nick_t[id]++
  92. }
  93. }
  94. if(get_pcvar_num(FixEdNick) && (szName[0] == '+' || szName[0] == '#')){
  95. set_user_info(id,"name",szName[1]);
  96. }else if(!get_pcvar_num(FixEdNick) && (szName[0] == '+' || szName[0] == '#')){
  97. userkick(id,"BugNick",szName);
  98. }
  99. for(new i=0; i < sizeof(szBug); i++){
  100. if(containi(szName, szBug[i]) != -1){
  101. if(get_pcvar_num(FixEdNick)){
  102. replace_all(szName,strlen(szName),szBug[i],"");
  103. set_user_info(id,"name",szName);
  104. return 0;
  105. }else{
  106. userkick(id,"BugNick",szName);
  107. return 0;
  108. }
  109. }
  110. }
  111. if(nick_t[id]>=2){
  112. userkick(id,"Spam Nick",szName);
  113. }
  114. if(default_name(szName)){
  115. userkick(id,"DefaultName",szName);
  116. }
  117. for(new i=0; i < sizeof(szSpam); i++){
  118. if(containi(szName, szSpam[i]) != -1){
  119. if(get_pcvar_num(FixEdNick)){
  120. replace_all(szName,strlen(szName),szSpam[i],"");
  121. set_user_info(id,"name",szName);
  122. return 0;
  123. }else{
  124. userkick(id,"Spam Nick",szName);
  125. return 0;
  126. }
  127. }
  128. }
  129. return 0;
  130. }
  131.  
  132. public client_putinserver(id){
  133. if(is_user_bot(id)) return 0;
  134. static UserName[32];
  135. NamesChangesNum[id]=0;
  136. get_user_info(id,"name",UserName,sizeof(UserName)-1);
  137. usernick(id,UserName);
  138. return 0;
  139. }
  140.  
  141. public userkick(id,szReason[],szUserName[]){
  142. user_console(id,"*********************");
  143. if(get_pcvar_num(g_Logs))
  144. {
  145. log_to_file(LOG_FILE,"[Nick Detector] «%s» | Reason : %s",szUserName,szReason);
  146. }
  147. if(get_pcvar_num(NoChangeName)){
  148. user_console(id, "Извините, на сервере запрещена смена ника.");
  149. user_console(id, "Выйдите с сервера, смените свой ник и возвращайтесь.");
  150. }else{
  151. switch(szReason[0]){
  152. case 'F':user_console(id, "Запрещается менять часто ник.");
  153. case 'S':user_console(id, "Запрещается использовать ник со спамом!");
  154. case 'B':user_console(id, "Запрещается использовать ник для осуществления бага!");
  155. case 'D':user_console(id, "Запрещается использовать стандартный ник");
  156. }
  157. }
  158. user_console(id,"Спасибо за понимание.");
  159. user_console(id,"*********************");
  160. server_cmd("kick #%d ^"%s^"",get_user_userid(id),szReason);
  161. }
  162.  
  163.  
  164. stock user_console(id,const msg_content[],any:...){
  165. new msg[192];
  166. new szPrefix[]="Nick Detector";
  167. vformat(msg, sizeof(msg)-1, msg_content, 3);
  168. format(msg,sizeof(msg)-1,"[%s] %s^n",szPrefix,msg);
  169. message_begin(MSG_ONE, 8, {0,0,0}, id);
  170. write_string(msg);
  171. message_end();
  172. }
  173.  
  174. public plugin_end() regex_free(re);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement