查看: 2804|回复: 8

[已经解决] ctb战斗系统怎么在技能里增加cp(以及若干问题)

[复制链接]
梦石
0
星屑
460
在线时间
49 小时
注册时间
2008-11-30
回帖
93
发表于 2018-12-2 21:47:58 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 a2523496 于 2018-12-2 22:01 编辑

ctb战斗是本站找到的cp制横版战斗 下面放工程
https://pan.baidu.com/s/1F4jTIDzcQ6jP_cBknQgaRw

我想了一个辅助技能:范围己方单体  接受方 actor.now_ct = 99 {100满了行动}
有什么办法让技能触发脚本内容呢?


另外还有一个问题 我想弄每次cp满100的时候 sp回复100
工程里 我是放在CTB超级横版战斗脚本的146行            actor.sp += 100
但是+100sp只在actor行动完之后才加的
是我添加的地方不对吗。。。



最后一个问题是怎么去掉逃跑
战斗选单时 按返回键不会有逃跑窗口也不会有任何反应

主要是这三个问题惹  因为问题不少所以想给帮忙解决问题的大佬发个小红包以表敬意
不然白白伸手不太好
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2018-12-2 23:02:34 | 显示全部楼层
本帖最后由 KB.Driver 于 2018-12-3 08:20 编辑

慢慢来吧……目前实现了禁用“战斗 逃跑”这一窗口的功能
将下面这段代码插入就行

[pre lang="ruby"]
class Scene_Battle
#--------------------------------------------------------------------------
  # ● 前のアクターのコマンド入力へ
  #--------------------------------------------------------------------------
  def phase3_prior_actor
    # ループ
    begin
      # アクターの明滅エフェクト OFF
      if @active_battler != nil
        @active_battler.blink = false
      end
      # 最初のアクターの場合
      if @actor_array_index <= 0
        # アクターコマンドフェーズ開始
        #==================================================================
        #改了这里
        #start_phase2
        #return
        @actor_index = -1
    @active_battler = nil
    # 有效化同伴指令窗口
    @party_command_window.active = true
    @party_command_window.visible = true
    # 无效化角色指令窗口
    @actor_command_window.active = false
    @actor_command_window.visible = false
    # 清除主回合标志
    $game_temp.battle_main_phase = false
    # 清除全体同伴的行动
    $game_party.clear_actions
    start_phase3
    return
   
  #==================================================================
  end
      # アクターのインデックスを戻す
      @actor_array_index -= 1
      @actor_index = @pre_action_battlers[@actor_array_index].index
      @active_battler = $game_party.actors[@actor_index]
      @active_battler.blink = true
      @active_battler.current_action.clear
    # アクターがコマンド入力を受け付けない状態ならもう一度
    end until @active_battler.inputable?
    # アクターコマンドウィンドウをセットアップ
    phase3_setup_command_window
  end
end
[/pre]

因为平时主要搞RGSS3,RGSS1这套东西看着不习惯(
写出来的东西比较搓……求别介意
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
分割线

经过一段时间的探索 提前加sp的功能也搞出来了
将下面这段代码插入就行

原理就是提前在ct快满的时候只增加1次SP,然后立刻更新窗口
(准备输入指令时就无法更新了)

[pre lang="ruby"]
#已在下面更新
[/pre]

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
分割线

增加CT的技能也做出来了
将下面这段代码插入就行

[pre lang="ruby"]class Scene_Battle

  #--------------------------------------------------------------------------
  # ○ CT的计算
  #--------------------------------------------------------------------------
  def update_ct
    # 在计算提高被许可的时候
    if @countup
   
      for actor in $game_party.actors
        # 是否能活动
        if actor.movable? == false and actor.ct_visible and @phase4_step != 5
          # 用看不见状态计算,并且有提高
          actor.ct_visible = false
          actor.countup = true
          actor.full_ct = false
        elsif actor.movable? and actor.ct_visible == false
          # 解除看不见计算提高
          clear_ct(actor)
          actor.ct_visible = true
        end
        # アクターの入れ替えに対応
        if actor.max_ct == 0
          actor.max_ct = @max_ct
        end
        # アクターのカウントアップ
        if actor.countup
         
          #==================================================================
          if actor.now_ct > 0.9 * @max_ct #ct快要满了
            ct_skip = PARA_CTB::CT_SKIP != 0 ? PARA_CTB::CT_SKIP : 1
            inc = actor.current_action.speed * PARA_CTB::BATTLE_SPEED * ct_skip
            if (actor.now_ct + inc >= @max_ct && @flag.nil?) #将要满了
              actor.sp += 100
              @status_window.refresh
              # エネミー名リストを更新
              @status_window2.refresh
              @flag = true
            end
            
          end
          #改了这里(战斗前增加SP1)
          #==================================================================
         
          #==================================================================
          if actor.state?(20) #附加20号状态时 增加CT
            actor.now_ct = @max_ct * 0.99
            actor.remove_state(20) #增加后解除状态
          end
          #改了这里(SP技能)
          #==================================================================
         
         
         
          # CTがmaxになっており、コマンド入力待ちアクターに含まれない
          if actor.now_ct >= @max_ct and !(@pre_action_battlers.include?(actor))
            # コマンド入力待ちアクターに追加
            #==================================================================
            @flag = nil
            #改了这里(战斗前增加SP2)
            #==================================================================

            @pre_action_battlers.push(actor)
            @action_count += 1
            
            # 効果音を鳴らす
            if PARA_CTB::FULL_CT_SE != "" and actor.ct_visible
              Audio.se_play("Audio/SE/" + PARA_CTB::FULL_CT_SE,PARA_CTB::FULL_CT_SE_VOL)
            end
            
            # それ以上カウントアップしない
            actor.countup = false
            actor.full_ct = true
          else
            # カウントアップ
            actor.make_action_speed
            ct_skip = PARA_CTB::CT_SKIP != 0 ? PARA_CTB::CT_SKIP : 1
            actor.now_ct += actor.current_action.speed * PARA_CTB::BATTLE_SPEED * ct_skip
          end
        end
      end
      for enemy in $game_troop.enemies
        # 行動できるか
        if enemy.movable? == false and enemy.ct_visible and @phase4_step == 5
          # 不可視状態でカウントアップ
          enemy.ct_visible = false
          enemy.countup = true
          enemy.full_ct = false
        elsif enemy.movable? and enemy.ct_visible == false
          # 不可視カウントアップを解除
          clear_ct(enemy)
          enemy.ct_visible = true
        end
        # エネミーのカウントアップ
        if enemy.countup
          # CTがmaxになっており、行動待ちエネミーに含まれない
          if enemy.now_ct >= @max_ct and ! @pre_action_battlers.include?(enemy)
            # 行動待ちエネミーに追加
            
            @pre_action_battlers.push(enemy)
            @action_count += 1
            # それ以上カウントアップしない
            enemy.countup = false
            enemy.full_ct = true
          else
            # カウントアップ
            enemy.make_action_speed
            enemy.now_ct += enemy.current_action.speed * PARA_CTB::BATTLE_SPEED
          end
        end
      end
      # CTゲージを再描画
      @status_window.refresh_ct
      @status_window2.refresh_ct
    end
  end
end
[/pre]
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
分割线

演示gif
1.gif

点评

你加我暗号吧0_0 私信给你了  发表于 2018-12-4 14:52
我目前权限发不了私信。。。 能不能发一下你的支付宝私信我呀 嘻嘻爱你  发表于 2018-12-4 14:40
全部功能都实现了(〃'▽'〃) 已更新演示gif  发表于 2018-12-3 00:06
好了 SP的问题我也搞定了  发表于 2018-12-2 23:45
sp的问题看了一下,应该是update跟不上的原因。这个东西只能在快要满的时候加……  发表于 2018-12-2 23:38

评分

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

查看全部评分

用头画头像,用脚写脚本
回复 1 0

使用道具 举报

梦石
0
星屑
460
在线时间
49 小时
注册时间
2008-11-30
回帖
93
 楼主| 发表于 2018-12-3 08:18:01 | 显示全部楼层
KB.Driver 发表于 2018-12-2 23:02
慢慢来吧……目前实现了禁用“战斗 逃跑”这一窗口的功能
将下面这段代码插入就行

哇 做到了诶! 好聪明啊! 非常感谢你

点评

不聪明啦……之前都没接触过RGSS1的,刚开始就一直改一点然后一直受试233  发表于 2018-12-4 00:06
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部