搜索
查看: 13139|回复: 20

[AMXX 带源码] 自己修改的admin_sql 内置中文CSID{老友记的}

[复制链接]
发表于 2010-3-13 09:44:00 | 显示全部楼层 |阅读模式 来自 中国–广西–南宁
Dll模块自己去找老友记同志的帖子下吧- -!
咱水平臭又烂大牛勿笑!~
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <cstrike>
  5. #include <dbi>

  6. #define _MAX 32
  7. new g_cmdLoopback[16];
  8. new bool:g_CaseSensitiveName[33];
  9. new amx_mode;
  10. new amx_password_field;
  11. new g_SetAllow[33],g_SetName[33][32];
  12. new g_host[_MAX], g_user[_MAX], g_pass[_MAX], g_dbname[_MAX], g_error[_MAX],g_tabname[_MAX],Sql:g_dbc,Result:g_result

  13. public plugin_init()
  14. {
  15.         register_plugin("Admin Base (SQL)", AMXX_VERSION_STR, "AMXX Dev Team && LoveHuai")
  16.        
  17.         register_forward(FM_ClientUserInfoChanged, "on_FM_ClientUserInfoChanged")
  18.        
  19.         register_dictionary("admin.txt")
  20.         register_dictionary("common.txt")
  21.         amx_mode=register_cvar("amx_mode", "1")
  22.         amx_password_field=register_cvar("amx_password_field", "_pw")
  23. //------------------------------------------------------
  24.         register_cvar("amx_vote_ratio", "0.02")
  25.         register_cvar("amx_vote_time", "10")
  26.         register_cvar("amx_vote_answers", "1")
  27.         register_cvar("amx_vote_delay", "60")
  28.         register_cvar("amx_last_voting", "0")
  29.         register_cvar("amx_show_activity", "2")
  30.         register_cvar("amx_votekick_ratio", "0.40")
  31.         register_cvar("amx_voteban_ratio", "0.40")
  32.         register_cvar("amx_votemap_ratio", "0.40")
  33. //-----------------------------------------------------
  34.         set_cvar_float("amx_last_voting", 0.0)

  35.         format(g_cmdLoopback, 15, "amxauth%c%c%c%c", random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'))

  36.         register_clcmd(g_cmdLoopback, "ackSignal")

  37.         remove_user_flags(0, read_flags("z"))

  38.         new configsDir[64]
  39.         get_configsdir(configsDir, 63)
  40.        
  41.         server_cmd("exec %s/amxx.cfg", configsDir)
  42.         server_cmd("exec %s/sql.cfg", configsDir)

  43.         server_cmd("amx_sqladmins")
  44. }

  45. public client_connect(id)
  46. {
  47.         g_CaseSensitiveName[id] = false;
  48.        
  49.         remove_task(id)
  50.         g_SetAllow[id] = 0
  51. }



  52. public plugin_cfg()
  53. {
  54.         new configsDir[64]
  55.         get_configsdir(configsDir, 63)
  56.         server_cmd("exec %s/sql.cfg", configsDir) //再加载一次避免某些情况下第一次加载不上


  57.         get_cvar_string("amx_sql_host",g_host,_MAX)
  58.         get_cvar_string("amx_sql_user",g_user,_MAX)
  59.         get_cvar_string("amx_sql_pass",g_pass,_MAX)
  60.         get_cvar_string("amx_sql_db",g_dbname,_MAX)
  61.         get_cvar_string("amx_sql_table",g_tabname,_MAX)
  62.         sql_init() //数据库表不存在就新建
  63.         set_task(6.1, "delayed_load")
  64.         return PLUGIN_CONTINUE
  65. }

  66. public sql_init()
  67. {
  68.         g_dbc = dbi_connect(g_host,g_user,g_pass,g_dbname,g_error,_MAX)
  69.         if (g_dbc == SQL_FAILED){
  70.                 log_amx("数据库连接失败")
  71.         } else {
  72.                 dbi_query(g_dbc, "CREATE TABLE IF NOT EXISTS `%s` (  `uid` int(11) NOT NULL auto_increment,  `auth` varchar(32) NOT NULL,  `password` varchar(32) NOT NULL,  `access` varchar(32) NOT NULL,  `flags` varchar(32) NOT NULL,  `cnid` varchar(33) NOT NULL,  PRIMARY KEY  (`uid`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='AMX Mod X Admins' AUTO_INCREMENT=29 ;", g_tabname)
  73.                 dbi_close(g_dbc)
  74.         }
  75.         return PLUGIN_CONTINUE
  76. }

  77. public delayed_load()
  78. {
  79.         new configFile[128], curMap[64], configDir[128]

  80.         get_configsdir(configDir, sizeof(configDir)-1)
  81.         get_mapname(curMap, sizeof(curMap)-1)

  82.         new i=0;
  83.        
  84.         while (curMap[i] != '_' && curMap[i++] != '^0') {/*do nothing*/}
  85.        
  86.         if (curMap[i]=='_')
  87.         {
  88.                 curMap[i]='^0';
  89.                 formatex(configFile, sizeof(configFile)-1, "%s/maps/prefix_%s.cfg", configDir, curMap);

  90.                 if (file_exists(configFile))
  91.                 {
  92.                         server_cmd("exec %s", configFile);
  93.                 }
  94.         }

  95.         get_mapname(curMap, sizeof(curMap)-1)

  96.        
  97.         formatex(configFile, sizeof(configFile)-1, "%s/maps/%s.cfg", configDir, curMap)

  98.         if (file_exists(configFile))
  99.         {
  100.                 server_cmd("exec %s", configFile)
  101.         }
  102.        
  103. }

  104. getAccess(id, name[], ip[], password[])
  105. {
  106.         new index = -1
  107.         new result = 0

  108.         new Flags[2];
  109.         new Access[24];
  110.         new Dw_Password[32];
  111.         new Cn_CSId[32]
  112.         g_CaseSensitiveName[id] = false;
  113.         g_dbc = dbi_connect(g_host,g_user,g_pass,g_dbname,g_error,_MAX)
  114.         if (g_dbc == SQL_FAILED)
  115.                 log_amx("%s %s %s %s   数据库连接失败 错误信息:%s ",g_host,g_user,g_pass,g_dbname,g_error)
  116.         else
  117.         {
  118.                 dbi_query(g_dbc,"set names 'utf8'")
  119.                 g_result = dbi_query(g_dbc,"SELECT * FROM `%s` WHERE auth  = '%s'",g_tabname,name)
  120.                 while (dbi_nextrow(g_result) > 0 )
  121.                 {
  122.                         dbi_result(g_result, "access",Access,23)
  123.                         dbi_result(g_result, "flags",Flags,1)
  124.                         dbi_result(g_result, "password",Dw_Password,31)
  125.                         dbi_result(g_result, "cnid",Cn_CSId,31)
  126.                         index = id
  127.                 }
  128.                 dbi_free_result(g_result)
  129.                 dbi_close(g_dbc)
  130.         }
  131.         if (index != -1)
  132.         {

  133.                 if(equal(Flags,"e"))
  134.                 {
  135.                         result |= 8
  136.                         set_user_flags(id, read_flags(Access))
  137.                        
  138.                         g_SetAllow[id] = 1
  139.                         copy(g_SetName[id], 31, Cn_CSId)
  140.                         //set_task(3.0, "set_name", id)
  141.                        
  142.                         log_amx("管理员:%s (账户^"%s^") (权限 ^"%s^") (地址 ^"%s^")", Cn_CSId, name, Access, ip)
  143.                 }
  144.                 else
  145.                 {
  146.                         if (equal(password, Dw_Password))
  147.                         {
  148.                                 result |= 12
  149.                                 set_user_flags(id, read_flags(Access))
  150.                                
  151.                                 g_SetAllow[id] = 1
  152.                                 copy(g_SetName[id], 31, Cn_CSId)
  153.                                 //set_task(3.0, "set_name", id)
  154.                                
  155.                                 log_amx("管理员:%s (账户^"%s^") (权限 ^"%s^") (地址 ^"%s^")", Cn_CSId, name, Access, ip)
  156.                         }
  157.                         else
  158.                         {
  159.                                 result |= 1
  160.                                
  161.                                 if(equal(Flags,"a"))
  162.                                 {
  163.                                         result |= 2
  164.                                         log_amx("由于密码错误 Kick (账户 ^"%s^") (地址 ^"%s^")", name,ip)
  165.                                 }
  166.                         }
  167.                 }
  168.         }
  169.         else if (get_pcvar_float(amx_mode) == 2.0)
  170.         {
  171.                 result |= 2
  172.         }
  173.         else
  174.         {
  175.                 result |= 8
  176.                 set_user_flags(id, read_flags("z"))
  177.         }
  178.        
  179.         return result
  180. }

  181. accessUser(id, name[] = "")
  182. {
  183.         if(g_CaseSensitiveName[id])
  184.                         return PLUGIN_CONTINUE
  185.         remove_user_flags(id)
  186.         new userip[32],  password[32], passfield[32], username[32]
  187.        
  188.         get_user_ip(id, userip, 31, 1)
  189.        
  190.         if (name[0])
  191.         {
  192.                 copy(username, 31, name)
  193.         }
  194.         else
  195.         {
  196.                 get_user_name(id, username, 31)
  197.         }
  198.        
  199.         get_pcvar_string(amx_password_field, passfield, 31)
  200.         get_user_info(id, passfield, password, 31)
  201.        
  202.         new result = getAccess(id, username, userip, password)
  203.        
  204.         if (result & 1)
  205.         {
  206.                 client_cmd(id, "echo ^"* %L^"", id, "INV_PAS")
  207.         }
  208.        
  209.         if (result & 2)
  210.         {
  211.                 client_cmd(id, "%s", g_cmdLoopback)
  212.                 return PLUGIN_HANDLED
  213.         }
  214.        
  215.         if (result & 4)
  216.         {
  217.                 client_cmd(id, "echo ^"* %L^"", id, "PAS_ACC")
  218.         }
  219.        
  220.         if (result & 8 || result & 12)
  221.         {
  222.                 client_cmd(id, "echo ^"* %L^"", id, "PRIV_SET")
  223.                 set_name(id)
  224.                 g_CaseSensitiveName[id]=true;
  225.         }
  226.        
  227.         return PLUGIN_CONTINUE
  228. }

  229. public ackSignal(id)
  230. {
  231.         server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "NO_ENTRY")
  232.         return PLUGIN_HANDLED
  233. }

  234. public client_authorized(id)
  235.         return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE

  236.        
  237. public client_putinserver(id)
  238. {
  239.         if (!is_dedicated_server() && id == 1)
  240.                 return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
  241.         return PLUGIN_CONTINUE
  242. }


  243. public on_FM_ClientUserInfoChanged(id, buffer)
  244. {
  245.         if (!is_user_connected(id))
  246.                 return FMRES_IGNORED
  247.        
  248.         if (!g_SetAllow[id])
  249.         {
  250.                 new oldname[32], newname[32]
  251.                 get_user_name(id, oldname, 31)
  252.                 get_user_info(id, "name", newname, 31)
  253.                
  254.                 if (strcmp(newname, oldname)==0)
  255.                         return FMRES_IGNORED
  256.                
  257.                 ig_setname(id, oldname)
  258.                
  259.                 return FMRES_SUPERCEDE
  260.         }
  261.        
  262.         g_SetAllow[id] = 0
  263.         ig_setname(id, g_SetName[id])

  264.         return FMRES_SUPERCEDE
  265. }

  266. public set_name(id)
  267. {
  268.         set_user_info(id, "name", "")
  269.         return PLUGIN_CONTINUE
  270. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
发表于 2010-3-13 11:57:57 | 显示全部楼层 来自 中国–山东–济南
我先顶一下
回复

使用道具 举报

发表于 2010-3-14 20:43:18 | 显示全部楼层 来自 中国–广西–南宁
能与论坛相结合的那个才牛。
回复

使用道具 举报

发表于 2010-3-14 20:45:00 | 显示全部楼层 来自 中国–广西–南宁
此源码还可以学习下的。
回复

使用道具 举报

发表于 2010-3-25 21:35:49 | 显示全部楼层 来自 中国–广东–深圳
顶。。。。。。。。。。。。。。。。。
回复

使用道具 举报

发表于 2010-4-7 20:12:26 | 显示全部楼层 来自 中国–广东–东莞
不错 ,支援多少版本的AMXX

我看见扣分 什么情况啊
回复

使用道具 举报

发表于 2010-5-1 15:09:04 | 显示全部楼层 来自 中国–吉林–松原
没钱了 支持一下
回复

使用道具 举报

发表于 2010-7-13 01:09:06 | 显示全部楼层 来自 中国–广东–深圳–宝安区
帐号无法下载
杯具加郁闷中
我的点通速度涨阿涨
回复

使用道具 举报

发表于 2010-7-13 01:15:09 | 显示全部楼层 来自 中国–广东–深圳–宝安区
请问上边的admin_sql是否带有会员到期自动停止的
因为之前我用的是带的
所以问下,用的也放心点
回复

使用道具 举报

发表于 2010-7-13 13:15:22 | 显示全部楼层 来自 中国–广东–汕尾
只是合并了老友记中文ID?
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表