找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 59271|回复: 188

赛盟原创CS中文ID插件!!!

    [复制链接]

该用户从未签到

发表于 2008-3-16 18:16:11 | 显示全部楼层 |阅读模式
用法: 安装中文聊天软件 http://bbs.simen.cn/viewthread.php?tid=42429&extra=page%3D1

进入游戏按Y输入
name 中文ID
注意name后面有空格
运行需要memhack这个module(安装方法:把memhack_amxx.dll放到cstrike\addons\amxmodx\modules,并在strike\addons\amxmodx\configs\modules.ini里加上一行memhack)

CVars:
utf8name 1 开启按Y输入"name 中文ID" 改名功能(默认)
utf8name 0 关闭

u_needaccess 1 需要权限ADMIN_RESERVATION才能改中文ID
u_needaccess 0 不检查用户权限(默认)

u_autoname 1 登录时根据英文ID自动改名
u_autoname 0 关闭此功能(默认)

使用这个功能要在addons\amxmodx\data目录下建立一个文件names_utf8.txt并以utf-8编码保存
格式如下

英文名1
中文名1
英文名2
中文名2
英文名3
中文名3

依此类推


更新日志:

12/1/2008
v0.18
- 修正一些错误
- 如果想在改中文名后自动恢复原有权限,可以将251-256行以及264-274行的代码的注释标记(/*和*/)去掉.(如果op的中文帐号没有密码保护而又要开自动恢复权限功能的话,建议禁止改名玩家自行改名(utf8name 0),以防其他玩家冒名顶替)

4/27/2008
v0.15
- CVar utf8name以及u_needaccess作用改变, utf8name改为玩家按Y输入"name 中文ID" 改名功能的开关而非所有功能的开关(因作者疏忽此功能没实现,v0.18已修正),u_needaccess对于登录服务器改名以及动态改名功能均有效
- 如果中文名字有重复,会在前面加上类似"(1)"的标记
- 玩家进入游戏以后才会检查是否要自动换中文名

3/25/2008
v0.12
检查名字中是否含有字符'\'
修改get_name()函数以方便修改其他有冲突的插件.用它直接替换get_user_name()即可

3/24/2008
v0.11
修正再次改名以后不能换回原来中文ID的bug

3/19/2008
v0.10
增加一个CVar  u_autoname

3/17/2008
v0.08
增加一个CVar  u_needaccess
改进查找/name/键位的算法

name.zip
memhack.rar (41.27 KB, 下载次数: 5109)



[ 本帖最后由 Simen.newbie 于 2008-12-12 16:25 编辑 ]

name.zip

13.42 KB, 下载次数: 1859

memhack_source.rar

35.99 KB, 下载次数: 1484

该用户从未签到

 楼主| 发表于 2008-3-16 18:17:54 | 显示全部楼层
name.zip - amxx插件/代码
memhack.rar - memhack
memhack_source.rar - memhack代码

请确认你的CS版本是3266以上,amxx版本1.75以上
已知问题:
语音时名字显示为乱码(无法解决,貌似要修改客户端关于语音那个dll文件)
某些插件top排名显示为乱码(强制使用UTF-8编码应该就能解决问题,我不懂html~~嘻嘻)

不能从MySQL数据库读取中文id的解决办法:
在admin.sma里,找到
query = SQL_PrepareQuery(sql,"SELECT `auth`,`password`,`access`,`flags` FROM `%s`", table)
在这一行之前插入以下2句:
query = SQL_PrepareQuery(sql,"SET NAMES 'UTF8'")
SQL_Execute(query)

本插件可能会跟某些插件冲突
解决方法:修改插件代码,用下面这个函数代替get_user_name()
#include <fakemeta>
#include <memhack>
stock get_name(id, name[], len)
{
&#160; &#160; &#160; &#160; new buffer = engfunc(EngFunc_GetInfoKeyBuffer, id)
&#160; &#160; &#160; &#160; new strtmp1[256]
&#160; &#160; &#160; &#160; copy_infokey_buffer(buffer, strtmp1, 255)
&#160; &#160; &#160; &#160; new offset = contain(strtmp1, "\name\") + 6
&#160; &#160; &#160; &#160; new thischr
&#160; &#160; &#160; &#160; new i
&#160; &#160; &#160; &#160; for (;;i++)
&#160; &#160; &#160; &#160; {
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; thischr = memhack_get_char(buffer + offset + i, MEM_NULLBASE, MEMTYPE_DATA, MEM_SIGNED)
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; if (thischr == '\' || thischr == 0)
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; {
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; name[i] = 0
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; break
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; else
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; {
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; name[i] = thischr
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160;
&#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160; name[len - 1] = 0
}

[[i] 本帖最后由 Simen.newbie 于 2008-12-12 16:30 编辑 [/i]]

该用户从未签到

发表于 2008-3-16 18:22:19 | 显示全部楼层
啊,原来是用的新模块啊,厉害!

该用户从未签到

 楼主| 发表于 2008-3-16 18:34:38 | 显示全部楼层
逛alliedmods的时候发现有这个模块,想到可以用来写中文ID插件

该用户从未签到

发表于 2008-3-16 18:43:09 | 显示全部楼层
簡直太黃太暴利了!!!!!!

该用户从未签到

发表于 2008-3-16 18:47:42 | 显示全部楼层
陈冠希~~~~~~~~~~~~~~~~~~

该用户从未签到

发表于 2008-3-16 18:48:44 | 显示全部楼层
太厉害了~NB,我们都爱你

该用户从未签到

发表于 2008-3-16 18:59:59 | 显示全部楼层
只能用saycn吗

该用户从未签到

发表于 2008-3-16 19:18:28 | 显示全部楼层
先收藏一会看!!!!!!!!!!

该用户从未签到

发表于 2008-3-16 19:19:05 | 显示全部楼层
你可以变通源码呀,没说非要saycn!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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