等级高时,打不到人的问题# WmGame - 未名游戏
r*y
1 楼
标 题: 关于 Windows 系统下,有些MUD打不到人的问题
关于 Windows 系统下,有些MUD打不到人的问题.
一般情况是由于其所用的 mudos 的随机函数random()的缺陷
造成的.这些 random(factor) 当 factor 比较大时产生的随
机数不是平均分布在 0~factor 之间的,而是集中在0~end 范
围内,其中end在 factor 越大时,值越小.
这样 /adm/daemons/combatd.c 函数attack()中的判断就
有问题啦.
以 西游记 为例:
attack()
{
...
if( random(ap + dp) < mod_val ) {
// 判断被攻击者是否能躲开攻击
...
}else {
...
if( random(ap + pp)< mod_val ) {
// 判断被攻击者是否能招架住攻击
...
}else {
//被攻击者被击中的处理
...
}
这里 ap 是攻击力,dp 是防御力,pp是招架力,
mod_val 是根据 ap,dp,pp 算出来的一个值.
当玩家等级高时, ap,dp,pp比较大,
关于 Windows 系统下,有些MUD打不到人的问题.
一般情况是由于其所用的 mudos 的随机函数random()的缺陷
造成的.这些 random(factor) 当 factor 比较大时产生的随
机数不是平均分布在 0~factor 之间的,而是集中在0~end 范
围内,其中end在 factor 越大时,值越小.
这样 /adm/daemons/combatd.c 函数attack()中的判断就
有问题啦.
以 西游记 为例:
attack()
{
...
if( random(ap + dp) < mod_val ) {
// 判断被攻击者是否能躲开攻击
...
}else {
...
if( random(ap + pp)< mod_val ) {
// 判断被攻击者是否能招架住攻击
...
}else {
//被攻击者被击中的处理
...
}
这里 ap 是攻击力,dp 是防御力,pp是招架力,
mod_val 是根据 ap,dp,pp 算出来的一个值.
当玩家等级高时, ap,dp,pp比较大,