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

Project1

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

[已经解决] 如何让队伍中某个角色的攻击力随队伍成员发生改变

[复制链接]

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

跳转到指定楼层
1
发表于 2014-5-27 16:24:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 喵呜喵5 于 2014-5-27 16:28 编辑

想实现这样一个效果,队伍中特定角色的攻击力在队伍中存在特定职业的成员时会上升。
目前的做法是修改Game_actor类里获取人物能力的方法,增加上判断队伍成员职业的语句,但是默认的判断队伍成员的语句会再次调用获取人物能力的方法,最终造成死循环。
目前的解决方法是获取队伍中人物职业时跳过这名角色,但是队伍中存在既能提升攻击力又拥有特定职业的角色时判定变得很头疼...

于是,如何如何让队伍中某个角色的攻击力随队伍成员发生改变?

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-5-27 16:34:27 | 只看该作者
判断队伍成员的语句哪里调用获取人物能力的方法了?

点评

收到,吃完饭看看…… 只能说尽量看出来吧……  发表于 2014-5-27 17:01
代码已发  发表于 2014-5-27 16:59
代码已发  发表于 2014-5-27 16:58
所以说求看看代码…… 我没看出哪里会死循环的说  发表于 2014-5-27 16:45
判断队伍成员用的是这个方法 $game_party.all_members  发表于 2014-5-27 16:44
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2014-5-27 16:53:35 | 只看该作者
RUBY 代码复制
  1. class Game_Actor
  2.   alias atkxxx atk
  3.   def atk
  4.     if $game_party.members.any? {|actor| actor.class_id == 1 }
  5.       atkxxx + 123
  6.     else
  7.       atkxxx
  8.     end
  9.   end
  10. end


总之我没看出哪里会死循环呢……
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
 楼主| 发表于 2014-5-27 16:54:47 | 只看该作者
本帖最后由 喵呜喵5 于 2014-5-27 17:01 编辑
  1. class Game_Actor
  2.  alias m5_20140525_param_plus param_plus
  3.  def param_plus(param_id)
  4.   a_par = m5_20140525_param_plus(param_id)
  5.   return a_par if (@actor_id != ACTOR1 && @actor_id != ACTOR2)
  6.   data = CLASS
  7.     $game_party.all_members.each do |actor|
  8.       class_id = actor.class_id
  9.       a_par += data[class_id][param_id] if data.has_key?(class_id)
  10.   end
  11.   a_par
  12.  end
  13. end
复制代码
@taroxd  

点评

CLASS是个哈希 1=>[123456,...]这样...  发表于 2014-5-27 17:05
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2014-5-27 17:33:03 | 只看该作者
本帖最后由 taroxd 于 2014-5-27 17:46 编辑
喵呜喵5 发表于 2014-5-27 16:54
@taroxd


很抱歉我还是看不出哪里会死循环……看不出的话我自己写估计也会死循环的
脚本水平低,又没环境无法调试真是不爽
如果是去掉自身就不会死循环的话,我只能这样看看了……
  1. class Game_Actor
  2.   alias m5_20140525_param_plus param_plus
  3.   def param_plus(param_id)
  4.   a_par = m5_20140525_param_plus(param_id)
  5.   return a_par if @actor_id != ACTOR1 && @actor_id != ACTOR2
  6.   data = CLASS
  7.   $game_party.all_members.each do |actor|
  8.     p '断点1' if actor.id == @actor_id
  9.   class_id = actor.class_id
  10.     p '断点2' if actor.id == @actor_id
  11.   a_par += data[class_id][param_id] if data.has_key?(class_id)
  12.     p '断点3' if actor.id == @actor_id
  13.   end
  14.   a_par
  15.   end
  16. end
复制代码

点评

放心,到周五放学之前我是不会有环境的……  发表于 2014-5-27 17:56
之后我多插入几个断点再试试吧...  发表于 2014-5-27 17:54
唔我现在也没环境测试,之前测试的时候确实死循环导致堆栈过深了,现在是手机打的没去确认相同的问题是否发生  发表于 2014-5-27 17:54
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

6
发表于 2014-5-27 18:56:33 | 只看该作者
换个方向,特定职业无非有几种情况,入队离队外加改职业,从这三个方向入手避开成员迭代呗。
atk那里只是+某变量,在上面3个情况修改这个变量,这样不就好了?

点评

我觉得应该可行。但我还是很想知道为什么会死循环  发表于 2014-5-28 12:31
也是呢,这个确实也是一种思路  发表于 2014-5-27 20:08
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

7
 楼主| 发表于 2014-5-28 11:01:21 | 只看该作者
taroxd 发表于 2014-5-27 17:33
很抱歉我还是看不出哪里会死循环……看不出的话我自己写估计也会死循环的
脚本水平低,又没环境无法调试 ...

三个断点都没p出来,只有
$game_party.all_members.each do |actor|这句前的断点可以出来,还是以死循环的方式无限的p出来直到堆栈过深
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

8
发表于 2014-5-28 12:32:10 | 只看该作者
喵呜喵5 发表于 2014-5-28 11:01
三个断点都没p出来,只有
$game_party.all_members.each do |actor|这句前的断点可以出来,还是以死循环 ...


等到我有环境的时候再看看吧……话说你不是说只要去掉角色本身就不会死循环的么

点评

可我根本看不出哪里发生了递归调用……等有环境时再慢慢调试吧  发表于 2014-5-28 12:57
如果一个角色既能得到加成又能为其他角色提供加成就完蛋了...  发表于 2014-5-28 12:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
486 小时
注册时间
2007-5-27
帖子
807
9
发表于 2014-5-28 18:52:59 | 只看该作者
……
话说,技能公式能做到用特定职业数目来增加攻击力不?能的话只需要用那个把默认的攻击指定为特定技能的脚本加上公式就完美解决了……

点评

事件党不懂得脚本的美好  发表于 2014-5-30 17:43
……那样的话公共事件就能做到了吧……其实只要关掉整队选项,然后每次队伍成员发生变更的时候判定一次就好了……如果要保留整队的话只能脚本  发表于 2014-5-29 09:06
其实需要得到提升的不仅是攻击力,其他能力也要提升,不同的角色提升的还不同...  发表于 2014-5-28 22:39
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

10
 楼主| 发表于 2014-5-28 19:04:18 手机端发表。 | 只看该作者
紫苍焰 发表于 2014-5-28 18:52
……
话说,技能公式能做到用特定职业数目来增加攻击力不?能的话只需要用那个把默认的攻击指定为特定技能 ...

我要提升的是角色所有技能的攻击力不是一个技能的攻击力......

点评

用事件需要非常多的变量用来判定,比如角色离队时如何扣除附加的能力值?当然直接像楼上说的在对应代码后面加一句也是可行的就是了...  发表于 2014-5-29 10:45
如果公式能做到的话,就给所有技能的公式里都多写一步计算呗……我先去实验看看公式要怎么做到……  发表于 2014-5-28 19:17
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 19:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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