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

Project1

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

[RMVA发布] 【VA移植修改】CP制战斗 2012.05.09 更新

  [复制链接]

Lv3.寻梦者

梦石
0
星屑
1641
在线时间
2205 小时
注册时间
2010-6-27
帖子
1299
跳转到指定楼层
1
发表于 2012-1-27 21:26:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 pigsss 于 2012-5-9 10:15 编辑

应众人要求更新,修正各种bug


注意:敌人特殊能力【增加行动次数】不可用!


懒得上传了,直接贴脚本:
[pre lang="ruby" line="1"]#==============================================================================
# ●CP制战斗
# 原作者:桜雅 在土, 和希 (XP版CP制),韩云溪(AT即时战斗)
# 修改:pigsss
# 更新日期:2012.05.09
# 一个简单的cp战斗系统
# 好吧,我还是不明白为什么那么多人喜欢用…

# ·加强兼容性
# ·修正先制/被偷袭bug
# ·修正敌人隐藏bug
# ·修正逃跑失败bug

# ■✖ !注意-------------------------
# ·敌人特殊能力【增加行动次数】不可用│
#   ---------------------------------
#==============================================================================
module CP
#
# 基本能力消耗的CP值
#
CP_COST_SKILL_ITEM_ACTION = 65535 # 技能 物品
CP_COST_BASIC_ATTACK = 32768 # 攻撃
CP_COST_BASIC_GUARD = 32768 # 防御
CP_COST_BASIC_ESCAPE = 65535 #逃跑
end
#==============================================================================
# □ CP_Thread
#==============================================================================
class CP_Thread
  
# 战斗速度
#
BATTLE_SPEED = 1.0
#
# 战斗开始的时候气槽百分比
#
START_CP_PERCENT = 10
#
# CP满时的音效
#
FULL_SE = "Audio/SE/open1"
#--------------------------------------------------------------------------
# ○ 变量公开
#--------------------------------------------------------------------------
attr_accessor :stop # CP加算ストップ
#----------------------------------------------------------------------------
# ○ 初始化
#----------------------------------------------------------------------------
def initialize
@battlers = []
@cancel = false
@stop = false
@agi_total = 0
# 配列 count_battlers を初期化
count_battlers = []
# エネミーを配列 count_battlers に追加
for enemy in $game_troop.members
count_battlers.push(enemy)
end
# アクターを配列 count_battlers に追加
for actor in $game_party.battle_members
count_battlers.push(actor)
end
for battler in count_battlers
@agi_total += battler.agi
end

for battler in count_battlers
    battler.cp = [[65535 * START_CP_PERCENT * (rand(15) + 85) * 4 * battler.agi / @agi_total / 10000, 0].max, 65535].min
    battler.turn_count = 0
end
end
#----------------------------------------------------------------------------
# ○ CP更新
#----------------------------------------------------------------------------
def update
# 停止刷新
return if @stop
#
for battler in $game_party.battle_members + $game_troop.members
# 行動出来なければ無視
if battler.dead? || battler.hidden?
battler.cp = 0
next
end


battler.cp = [[battler.cp + BATTLE_SPEED * 2048 * battler.agi / @agi_total, 0].max, 65535].min
  
# CP满时
   
    if battler.cp >= battler.max_cp
        Audio.se_play(FULL_SE)
        BattleManager.set_enable_go(battler)
        battler.my_turn = true
        BattleManager.input_start
        break
      end
    unless BattleManager.cp_updating?
      return
    end

end
  
def update?
  return !@stop
end
end

#----------------------------------------------------------------------------
# ○ CPカウントの開始
#----------------------------------------------------------------------------
def stop
@cancel = true
if @cp_thread != nil then
@cp_thread.join
@cp_thread = nil
end
end
end
#==============================================================================
# ■ Game_BattlerBase
#------------------------------------------------------------------------------
#  管理战斗者的类。主要含有能力值计算的方法。Game_Battler 类的父类。
#==============================================================================
class Game_BattlerBase
  attr_reader   :cp                       # CP
  attr_accessor :turn_count
  attr_accessor :my_turn
  include CP
  #------------------------------
  alias old_initialize initialize
  def initialize
    old_initialize
    @cp = 0
    @turn_count = 0
    @my_turn = false
  end
  #------------------------------
  def inputable?
    if @my_turn
      return normal? && !auto_battle?# && @cp >= 65535
    else
      return false
    end
  end
  #--------------------------------------------------------------------------
  # ● 更改 CP
  #--------------------------------------------------------------------------
  def cp=(cp)
    @cp = [[cp, max_cp].min, 0].max
  end
  #--------------------------------------------------------------------------
  # ● 获取 CP 的最大值
  #--------------------------------------------------------------------------
  def max_cp
    return 65535
  end
  #--------------------------------------------------------------------------
  # ● 获取 CP 的比率
  #--------------------------------------------------------------------------
  def cp_rate
    @cp.to_f / 65535
  end
  #--------------------------------------------------------------------------
  # ● 扣除技能的使用消耗
  #--------------------------------------------------------------------------
  alias :old_pay_skill_cost :pay_skill_cost
  def pay_skill_cost(skill)
    old_pay_skill_cost(skill)
    ###########
    case skill.id
    when 1
     @cp -= CP_COST_BASIC_ATTACK
    when 2
     @cp -= CP_COST_BASIC_GUARD
    when 3...999 # 可自订不同消耗的技能
     @cp -= CP_COST_SKILL_ITEM_ACTION
    else
     @cp = 0
    end
    ###########
  end
end
#--------------------------------------------------------
class Game_Battler < Game_BattlerBase
  include CP
  #--------------------------------------------------------------------------
  # ● 消耗物品
  #--------------------------------------------------------------------------
  alias :old_consume_item :consume_item
  def consume_item(item)
    old_consume_item(item)
    ###########
    case item.id
    when 0...999 # 可自订不同消耗的物品
     @cp -= CP_COST_SKILL_ITEM_ACTION
    else
     @cp = 0
    end
    ###########
  end
end
#-------------------------------------
class Game_Party < Game_Unit
  def make_action(member)
    unless member == nil
      member.make_actions unless member.inputable?
    end
  end
end
#-------------------------------------
class Game_Troop < Game_Unit
  def make_action(member)
    member.make_actions unless member == nil
  end

  def increase_turn(enemy)
    troop.pages.each {|page| @event_flags

评分

参与人数 4星屑 +60 收起 理由
2498126422 + 6 很有用的脚本,凑整
黑白界 + 30 抱走了
asd11000 + 14 很好!研究下~
aaalbx + 10 尽吾所能给分之力,给分!

查看全部评分


于是我也广告下…

Lv1.梦旅人

梦石
0
星屑
66
在线时间
434 小时
注册时间
2006-5-25
帖子
201
2
发表于 2012-1-28 01:19:08 | 只看该作者
本帖最后由 忧雪の伤 于 2012-1-29 12:04 编辑
  1.   # ● 扣除技能的使用消耗
  2.   #--------------------------------------------------------------------------
  3.   def pay_skill_cost(skill)
  4.     self.mp -= skill_mp_cost(skill)
  5.     self.tp -= skill_tp_cost(skill)
  6.     ###########
  7.     case skill.id
  8.     when 1
  9.      @cp -= CP_COST_BASIC_ATTACK
  10.     when 2
  11.      @cp -= CP_COST_BASIC_GUARD
  12.     when 3...999 # 可自订不同消耗的技能
  13.      @cp -= CP_COST_SKILL_ITEM_ACTION
  14.     else
  15.      @cp = 0
  16.     end
复制代码
我想问一下怎么设置不同的技能ID所消耗的CP啊。。。。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1641
在线时间
2205 小时
注册时间
2010-6-27
帖子
1299
3
 楼主| 发表于 2012-1-28 20:49:21 | 只看该作者
xmheart 发表于 2012-1-28 01:19
# ● 扣除技能的使用消耗
  #----------------------------------------------------------------------- ...
  1. when 技能编号
  2. @cp -= 数字
复制代码

于是我也广告下…
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
66
在线时间
434 小时
注册时间
2006-5-25
帖子
201
4
发表于 2012-1-28 20:58:14 | 只看该作者
那 @cp -= CP_COST_SKILL_ITEM_ACTION跟when 技能编号 @cp -= 数字 有什么不同?
假如我是ID3的技能消耗60CP,那是不是
when 3
@cp -= 60


顺便看看LZ头像

点评

是的  发表于 2012-1-28 21:20
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
932
在线时间
524 小时
注册时间
2011-1-16
帖子
69
5
发表于 2012-1-31 15:54:21 | 只看该作者
如果能增加吟唱时间 和 cp打击/增加
就好了
回复 支持 反对

使用道具 举报

Lv2.观梦者

Adam

梦石
0
星屑
723
在线时间
841 小时
注册时间
2010-8-24
帖子
2595
6
发表于 2012-1-31 17:02:41 | 只看该作者
好厉害哦!如果能像XP的CP就好了。
嘛,摸了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
66
在线时间
434 小时
注册时间
2006-5-25
帖子
201
7
发表于 2012-2-1 00:59:33 | 只看该作者
呼叫楼主,我分辨率改成800*608,结果就这样了。改来改去最后只能这样,这么才能移动那个窗口啊。。。。

未命名.jpg (61.14 KB, 下载次数: 47)

未命名.jpg

未命名1.jpg (44.44 KB, 下载次数: 52)

未命名1.jpg
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1641
在线时间
2205 小时
注册时间
2010-6-27
帖子
1299
8
 楼主| 发表于 2012-2-1 11:15:54 | 只看该作者
本帖最后由 pigsss 于 2012-2-1 11:16 编辑

#--------------------------------------------------------------------------

450.  # ● 生成状态窗口

  #--------------------------------------------------------------------------

  def create_CP_window

    @cp_window = Window_CP.new

    @cp_window.x = 0

    @cp_window.y = 296 #########<======这里,自己调调吧

  end

class Window_CP < Window_Selectable

#--------------------------------------------------------------------------

  # ● 初始化对象

  #--------------------------------------------------------------------------

  def initialize

    super(0, 0, window_width, window_height)   #######<=== 这里 改回去

    refresh

    self.openness = 0

    self.opacity = 200

    self.contents_opacity = 200

  end
===============================================
其他功能我过几天回家再说



于是我也广告下…
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
66
在线时间
434 小时
注册时间
2006-5-25
帖子
201
9
发表于 2012-2-1 15:45:15 | 只看该作者
pigsss 发表于 2012-2-1 11:15
#--------------------------------------------------------------------------

450.  # ● 生成状态窗 ...

不行啊,调了之后要不变长,要不变短,就是不能把它移到下面对齐
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
60 小时
注册时间
2012-2-8
帖子
10
10
发表于 2012-2-11 01:35:59 | 只看该作者
脚本很清晰,适合我等新手观摩和学习!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-21 21:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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