修改的老友记中文ID2.1.兼容游戏中改名(有更新)
本帖最后由 xuwenqi 于 2011-1-8 23:11 编辑注意事项
本插件经过修改
使用环境有所要求
需要服务器支持中文ID(swds.dll控制的,4554的可用ru发的中文补丁)
经过修改,免去了各种修改模块的支持.用AMXX自身的文件编译即可/*
名称:CS中文ID插件
作者:PooHoo@老友记
来源:http://cs-friends.com.cn
(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,是否有其他问题???
鸣谢:
的技术支持与帮助
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
new g_SetAllow
new FILE
public plugin_init()
{
register_plugin(PLUGINNAME, VERSION, AUTHORS)
new configsdir
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 = 1
copy(g_SetName, 31, newname)
//one_name(id, g_SetName, 31)
set_user_info(id, "name", g_SetName)
}
public client_connect(id)
{
remove_task(id)
g_SetAllow = 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
get_user_name(id, name, 31)
new set = 0
new hFile = fopen(FILE, "r")
if (hFile)
{
new line, tmpName, tmpNameCN
while (fgets(hFile, line, sizeof(line)-1))
{
tmpName = ""
tmpNameCN = ""
trim(line)
if (line==';' || line=='/') 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)
}
忘了说,要加载多个memhack_amxx.dll
包里都有. 你好 提示load失败
AMXMODX v1.76b
OooH Team Flashed1.0 PooHoo@cs-friend3389_Team_Flashrunning
unknown unknownunknown chinese_id_2.ambad load 本帖最后由 amyvox 于 2010-1-1 15:28 编辑
已经搞定 少加载一个文件
谢谢楼主的 提供 修改版出来拉. 本帖最后由 qiang_zhong 于 2010-1-1 17:49 编辑
通过一个文件管理英文名字,中文名字和其他的,全部实现SQL文件缓存,无需多次读取数据库。只需要在换图的时候读取1次数据库,就把英文名字和中文名字缓存到AMXX里面,当用英文名字进入服务器,优先检查是否有匹配的中文名字,有的话,更换,更换后,在验证权限。全部由admin_sql.amxx实现。数据库采用多级验证方式,使用了冗余模式,可配置多个数据库,当A数据故障时,插件自动判断,然后转向B数据库读取数据。现阶段,可设置3个数据库冗余。
没玩过数据库 作个记号以后用 6# qiang_zhong
請問有詳細教程嗎? 9# 260009610
比分按 你所改的ID算,因为admin.amxx只是读权限,跟比分无关
admin.amxx所支持的会员数我暂时没试过有多少个,因为这个不是我改的
10个中文字,是CS内核问题,解决请找服务端某DLL文件
6楼的功能与我这些插件无关(一个读数据库权限,一个读ini的,有啥联系?)