搜索
楼主: cslover

读取mysql的cs中文名字问题?

[复制链接]
 楼主| 发表于 2010-7-26 15:33:40 | 显示全部楼层 来自 广东惠州
本帖最后由 cslover 于 2010-7-26 15:50 编辑
首先,开启admin_sql.amxx
然后把字段Csid改为auth,使插件从auth字段读取英文名。
然后新建一个名为cnname,类型为varchar,字符集设置为utf8
这样就可以读取中文名了! ...
cuikejie 发表于 2010-7-25 09:20

最关键的是,这些步骤没问题,还是读取不了。
admin_sql.amxx和chinese_id.amxx确定开了。。。模块也没问题,之前有搞成功过,但是后来数据库什么的都重装了,就不行了,还是不清楚问题在哪儿?

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 2010-7-26 19:52:46 | 显示全部楼层 来自 河南郑州
把源码发上来。
回复

使用道具 举报

发表于 2010-7-26 19:59:09 | 显示全部楼层 来自 河南郑州
8# cuikejie
name 最大长度32
中文字符UTF-8占3
32/3=10
我的服里
AcFun.Gaming|芙兰朵露[Root]
好像就这样了再长没事过如果太长就会出现密码错误
lovehuai 发表于 2010-7-26 13:27

楼主你看看我给你的回贴,你都不回答!!额的神啊,你把需要的东西打包下吧,,问题找了很久了。。也没头绪。

你的帖子
http://www.dt-club.net/forum/vie ... mp;page=1#pid394753
回复

使用道具 举报

 楼主| 发表于 2010-7-27 01:22:46 | 显示全部楼层 来自 广东惠州
把源码发上来。
cuikejie 发表于 2010-7-26 19:52 chinese_id.sma
  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. }
复制代码
回复

使用道具 举报

发表于 2010-7-27 02:34:12 | 显示全部楼层 来自 河南郑州
new const PLUGINNAME[] = "中文ID"
new const VERSION[]    = "2.1"
new const AUTHORS[]    = "poohoo @ 老友记"

#include
#include
#include
#include
#include

new g_RetryOnce[33]
new g_SetName[33][32 ...
cslover 发表于 2010-7-27 01:22



老友记那个fakemeta_amxx.dll文件你加载了没?
回复

使用道具 举报

 楼主| 发表于 2010-7-27 05:29:55 | 显示全部楼层 来自 广东惠州
15# cuikejie
有的,我控制台看了,模块运行了,如果没加载模块,那么插件应该也运行不了吧。
我觉得,是不是我的数据库有问题了?
回复

使用道具 举报

发表于 2010-7-27 08:50:13 | 显示全部楼层 来自 河南郑州
15# cuikejie
有的,我控制台看了,模块运行了,如果没加载模块,那么插件应该也运行不了吧。
我觉得,是不是我的数据库有问题了?
cslover 发表于 2010-7-27 05:29


不会的,,你把你的admin_sql源码发上来的,我的都好了。。我帮你看看。。
回复

使用道具 举报

 楼主| 发表于 2010-7-28 00:01:55 | 显示全部楼层 来自 广东惠州
17# cuikejie
很感谢cuikejie!:loveliness:
我传上来,你试试能不能用。最好是能用,证明我的数据库有问题。:L 表只要添加cnid字段就行了,其他的会自动建立。

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 2010-7-28 04:19:20 | 显示全部楼层 来自 广西南宁
18# cslover
代码都给你了
你根本就没看代码
你看代码的话肯定知道咋用的
单独用这个就行了
控制台
setinfo _id 你的auth
setinfo _pw 你的password

这个
setinfo _id lovehuai
setinfo _pw xxoxx
因为现在的一些平台都会修改name
所以就不使用原英文name 进行对比数据库里的auth
毕竟不是每个人进你服之前就改下 英文name的

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 2010-7-28 14:46:02 | 显示全部楼层 来自 河南郑州
18# cslover
代码都给你了
你根本就没看代码
你看代码的话肯定知道咋用的
单独用这个就行了
控制台
setinfo _id 你的auth
setinfo _pw 你的password
23795
这个
setinfo _id lovehuai
setinfo _pw xxoxx
因为现在 ...
lovehuai 发表于 2010-7-28 04:19


setinfo _pw xxoxx 中的“_pw”应该是amxx。cfg下的设置密码吧?
回复

使用道具 举报

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

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