找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1427|回复: 7

修改老友记中ID读取MYSQL权限无问题

[复制链接]

该用户从未签到

发表于 2010-1-3 16:48:39 | 显示全部楼层 |阅读模式
我是玩Delphi Pascal的 C语法不是很懂反正我本机测试是能用了
-_,-



  1. new const PLUGINNAME[] = "中文ID"
  2. new const VERSION[]    = "2.1"
  3. new const AUTHORS[]    = "poohoo @ 老友记"

  4. #include <amxmodx>
  5. #include <amxmisc>
  6. #include <fakemeta>
  7. #include <cstrike>
  8. #include <dbi>

  9. new g_RetryOnce[33]
  10. new g_SetName[33][32]
  11. new g_SetFlags[33]
  12. new g_SetAllow[33]
  13. new g_host[33]
  14. new g_user[33]
  15. new g_pass[33]
  16. new g_dbname[33]
  17. new g_tabname[33]
  18. new Sql:g_dbc
  19. new Result:result
  20. public plugin_init()
  21. {
  22.         register_plugin(PLUGINNAME, VERSION, AUTHORS)
  23.         register_forward(FM_ClientUserInfoChanged, "on_FM_ClientUserInfoChanged")
  24.         
  25.         register_cvar("amx_sql_host", "127.0.0.1")
  26.         register_cvar("amx_sql_user", "root")
  27.         register_cvar("amx_sql_pass", "")
  28.         register_cvar("amx_sql_db", "amx")
  29.         register_cvar("amx_sql_table", "admins")
  30.         
  31.         new configsDir[64]
  32.         get_configsdir(configsDir, 63)
  33.         server_cmd("exec %s/sql.cfg", configsDir)
  34.         server_exec()
  35.         
  36.         return PLUGIN_CONTINUE
  37. }
  38. public plugin_cfg()
  39. {
  40.         get_cvar_string("amx_sql_host",g_host,32)
  41.         get_cvar_string("amx_sql_user",g_user,32)
  42.         get_cvar_string("amx_sql_pass",g_pass,32)
  43.         get_cvar_string("amx_sql_db",g_dbname,32)        
  44.         get_cvar_string("amx_sql_table",g_tabname,32)
  45.         
  46.         return PLUGIN_CONTINUE
  47. }
  48. public on_FM_ClientUserInfoChanged(id, buffer)
  49. {
  50.         if (!is_user_connected(id))
  51.                 return FMRES_IGNORED
  52.         if (!g_SetAllow[id])
  53.         {
  54.                 new oldname[32], newname[32]
  55.                 get_user_name(id, oldname, 31)
  56.                 get_user_info(id, "name", newname, 31)
  57.                
  58.                 if (strcmp(newname, oldname)==0)
  59.                         return FMRES_IGNORED
  60.                
  61.                 if (containi(newname, "[NO-sXe-I]")!=-1)
  62.                 {
  63.                         formatex(newname, 31, "[NO-sXe-I] %s", oldname)
  64.                         ig_setname(id, newname)
  65.                 }
  66.                 else
  67.                         ig_setname(id, oldname)
  68.                
  69.                 return FMRES_SUPERCEDE
  70.         }
  71.         
  72.         g_SetAllow[id] = 0
  73.         ig_setname(id, g_SetName[id])
  74.         set_task(5, "getusernew", id)
  75. return FMRES_SUPERCEDE
  76. }
  77. public getusernew(id)
  78. {
  79.    if (!(get_user_flags(id)==g_SetFlags[id])) {  
  80. //这里杯具哈哈不懂C语法所以在也不管他是否规定了
  81.      remove_user_flags(id)
  82.      set_user_flags(id,g_SetFlags[id])
  83.      //log_amx("set user flags")
  84.    }  
  85.    
  86.    new sflags[32]
  87.    get_flags(get_user_flags(id),sflags,31)
  88.    //log_amx("getusernew %s",sflags)
  89. }

  90. one_name(id, name[], len)
  91. {
  92. new sample[32], s
  93. copy(sample, 31, name)
  94. for (new i=0; i<33; i++)
  95. {
  96.         if (s>0)
  97.                 formatex(sample, 31, "(%d)%s", s, name)
  98.                
  99.                 if (!is_name_inuse(id, sample))
  100.                         break
  101.                
  102.                 s++
  103.         }
  104.         copy(name, len, sample)
  105. }
  106. is_name_inuse(id, const sample[])
  107. {
  108. new name[32]
  109. for (new i=1; i<=get_maxplayers(); i++)
  110. {
  111.         if (!is_user_connected(i)) continue
  112.         if (id==i) continue
  113.         
  114.         get_user_name(i, name, 31)
  115.         if (strcmp(name, sample)==0)
  116.                 return 1
  117.         }
  118.         
  119.         return 0
  120. }

  121. public set_name(id, const newname[])
  122. {
  123.         if (strlen(newname)<1)
  124.                 return
  125.         g_SetAllow[id] = 1
  126.         
  127.    g_SetFlags[id]=get_user_flags(id)
  128.    new sflags[32]
  129.    get_flags(g_SetFlags[id],sflags,31)
  130.    //log_amx("old %s",sflags)
  131.          
  132.         copy(g_SetName[id], 31, newname)
  133.         one_name(id, g_SetName[id], 31)
  134.         set_user_info(id, "name", "")      
  135. }   
  136. public client_connect(id)
  137. {
  138.         remove_task(id)
  139.         g_SetAllow[id] = 0
  140.         
  141.         if (!g_RetryOnce[id])
  142.         {
  143.                 g_RetryOnce[id] = 1
  144.                 g_SetFlags[id] = 0
  145.                 client_cmd(id, "retry")
  146.         }
  147. }
  148. public client_putinserver(id)
  149. {
  150.         set_task(1, "get_name_from_file", id)
  151. }
  152. public get_name_from_file(id)
  153. {
  154.         if (!is_user_connected(id))
  155.                 return
  156.         new name[32]
  157.         get_user_name(id, name, 31)
  158.         
  159.         new set = 0
  160.         g_dbc = dbi_connect(g_host,g_user,g_pass,g_dbname)
  161.         if (g_dbc == SQL_FAILED)
  162.                 log_amx("SQL Connection Failed")
  163.         else
  164.         {
  165.                 result = dbi_query(g_dbc,"set names 'utf8'")
  166.                 result = dbi_query(g_dbc,"select * from `%s` where auth  = '%s'", g_tabname, name)
  167.                 if (result == RESULT_FAILED)
  168.                 {
  169.                         log_amx("Sorry,No DataBase or Table")
  170.                 }
  171.                 else if(result == RESULT_NONE)
  172.                 {
  173.                         client_print(id, print_chat, "not cnid")
  174.                 }
  175.                 else
  176.                 {
  177.                         new tmpNameCN[32]
  178.                         dbi_result(result, "cnid",tmpNameCN,31)
  179.                         dbi_free_result(result)
  180.                         parse(tmpNameCN,sizeof(tmpNameCN)-1)
  181.                         trim(tmpNameCN)
  182.                         copy(name, 31, tmpNameCN)
  183.                         set = 1
  184.                         dbi_close(g_dbc)
  185.                 if (set) {
  186.                         set_name(id, name)
  187.                 }
  188.         }
  189. }
  190. }
复制代码

评分

参与人数 1 +5 收起 理由
Pledges + 5 代码很工整 赞一个

查看全部评分

该用户从未签到

发表于 2010-1-3 17:21:38 | 显示全部楼层
什么东西- -!

该用户从未签到

发表于 2010-1-3 17:47:09 | 显示全部楼层
我不会,很羡慕的说

该用户从未签到

发表于 2010-1-3 20:02:44 | 显示全部楼层
一点都不懂的路过

该用户从未签到

发表于 2010-1-3 20:10:23 | 显示全部楼层
唉..不会C语言..

该用户从未签到

发表于 2010-1-4 19:30:04 | 显示全部楼层
真的一点看不懂...

该用户从未签到

发表于 2013-9-10 21:45:52 | 显示全部楼层
不知道到底怎么用,我用了N次了都无法实现。方便的话加我QQ:190516930
求指教!
回复 鲜花 鸡蛋

使用道具 举报

qq709785786 该用户已被删除
发表于 2013-9-10 22:29:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 鲜花 鸡蛋

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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