函数错误,请高手指导!
我做了这样一个函数,获取玩家的STEAM-ID并检查是否正版,内容如下:public checkaccess (id)
{
//声明变量
new UserId
//存放玩家返还结果的字符串
new CheckString[] = "VALVE_ID_PENDING"
//如果返还结果为这个字符串,就不是合法的STEAM-ID,这个字符串有16个字符,数组长度为17位
//获取试图连接到游戏的玩家的STEAM-ID,并进行验证
get_user_authid ( id, UserId, 17)
for (new i=0; i<=17; i++)//循环语句
{
if (UserId != CheckString)//如果有一位的内容不同就返回true并跳出for循环
{
return true
}
}
//如果完全相同就返回false
return false
但当我运行这个函数,一旦有正版玩家进入游戏,就会出现“Reliable channel overflowed”(信用通道溢出?)并且断开连接?
到底错在哪里?
回复: 函数错误,请高手指导!
定义一个数据a,其下标取值范围为0~n-1。像你定义的UseId,你使用循环从0~17都进行检查,显然超出了下标范围。当然,这个不一定是出现“Reliable channel overflowed”的原因。其实根本就不用这么麻烦,你只要用函数 equal 判断是否相等就行了:
if(equal(UserId, CheckString)) //相同(区分大小写)
注意,这样判断,只适合特定的HLDS版本,因为在不同版本的NOSTEAM版本上,非正版的ID并不一定都为VALVE_ID_PENDING,而且在Internet和LAN模式下都有可能不同。
回复: 函数错误,请高手指导!
真不愧是版主,果然眼光独到!尝试一下先!
回复: 函数错误,请高手指导!
我做好了!感谢DT的各位前辈大力帮助!
页:
[1]