查看: 2472|回复: 2

[已经解决] 请问CP(怒气值)动态横版+RTAB+CP技整合脚本中CP获得的方...

[复制链接]
梦石
0
星屑
55
在线时间
122 小时
注册时间
2011-2-7
回帖
135
发表于 2015-6-2 12:02:58 | 显示全部楼层 |阅读模式

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

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

×
动态横版+RTAB+CP技整合脚本来源:http://6rweb.sinaapp.com/articles/4963

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

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

本人联系QQ:2239540225

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
发表于 2015-6-2 16:39:13 | 显示全部楼层
本帖最后由 汪汪 于 2015-6-2 17:42 编辑

hp_store 的值 就是cp 的值

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

[pre lang="ruby"]class Window_ActorStatus < Window_Base
        #--------------------------------------------------------------------------
        # ● オブジェクト初期化
        #--------------------------------------------------------------------------
        def initialize(id, x)
                @actor_num = id
                super(x, 320, 160, 160)
                self.contents = Bitmap.new(width - 32, height - 32)
                self.opacity = 0
                self.back_opacity = 0
                actor = $game_party.actors[@actor_num]
                @actor_nm = actor.name
                @actor_mhp = actor.maxhp
                @actor_msp = actor.maxsp
                @actor_hp = actor.hp
                @actor_sp = actor.sp
                @actor_cp = actor.hp_store   #修改的这里
                @actor_st = make_battler_state_text(actor, 120, true)
                @status_window = []
                for i in 0...5
                        @status_window.push(Window_DetailsStatus.new(actor, i, x))
                end
                refresh(false)
        end
        #--------------------------------------------------------------------------
        # ● 解放
        #--------------------------------------------------------------------------
        def dispose
                for i in 0...5
                        @status_window.dispose
                end
                super
        end
        #--------------------------------------------------------------------------
        # ● リフレッシュ
        #--------------------------------------------------------------------------
        def refresh(level_up_flags)
                self.contents.clear
                actor = $game_party.actors[@actor_num]
                @status_window[0].refresh(actor) if @actor_nm != actor.name
                @status_window[1].refresh(actor) if
                @actor_mhp != actor.maxhp or @actor_hp != actor.hp
                @status_window[2].refresh(actor) if
                @actor_msp != actor.maxsp or @actor_sp != actor.sp
               
                @status_window[2].refresh(actor) if
                @actor_cp != actor.hp_store         #修改的这里
               
                @status_window[3].refresh(actor, level_up_flags) if
                @actor_st != make_battler_state_text(actor, 120, true) or level_up_flags
                @actor_nm = actor.name
                @actor_mhp = actor.maxhp
                @actor_msp = actor.maxsp
                @actor_hp = actor.hp
                @actor_sp = actor.sp
                @actor_cp = actor.hp_store         #修改的这里
                @actor_st = make_battler_state_text(actor, 120, true)
        end
        #--------------------------------------------------------------------------
        # ● ATゲージリフレッシュ
        #--------------------------------------------------------------------------
        def at_refresh
                @status_window[4].refresh($game_party.actors[@actor_num])
        end
        #--------------------------------------------------------------------------
        # ● フレーム更新
        #--------------------------------------------------------------------------
        def update
                for window in @status_window
                        window.update
                end
        end
end[/pre]


普通攻击击中时   
请在Game_Battler中(   RTAB战斗系统 Ver 1.16 里 )
把下面    ★ 打中的时候蓄HP储存条 之间的内容添加在相应位置
[pre lang="ruby"]        def attack_effect(attacker)
                # クリティカルフラグをクリア
                self.critical[attacker] = false
                state_p[attacker] = []
                state_m[attacker] = []
                # 第一命中判定
                hit_result = (rand(100) < attacker.hit)
                # 命中の場合
                if hit_result == true
                        # 基本ダメージを計算
                        atk = [attacker.atk - self.pdef / 2, 0].max
                        self.damage[attacker] = atk * (20 + attacker.str) / 20
                        # 属性修正
                        self.damage[attacker] *= elements_correct(attacker.element_set)
                        self.damage[attacker] /= 100
                        # ダメージの符号が正の場合
                        if self.damage[attacker] > 0
                                # クリティカル修正
                                if rand(100) < 4 * attacker.dex / self.agi
                                        self.damage[attacker] *= 2
                                        self.critical[attacker] = true
                                end
                                # 防御修正
                                if self.guarding?
                                        self.damage[attacker] /= 2
                                end
                        end
                        # 分散
                        if self.damage[attacker].abs > 0
                                amp = [self.damage[attacker].abs * 15 / 100, 1].max
                                self.damage[attacker] += rand(amp+1) + rand(amp+1) - amp
                        end
                        # 第二命中判定
                        eva = 8 * self.agi / attacker.dex + self.eva
                        hit = self.damage[attacker] < 0 ? 100 : 100 - eva
                        hit = self.cant_evade? ? 100 : hit
                        hit_result = (rand(100) < hit)
                end
                # 命中の場合
                if hit_result == true
                        # ステート衝撃解除
                        remove_states_shock
                        # HP からダメージを減算
                        # ステート変化
                        @state_changed = false
                        states_plus(attacker, attacker.plus_state_set)
                        states_minus(attacker, attacker.minus_state_set)

# ★ 打中的时候蓄HP储存条
                        if attacker.is_a?(Game_Actor)
                        for i in $game_party.actors
                                if i == attacker
                                        i.hp_store += 100
                                                i.hp_store = [i.hp_store,300].min
                                end
                        end
                end  # ★ 打中的时候蓄HP储存条

                        # ミスの場合
                else
                        # ダメージに "Miss" を設定
                        self.damage[attacker] = "Miss"
                        # クリティカルフラグをクリア
                        self.critical[attacker] = false
                end
                # メソッド終了
                return true
        end[/pre]
挨打时的添加原脚本有,只是被注释了
搜索   
# ★ 挨打的时候蓄HP储存条
然后把英文字母之前的#删去就好

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
55
在线时间
122 小时
注册时间
2011-2-7
回帖
135
 楼主| 发表于 2015-6-2 22:57:39 | 显示全部楼层
汪汪 发表于 2015-6-2 16:39
hp_store 的值 就是cp 的值

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

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

点评

RTAB战斗系统 Ver 1.16 里 有一段有很多 关于这个cp的操作,旁边还有sp消耗什么的,可以找找,注释掉就好  发表于 2015-6-3 00:07
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部