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

Project1

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

[已经解决] 求2种装备做法

[复制链接]

Lv2.观梦者

梦石
0
星屑
417
在线时间
125 小时
注册时间
2010-10-11
帖子
96
跳转到指定楼层
1
发表于 2015-2-3 22:25:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 raisewing 于 2015-2-3 22:26 编辑

1.我想制作类似北欧女神2中有一些装备的效果是当装备者处于某状态下时,按装备者能力值百分比提高全能力值,状态解除时就恢复,这个怎么做?
2.当队友处于无法战斗状态时,装备者提高全能力值,队友复活恢复,根据死亡队友数量分级别按装备者能力百分比提高全能力值。
请大神们赐教!~~

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2015-2-3 23:51:52 | 只看该作者
如果你能把图书馆那个被动技能的帖子里的做法看懂就都好解决了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
417
在线时间
125 小时
注册时间
2010-10-11
帖子
96
3
 楼主| 发表于 2015-2-4 08:52:35 | 只看该作者
三途亚梦 发表于 2015-2-3 23:51
如果你能把图书馆那个被动技能的帖子里的做法看懂就都好解决了

图书馆被动技能的帖子昨天我看了一晚上,但是失败了!~
也许是我太笨了!~~
我先是在Game_BattlerBase里添加了
@hp == 0 ? ? add_state(33) : remove_state(33)  当生命值等于0时角色处于33状态
设置33号状态为尸体
设置34号状态为孤军奋战LV.1 主角全能力值200%
设置35号状态为孤军奋战LV.2 主角全能力值300%
加入公共事件当人物B处于33号状态时,主角附加34号状态
加入公共事件当人物C处于33号状态时,主角附加34号状态
加入公共事件当人物BC处于33号状态时,主角附加35号状态
我还应该怎么改呢?!~

点评

b 死亡时,调用 $game_actors[A的角色ID].add_state(34) 。就和 b 死亡时附加状态 33 一样的啊  发表于 2015-2-4 12:35
不用公共事件如何使B死亡后增加A的能力?  发表于 2015-2-4 12:27
为什么要公共事件?  发表于 2015-2-4 08:57
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
4
发表于 2015-2-4 14:44:59 | 只看该作者
本帖最后由 三途亚梦 于 2015-2-4 16:38 编辑
raisewing 发表于 2015-2-4 08:52
图书馆被动技能的帖子昨天我看了一晚上,但是失败了!~
也许是我太笨了!~~
我先是在Game_BattlerBase里 ...


嗯,果然你没理解那个帖子的原理呀。

公共事件不是必要的,帖子里的公共事件只是为了给状态追加一个开关,
而且那个魔法盾只要打开无论敌我都会获得状态。

我一点点说给你听吧。

#=====================================
Game_BattlerBase中refresh方法的作用是:
在角色数据变动的时候也会立即调用,
主要是用来检测角色的状态,确定hp和mp的数值是否小于0或大于其max值,并在hp为0时赋予战斗不能状态。

然后,我具体告诉你第一种的做法,其它的都同理。
其中 self 的意思就是被检测的主体,它包括玩家人物和敌人。
  1.     if self.state?(2) && self.actor?
  2.       #↑这句的意思是当self在状态2且是玩家人物时返回true进入接下来的判断,否者跳过。
  3.       # 因为敌人是没有装备的,所以不添加是否是玩家的判断会报错。
  4.       self.armors.include?($data_armors[1]) ? add_state(3) : remove_state(3)
  5.       # 上面这句的格式叫“三目运算符”,它的作用是当?号前的内容是true时返回 : 前的内容,如果不是则返回 : 后的内容;
  6.       # self.armors.include?($data_armors[1]) 的意思就是当主体的装备有防具1(也就是布衣时),
  7.       # 自动附加状态3,否则移除状态3。
  8.     end
复制代码
第二种需要写一个特殊一些的句子,估计你也不会……
这次我就写给你吧。

首先你需要TD触的这个脚本
然后写入下面这段
  1.     if self.actor? && $game_actors.include?(self) #这里是判断角色是否是玩家,且所有人物是否已经初始化
  2.       dead = 0 #这里是设置了一个临时变量
  3.       $game_party.battle_members.each {|actor| dead += 1 if actor.dead?} #检测参战人物中死亡者的个数,如果有则让dead变量+1
  4.       case dead #根据dead变量的值,判断主体是否带有特定装备,并附加对应的状态
  5.       when 1 #如果死亡者为1个,附加状态3
  6.         self.armors.include?($data_armors[1]) ? add_state(3) : remove_state(3)
  7.       when 2 #如果死亡者为2个,附加状态4
  8.         self.armors.include?($data_armors[1]) ? add_state(4) : remove_state(4)
  9.       when 3 #如果死亡者为3个,附加状态5
  10.         self.armors.include?($data_armors[1]) ? add_state(5) : remove_state(6)
  11.       end
  12.     end
复制代码

点评

不要基础设置的话,你也可以在角色初始化结束后把一个实例变量设为 true。总之初始化之后再去访问 $game_party.members 就没问题了  发表于 2015-2-4 16:13
p $game_party.members if $game_actors.include?(self) 即可  发表于 2015-2-4 16:06
http://taroxd.github.io/rgss/Taroxd%E5%9F%BA%E7%A1%80%E8%AE%BE%E7%BD%AE.html 这里定义了 Game_Actors#include? 。  发表于 2015-2-4 16:05
怎么才是等初始化的正确姿势呢?求科普  发表于 2015-2-4 15:51
你等人物初始化完了再调用啊= =  发表于 2015-2-4 15:43
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
417
在线时间
125 小时
注册时间
2010-10-11
帖子
96
5
 楼主| 发表于 2015-2-4 20:04:12 | 只看该作者
三途亚梦 发表于 2015-2-4 14:44
嗯,果然你没理解那个帖子的原理呀。

公共事件不是必要的,帖子里的公共事件只是为了给状态追加一个开关 ...

膜拜大触!~~~第一种装备做法非常完美的说!~~
可是第二种我设置好之后没有效果,是因为人物没有初始化的问题么?
其实我没有搞明白这里的人物初始化是怎么理解的!

点评

好像把两个脚本放一起就不行了!~~应该怎么分隔?  发表于 2015-2-4 21:59
角虫的脚本没有错的!~~我新建工程没有问题!~我也不清楚问题出哪里了!~~我再琢磨一下!~谢谢大角虫们!~~  发表于 2015-2-4 21:28
另外,你不用理解初始化是什么,那句只是单纯的用来放置报错。  发表于 2015-2-4 20:32
[s]TD触才是真正的触[/s] 你完全按照我的内容复制就应该有效的呀,我是实测过的。  发表于 2015-2-4 20:13
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
417
在线时间
125 小时
注册时间
2010-10-11
帖子
96
6
 楼主| 发表于 2015-2-4 22:11:16 | 只看该作者
三途亚梦 发表于 2015-2-4 14:44
嗯,果然你没理解那个帖子的原理呀。

公共事件不是必要的,帖子里的公共事件只是为了给状态追加一个开关 ...

像这样,只有前者有效果!~~
#--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    state_resist_set.each {|state_id| erase_state(state_id) }
    @hp = [[@hp, mhp].min, 0].max
    @mp = [[@mp, mmp].min, 0].max
    @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
    if self.actor? && $game_actors.include?(self) #这里是判断角色是否是玩家,且所有人物是否已经初始化
      dead = 0 #这里是设置了一个临时变量
      $game_party.battle_members.each {|actor| dead += 1 if actor.dead?} #检测参战人物中死亡者的个数,如果有则让dead变量+1
      case dead #根据dead变量的值,判断主体是否带有特定装备,并附加对应的状态
      when 1 #如果死亡者为1个,附加状态3
        self.armors.include?($data_armors[52]) ? add_state(36) : remove_state(36)
      when 2 #如果死亡者为2个,附加状态4
        self.armors.include?($data_armors[52]) ? add_state(37) : remove_state(37)
      when 3 #如果死亡者为3个,附加状态5
        self.armors.include?($data_armors[52]) ? add_state(38) : remove_state(38)
          if self.state?(2) && self.actor?
      #↑这句的意思是当self在状态2且是玩家人物时返回true进入接下来的判断,否者跳过。
      # 因为敌人是没有装备的,所以不添加是否是玩家的判断会报错。
  self.armors.include?($data_armors[58]) ? add_state(30) : remove_state(30)
      # 上面这句的格式叫“三目运算符”,它的作用是当?号前的内容是true时返回 : 前的内容,如果不是则返回 : 后的内容;
      # self.armors.include?($data_armors[1]) 的意思就是当主体的装备有防具1(也就是布衣时),
      # 自动附加状态3,否则移除状态3。
      end
    end
  end
  end

点评

end的位置给错了。在 if self.state?(2) && self.actor?上面给倆end。  发表于 2015-2-4 22:14
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
7
发表于 2015-2-4 22:16:07 | 只看该作者
raisewing 发表于 2015-2-4 22:11
像这样,只有前者有效果!~~
#-------------------------------------------------------------------- ...
  1.     if self.state?(2) && self.actor?
  2.       #↑这句的意思是当self在状态2且是玩家人物时返回true进入接下来的判断,否者跳过。
  3.       # 因为敌人是没有装备的,所以不添加是否是玩家的判断会报错。
  4.       self.armors.include?($data_armors[1]) ? add_state(3) : remove_state(3)
  5.       # 上面这句的格式叫“三目运算符”,它的作用是当?号前的内容是true时返回 : 前的内容,如果不是则返回 : 后的内容;
  6.       # self.armors.include?($data_armors[1]) 的意思就是当主体的装备有防具1(也就是布衣时),
  7.       # 自动附加状态3,否则移除状态3。
  8.     end
  9.     if self.actor? && $game_actors.include?(self) #这里是判断角色是否是玩家,且所有人物是否已经初始化
  10.       dead = 0 #这里是设置了一个临时变量
  11.       $game_party.battle_members.each {|actor| dead += 1 if actor.dead?} #检测参战人物中死亡者的个数,如果有则让dead变量+1
  12.       case dead #根据dead变量的值,判断主体是否带有特定装备,并附加对应的状态
  13.       when 1 #如果死亡者为1个,附加状态3
  14.         self.armors.include?($data_armors[1]) ? add_state(3) : remove_state(3)
  15.       when 2 #如果死亡者为2个,附加状态4
  16.         self.armors.include?($data_armors[1]) ? add_state(4) : remove_state(4)
  17.       when 3 #如果死亡者为3个,附加状态5
  18.         self.armors.include?($data_armors[1]) ? add_state(5) : remove_state(6)
  19.       end
  20.     end
复制代码
这个才是一起用的正确姿势。

点评

是我弄错了!~~这个姿势非常完美!~~~太感谢版主大人了!~~  发表于 2015-2-4 23:09
该姿势测试还是报错呀?完全复制你这段报错,在08条再追加一个end后if self.actor? && $game_actors.include?(self)这句报错了!~  发表于 2015-2-4 22:56

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
417
在线时间
125 小时
注册时间
2010-10-11
帖子
96
8
 楼主| 发表于 2015-2-7 18:43:27 | 只看该作者
三途亚梦 发表于 2015-2-4 22:16
这个才是一起用的正确姿势。

版主大人,关于这个帖子本来我也以为已经完美解决了!~~
可是在我之后测试整个工程的过程中问题暴露出来了!~
就是在战斗中附加的这种因异常状态而提高全能力的效果,在战斗结束后恢复则,提高的能力依然在。。。。
这怎么破?{:2_272:}

点评

感谢版主大人,这个在非战斗状态下刷新做起来对我来说还是太难了!~~还是以最简单的方法在战斗后自动解除状态算了!~~  发表于 2015-2-8 11:45
这句的条件是如果在战斗场景中。也许可以帮你大致解决问题,但是我没有进行测试。  发表于 2015-2-7 18:57
这里提供的状态是部分战斗内外的,只根据条件满足与否立即进行刷新刷新。你试下加上 && SceneManager.scene_is?(Scene_Battle) 。  发表于 2015-2-7 18:56
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 18:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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