Project1
标题: 普通攻击计数的问题 [打印本页]
作者: wyw838 时间: 2019-4-30 13:10
标题: 普通攻击计数的问题
问题描述如题==想要设定一个技能得凭借普通攻击次数才能发动的角色...但是不知道该怎么对普通攻击进行计数(以变量形式储存计数点)...准确的来说是不知道在哪个地方判定比较好...尝试过的地方有两个..一是在平A伤害计算的函数里先判定攻击者是否为角色,然后读取角色的id再进行计数,二是在光标选择敌人攻击的时候进行判定然后计数...结果发现我的写法貌似都有问题...所以想请教一下各位怎么对普通攻击计数比较好...
作者: 719783572 时间: 2019-5-1 04:58
本帖最后由 719783572 于 2019-5-1 05:44 编辑
想法二毫无疑问错误,如果取消选择敌人的话攻击数还是会增加,这样就可以用选择+取消无限刷攻击次数了。
其次你说是某个角色使用这个技能,如果直接写在脚本和公共变量里的话,所有角色普攻都会加到这个变量里,也毫无疑问错误。
所以如果是指定只有某个角色才会这个技能,那就很好实现,举个例子,假如1号角色才会这个技能,那就只计算1号角色的普攻次数,普攻次数存1号变量,
那就在Game_Battler 3的79行"if hit_result == true"下面添加
if attacker == $game_actors[1]
$game_variables[1] += 1
else
return
end
if attacker == $game_actors[1]
$game_variables[1] += 1
else
return
end
如果是学会这个技能的角色都要计算普攻次数,那你就最好添加一个属性,比如“连击数”,用attr_accessor的方法写入module。
同时自己要想好,如果这个技能是按照每局的普攻次数来计算的话,那你一局战斗结束后还得清空普攻次数这个值。
我随便写段你自己参考。
module RPG
class Actor
def initialize
@combo = 0
end
attr_accessor :combo ##这个是记录角色普攻次数的属性
end
end
class Game_Actor < Game_Battler
attr_accessor :combo
def initialize
@combo = 0
end
end
module RPG
class Actor
def initialize
@combo = 0
end
attr_accessor :combo ##这个是记录角色普攻次数的属性
end
end
class Game_Actor < Game_Battler
attr_accessor :combo
def initialize
@combo = 0
end
end
然后是单次普攻计入每个角色的combo值,在Game_Battler 3的79行"if hit_result == true"下面添加
for i in 0 .. 3
if attacker == $game_party.actors[i]
$game_party.actors[i].combo += 1
end
end
for i in 0 .. 3
if attacker == $game_party.actors[i]
$game_party.actors[i].combo += 1
end
end
最后是去Scene_Battle 1的战斗结束那里清空所有角色的combo值。
for i in 0 .. 3
$game_party.actors[i].combo = 0
end
for i in 0 .. 3
$game_party.actors[i].combo = 0
end
作者: 芯☆淡茹水 时间: 2019-5-1 09:26
这样?
- #==============================================================================
- class Game_Temp
- #--------------------------------------------------------------------------
- def in_battle=(state)
- last_state = @in_battle
- @in_battle = state
- last_state != @in_battle && clear_actors_now_atk_times
- end
- #--------------------------------------------------------------------------
- # 清除角色当前战斗的普攻计数。
- def clear_actors_now_atk_times
- $game_party.actors.each{ |actor| actor.clear_now_normal_atk_times }
- end
- end
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- def normal_atk_data
- return @normal_atk_data || {:now=>0,:total=>0}
- end
- #--------------------------------------------------------------------------
- # 获取战斗对象的普攻计数。
- # type :类型。包括当前战斗中普攻次数与所有战斗普攻次数总数。参数类型=>字符串。
- # 当前战斗中普攻次数: "now"
- # 所有战斗普攻次数总数: "total"
- # 获取: 某角色(actor)当前战斗中普攻次数 => actor.normal_atk_times("now")
- # 某角色(actor)所有战斗普攻次数总数 => actor.normal_atk_times("total")
- # 敌人同上。
- #--------------------------------------------------------------------------
- def normal_atk_times(type)
- return normal_atk_data[type.to_sym] || 0
- end
- #--------------------------------------------------------------------------
- def normal_atk_on_count
- @normal_atk_data ||= {:now=>0,:total=>0}
- @normal_atk_data.keys.each{ |key| @normal_atk_data[key] += 1 }
- end
- #--------------------------------------------------------------------------
- def clear_now_normal_atk_times
- @normal_atk_data[:now] = 0 if @normal_atk_data
- end
- #--------------------------------------------------------------------------
- alias normal_atk_attack_effect attack_effect
- def attack_effect(attacker)
- attacker.normal_atk_on_count
- return normal_atk_attack_effect(attacker)
- end
- end
- #==============================================================================
复制代码
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |