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

Project1

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

[已经解决] 请教队伍里有人有第2号状态的话对方的群攻技能变成单体

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9143
在线时间
464 小时
注册时间
2015-5-8
帖子
865
跳转到指定楼层
1
发表于 2020-12-27 05:16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想做一个状态,有此状态后对方释放的群攻技能50%几率变成单体攻击技能,想了下大概需要两步:
1.判断我方队伍里是否有人有第2号状态 (请问下用这个判断用if改怎么写呢?可以写成$game_party.actors.any? {|x| x.state == 2}吗?)
2.判断结果为真的话对方释放的群攻技能50%几率变成单体攻击技能(单体攻击代码是1,群体是2,但就是不知道在哪里写好。。)


还请大家指点指点,多谢了!

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
2
发表于 2020-12-27 12:13:50 | 只看该作者
本帖最后由 RPGzh500223 于 2020-12-27 12:43 编辑

Game_Battler 的 状态 states(不是state) 是一个数组 并不是数值……
你该好好看脚本啊
这状态是对敌我双方生效还是只有我方?(你的想法部分,直接把这状态只对我方生效)
PS:这状态是“嘲讽”之类的吧

脚本是对敌我都生效
全体技能变为单体技能的目标为2号状态的首位持有者
RUBY 代码复制
  1. class Scene_Battle
  2.   alias ori_set_target_battlers set_target_battlers
  3.   def set_target_battlers(scope)
  4.     ori_set_target_battlers(scope)
  5.     if scope == 2
  6.       if rand(100) < 50
  7.         target = @target_battlers.find{|battler|battler.states.include?(2)}
  8.         @target_battlers = [target] if target != nil        
  9.       end
  10.     end
  11.   end
  12. end

点评

认可答案,我很赞同  发表于 2020-12-27 13:38

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 认可答案
taeckle + 1 大神威武!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9143
在线时间
464 小时
注册时间
2015-5-8
帖子
865
3
 楼主| 发表于 2020-12-27 15:47:34 | 只看该作者
RPGzh500223 发表于 2020-12-27 12:13
Game_Battler 的 状态 states(不是state) 是一个数组 并不是数值……
你该好好看脚本啊
这状态是对敌我双方 ...


请问下单独写我方(或敌方)队伍里是否有人有第2号状态的判断该怎么写呢? (可以写成$game_party.actors.any? {|x| x.state.include?(2)}吗?)

点评

大佬这个好像是双方都有效..单独写有必要吗?  发表于 2020-12-27 16:43
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36119
在线时间
10712 小时
注册时间
2009-3-15
帖子
4806
4
发表于 2020-12-27 16:45:11 | 只看该作者
本帖最后由 soulsaga 于 2020-12-27 16:50 编辑
taeckle 发表于 2020-12-27 15:47
请问下单独写我方(或敌方)队伍里是否有人有第2号状态的判断该怎么写呢?  (可以写成$game_party.actors.an ...


引用大佬的脚本

RUBY 代码复制
  1. class Scene_Battle
  2.   alias ori_set_target_battlers set_target_battlers
  3.   def set_target_battlers(scope)
  4.     ori_set_target_battlers(scope)
  5.     if scope == 2
  6.       if rand(100) < 50
  7.         target = @target_battlers.find{|battler|battler.states.include?(2) and battler.is_a?(Game_Actor)}#被攻击对像为角色时battler.is_a?(Game_Enemy) 为敌人时
  8.         @target_battlers = [target] if target != nil
  9.       end
  10.     end
  11.   end
  12. end

点评

是啊..改改  发表于 2020-12-27 16:50
不是这样写的...target = @target_battlers.find{|battler|battler.states.include?(2) and battler.is_a?(Game_Actor)}...至少也应该像这样  发表于 2020-12-27 16:49

评分

参与人数 1+1 收起 理由
taeckle + 1 多谢大神指点!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9143
在线时间
464 小时
注册时间
2015-5-8
帖子
865
5
 楼主| 发表于 2020-12-27 17:07:36 | 只看该作者
taeckle 发表于 2020-12-27 15:47
请问下单独写我方(或敌方)队伍里是否有人有第2号状态的判断该怎么写呢?  (可以写成$game_party.actors.an ...


那在公共事件中判断我方队伍里是否有人有第2号状态该怎么写呢?
(可以写成$game_party.actors.any? {|x| x.state.include?(2)}吗?)

点评

那在公共事件中判断敌方队伍里是否有人有第2号状态是不是就写成这样了: $game_troop.enemies.any?{|x| x.states.include?(2)}  发表于 2020-12-28 01:48
$game_party.actors.any? {|x| x.states.include?(2)}  发表于 2020-12-27 17:59
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
6
发表于 2020-12-27 18:46:19 | 只看该作者
本帖最后由 RPGzh500223 于 2020-12-27 18:47 编辑
taeckle 发表于 2020-12-27 17:07
那在公共事件中判断我方队伍里是否有人有第2号状态该怎么写呢?
(可以写成$game_party.actors.any? {|x|  ...


连续的操作,为了简单,才写成公共事件
你这只有一个判断……没必要写成公共事件吧
最多写成Game_Party的方法
  1. class Game_Party  
  2.   def have_state?(state_id)
  3.     return @actors.any?{|e|e.states.include?(state_id)}
  4.   end
  5. end
复制代码

使用的话  判断队伍是否有2号状态
$game_party.have_state?(2)

评分

参与人数 1+1 收起 理由
taeckle + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
7
发表于 2020-12-27 18:58:58 | 只看该作者
等等 我没理解你的公共事件
(其实这判断你也可以写进事件指令)
你得把判断是否含有2号状态的之后"操作"写进去
不论指令还是脚本
大概
是否含有2号状态
  do something
else
  do someting
end

评分

参与人数 1+1 收起 理由
taeckle + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9143
在线时间
464 小时
注册时间
2015-5-8
帖子
865
8
 楼主| 发表于 2020-12-28 01:52:00 | 只看该作者
soulsaga 发表于 2020-12-27 16:45
引用大佬的脚本

class Scene_Battle

大神请问下按照这样写的话当我方全队(4人)全都有第2号状态时是不是敌方的群攻技能还是能群攻呐?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
9
发表于 2020-12-28 11:25:29 | 只看该作者
taeckle 发表于 2020-12-28 01:52
大神请问下按照这样写的话当我方全队(4人)全都有第2号状态时是不是敌方的群攻技能还是能群攻呐? ...

这脚本 就算我方全体都有2号状态
也只会被敌方的全体技能(RMXP默认技能范围里没有群攻)攻击存活的的首位携带2号状态的我方队员
第一次回复你时 已经说明这个问题了啊
其实你要是这状态只对我方有效,只要敌方获得不了这状态即可

下面的脚本是全体技能会攻击所有携带2号状态的目标,只对一方生效的话,参照楼上的回复修改
class Scene_Battle
  alias ori_set_target_battlers set_target_battlers
  def set_target_battlers(scope)
    ori_set_target_battlers(scope)
    if scope == 2
      if rand(100) < 50
        targets = @target_battlers.find_all{|battler|battler.states.include?(2)}
        @target_battlers = targets if targets != []        
      end
    end
  end
end
其实你可以先看看RMXP脚本与F1,累积一定的基础,再制作游戏
我从接触RMXP到现在都一年了,看F1,还是会发现原来理解错的东西或者新东西以及看不懂的东西
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33064
在线时间
5103 小时
注册时间
2012-11-19
帖子
4878

开拓者

10
发表于 2020-12-28 11:49:17 | 只看该作者
本帖最后由 芯☆淡茹水 于 2020-12-28 12:00 编辑

这样好理解些吧

  1. #==============================================================================
  2. class Scene_Battle
  3.   #--------------------------------------------------------------------------
  4.   alias xr_last_set_target_battlers set_target_battlers
  5.   def set_target_battlers(scope)
  6.     xr_last_set_target_battlers(scope)
  7.     result = @active_battler.is_a?(Game_Enemy) && # 攻击者是敌人
  8.              rand < 0.5 &&                         # 一半几率
  9.              scope == 2 &&                        # 用的是全体攻击
  10.              @target_battlers.size > 1 &&         # 实际被攻击角色个数大于 1
  11.              $game_party.actors.any?{|a| a.state?(2) } # 角色队伍有任意一个 2 号状态
  12.     # 从被攻击者中随机一个
  13.     @target_battlers = [@target_battlers[rand(@target_battlers.size)]] if result
  14.   end
  15. end
  16. #==============================================================================
复制代码

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 我很赞同
taeckle + 1 大神代码,睥睨天下!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-20 20:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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