Project1

标题: 已解决…… [打印本页]

作者: 谢拉卡姗娜    时间: 2011-3-31 03:04
标题: 已解决……
本帖最后由 谢拉卡姗娜 于 2011-4-1 18:20 编辑

已解决……dsu_plus_rewardpost_czw
作者: 狐狸    时间: 2011-3-31 10:04
话说谢啦的战斗系统是啥战斗系统来的 ········  听你说的貌似也不是什么非常难的东西也·····
作者: 果冻叮当猫    时间: 2011-3-31 10:11
战斗中执行公共事件的方法,早就有人实现过的了,有一个叫做“战斗中召唤一次性召唤兽”这个帖子里面就是实现了战斗中调用公共事件来召唤怪兽。战斗结束就清除,自己去看一下吧……
作者: 后知后觉    时间: 2011-3-31 11:56
  1. #==============================================================================
  2. # ■ 战斗中刷新指定公共事件
  3. #------------------------------------------------------------------------------
  4. #   作者:后知后觉 2011-3-31
  5. #  冲突可能:有别的脚本对 数据库->队伍 的 名字 进行处理
  6. #  设置方法:在 数据库->队伍 的名字后面添加如下的格式 可以连续添加多次
  7. #            @公共事件ID,TurnA,TurnB
  8. #    公共事件ID指的是要运行的 公共事件的编号
  9. #    TurnA 和 TurnB 为整数
  10. #          其代表意义和队伍事件的执行条件中的 回合a+bx 一样
  11. #  举例:幽灵*3@1,0,0
  12. #        蜥蜴*2@1,0,2
  13. #        蜥蜴*3@2,0,1@1,1,2
  14. #==============================================================================

  15. #==============================================================================
  16. # ■ Scene_Battle
  17. #==============================================================================

  18. class Scene_Battle
  19.   alias hzhj_old_main_for_common_event main
  20.   alias hzhj_old_setup_battle_event_for_common_event setup_battle_event
  21.   alias hzhj_old_start_phase4_for_common_event start_phase4
  22.   #--------------------------------------------------------------------------
  23.   # ● 主处理
  24.   #--------------------------------------------------------------------------
  25.   def main
  26.     $data_troops[$game_temp.battle_troop_id].hzhj_set_new_parameters
  27.     @hzhj_events = $data_troops[$game_temp.battle_troop_id].hzhj_events
  28.     @hzhj_turns = $data_troops[$game_temp.battle_troop_id].hzhj_turns
  29.     @hzhj_flags = Array.new
  30.     hzhj_old_main_for_common_event
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 设置战斗事件
  34.   #--------------------------------------------------------------------------
  35.   def setup_battle_event
  36.     if $game_system.battle_interpreter.running?
  37.       return
  38.     end
  39.     if not @hzhj_events.empty?
  40.       for i in 0...@hzhj_events.size
  41.         next if @hzhj_flags[i]
  42.         n = $game_temp.battle_turn
  43.         a = @hzhj_turns[i][0]
  44.         b = @hzhj_turns[i][1]
  45.         if (b == 0 and n != a) or
  46.            (b > 0 and (n < 1 or n < a or n % b != a % b))
  47.           next
  48.         end
  49.         $game_system.battle_interpreter.setup(@hzhj_events[i].list, 0)
  50.         @hzhj_flags[i] = true
  51.         return
  52.       end
  53.     end
  54.     hzhj_old_setup_battle_event_for_common_event
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 开始主回合
  58.   #--------------------------------------------------------------------------
  59.   def start_phase4
  60.     hzhj_old_start_phase4_for_common_event
  61.     @hzhj_flags.clear
  62.   end
  63. end

  64. module RPG
  65.   class Troop
  66.     attr_writer :hzhj_events
  67.     attr_writer :hzhj_turns
  68.     def name
  69.       hzhj_set_new_parameters if @hzhj_name.nil?
  70.       return @hzhj_name
  71.     end
  72.     def hzhj_events
  73.       hzhj_set_new_parameters if @hzhj_name.nil?
  74.       return @hzhj_events
  75.     end
  76.     def hzhj_turns
  77.       hzhj_set_new_parameters if @hzhj_name.nil?
  78.       return @hzhj_turns
  79.     end
  80.     def hzhj_set_new_parameters
  81.       return if not @hzhj_name.nil?
  82.       temp = @name.split(/@/)
  83.       @hzhj_events = Array.new
  84.       @hzhj_turns = Array.new
  85.       if temp.size <= 1
  86.         @hzhj_name = temp[0].nil? ? "" : temp[0]
  87.         return
  88.       end
  89.       @hzhj_name = temp.shift
  90.       for i in 0...temp.size
  91.         temp_e = temp[i].split(/,/)
  92.         @hzhj_events[i] = $data_common_events[temp_e[0].to_i.abs]
  93.         @hzhj_turns[i] = Array.new
  94.         @hzhj_turns[i][0] = temp_e[1].to_i.abs
  95.         @hzhj_turns[i][1] = temp_e[2].to_i.abs
  96.       end
  97.     end
  98.   end
  99. end
复制代码

作者: 柳之一    时间: 2011-3-31 12:18
本帖最后由 柳之一 于 2011-3-31 12:19 编辑
  1. #不干扰战斗系统的调用公共事件

  2. class Scene_Battle
  3.   # 队伍id 调用事件id
  4.   BCE61=[[1,1],[2,1]]#1号队伍调用1号公共事件#2号队伍调用1号公共事件,
  5.    #--------------------------------------------------------------------------
  6.   # ● 设置战斗公公事件
  7.   #--------------------------------------------------------------------------
  8.   def setup_battle_common_event
  9.     # 正在执行战斗事件的情况下
  10.     if $game_system.battle_interpreter.running?
  11.       return
  12.     end
  13.     # 搜索全部公共事件
  14.    for i in 0...BCE61.size
  15.       if @troop_id==BCE61[i][0]
  16.       pagelist =$data_common_events[BCE61[i][1]].list
  17.      # 设置事件
  18.       $game_system.battle_interpreter.setup(pagelist, 0)
  19.      end
  20.    end
  21. end
  22.    #--------------------------------------------------------------------------
  23.   # ● 开始自由战斗回合
  24.   #--------------------------------------------------------------------------
  25. #如果开始的回合被修改,请在start_phase1后面添加setup_battle_common_event则下面内容可以删除
  26.   def start_phase1
  27.     # 转移到回合 1
  28.     @phase = 1
  29.     # 清除全体同伴的行动
  30.     $game_party.clear_actions
  31.     # 设置战斗事件
  32.     setup_battle_event
  33.     setup_battle_common_event#####只添加了这一句
  34.   end
  35. #如果开始的回合被修改,请在start_phase1后面添加setup_battle_common_event则上面内容可以删除
  36. end
复制代码

作者: 谢拉卡姗娜    时间: 2011-3-31 16:38
我的战斗系统问题么……

这俩脚本我插进去都完全无反应? 我的是纵版CP制基础上修改的系统

作者: 后知后觉    时间: 2011-3-31 19:33
我把我写的脚本放到 OZ大乱斗v1.44a 战斗系统重置版 的Main 上后.
找了个空白的公共事件 2 号来做测试.
公共事件执行的内容就一个 显示文章.
把队伍第 1 号的名字改成了 幽灵*2@2,0,1
直接就从 数据库->队伍 进入战斗测试.
结果每次行动时都会执行这个公共事件显示文章.
CP的回合计算方式和正规回合制不一样.
作者: 谢拉卡姗娜    时间: 2011-3-31 19:55
回复 后知后觉 的帖子

我试过了啊,为什么不行,是不是和放在哪个脚本前有关?我是直接塞在MAIN前
作者: 后知后觉    时间: 2011-3-31 20:00
回复 谢拉卡姗娜 的帖子

我就是放在Main上面的  和Main挨着的
作者: 谢拉卡姗娜    时间: 2011-3-31 20:26
回复 后知后觉 的帖子

好吧,我眼残了,确实可用……

但还有个问题,能不能换种判定方式,我不想让这个在数据库显示,

我就是想让一切设置都在脚本内部搞好,不在数据库中显示与脚本有关联

作者: 后知后觉    时间: 2011-3-31 21:03
设置在第 60 行.是一个哈希表.
以队伍的id为键(就是 => 符号的左边)
以数组为值.这里称之为 数组A吧.
数组A里装的仍然是数组.就叫 数组B.
数组B里放3个整数单元.依次为 公共事件ID,TurnA,TrunB
数组A里可以放多个数组B.
啊.额.没看明白的话直接看 60-62行吧 我预先设置了 1 2 3 号队伍的样板.
  1. #==============================================================================
  2. # ■ 战斗中刷新指定公共事件
  3. #------------------------------------------------------------------------------
  4. #   作者:后知后觉 2011-3-31
  5. #==============================================================================

  6. #==============================================================================
  7. # ■ Scene_Battle
  8. #==============================================================================

  9. class Scene_Battle
  10.   alias hzhj_old_main_for_common_event main
  11.   alias hzhj_old_setup_battle_event_for_common_event setup_battle_event
  12.   alias hzhj_old_cp_turn_count_for_common_event cp_turn_count
  13.   #--------------------------------------------------------------------------
  14.   # ● 主处理
  15.   #--------------------------------------------------------------------------
  16.   def main
  17.     $data_troops[$game_temp.battle_troop_id].hzhj_set_new_parameters
  18.     @hzhj_events = $data_troops[$game_temp.battle_troop_id].hzhj_events
  19.     @hzhj_turns = $data_troops[$game_temp.battle_troop_id].hzhj_turns
  20.     @hzhj_flags = Array.new
  21.     hzhj_old_main_for_common_event
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 设置战斗事件
  25.   #--------------------------------------------------------------------------
  26.   def setup_battle_event
  27.     if $game_system.battle_interpreter.running?
  28.       return
  29.     end
  30.     if not @hzhj_events.empty?
  31.       for i in 0...@hzhj_events.size
  32.         next if @hzhj_flags[i]
  33.         n = $game_temp.battle_turn
  34.         a = @hzhj_turns[i][0]
  35.         b = @hzhj_turns[i][1]
  36.         if (b == 0 and n != a) or
  37.            (b > 0 and (n < 1 or n < a or n % b != a % b))
  38.           next
  39.         end
  40.         $game_system.battle_interpreter.setup(@hzhj_events[i].list, 0)
  41.         @hzhj_flags[i] = true
  42.         return
  43.       end
  44.     end
  45.     hzhj_old_setup_battle_event_for_common_event
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 开始主回合
  49.   #--------------------------------------------------------------------------
  50.   def cp_turn_count
  51.     hzhj_old_cp_turn_count_for_common_event
  52.     @hzhj_flags.clear
  53.   end
  54. end

  55. module RPG
  56.   class Troop
  57.     CommonEventId = {1 => [[2, 0, 1]],
  58.                      2 => [[2, 0, 0]],
  59.                      3 => [[2, 0, 2], [4, 0, 2]]}
  60.     def hzhj_events
  61.       hzhj_set_new_parameters if @hzhj_events.nil?
  62.       return @hzhj_events
  63.     end
  64.     def hzhj_turns
  65.       hzhj_set_new_parameters if @hzhj_turns.nil?
  66.       return @hzhj_turns
  67.     end
  68.     def hzhj_set_new_parameters
  69.       return if not @hzhj_events.nil?
  70.       @hzhj_events = Array.new
  71.       @hzhj_turns = Array.new
  72.       return if CommonEventId[@id].nil?
  73.       for i in 0...CommonEventId[@id].size
  74.         temp_e = CommonEventId[@id][i]
  75.         @hzhj_events[i] = $data_common_events[temp_e[0]]
  76.         @hzhj_turns[i] = Array.new
  77.         @hzhj_turns[i][0] = temp_e[1]
  78.         @hzhj_turns[i][1] = temp_e[2]
  79.       end
  80.     end
  81.   end
  82. end
复制代码
这楼帖出来的脚本除了改了设置方法外.还改了一个东西来适应那个战斗系统.
我上面那楼帖的脚本在你的战斗系统里有个毛病.所以做了下修正.
作者: 谢拉卡姗娜    时间: 2011-3-31 21:45
回复 后知后觉 的帖子

确认可用了,不过这个是满足条件执行一次吧,

我是想实现满足条件可在战斗中反复执行的那种
作者: 后知后觉    时间: 2011-3-31 22:07
本帖最后由 后知后觉 于 2011-3-31 22:10 编辑

额= =b.
那就再改回来好了.
就用脚本编辑器的替换功能 把出现的 4 个(14、52、53行) cp_turn_count
改成 start_phase4.
不过这个并不是像地图上那样满足条件的时候每一帧都在运行.
这个是在行动的时候才会运行.
我不知道他这个回合是怎么算的.感觉很乱.= =
作者: 谢拉卡姗娜    时间: 2011-3-31 22:30
本帖最后由 谢拉卡姗娜 于 2011-3-31 23:31 编辑

回复 后知后觉 的帖子






呃…………这个问题咋破?

未命名2144124213.jpg (12.71 KB, 下载次数: 5)

未命名2144124213.jpg

作者: 后知后觉    时间: 2011-3-31 22:45
  1. #==============================================================================
  2. # ■ 战斗中刷新指定公共事件
  3. #------------------------------------------------------------------------------
  4. #   作者:后知后觉 2011-3-31
  5. #==============================================================================

  6. #==============================================================================
  7. # ■ Scene_Battle
  8. #==============================================================================

  9. class Scene_Battle
  10.   alias hzhj_old_main_for_common_event main
  11.   alias hzhj_old_setup_battle_event_for_common_event setup_battle_event
  12.   alias hzhj_old_start_phase4_for_common_event start_phase4
  13.   #--------------------------------------------------------------------------
  14.   # ● 主处理
  15.   #--------------------------------------------------------------------------
  16.   def main
  17.     $data_troops[$game_temp.battle_troop_id].hzhj_set_new_parameters
  18.     @hzhj_events = $data_troops[$game_temp.battle_troop_id].hzhj_events
  19.     @hzhj_turns = $data_troops[$game_temp.battle_troop_id].hzhj_turns
  20.     @hzhj_flags = Array.new
  21.     hzhj_old_main_for_common_event
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 设置战斗事件
  25.   #--------------------------------------------------------------------------
  26.   def setup_battle_event
  27.     if $game_system.battle_interpreter.running?
  28.       return
  29.     end
  30.     if not @hzhj_events.empty?
  31.       for i in 0...@hzhj_events.size
  32.         next if @hzhj_flags[i]
  33.         n = $game_temp.battle_turn
  34.         a = @hzhj_turns[i][0]
  35.         b = @hzhj_turns[i][1]
  36.         if (b == 0 and n != a) or
  37.            (b > 0 and (n < 1 or n < a or n % b != a % b))
  38.           next
  39.         end
  40.         $game_system.battle_interpreter.setup(@hzhj_events[i].list, 0)
  41.         @hzhj_flags[i] = true
  42.         return
  43.       end
  44.     end
  45.     hzhj_old_setup_battle_event_for_common_event
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 开始主回合
  49.   #--------------------------------------------------------------------------
  50.   def start_phase4
  51.     hzhj_old_start_phase4_for_common_event
  52.     @hzhj_flags.clear
  53.   end
  54. end

  55. module RPG
  56.   class Troop
  57.     CommonEventId = {1 => [[2, 0, 1]],
  58.                      2 => [[2, 0, 0]],
  59.                      3 => [[2, 0, 2], [4, 0, 2]]}
  60.     def hzhj_events
  61.       hzhj_set_new_parameters if @hzhj_events.nil?
  62.       return @hzhj_events
  63.     end
  64.     def hzhj_turns
  65.       hzhj_set_new_parameters if @hzhj_turns.nil?
  66.       return @hzhj_turns
  67.     end
  68.     def hzhj_set_new_parameters
  69.       return if not @hzhj_events.nil?
  70.       @hzhj_events = Array.new
  71.       @hzhj_turns = Array.new
  72.       return if CommonEventId[@id].nil?
  73.       for i in 0...CommonEventId[@id].size
  74.         temp_e = CommonEventId[@id][i]
  75.         @hzhj_events[i] = $data_common_events[temp_e[0]]
  76.         @hzhj_turns[i] = Array.new
  77.         @hzhj_turns[i][0] = temp_e[1]
  78.         @hzhj_turns[i][1] = temp_e[2]
  79.       end
  80.     end
  81.   end
  82. end
复制代码

作者: 谢拉卡姗娜    时间: 2011-3-31 22:51
回复 后知后觉 的帖子

   终于解决了…… 泪目…………我顶着地震和辐射果体跪谢




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