|
本帖最后由 xuwenqi 于 2011-1-8 23:11 编辑
注意事项
本插件经过修改
使用环境有所要求
需要服务器支持中文ID(swds.dll控制的,4554的可用ru发的中文补丁)
经过修改,免去了各种修改模块的支持.用AMXX自身的文件编译即可- /*
- 名称:CS中文ID插件
- 作者:PooHoo@老友记
- 来源:http://cs-friends.com.cn
- [2008-3-15](AMXX1.76 以上测试通过)
- 功能:
- 实现 CS 中文ID功能
- 简单的样例插件,从文本文件里读取中文ID设置
- 如果数据量大,建议改用数据库比较理想,管理也比较方便
- 插件安装说明:
- 1,需要使用 ig 修改过的 fakemeta_amxx.dll 模块配合使用
- 替换你原来的`fakemeta_amxx.dll 即可,不影响 fakemeta 里的任何功能
- 2,chinese_id.ini 为中文ID设置文件,放到 \amxmodx\configs\ 目录下
- 按里面的说明添加信息,记住要保存为 UTF8 无签名格式
- 3,把本插件配置放到 plugin.ini 文件的最上面
- 插件开发使用者说明:
- 1,主要是使用 ig_setname 函数,实现中文ID的名字更换
- 其他更好的方法?等待你来发掘。。。
- 2,在你的 fakemeta.ini 里最下面增加下面的函数定义,否则无法编译
- // 设置玩家名字
- // name = 玩家新的名字(超过31个字节无效)
- native ig_setname(id, const newname[])
- 中文ID使用的已知问题:
- 1,按麦克风通话时,中文ID的玩家名字为乱码,无法正确显示。
- 2,玩家在游戏里的改名功能被禁用,如果要改名,需要离线改好再进。
- 3,是否有其他问题???
- 鸣谢:
- [ig & 老友记] 的技术支持与帮助
- http://cs-friends.com.cn
- 修改by Nicky.xu
- 经过修改后,只需要swds.dll文件支持中文ID,Fakemeta这个模块可以用amxx自带的原版
-
- */
- new const PLUGINNAME[] = "中文ID"
- new const VERSION[] = "2.1"
- new const AUTHORS[] = "poohoo @ 老友记"
- #include <amxmodx>
- #include <amxmisc>
- #include <fakemeta>
- new g_SetName[33][32]
- new g_SetAllow[33]
- new FILE[256]
- public plugin_init()
- {
- register_plugin(PLUGINNAME, VERSION, AUTHORS)
- new configsdir[128]
- get_configsdir(configsdir, sizeof(configsdir)-1)
- formatex(FILE, sizeof(FILE)-1, "%s/chinese_id.ini", configsdir)
- if (!file_exists(FILE))
- set_fail_state("File (configs/chinese_id.ini) open error.")
- }
- // 设置 id 需要的名字
- public set_name(id, const newname[])
- {
- if (strlen(newname)<1)
- return
- g_SetAllow[id] = 1
- copy(g_SetName[id], 31, newname)
- //one_name(id, g_SetName[id], 31)
- set_user_info(id, "name", g_SetName[id])
- }
- public client_connect(id)
- {
- remove_task(id)
- g_SetAllow[id] = 0
- }
- public client_putinserver(id)
- {
- // 延时足够的时间,等待 admin 权限认证插件完成权限设置后,再执行更换名字
- set_task(random_float(3.0,3.0), "get_name_from_file", id)
- }
- // 从文件里检查是否有对应的中文ID
- public get_name_from_file(id)
- {
- if (!is_user_connected(id))
- return
-
- new name[32]
- get_user_name(id, name, 31)
- new set = 0
- new hFile = fopen(FILE, "r")
- if (hFile)
- {
- new line[128], tmpName[64], tmpNameCN[64]
- while (fgets(hFile, line, sizeof(line)-1))
- {
- tmpName = ""
- tmpNameCN = ""
- trim(line)
- if (line[0]==';' || line[0]=='/') continue
- parse(line, tmpName,sizeof(tmpName)-1, tmpNameCN,sizeof(tmpNameCN)-1)
- trim(tmpName)
- trim(tmpNameCN)
- if (strcmp(name, tmpName)==0)
- {
- copy(name, 31, tmpNameCN)
- set = 1
- break
- }
- }
- }
- fclose(hFile)
- // 完成后,设置新的名字
- if (set)
- set_name(id, name)
- }
复制代码 |
评分
-
查看全部评分
|