拿到源代码的我相信都会发现gameserver\clientpackets\
AttackRequest.java类,里面含有客户端攻击请求,其中有
一句:
Attack atk = new Attack(activeChar.getObjectId(),
objectId, 100, false, false, false, activeChar.getX(),
activeChar.getY(), activeChar.getZ());
大家注意红色部分。
找到gameserver\serverpackets下面有一个Attack.java,
看看Attack类初始化函数吧
public Attack(int attackerId, int defenderId,
int damage, boolean miss, boolean critical,
boolean soulshot, int x, int y, int z)
{
_attackerId = attackerId;
_defenderId = defenderId;
_damage = damage;
_miss = miss;
_critical = critical;
_soulshot = soulshot;
_x = x;
_y = y;
_z = z;
} 注意,棕色部分第三个参数正是100对应的,
会点e文的都知道什么意思吧。
红色部分的false,对应下面miss,程序调用时给赋予
了永假,就是说你永远不会miss,这就是你每次打
怪都会命中的原因了
织梦好,好织梦
下面说说如何修改,我的做法是建立了一个新类,
根据传送的attackerId,defenderId的属性计算出
该值,然后传给gameserver.serverpackets.Attack,
至于miss永真问题可以写一个加权的随机函数,这个
权值应该是命中之类的吧。