Project1

标题: 请问CP(怒气值)动态横版+RTAB+CP技整合脚本中CP获得的方... [打印本页]

作者: a1072126939    时间: 2015-6-2 12:02
标题: 请问CP(怒气值)动态横版+RTAB+CP技整合脚本中CP获得的方...
动态横版+RTAB+CP技整合脚本来源:http://6rweb.sinaapp.com/articles/4963

由于我不懂修改脚本,原有脚本里的CP获得的方式是使用消耗SP的技能获得CP,我想取消原来的获得方式,修改成使用物理攻击命中、或使用伤害技能命中敌人、或是受到敌人的物理攻击或技能伤害时获得CP;
获得CP的数值理想为:使用物理攻击命中、或使用伤害技能命中敌人时,获得10CP;受到敌人的物理攻击或技能伤害时获得5CP,当然有波动值更好,但是不强求,只要能修改成这样就帮大忙了;
另外要提一下,攻击、技能未命中、损失生命的不良状态都不会增加CP;
最好还可以设置获得CP的变量以设计怒气药或增加怒气的辅助技能,当然一样不会强求;

问题比较复杂,或许还需要下载,如果有民间高手、天界大神、地狱使者给予帮助的话感激涕零,作品一定会带上他/她的名字以表感谢。

本人联系QQ:2239540225
作者: 汪汪    时间: 2015-6-2 16:39
本帖最后由 汪汪 于 2015-6-2 17:42 编辑

hp_store 的值 就是cp 的值

下面这个 ,让 cp 可以实时刷新

RUBY 代码复制
  1. class Window_ActorStatus < Window_Base
  2.         #--------------------------------------------------------------------------
  3.         # ● オブジェクト初期化
  4.         #--------------------------------------------------------------------------
  5.         def initialize(id, x)
  6.                 @actor_num = id
  7.                 super(x, 320, 160, 160)
  8.                 self.contents = Bitmap.new(width - 32, height - 32)
  9.                 self.opacity = 0
  10.                 self.back_opacity = 0
  11.                 actor = $game_party.actors[@actor_num]
  12.                 @actor_nm = actor.name
  13.                 @actor_mhp = actor.maxhp
  14.                 @actor_msp = actor.maxsp
  15.                 @actor_hp = actor.hp
  16.                 @actor_sp = actor.sp
  17.                 @actor_cp = actor.hp_store   #修改的这里
  18.                 @actor_st = make_battler_state_text(actor, 120, true)
  19.                 @status_window = []
  20.                 for i in 0...5
  21.                         @status_window.push(Window_DetailsStatus.new(actor, i, x))
  22.                 end
  23.                 refresh(false)
  24.         end
  25.         #--------------------------------------------------------------------------
  26.         # ● 解放
  27.         #--------------------------------------------------------------------------
  28.         def dispose
  29.                 for i in 0...5
  30.                         @status_window[i].dispose
  31.                 end
  32.                 super
  33.         end
  34.         #--------------------------------------------------------------------------
  35.         # ● リフレッシュ
  36.         #--------------------------------------------------------------------------
  37.         def refresh(level_up_flags)
  38.                 self.contents.clear
  39.                 actor = $game_party.actors[@actor_num]
  40.                 @status_window[0].refresh(actor) if @actor_nm != actor.name
  41.                 @status_window[1].refresh(actor) if
  42.                 @actor_mhp != actor.maxhp or @actor_hp != actor.hp
  43.                 @status_window[2].refresh(actor) if
  44.                 @actor_msp != actor.maxsp or @actor_sp != actor.sp
  45.  
  46.                 @status_window[2].refresh(actor) if
  47.                 @actor_cp != actor.hp_store         #修改的这里
  48.  
  49.                 @status_window[3].refresh(actor, level_up_flags) if
  50.                 @actor_st != make_battler_state_text(actor, 120, true) or level_up_flags
  51.                 @actor_nm = actor.name
  52.                 @actor_mhp = actor.maxhp
  53.                 @actor_msp = actor.maxsp
  54.                 @actor_hp = actor.hp
  55.                 @actor_sp = actor.sp
  56.                 @actor_cp = actor.hp_store         #修改的这里
  57.                 @actor_st = make_battler_state_text(actor, 120, true)
  58.         end
  59.         #--------------------------------------------------------------------------
  60.         # ● ATゲージリフレッシュ
  61.         #--------------------------------------------------------------------------
  62.         def at_refresh
  63.                 @status_window[4].refresh($game_party.actors[@actor_num])
  64.         end
  65.         #--------------------------------------------------------------------------
  66.         # ● フレーム更新
  67.         #--------------------------------------------------------------------------
  68.         def update
  69.                 for window in @status_window
  70.                         window.update
  71.                 end
  72.         end
  73. end



普通攻击击中时   
请在Game_Battler中(   RTAB战斗系统 Ver 1.16 里 )
把下面    ★ 打中的时候蓄HP储存条 之间的内容添加在相应位置
RUBY 代码复制
  1. def attack_effect(attacker)
  2.                 # クリティカルフラグをクリア
  3.                 self.critical[attacker] = false
  4.                 state_p[attacker] = []
  5.                 state_m[attacker] = []
  6.                 # 第一命中判定
  7.                 hit_result = (rand(100) < attacker.hit)
  8.                 # 命中の場合
  9.                 if hit_result == true
  10.                         # 基本ダメージを計算
  11.                         atk = [attacker.atk - self.pdef / 2, 0].max
  12.                         self.damage[attacker] = atk * (20 + attacker.str) / 20
  13.                         # 属性修正
  14.                         self.damage[attacker] *= elements_correct(attacker.element_set)
  15.                         self.damage[attacker] /= 100
  16.                         # ダメージの符号が正の場合
  17.                         if self.damage[attacker] > 0
  18.                                 # クリティカル修正
  19.                                 if rand(100) < 4 * attacker.dex / self.agi
  20.                                         self.damage[attacker] *= 2
  21.                                         self.critical[attacker] = true
  22.                                 end
  23.                                 # 防御修正
  24.                                 if self.guarding?
  25.                                         self.damage[attacker] /= 2
  26.                                 end
  27.                         end
  28.                         # 分散
  29.                         if self.damage[attacker].abs > 0
  30.                                 amp = [self.damage[attacker].abs * 15 / 100, 1].max
  31.                                 self.damage[attacker] += rand(amp+1) + rand(amp+1) - amp
  32.                         end
  33.                         # 第二命中判定
  34.                         eva = 8 * self.agi / attacker.dex + self.eva
  35.                         hit = self.damage[attacker] < 0 ? 100 : 100 - eva
  36.                         hit = self.cant_evade? ? 100 : hit
  37.                         hit_result = (rand(100) < hit)
  38.                 end
  39.                 # 命中の場合
  40.                 if hit_result == true
  41.                         # ステート衝撃解除
  42.                         remove_states_shock
  43.                         # HP からダメージを減算
  44.                         # ステート変化
  45.                         @state_changed = false
  46.                         states_plus(attacker, attacker.plus_state_set)
  47.                         states_minus(attacker, attacker.minus_state_set)
  48.  
  49. # ★ 打中的时候蓄HP储存条
  50.                         if attacker.is_a?(Game_Actor)
  51.                         for i in $game_party.actors
  52.                                 if i == attacker
  53.                                         i.hp_store += 100
  54.                                                 i.hp_store = [i.hp_store,300].min
  55.                                 end
  56.                         end
  57.                 end  # ★ 打中的时候蓄HP储存条
  58.  
  59.                         # ミスの場合
  60.                 else
  61.                         # ダメージに "Miss" を設定
  62.                         self.damage[attacker] = "Miss"
  63.                         # クリティカルフラグをクリア
  64.                         self.critical[attacker] = false
  65.                 end
  66.                 # メソッド終了
  67.                 return true
  68.         end

挨打时的添加原脚本有,只是被注释了
搜索   
# ★ 挨打的时候蓄HP储存条
然后把英文字母之前的#删去就好

作者: a1072126939    时间: 2015-6-2 22:57
汪汪 发表于 2015-6-2 16:39
hp_store 的值 就是cp 的值

下面这个 ,让 cp 可以实时刷新

十分感谢无私帮助,感谢名单预定,打击和挨打获得CP已经设置成功(*^__^*)
另外我想彻底消除消耗SP使用技能获得CP的机制,请问该修改脚本的哪里?( ^ω^)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1