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

Project1

 找回密码
 注册会员
搜索
楼主: zhong

[RMVX发布] VX半即时战斗系统1.03b版(拉尔夫战记的产物)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-7-30
帖子
10
发表于 2008-9-17 03:33:45 | 显示全部楼层
“逃跑”呢?为啥“逃跑”选项没有了???
小弟系菜鸟,大哥哥帮忙
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
发表于 2008-9-19 17:12:40 | 显示全部楼层
以下引用ynwslom于2008-9-16 19:33:45的发言:

“逃跑”呢?为啥“逃跑”选项没有了???


看范例工程的MAIN下面的备用脚本啊!!

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
 楼主| 发表于 2008-9-24 01:46:31 | 显示全部楼层
以下引用ynwslom于2008-9-16 19:33:45的发言:

“逃跑”呢?为啥“逃跑”选项没有了???

楼上正解。
以下引用土萌萤于2008-9-11 22:30:29的发言:

谢谢zhong大,战斗显示血条的话,我已经有个简单的了~当然,您如果能把趙雲大大血条脚本,地址http://rpg.blue/viewthread.php?tid=76729整合进去的话,那就最棒了!
不过好象有个问题哟~就是CP行走图会走出CP条!
图:

还有个问题,就是您在解答我的帖子的里面说:

不过依然是无法判断回合数的条件。。。因为cp战斗总的回合数的计算没有任何标准。。。。。

如果我要设置一个状态,比如说设置个睡眠状态,要设置多少个回合苏醒过来才算合理呢~
因为CP条中的行走图,走一圈之后,不算一个回合的~所以我比较迷惘,要怎么设置才合适!?
这个问题,我是不是问得有点小白了呀!!!-_-

pS:最后个问题,如果调整CP条行走图的速度,在与敌人差不多的速度下,CP条行走图的速度貌似有点快,想移慢的说...


[本贴由作者于 2008-9-11 22:37:16 最后编辑]

状态回合的算法是这个战斗者走一圈就算一个回合。。。就算战斗者停止行走了,也会按他原来的cp增长速度计算回合。连续伤害出错的问题解决了。。。顺便整合了个脚本,直接插入原脚本之下就行了。。。非默认版不适用。。。。
  1. #============================================================================
  2. #本脚本来自66RPG,作者趙雲,如需转载请保留本信息。
  3. #★默认半即时战斗整合版
  4. #★原作者:赵云
  5. #==============================================================================
  6. # ■ Arrow_Base
  7. #------------------------------------------------------------------------------
  8. #  在战斗画面使用的箭头光标的活动块。本类作为
  9. # Arrow_Enemy 类与 Arrow_Actor 类的超级类使用。
  10. #==============================================================================

  11. class Arrow_Base < Sprite
  12.   #--------------------------------------------------------------------------
  13.   # ● 定义实例变量
  14.   #--------------------------------------------------------------------------
  15.   attr_reader   :index                    # 光标位置
  16.   attr_reader   :help_window              # 帮助窗口
  17.   #--------------------------------------------------------------------------
  18.   # ● 初始化对像
  19.   #     viewport : 显示端口
  20.   #--------------------------------------------------------------------------
  21.   def initialize(viewport)
  22.     super(viewport)
  23.     self.bitmap = Cache.system("Arrow")
  24.     self.ox = 16
  25.     self.oy = 64
  26.     self.z = 2500
  27.     @blink_count = 0
  28.     @index = 0
  29.     @help_window = nil
  30.     update
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 设置光标位置
  34.   #     index : 新的光标位置
  35.   #--------------------------------------------------------------------------
  36.   def index=(index)
  37.     @index = index
  38.     update
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 设置帮助窗口
  42.   #     help_window : 新的帮助窗口
  43.   #--------------------------------------------------------------------------
  44.   def help_window=(help_window)
  45.     @help_window = help_window
  46.     # 刷新帮助文本 (update_help 定义了继承目标)
  47.     if @help_window != nil
  48.       update_help
  49.     end
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 刷新画面
  53.   #--------------------------------------------------------------------------
  54.   def update
  55.     # 刷新点灭记数
  56.     @blink_count = (@blink_count + 1) % 12
  57.     # 设置传送源矩形
  58.     if @blink_count < 6
  59.       self.src_rect.set(0, 0, 32, 32)
  60.     else
  61.       self.src_rect.set(32, 0, 32, 32)
  62.     end
  63.     # 刷新帮助文本 (update_help 定义了继承目标)
  64.     if @help_window != nil
  65.       update_help
  66.     end
  67.   end
  68. end
  69. #==============================================================================
  70. # ■ Arrow_Enemy
  71. #------------------------------------------------------------------------------
  72. #  选择敌人的箭头光标。本类继承 Arrow_Base
  73. # 类。
  74. #==============================================================================

  75. class Arrow_Enemy < Arrow_Base
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取光标指向的敌人
  78.   #--------------------------------------------------------------------------
  79.   def enemy
  80.     return $game_troop.members[@index]
  81.   end
  82.   
  83.   def dispose
  84.     @enemy.loop_white_flash = false unless @enemy.nil?
  85.     super
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 刷新画面
  89.   #--------------------------------------------------------------------------
  90.   def update
  91.     super
  92.      if @enemy != enemy and enemy.exist?
  93.         @enemy.loop_white_flash = false unless @enemy.nil?
  94.         enemy.loop_white_flash = true
  95.         @enemy = enemy
  96.       end  
  97.    
  98.     # 如果指向不存在的敌人就离开
  99.     $game_troop.members.size.times do
  100.       break if self.enemy.exist?
  101.       @index += 1
  102.       @index %= $game_troop.members.size
  103.     end
  104.     # 光标右
  105.     if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN)
  106.       Sound.play_cursor
  107.       $game_troop.members.size.times do
  108.         @index += 1
  109.         @index %= $game_troop.members.size
  110.         break if self.enemy.exist?
  111.       end
  112.     end
  113.     # 光标左
  114.     if Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP)
  115.      Sound.play_cursor
  116.       $game_troop.members.size.times do
  117.         @index += $game_troop.members.size - 1
  118.         @index %= $game_troop.members.size
  119.         break if self.enemy.exist?
  120.       end
  121.     end
  122.     # 设置活动块坐标
  123.     if self.enemy != nil
  124.       self.x = self.enemy.screen_x
  125.       self.y = self.enemy.screen_y
  126.     end
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 刷新帮助文本
  130.   #--------------------------------------------------------------------------
  131.   def update_help
  132.     # 帮助窗口显示敌人的名字与状态
  133.     @help_window.set_enemy(self.enemy)
  134.   end
  135. end





  136. class Scene_Battle ##
  137.   
  138.   
  139.   #--------------------------------------------------------------------------
  140.   # ● 更新画面
  141.   #--------------------------------------------------------------------------
  142.   def update
  143.     super
  144.     update_basic(true)
  145.     update_info_viewport                  # 更新显示信息的视区
  146.     if $game_message.visible
  147.       @info_viewport.visible = false
  148.       @message_window.visible = true
  149.     end
  150.     unless $game_message.visible          # 在显示消息以外的情况
  151.       return if judge_win_loss            # 判断胜败
  152.       update_scene_change
  153.       
  154.       if @target_enemy_window != nil
  155.         update_target_enemy_selection     # 选择敌方对象
  156.       elsif @enemy_arrow != nil
  157.         update_target_enemy_selection     # 选择敌方对象
  158.       elsif @target_actor_window != nil
  159.         update_target_actor_selection     # 选择对象角色
  160.       elsif @skill_window != nil
  161.         update_skill_selection            # 选择特技
  162.       elsif @item_window != nil
  163.         update_item_selection             # 选择物品
  164.       elsif @party_command_window.active
  165.         update_party_command_selection    # 选择同伴指令
  166.       elsif @actor_command_window.active
  167.         update_actor_command_selection    # 选择角色指令
  168.       #=================================
  169.       elsif @cp_battle.stop ==  false
  170.         active_battler_update
  171.       #=================================  
  172.         
  173.       else
  174.         process_battle_event              # 战斗处理
  175.         process_action                    # 战斗行动
  176.         process_battle_event              # 处理战斗事件
  177.       end
  178.     end
  179.   end
  180.   

  181.   
  182.   def set_window(visible)
  183.     if !@skill_window.nil?
  184.       @skill_window.visible = visible
  185.     elsif !@item_window.nil?
  186.       @item_window.visible = visible
  187.     end
  188.   end

  189.   #--------------------------------------------------------------------------
  190.   # ● 开始选择对象的敌方角色
  191.   #--------------------------------------------------------------------------
  192.   def start_target_enemy_selection
  193.     set_window(false)
  194.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport3)
  195.     @enemy_window = Window_Enemy.new(176,0)
  196.     @enemy_arrow.help_window = @enemy_window
  197.     @actor_command_window.active = false
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 选择对象敌方角色结束
  201.   #--------------------------------------------------------------------------
  202.   def end_target_enemy_selection
  203.     @enemy_arrow.dispose
  204.     @enemy_arrow = nil
  205.     @enemy_window.dispose
  206.     set_window(true)
  207.     if @actor_command_window.index == 0
  208.       @actor_command_window.active = true
  209.     end
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ● 更新选择对象敌方角色
  213.   #--------------------------------------------------------------------------

  214.   def update_target_enemy_selection

  215.     @enemy_arrow.update
  216.     if Input.trigger?(Input::B)
  217.       Sound.play_cancel
  218.       end_target_enemy_selection
  219.     elsif Input.trigger?(Input::C)
  220.       Sound.play_decision
  221.       @active_battler.action.target_index =  @enemy_arrow.enemy.index
  222.       end_target_enemy_selection
  223.       end_skill_selection
  224.       end_item_selection
  225.      
  226.       #============================
  227.        @active_battler.cp = 0
  228.       #============================
  229.        next_actor
  230.     end
  231.   end

  232. end


  233. class Spriteset_Battle ##
  234.   def viewport3
  235.     return @viewport3
  236.   end  
  237. end

  238. class Game_Battler
  239.   attr_accessor :loop_white_flash              # 循环白色闪烁标记
  240. end

  241. class Sprite_Battler ##
  242.   alias old_setup_new_effect setup_new_effect
  243.   def setup_new_effect
  244.     if @battler.loop_white_flash and @effect_duration == 0
  245.       @battler.white_flash = true
  246.     end
  247.     old_setup_new_effect
  248.   end
  249. end


  250. #==============================================================================
  251. # ■ Window_Enemy
  252. #------------------------------------------------------------------------------
  253. #  显示敌人信息的窗口,光标Arrow用。
  254. #==============================================================================

  255. class Window_Enemy < Window_Base
  256.   #--------------------------------------------------------------------------
  257.   # ● 初始化窗口
  258.   #     x : 窗口的X坐标
  259.   #     y : 窗口的Y坐标
  260.   #--------------------------------------------------------------------------
  261.   def initialize(x, y)
  262.     super(x, y, 288, WLH * 2 + 32)

  263.   end

  264.   #--------------------------------------------------------------------------
  265.   # ● 设置文本
  266.   #     text  : 窗口显示的字符串
  267.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  268.   #--------------------------------------------------------------------------
  269.   def set_text(text, align = 0)
  270.     # 如果文本和对齐方式的至少一方与上次的不同
  271.     if text != @text or align != @align
  272.       # 再描绘文本
  273.       self.contents.clear
  274.       self.contents.font.color = normal_color
  275.       self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  276.       @text = text
  277.       @align = align
  278.       @actor = nil
  279.     end
  280.     self.visible = true
  281.   end
  282.   
  283.   
  284.   #--------------------------------------------------------------------------
  285.   # ● 设置敌人
  286.   #     enemy : 要显示名字和状态的敌人
  287.   #--------------------------------------------------------------------------
  288.   def set_enemy(enemy)
  289.     if @enemy != enemy
  290.     text = enemy.name
  291.     set_text(text)
  292.     w = enemy.states.size * 24
  293.     draw_actor_state(enemy, contents.width - w , 0, w)
  294.     draw_actor_hp(enemy, 0 , WLH  )
  295.     draw_actor_mp(enemy, contents.width - 120 , WLH )
  296.     @enemy = enemy
  297.     end
  298.   end
  299. end
复制代码

在提问区看到说那个经验提示窗口有点问题....看了下...以前竟然没发现....修复了...呵呵~~~~以前版本直接把原窗口类覆盖了就行了....
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
6 小时
注册时间
2007-3-8
帖子
13
发表于 2008-10-1 02:07:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
20
在线时间
0 小时
注册时间
2008-5-2
帖子
2
发表于 2008-10-26 18:23:35 | 显示全部楼层
一个字:慢啊~~~~~~
版主对此帖的评论:『被我发现你挖坟了哦』,积分『-5』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2008-5-9
帖子
123
发表于 2008-10-31 05:51:39 | 显示全部楼层
不想要那个战斗背景图怎么删除啊?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2008-5-9
帖子
123
发表于 2008-11-14 06:14:24 | 显示全部楼层
……为什么,我用了这个以后逃跑就没掉了!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-11-15
帖子
12
发表于 2008-11-18 06:36:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-11-15
帖子
12
发表于 2008-11-18 17:39:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
 楼主| 发表于 2008-12-1 02:01:47 | 显示全部楼层
以下引用badutib于2008-11-17 22:36:37的发言:

发现一个问题:
   物品和技能使用时调用公共事件,则该事件只会在战斗结束进入地图画面后才调用,而不是在使用物品或技能的同时调用!

一直找不到问题的原因

更新了~~~`,不过可能还有未知bug......谢谢大家....不好意思~~这么久才更新~~~~以前版本没考虑到战斗事件这回事....所以一直不支持任何战斗中的事件......旧版本如果对战斗系统未作任何改动,直接用现在的脚本覆盖原脚本就行了.....测试的时候还发现了前一个版本那个图标战斗指令窗口也有点bug,顺便修复了~~~``
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 04:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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