itsuccess 发表于 2007-3-13 02:05:04

如何实现更改玩家名字

不用client_cmd等客户端命令,像get_user_name,如果没有set_user_name这种函数那应该怎么样实现在服务器更改玩家名字呢,请高手指点迷经....

Rulzy 发表于 2007-3-13 12:50:05

回复: 如何实现更改玩家名字

使用 client_cmd 能实现了,为什么还要使用其他方法呢?有什么实际意义?

jop 发表于 2007-3-13 18:17:14

回复: 如何实现更改玩家名字


#include <fakemeta>

// name change.
stock set_user_name(id, name[])
{
   engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer,id), "name", name)
}


经测试可用,但更换名字时如果玩家是死亡状态,则名字更换信息会在活着的时候才被执行
如果需要死亡状态也进行更换,请参考 No sXe 插件代码

Rulzy 发表于 2007-3-13 20:02:23

回复: 如何实现更改玩家名字

应该还要设置玩家的KeyValue

itsuccess 发表于 2007-3-13 21:36:25

回复: 如何实现更改玩家名字

client_cmd 应该是相当于在客户端打上命令
如 say "中文名"
客户端不接受.
但是如果在服务器直接设置中文名,客户端应该没有理由不承认的,即使是乱码也要显示出来吧...
CS1.6客户端应该是支持中文的...

jop 发表于 2007-3-13 23:09:30

回复: 如何实现更改玩家名字

Post by itsuccess
client_cmd 应该是相当于在客户端打上命令
如 say "中文名"
客户端不接受.
但是如果在服务器直接设置中文名,客户端应该没有理由不承认的,即使是乱码也要显示出来吧...
CS1.6客户端应该是支持中文的...

猜到你的意图。。可惜这想法早已试过,无效。
关于中文名支持问题,已经尝试了很多方法,
包括你可能不知道的方法,直接更改 netname,
如果直接更改 netname 为中文后,当你攻击队友,
左下角可以显示中文名字,但计分版和右上角依然是英文的。

以前的测试结论:1.6 engine 对名字的检查非常严格,只能是字母及个别特殊字符,其他全部都会被过滤(服务器端和客户端),如果名字里包含非法字符,会强制进行删除或更换,直到合格为止。

也许。。。继续努力吧。

注:修正上面的换名字代码。

itsuccess 发表于 2007-3-15 01:56:55

回复: 如何实现更改玩家名字

看来只有破解服务器了,再加个客户端补丁.
这个想法应该结束了...

apocalyptic 发表于 2007-3-15 12:33:48

回复: 如何实现更改玩家名字

记分板似乎只有在Source引擎下才能支持中文字符的……

4915820 发表于 2007-3-21 13:27:17

回复: 如何实现更改玩家名字

HAI XING 2 KEYI
页: [1]
查看完整版本: 如何实现更改玩家名字