|
自己开发的插件,在游戏开局的时候给正版玩家加100生命值。基本内容如下:
public plugin_init() //插件主体部分
{
register_plugin(……)
register_cvar(……)
register_event("ResetHUD", "new_round", "ab")
}
public checkaccess (id)//正版认证部分(特别鸣谢Rulzy版主技术指导)
{
new UserId[17]
new CheckString[] = "VALVE_ID_PENDING"
get_user_authid ( id, UserId, 17)
if(equal(UserId, CheckString))
return false
else
return true
}
public new_round(id)//主要功能模块,在开局时给正版玩家加100生命值
{
if (checkaccess (id))
set_user_health (id,200)
}
现在的现象是:如果我在new_round(id)部分不加上验证功能(也就是上文中的蓝色粗体部分),那所有的玩家都可以加100生命值(可见new_round(id)部分的确是运行了,加生命值的函数也是正常的)。但如果我加上了验证功能,就只给我一个人加,其他的正版用户不能加。
其实我判断是否正版的依据很简单,只要玩家提供给服务器的验证码完全符合“VALVE_ID_PENDING”字符串,我就认为他不是正版,否则就是。既然这个模块能把我认出来,为什么就不能把别人认出来呢?虽然我和他们的STEAM-ID不一样,但都是“STEAM_0:1:******”的格式,为什么会这样?
另外,请问register_event后面跟着的标识符abcde是什么意思?我如果只用B,就会出现上述现象(即使我不在线,对别的正版玩家也不起作用),如果只用其他的ACDE,则整个new_round(id)完全不起任何作用。 |
|