本帖最后由 RyanBern 于 2016-1-14 09:45 编辑 attacker的hit属性只能读取但是不能赋值的,所以写成attacker.hit=XXX是不对的。另外,楼主这样写是无法达到效果的,因为你把命中率修正写在了命中判定的后面,所以这样做是没有效果的。 解决的办法有两种。 第一种是写成 RUBY 代码复制
之后所有的判定命中与否用hit变量即可,这个地方放在attack_effect的# 第一命中判定 之前即可。 第二种方法是直接在Game_Actor中定义hit,由于Game_Actor里面已经继承了Game_Battler的hit方法,此处实际上是覆盖了原有的方法。如果采用这种办法,需要将武器的判定也改到hit的定义中去,这样就无需在attack_effect里面再次定义。由于是在Game_Actor下定义,所以不需要判定攻击方是否为Game_Actor。 因此可以在Game_Actor中追加定义如下: RUBY 代码复制
|
推荐使用下面的方法。 1. 新建[属性],表示武器的类型。在这里,使用的是[属性],而不是[状态],这是因为武器没有[自动状态]这个特性。 例如,你可以在属性里添加名为“单手剑”,“双手剑”的属性,然后在数据库设置的时候勾选即可。 2. 更改命中判定。 在Game_Battler3中,里面有两个方法非常重要,一个是attack_effect,一个是skill_effect。 其中,attack_effect表示受到普通攻击的效果,skill_effect表示受到特技攻击的效果。 看样子楼主是想修改attack_effect,那么我就继续说一下该怎么修改。 在attack_effect定义内,attacker表示攻击方,self表示被攻击方。 首先,获取武器可以用$data_weapons[attacker.weapon_id]进行获取,返回的是一个武器对象。要注意,如果attacker是敌人,那么敌人是没有weapon_id这个属性的,因此最好这样写: RUBY 代码复制
上面这句话是说,如果攻击方是主角,那么获取他所持武器,否则返回nil。注意,如果主角身上没有装备武器,也会返回nil。 然后,获取武器的属性,这个可以用weapon.element_set来获取(当weapon为nil时,不能这样获取,需要额外处理即可)。 element_set是一个ID数组,里面包含了所有该武器的属性。假如你的“单手剑”属性ID为8,那么判断该武器是不是单手剑,可以用下面的代码: RUBY 代码复制
在if里面写上你想要的特殊效果就行了。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-23 08:07
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.