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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: zhong
打印 上一主题 下一主题

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

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
11
 楼主| 发表于 2008-8-27 08:47:25 | 显示全部楼层
以下引用dicksonh于2008-8-10 6:19:57的发言:

對不起 大大  我知道你真的好好人了  這麼快回複
那麼遊戲內定的那個第一身形態的直版戰鬥的即時系統
一直是我想要的  
可以只在原版遊戲中加CP條功能嗎? 太謝謝了~!!!

做一个默认版的..更新在顶楼...可能会有点bug...

以下引用zh99998于2008-8-24 15:43:18的发言:

能否加个地图<->背景文件匹配列表功能
每张地图必须有一张同名图片,但是如果有20张不同名森林地图,要相同的战斗背景,那么就要复制20份那个图片起不同的名字,我想在脚本里直接记录下地图id与图片的对应关系,应该怎么改(如果在对应表里找不到,就用RMVX默认那种背景,那种动态背景有时能用到)

还有,能不能设定如果没有cp行走图,就拿角色行走图代替(顺便加上走路效果)

提问帖:http://rpg.blue/viewthread.php?tid=100300

角色行走......貌似以前弄过,不过不是一般的卡......你所说的地图问题...以前也想到...不过有偷懒的方法所以偷懒没弄...现在改了一下....可以在哈希表自己设置对应关系了..如果找不到战斗背景就用默认的战斗背景...角色cp图缺失时用其行走图....已更新在1.03中....
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
12
 楼主| 发表于 2008-9-4 19:52:28 | 显示全部楼层
以下引用zh99998于2008-8-27 7:19:40的发言:

逃跑!逃跑!逃跑在哪?如果不想占用菜单那就用快捷键吧,L和R(pgup,pgdn)一起按=逃跑

晕,看到了,在main下面那啥,L+R=逃跑 这个可以吗

我说的默认战斗背景是那种动态的混沌的的那种,1.03里用的是当前画面截图……


[本贴由作者于 2008-8-27 7:30:07 最后编辑]

嗯!?会吗?我做的默认的战斗背景就是那种混沌化的呀.....难道RP问题.....逃跑的脚本在main底下直接插进去就是了.....

准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
13
 楼主| 发表于 2008-9-12 00:34:45 | 显示全部楼层
以下引用土萌萤于2008-9-8 1:16:22的发言:

大大~发现个问题~
默认版CP战斗脚本中,在战斗的时候,系统不会刷新我方血条.
对了,ZHONG大,能不能在默认版CP中加入敌人血条和敌人选择光标呢?

已经更新了。。在顶楼。。。忘了加刷新语句。。。。如果你不想下载的话直接在脚本中找到
def start_party_command

在其下加上
@status_window.refresh

就行了。。。。至于血条问题....你看看加个敌人血条脚本上去行不.....如果不行贴出来我帮你整合下......敌人选择光标有空我加上去一下吧....
以下引用zh99998于2008-9-6 9:55:29的发言:

我晕,在范例里是以当前窗口为战斗背景,挪到自己游戏里就不是了……


继续提建议,当找不到角色战斗图的时候用行走图代替
怎么让这个脚本能在640*480的窗口下运行(其实也就是改坐标)

行走图作战斗图~~~~苦力活~~开学了,比较没时间....什么时候有时间考虑加进去吧.....至于那个640*480是坐标问题了,这个太繁琐了...无能为力.....谢谢你的建议~~呵呵~~~
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

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

一直找不到问题的原因

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
16
 楼主| 发表于 2008-12-9 00:23:11 | 显示全部楼层
应求发布一个特技吟唱插件脚本,插在原脚本下就可以了~~`
使用方法简单说明一下~~~
1、"数据库" "特技"  "使用时信息"  的第二个对话框写入想要显示的吟唱内容。
2、可在第一个对话框里设置吟唱时显示的头像,格式为  头像文件名,头像序号 如 Actor1,5
3、 如果第一个对话框为空,则此时如果是角色使用特技,显示角色头像,敌人则不显示。


  1. #==========================================================================
  2. #★VX半即时战斗系统 特技吟唱插件
  3. #★作者:Zhong_Zw
  4. #★联系方式:[email protected] 或 论坛短信
  5. #★插件功能:在特技使用前弹出对话框显示吟唱内容.
  6. #★使用说明:直接插在原战斗脚本下方可。
  7. #1、"数据库" "特技"  "使用时信息"  的第二个对话框写入想要显示的吟唱内容。
  8. #2、可在第一个对话框里设置吟唱时显示的头像,格式为  头像文件名,头像序号 如 Actor1,5
  9. #3、 如果第一个对话框为空,则此时如果是角色使用特技,显示角色头像,敌人则不显示。
  10. #==========================================================================
  11. MESSAGE_WAIT_TIME = 65 #内容显示时间
  12. class Scene_Battle < Scene_Base   
  13.   #============================
  14.   #★特技   执行
  15.   #============================
  16.   def execute_action_skill
  17.     skill = @active_battler.action.skill
  18.     #======================================
  19.     #☆添加特技吟唱效果
  20.     #======================================
  21.    unless skill.message2.empty?
  22.     text = @active_battler.name  
  23.     #=========================================
  24.     @message_window.add_face(skill.message1,@active_battler)
  25.     #=========================================
  26.     @message_window.visible = true
  27.     @message_window.add_instant_text(text)
  28.     wait(10)
  29.     @message_window.add_instant_text(skill.message2)
  30.    
  31.    
  32.     #=======================================
  33.      wait_for_message2
  34.    
  35.    
  36.     end  
  37.     targets = @active_battler.action.make_targets
  38.    
  39.    
  40.     user = @active_battler.action.skill_user
  41.     if skill.animation2_id != 0
  42.       display_animation(user,skill.animation2_id)
  43.     end  
  44.     display_animation(targets, skill.animation_id)
  45.    
  46.     wait_for_animation
  47.    
  48.     @active_battler.mp -= @active_battler.calc_mp_cost(skill)
  49.     $game_temp.common_event_id = skill.common_event_id
  50.     for target in targets
  51.       target.skill_effect(@active_battler, skill)
  52.       display_action_effects(target, skill)
  53.     end
  54.    
  55.   end
  56.   def wait_for_message2
  57.     @message_window.update
  58.     while $game_message.visible
  59.       Graphics.update
  60.       @message_window.update   
  61.     end
  62.     wait(MESSAGE_WAIT_TIME)
  63.     @message_window.clear
  64.     @message_window.visible =false
  65.   end
  66.   
  67. end  

  68. #==============================================================================
  69. # ■ Window_BattleMessage
  70. #------------------------------------------------------------------------------
  71. #  在战斗中显示消息的窗口。附加有普通消息窗口的功能、显示战斗进行中提示的
  72. # 的机能。
  73. #==============================================================================

  74. class Window_BattleMessage < Window_Message
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对象
  77.   #--------------------------------------------------------------------------
  78.   def initialize
  79.     super
  80.     self.openness = 255
  81.     @lines = []
  82.     @face_space = 0
  83.     @face_txt = ""
  84.     @battler = nil
  85.     refresh
  86.   end
  87.   #======================
  88.   #
  89.   #======================
  90.   def add_face(face_txt,battler)

  91.      @face_txt = face_txt
  92.      if @face_txt.empty?
  93.        if battler.is_a?(Game_Actor)
  94.        #draw_actor_face(battler, 0, 0, 96)
  95.         @face_space = 96
  96.        else
  97.         @face_space = 0
  98.       end
  99.      end
  100.      @battler = battler
  101.    end
  102.    #==============================
  103.    #
  104.    #==============================
  105.    
  106.    def draw_battler_face()
  107.      if @face_txt.empty?
  108.        if @battler.is_a?(Game_Actor)
  109.         draw_actor_face(@battler, 0, 0, 96)
  110.         @face_space = 96
  111.        else
  112.         @face_space = 0
  113.        end
  114.      else
  115.        @face_space = 96
  116.        face_name = @face_txt.split(/,/)[0].to_s
  117.        face_index = @face_txt.split(/,/)[1].to_i
  118.        draw_face(face_name,face_index,0,0,96)
  119.       
  120.       
  121.     end
  122.      
  123.      
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 刷新
  127.   #--------------------------------------------------------------------------
  128.   def refresh
  129.     self.contents.clear
  130.    
  131.     for i in [email protected]
  132.       draw_line(i)
  133.     end
  134.    draw_battler_face()
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 描绘行
  138.   #     index : 行编号
  139.   #--------------------------------------------------------------------------
  140.   def draw_line(index)
  141.     rect = Rect.new(0, 0, 0, 0)
  142.     rect.x += 4 + @face_space
  143.     rect.y += index * WLH
  144.     rect.width = contents.width - 8
  145.     rect.height = WLH
  146.     self.contents.clear_rect(rect)
  147.     self.contents.font.color = normal_color
  148.     self.contents.draw_text(rect, @lines[index])
  149.   end
  150.   
  151. end  
复制代码
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 13:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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