设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1817|回复: 7
打印 上一主题 下一主题

[已经解决] 普通攻击计数的问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1293
在线时间
118 小时
注册时间
2017-7-14
帖子
148
跳转到指定楼层
1
发表于 2019-4-30 13:10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
问题描述如题==想要设定一个技能得凭借普通攻击次数才能发动的角色...但是不知道该怎么对普通攻击进行计数(以变量形式储存计数点)...准确的来说是不知道在哪个地方判定比较好...尝试过的地方有两个..一是在平A伤害计算的函数里先判定攻击者是否为角色,然后读取角色的id再进行计数,二是在光标选择敌人攻击的时候进行判定然后计数...结果发现我的写法貌似都有问题...所以想请教一下各位怎么对普通攻击计数比较好...

Lv3.寻梦者

梦石
0
星屑
1076
在线时间
172 小时
注册时间
2010-10-11
帖子
23
2
发表于 2019-5-1 04:58:17 | 只看该作者
本帖最后由 719783572 于 2019-5-1 05:44 编辑

想法二毫无疑问错误,如果取消选择敌人的话攻击数还是会增加,这样就可以用选择+取消无限刷攻击次数了。
其次你说是某个角色使用这个技能,如果直接写在脚本和公共变量里的话,所有角色普攻都会加到这个变量里,也毫无疑问错误。
所以如果是指定只有某个角色才会这个技能,那就很好实现,举个例子,假如1号角色才会这个技能,那就只计算1号角色的普攻次数,普攻次数存1号变量,
那就在Game_Battler 3的79行"if hit_result == true"下面添加
RUBY 代码复制下载
  1. if attacker ==  $game_actors[1]
  2. $game_variables[1] += 1
  3. else
  4. return
  5. end

如果是学会这个技能的角色都要计算普攻次数,那你就最好添加一个属性,比如“连击数”,用attr_accessor的方法写入module。
同时自己要想好,如果这个技能是按照每局的普攻次数来计算的话,那你一局战斗结束后还得清空普攻次数这个值。
我随便写段你自己参考。
RUBY 代码复制
  1. module RPG
  2.   class Actor
  3.     def initialize
  4.       @combo = 0
  5.     end
  6.     attr_accessor :combo  ##这个是记录角色普攻次数的属性
  7.   end
  8. end
  9.  
  10. class Game_Actor < Game_Battler
  11.   attr_accessor :combo
  12.   def initialize
  13.    @combo = 0
  14.   end
  15. end

然后是单次普攻计入每个角色的combo值,在Game_Battler 3的79行"if hit_result == true"下面添加
RUBY 代码复制
  1. for i in 0 .. 3
  2. if attacker == $game_party.actors[i]
  3.   $game_party.actors[i].combo += 1
  4. end
  5. end

最后是去Scene_Battle 1的战斗结束那里清空所有角色的combo值。
RUBY 代码复制
  1. for i in 0 .. 3
  2.   $game_party.actors[i].combo = 0
  3. end

点评

第二段代码中 01-08 行是多余的,那个是给 RPG::Actor 增加定义,跟 Game_Actor 没关系。  发表于 2019-5-29 09:25
combo不是已经在class Game_Actor这里面添加了吗?为什么还要在module里面添加一遍?  发表于 2019-5-15 14:17
问下module RPG这个模块是插入main方法之前吗?学习了。收益很多。  发表于 2019-5-15 14:14
ok了,感谢qwq。问题解决了...因为只有一个角色需要对普攻计数...所以说问题很好解决...  发表于 2019-5-1 09:43

评分

参与人数 1星屑 +100 +1 收起 理由
RyanBern + 100 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31969
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

3
发表于 2019-5-1 09:26:23 | 只看该作者
这样?
  1. #==============================================================================
  2. class Game_Temp
  3.   #--------------------------------------------------------------------------
  4.   def in_battle=(state)
  5.     last_state = @in_battle
  6.     @in_battle = state
  7.     last_state != @in_battle && clear_actors_now_atk_times
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # 清除角色当前战斗的普攻计数。
  11.   def clear_actors_now_atk_times
  12.     $game_party.actors.each{ |actor| actor.clear_now_normal_atk_times }
  13.   end
  14. end
  15. #==============================================================================
  16. class Game_Battler
  17.   #--------------------------------------------------------------------------
  18.   def normal_atk_data
  19.     return @normal_atk_data || {:now=>0,:total=>0}
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # 获取战斗对象的普攻计数。
  23.   # type :类型。包括当前战斗中普攻次数与所有战斗普攻次数总数。参数类型=>字符串。
  24.   #       当前战斗中普攻次数:   "now"
  25.   #       所有战斗普攻次数总数: "total"
  26.   # 获取: 某角色(actor)当前战斗中普攻次数 => actor.normal_atk_times("now")
  27.   #       某角色(actor)所有战斗普攻次数总数 => actor.normal_atk_times("total")
  28.   #       敌人同上。
  29.   #--------------------------------------------------------------------------
  30.   def normal_atk_times(type)
  31.     return normal_atk_data[type.to_sym] || 0
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   def normal_atk_on_count
  35.     @normal_atk_data ||= {:now=>0,:total=>0}
  36.     @normal_atk_data.keys.each{ |key| @normal_atk_data[key] += 1 }
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   def clear_now_normal_atk_times
  40.     @normal_atk_data[:now] = 0 if @normal_atk_data
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   alias normal_atk_attack_effect attack_effect
  44.   def attack_effect(attacker)
  45.     attacker.normal_atk_on_count
  46.     return normal_atk_attack_effect(attacker)
  47.   end
  48. end
  49. #==============================================================================
复制代码

点评

感谢大佬的帮助...但是其实我的处理比较简单不用这么长的代码==但是还是很谢谢大佬的用心QWQ  发表于 2019-5-1 10:45

评分

参与人数 1星屑 +70 收起 理由
RyanBern + 70 塞糖

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-30 21:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表