jim_yang前辈请来帮忙下。
关于中文ID说话乱码的问题。如何将一种编译的格式转换另一转格式。也就是在游戏里要让他是中文。到了说话的时候又转为ADSI的格式。原理就这样具体我不说了,反正是要在插件里怎么样让他从一种格式转换另一种,或者是两个格式一起实行。请前辈帮忙下!先谢谢了,我用的是老友记的中文ID回复: jim_yang前辈请来帮忙下。
想解决的朋友和我顶起来。顶到解决为止!回复: jim_yang前辈请来帮忙下。
这个可以吗???<meta charset=UTF-8>
回复: jim_yang前辈请来帮忙下。
没研究过。。。。。。。。。回复: jim_yang前辈请来帮忙下。
很感谢jim_yang前辈的回帖。我把这个代码发上来了。希望jim_yang前辈你能帮我看看。如果将他修改成说话时候的乱码,我知道有很多朋友都想解决的。希望能让使用中文ID的朋友都不在为了这个说话乱码成为一个遗憾,本人为了,这个已经搞了1个多月了。可能是技术上的不足。 再次希望前辈的帮助与解决。。。。。。new const PLUGINNAME[] = "中文ID"
new const VERSION[] = "2.1"
new const AUTHORS[] = "poohoo @ 老友记"
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
new g_RetryOnce
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.")
}
// 名字更改消息
public client_infochanged(id)
{
if (!is_user_connected(id))
return PLUGIN_CONTINUE
// 更换限制标记
if (!g_SetAllow)
{
new oldname, newname
get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31)
if (strcmp(newname, oldname)==0)
return PLUGIN_CONTINUE
// 兼容 sXe 改名
if (equal(newname, "", 10))
{
replace(oldname, 31, " ", "")
formatex(newname, 31, " %s", oldname)
ig_setname(id, newname)
}
else
ig_setname(id, oldname)
return PLUGIN_CONTINUE
}
g_SetAllow = 0
ig_setname(id, g_SetName)
return PLUGIN_CONTINUE
}
// 重名检查
one_name(id, name[], len)
{
new sample, s
copy(sample, 31, name)
for (new i=0; i<33; i++)
{
if (s>0)
formatex(sample, 31, "(%d)%s", s, name)
if (!is_name_inuse(id, sample))
break
s++
}
copy(name, len, sample)
}
is_name_inuse(id, const sample[])
{
new name
for (new i=1; i<=get_maxplayers(); i++)
{
if (!is_user_connected(i)) continue
if (id==i) continue
get_user_name(i, name, 31)
if (strcmp(name, sample)==0)
return 1
}
return 0
}
// 设置 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
// 强制重新连接一次,以解决因为换中文ID后,换图会出现权限认证问题
if (!g_RetryOnce)
{
g_RetryOnce = 1
client_cmd(id, "retry")
}
}
public client_putinserver(id)
{
// 延时足够的时间,等待 admin 权限认证插件完成权限设置后,再执行更换名字
set_task(random_float(5.0,15.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)
}
回复: jim_yang前辈请来帮忙下。
帮顶一下,我也想要。回复: jim_yang前辈请来帮忙下。
继续顶,想解决的朋友都来顶下。。。。。。回复: jim_yang前辈请来帮忙下。
晕!都不想解决啊!我自己继续顶!回复: jim_yang前辈请来帮忙下。
继续顶!顶到搞好为止!回复: jim_yang前辈请来帮忙下。
顶!顶!顶!!!!!!
页:
[1]