Project1

标题: 找强人设置一下脚本!! [打印本页]

作者: 肖宋发    时间: 2009-8-12 12:59
标题: 找强人设置一下脚本!!
找强人设置一下脚本,就是当人物死亡后,则运行公共事件10,至于公共事件10的内容,我自己弄!!要怎么修改脚本啊?(强人来啊)
作者: 霜冻之狼    时间: 2009-8-12 13:10
你说的"死亡"是哪种啊?
团体全灭还是队友阵亡....
作者: 肖宋发    时间: 2009-8-12 13:13
团体全灭则运行公共事件10,至于公共事件10的内容,我自己弄!!
作者: 云心    时间: 2009-8-12 13:22
你的遇敌是暗雷?明雷的话简单,选失败可以继续,在分歧里设置。
暗雷的话,在脚本Scene_Battle 1的100~150行改,具体的等待强人。
作者: 「旅」    时间: 2009-8-12 13:32
【搜索】
  1. if $game_party.all_dead? or $game_party.actors.size == 0
复制代码
下面加上
  1. $game_temp.common_event_id = 10
复制代码

作者: 肖宋发    时间: 2009-8-12 14:27
本帖最后由 肖宋发 于 2009-8-13 14:19 编辑
【搜索】if $game_party.all_dead? or $game_party.actors.size == 0下面加上$game_temp.common_event_id = 10
「旅」 发表于 2009-8-12 13:32

「旅」强人,你干脆帮我修改工程行吗?谢谢了!留个QQ吧!
作者: 奶油Da蛋糕    时间: 2009-8-12 15:04
「旅」强人,你干脆帮我修改工程行吗?谢谢了!亲爱的「旅」!!留个QQ吧!
肖宋发 发表于 2009-8-12 14:27


.....shift+ctrl+f输入if $game_party.all_dead? or $game_party.actors.size == 0,选择进去。
然后复制$game_temp.common_event_id = 10驾到这句下面。
作者: ★星な守望者    时间: 2009-8-12 15:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: 肖宋发    时间: 2009-8-13 15:19
那遇敌是暗雷要怎么修改啊??????
作者: 「旅」    时间: 2009-8-13 15:23
9# 肖宋发
我上面那个就是暗雷。
作者: 肖宋发    时间: 2009-8-14 13:20
我弄了还是不行....这个是我的脚本
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   attr_accessor :status_window
  8.   attr_reader   :animation1_id                    # 行动方动画ID
  9.   #--------------------------------------------------------------------------
  10.   # ● 主处理
  11.   #--------------------------------------------------------------------------
  12.   def main
  13.     # 初始化战斗用的各种暂时数据
  14.     $game_temp.in_battle = true
  15.     $game_temp.battle_turn = 0
  16.     $game_temp.battle_event_flags.clear
  17.     $game_temp.battle_abort = false
  18.     $game_temp.battle_main_phase = false
  19.     $game_temp.battleback_name = $game_map.battleback_name
  20.     $game_temp.forcing_battler = nil
  21.     # 初始化战斗用事件解释器
  22.     $game_system.battle_interpreter.setup(nil, 0)
  23.     # 准备队伍
  24.     @troop_id = $game_temp.battle_troop_id
  25.     $game_troop.setup(@troop_id)
  26.     # 生成角色命令窗口
  27.     s1 = $data_system.words.attack
  28.     s2 = $data_system.words.skill
  29.     s3 = $data_system.words.guard
  30.     s4 = $data_system.words.item
  31.     #——最后一个即为逃跑的图片,世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒
  32.     @actor_command_window = Window_66RPG_Command_Row.new(["atk_攻击","atk_法术","atk_防御","atk_物品","atk_法术"])
  33.     #——世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒世界真鞋盒
  34.     @actor_command_window.y = 280
  35.     @actor_command_window.back_opacity = 160
  36.     @actor_command_window.active = false
  37.     @actor_command_window.visible = false
  38.     # 生成其它窗口
  39.     @party_command_window = Window_PartyCommand.new
  40.     @help_window = Window_Help_Naya.new
  41.     @help_window.y = 40
  42.     # @help_window.back_opacity = 160
  43.     @help_window.visible = false
  44.     @status_window = Window_BattleStatus.new
  45.     @message_window = Window_Message.new
  46.     # 生成活动块
  47.     @spriteset = Spriteset_Battle.new
  48.     # 初始化等待计数
  49.     @wait_count = 0
  50.     # 执行过渡
  51.     if $data_system.battle_transition == ""
  52.       Graphics.transition(20)
  53.     else
  54.       Graphics.transition(40, "Graphics/Transitions/" +
  55.         $data_system.battle_transition)
  56.     end
  57.     # 开始自由战斗回合
  58.     start_phase1
  59.     # 主循环
  60.     loop do
  61.       # 刷新游戏画面
  62.       Graphics.update
  63.       # 刷新输入信息
  64.       Input.update
  65.       # 刷新画面
  66.       update
  67.       # 如果画面切换的话就中断循环
  68.       if $scene != self
  69.         break
  70.       end
  71.     end
  72.     # 刷新地图
  73.     $game_map.refresh
  74.     # 准备过渡
  75.     Graphics.freeze
  76.     # 释放窗口
  77.     @actor_command_window.dispose
  78.     @party_command_window.dispose
  79.     @help_window.dispose
  80.     @status_window.dispose
  81.     @message_window.dispose
  82.     if @skill_window != nil
  83.       @skill_window.dispose
  84.     end
  85.     if @item_window != nil
  86.       @item_window.dispose
  87.     end
  88.     if @result_window != nil
  89.       @result_window.dispose
  90.     end
  91.     # 释放活动块
  92.     @spriteset.dispose
  93.     # 标题画面切换中的情况
  94.     if $scene.is_a?(Scene_Title)
  95.       # 淡入淡出画面
  96.       Graphics.transition
  97.       Graphics.freeze
  98.     end
  99.     # 战斗测试或者游戏结束以外的画面切换中的情况
  100.     if $BTEST and not $scene.is_a?(Scene_Gameover)
  101.       $scene = nil
  102.     end
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 胜负判定
  106.   #--------------------------------------------------------------------------
  107.   def judge
  108.     # 全灭判定是真、并且同伴人数为 0 的情况下
  109.     if $game_party.all_dead? or $game_party.actors.size == 0
  110.     $game_temp.common_event_id = 10         #死亡设置
  111.       # 允许失败的情况下
  112.       if $game_temp.battle_can_lose
  113.         # 还原为战斗开始前的 BGM
  114.         $game_system.bgm_play($game_temp.map_bgm)
  115.         # 战斗结束
  116.         battle_end(2)
  117.         # 返回 true
  118.         return true
  119.       end
  120.       # 设置游戏结束标志
  121.       $game_temp.gameover = true
  122.       # 返回 true
  123.       return true
  124.     end
  125.     # 如果存在任意 1 个敌人就返回 false
  126.     for enemy in $game_troop.enemies
  127.       if enemy.exist?
  128.         return false
  129.       end
  130.     end
  131.     # 开始结束战斗回合 (胜利)
  132.     start_phase5
  133.     # 返回 true
  134.     return true
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 战斗结束
  138.   #     result : 結果 (0:胜利 1:失败 2:逃跑)
  139.   #--------------------------------------------------------------------------
  140.   def battle_end(result)
  141.     # 清除战斗中标志
  142.     $game_temp.in_battle = false
  143.     # 清除全体同伴的行动
  144.     $game_party.clear_actions
  145.     # 解除战斗用状态
  146.     for actor in $game_party.actors
  147.       actor.remove_states_battle      
  148.     end
  149.     @status_window.refresh
  150.     # 清除敌人
  151.     $game_troop.enemies.clear
  152.     # 调用战斗返回调用
  153.     if $game_temp.battle_proc != nil
  154.       $game_temp.battle_proc.call(result)
  155.       $game_temp.battle_proc = nil
  156.     end
  157.     # 切换到地图画面
  158.     $scene = Scene_Map.new
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 设置战斗事件
  162.   #--------------------------------------------------------------------------
  163.   def setup_battle_event
  164.     # 正在执行战斗事件的情况下
  165.     if $game_system.battle_interpreter.running?
  166.       return
  167.     end
  168.     # 搜索全部页的战斗事件
  169.     for index in 0...$data_troops[@troop_id].pages.size
  170.       # 获取事件页
  171.       page = $data_troops[@troop_id].pages[index]
  172.       # 事件条件可以参考 c
  173.       c = page.condition
  174.       # 没有指定任何条件的情况下转到下一页
  175.       unless c.turn_valid or c.enemy_valid or
  176.              c.actor_valid or c.switch_valid
  177.         next
  178.       end
  179.       # 执行完毕的情况下转到下一页
  180.       if $game_temp.battle_event_flags[index]
  181.         next
  182.       end
  183.       # 确认回合条件
  184.       if c.turn_valid
  185.         n = $game_temp.battle_turn
  186.         a = c.turn_a
  187.         b = c.turn_b
  188.         if (b == 0 and n != a) or
  189.            (b > 0 and (n < 1 or n < a or n % b != a % b))
  190.           next
  191.         end
  192.       end
  193.       # 确认敌人条件
  194.       if c.enemy_valid
  195.         enemy = $game_troop.enemies[c.enemy_index]
  196.         if enemy == nil or enemy.hp * 100.0 / enemy.maxhp > c.enemy_hp
  197.           next
  198.         end
  199.       end
  200.       # 确认角色条件
  201.       if c.actor_valid
  202.         actor = $game_actors[c.actor_id]
  203.         if actor == nil or actor.hp * 100.0 / actor.maxhp > c.actor_hp
  204.           next
  205.         end
  206.       end
  207.       # 确认开关条件
  208.       if c.switch_valid
  209.         if $game_switches[c.switch_id] == false
  210.           next
  211.         end
  212.       end
  213.       # 设置事件
  214.       $game_system.battle_interpreter.setup(page.list, 0)
  215.       # 本页的范围是 [战斗] 或 [回合] 的情况下
  216.       if page.span <= 1
  217.         # 设置执行结束标志
  218.         $game_temp.battle_event_flags[index] = true
  219.       end
  220.       return
  221.     end
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # ● 刷新画面
  225.   #--------------------------------------------------------------------------
  226.   def update
  227.     # 执行战斗事件中的情况下
  228.     if $game_system.battle_interpreter.running?
  229.       # 刷新解释器
  230.       $game_system.battle_interpreter.update
  231.       # 强制行动的战斗者不存在的情况下
  232.       if $game_temp.forcing_battler == nil
  233.         # 执行战斗事件结束的情况下
  234.         unless $game_system.battle_interpreter.running?
  235.           # 继续战斗的情况下、再执行战斗事件的设置
  236.           unless judge
  237.             setup_battle_event
  238.           end
  239.         end
  240.         # 如果不是结束战斗回合的情况下
  241.         if @phase != 5
  242.           # 刷新状态窗口
  243.           @status_window.refresh
  244.         end
  245.       end
  246.     end
  247.     # 系统 (计时器)、刷新画面
  248.     $game_system.update
  249.     $game_screen.update
  250.     # 计时器为 0 的情况下
  251.     if $game_system.timer_working and $game_system.timer == 0
  252.       # 中断战斗
  253.       $game_temp.battle_abort = true
  254.     end
  255.     # 刷新窗口
  256.     @help_window.update
  257.     @party_command_window.update
  258.     @actor_command_window.update
  259.     @status_window.update
  260.     @message_window.update
  261.     # 刷新活动块
  262.     @spriteset.update
  263.     # 处理过渡中的情况下
  264.     if $game_temp.transition_processing
  265.       # 清除处理过渡中标志
  266.       $game_temp.transition_processing = false
  267.       # 执行过渡
  268.       if $game_temp.transition_name == ""
  269.         Graphics.transition(20)
  270.       else
  271.         Graphics.transition(40, "Graphics/Transitions/" +
  272.           $game_temp.transition_name)
  273.       end
  274.     end
  275.     # 显示信息窗口中的情况下
  276.     if $game_temp.message_window_showing
  277.       return
  278.     end
  279.     # 显示效果中的情况下
  280.     if @spriteset.effect?
  281.       return
  282.     end
  283.     # 游戏结束的情况下
  284.     if $game_temp.gameover
  285.       # 切换到游戏结束画面
  286.       $scene = Scene_Gameover.new
  287.       return
  288.     end
  289.     # 返回标题画面的情况下
  290.     if $game_temp.to_title
  291.       # 切换到标题画面
  292.       $scene = Scene_Title.new
  293.       return
  294.     end
  295.     # 中断战斗的情况下
  296.     if $game_temp.battle_abort
  297.       # 还原为战斗前的 BGM
  298.       $game_system.bgm_play($game_temp.map_bgm)
  299.       # 战斗结束
  300.       battle_end(1)
  301.       return
  302.     end
  303.     # 等待中的情况下
  304.     if @wait_count > 0
  305.       # 减少等待计数
  306.       @wait_count -= 1
  307.       return
  308.     end
  309.     # 强制行动的角色存在、
  310.     # 并且战斗事件正在执行的情况下
  311.     if $game_temp.forcing_battler == nil and
  312.        $game_system.battle_interpreter.running?
  313.       return
  314.     end
  315.     # 回合分支
  316.     case @phase
  317.     when 1  # 自由战斗回合
  318.       update_phase1
  319.     when 2  # 同伴命令回合
  320.       update_phase2
  321.     when 3  # 角色命令回合
  322.       update_phase3
  323.     when 4  # 主回合
  324.       update_phase4
  325.     when 5  # 战斗结束回合
  326.       update_phase5
  327.     end
  328.   end
  329. end
复制代码

作者: 越前リョーマ    时间: 2009-8-14 13:39
世界真鞋盒……
我才鞋盒呢…… - -

只要令战斗不死,然后在地图上判断是否全灭即可。
作者: 传说中di    时间: 2009-8-14 13:39
scene_battle 1里面,277行
# 游戏结束的情况下
    if $game_temp.gameover
      # 切换到游戏结束画面
      $scene = Scene_Gameover.new
      return
    end
-------------------------------------------------
改为如下内容

    # 游戏结束的情况下
    if $game_temp.gameover
      # 切换到地图,并且调用公共事件1号
      $game_temp.battle_can_lose = true
      battle_end(1)
      $game_temp.gameover = false
      $game_temp.common_event_id = 10
      return
    end
作者: 肖宋发    时间: 2009-8-14 13:50
本帖最后由 肖宋发 于 2009-8-14 13:53 编辑

可以了,但是我的复活时“即时消息窗口”的信息再也显示不出来了!怎么帮啊?
作者: 传说中di    时间: 2009-8-14 14:17
重新打开"即时消息窗口"
作者: 肖宋发    时间: 2009-8-14 14:45
重新打开"即时消息窗口"
传说中di 发表于 2009-8-14 14:17

怎么打开啊?我找不到对应的开关啊??
  1. #------------------制作by bluefool,转载请保留------------------
  2. module Blue
  3.   #这个是控制显示最近的多少条信息的,当超出一屏能显示的值的话可通过先按一下shift
  4.   #然后用上下翻看内容。再按一次shift则解除激活
  5.   Blue_max = 5
  6.   #这个填写进如游戏时生成的系统语言,
  7.   INTRO = "欢迎进入【】虚拟游戏世界,祝您畅游愉快!!"
  8.   #战斗画面时即时消息窗口的x坐标
  9.   BATAM_X = 0
  10.   #战斗画面时即时消息窗口的y坐标
  11.   BATAM_Y = 90
  12.   #用于清空hash表,可以不管它,但不要让Blue_max大于它,当然,它的值也可以改变
  13.   NAM_MAX = 50
  14.   #主要传递信息参数为函数$am,参见脚本内容
  15. end
  16. #-------------------------------------------
  17. class Scene_Load < Scene_File
  18.   #--------------------------------------------------------------------------
  19.   # ● 确定时的处理
  20.   #--------------------------------------------------------------------------
  21.   def on_decision(filename)
  22.     # 文件不存在的情况下
  23.     unless FileTest.exist?(filename)
  24.       # 演奏冻结 SE
  25.       $game_system.se_play($data_system.buzzer_se)
  26.       return
  27.     end
  28.     # 演奏读档 SE
  29.     $game_system.se_play($data_system.load_se)
  30.     # 写入存档数据
  31.     file = File.open(filename, "rb")
  32.     read_save_data(file)
  33.     file.close
  34.     # 还原 BGM、BGS
  35.     $game_system.bgm_play($game_system.playing_bgm)
  36.     $game_system.bgs_play($game_system.playing_bgs)
  37.     # 刷新地图 (执行并行事件)
  38.     $a = {}
  39.     $game_map.update
  40.     # 切换到地图画面
  41.     $scene = Scene_Map.new
  42.   end
  43. end  
  44. class Game_Player < Game_Character
  45.   def update
  46.     # 本地变量记录移动信息
  47.     last_moving = moving?
  48.     # 移动中、事件执行中、强制移动路线中、
  49.     # 信息窗口一个也不显示的时候
  50.     unless moving? or $game_system.map_interpreter.running? or
  51.            @move_route_forcing or $game_temp.message_window_showing or $ccc == 1
  52.       case Input.dir4
  53.       when 2
  54.         move_down
  55.       when 4
  56.         move_left
  57.       when 6
  58.         move_right
  59.       when 8
  60.         move_up
  61.       end
  62.     end
  63.     # 本地变量记忆坐标
  64.     last_real_x = @real_x
  65.     last_real_y = @real_y
  66.     super
  67.     # 角色向下移动、画面上的位置在中央下方的情况下
  68.     if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  69.       # 画面向下卷动
  70.       $game_map.scroll_down(@real_y - last_real_y)
  71.     end
  72.     # 角色向左移动、画面上的位置在中央左方的情况下
  73.     if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  74.       # 画面向左卷动
  75.       $game_map.scroll_left(last_real_x - @real_x)
  76.     end
  77.     # 角色向右移动、画面上的位置在中央右方的情况下
  78.     if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  79.       # 画面向右卷动
  80.       $game_map.scroll_right(@real_x - last_real_x)
  81.     end
  82.     # 角色向上移动、画面上的位置在中央上方的情况下
  83.     if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  84.       # 画面向上卷动
  85.       $game_map.scroll_up(last_real_y - @real_y)
  86.     end
  87.     # 不在移动中的情况下
  88.     unless moving?
  89.       # 上次主角移动中的情况
  90.       if last_moving
  91.         # 与同位置的事件接触就判定为事件启动
  92.         result = check_event_trigger_here([1,2])
  93.         # 没有可以启动的事件的情况下
  94.         if result == false
  95.           # 调试模式为 ON 并且按下 CTRL 键的情况下除外
  96.           unless $DEBUG and Input.press?(Input::CTRL)
  97.             # 遇敌计数下降
  98.             if @encounter_count > 0
  99.               @encounter_count -= 1
  100.             end
  101.           end
  102.         end
  103.       end
  104.       # 按下 C 键的情况下
  105.       if Input.trigger?(Input::C)
  106.         # 判定为同位置以及正面的事件启动
  107.         check_event_trigger_here([0])
  108.         check_event_trigger_there([0,1,2])
  109.       end
  110.     end
  111.   end
  112. end  
  113. #==============================================================================
  114. # ■ Scene_Title
  115. #------------------------------------------------------------------------------
  116. #  处理标题画面的类。
  117. #==============================================================================

  118. class Scene_Title
  119.   #--------------------------------------------------------------------------
  120.   # ● 命令 : 新游戏
  121.   #--------------------------------------------------------------------------
  122.   def command_new_game
  123.     # 演奏确定 SE
  124.     $game_system.se_play($data_system.decision_se)
  125.     # 停止 BGM
  126.     Audio.bgm_stop
  127.     # 重置测量游戏时间用的画面计数器
  128.     Graphics.frame_count = 0
  129.     # 生成各种游戏对像
  130.     $game_temp          = Game_Temp.new
  131.     $game_system        = Game_System.new
  132.     $game_switches      = Game_Switches.new
  133.     $game_variables     = Game_Variables.new
  134.     $game_self_switches = Game_SelfSwitches.new
  135.     $game_screen        = Game_Screen.new
  136.     $game_actors        = Game_Actors.new
  137.     $game_party         = Game_Party.new
  138.     $game_troop         = Game_Troop.new
  139.     $game_map           = Game_Map.new
  140.     $game_player        = Game_Player.new
  141.     # 设置初期同伴位置
  142.     $game_party.setup_starting_members
  143.     # 设置初期位置的地图
  144.     $game_map.setup($data_system.start_map_id)
  145.     # 主角向初期位置移动
  146.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  147.     # 刷新主角
  148.     $game_player.refresh
  149.     # 执行地图设置的 BGM 与 BGS 的自动切换
  150.     $game_map.autoplay
  151.     # 刷新地图 (执行并行事件)
  152.     $game_map.update
  153.     $a = {}
  154.     $am = Blue::INTRO
  155.     $ccc = 0
  156.     # 切换地图画面
  157.     $scene = Scene_Map.new
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 命令 : 继续
  161.   #--------------------------------------------------------------------------
  162.   def command_continue
  163.     # 继续无效的情况下
  164.     unless @continue_enabled
  165.       # 演奏无效 SE
  166.       $game_system.se_play($data_system.buzzer_se)
  167.       return
  168.     end
  169.     # 演奏确定 SE
  170.     $game_system.se_play($data_system.decision_se)
  171.     # 切换到读档画面
  172.     $scene = Scene_Load.new
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 命令 : 退出
  176.   #--------------------------------------------------------------------------
  177.   def command_shutdown
  178.     # 演奏确定 SE
  179.     $game_system.se_play($data_system.decision_se)
  180.     # BGM、BGS、ME 的淡入淡出
  181.     Audio.bgm_fade(800)
  182.     Audio.bgs_fade(800)
  183.     Audio.me_fade(800)
  184.     # 退出
  185.     $scene = nil
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 战斗测试
  189.   #--------------------------------------------------------------------------
  190.   def battle_test
  191.     # 载入数据库 (战斗测试用)
  192.     $data_actors        = load_data("Data/BT_Actors.rxdata")
  193.     $data_classes       = load_data("Data/BT_Classes.rxdata")
  194.     $data_skills        = load_data("Data/BT_Skills.rxdata")
  195.     $data_items         = load_data("Data/BT_Items.rxdata")
  196.     $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  197.     $data_armors        = load_data("Data/BT_Armors.rxdata")
  198.     $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  199.     $data_troops        = load_data("Data/BT_Troops.rxdata")
  200.     $data_states        = load_data("Data/BT_States.rxdata")
  201.     $data_animations    = load_data("Data/BT_Animations.rxdata")
  202.     $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  203.     $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  204.     $data_system        = load_data("Data/BT_System.rxdata")
  205.     # 重置测量游戏时间用的画面计数器
  206.     Graphics.frame_count = 0
  207.     # 生成各种游戏对像
  208.     $game_temp          = Game_Temp.new
  209.     $game_system        = Game_System.new
  210.     $game_switches      = Game_Switches.new
  211.     $game_variables     = Game_Variables.new
  212.     $game_self_switches = Game_SelfSwitches.new
  213.     $game_screen        = Game_Screen.new
  214.     $game_actors        = Game_Actors.new
  215.     $game_party         = Game_Party.new
  216.     $game_troop         = Game_Troop.new
  217.     $game_map           = Game_Map.new
  218.     $game_player        = Game_Player.new
  219.     $a = {0=>"进入战斗"}
  220.     # 设置战斗测试用同伴
  221.     $game_party.setup_battle_test_members
  222.     # 设置队伍 ID、可以逃走标志、战斗背景
  223.     $game_temp.battle_troop_id = $data_system.test_troop_id
  224.     $game_temp.battle_can_escape = true
  225.     $game_map.battleback_name = $data_system.battleback_name
  226.     # 演奏战斗开始 BGM
  227.     $game_system.se_play($data_system.battle_start_se)
  228.     # 演奏战斗 BGM
  229.     $game_system.bgm_play($game_system.battle_bgm)
  230.     # 切换到战斗画面
  231.     $scene = Scene_Battle.new
  232.   end
  233. end
  234. #-------------------------------------------------------
  235. class Scene_Map
  236.   #--------------------------------------------------------------------------
  237.   # ● 主处理
  238.   #--------------------------------------------------------------------------
  239.   def main
  240.     @spriteset = Spriteset_Map.new
  241.     @message_window = Window_Message.new
  242.     @down_window = Window_Down.new
  243.     Graphics.transition
  244.     # 主循环
  245.     loop do
  246.       Graphics.update
  247.       Input.update
  248.       update
  249.       if $scene != self
  250.         break
  251.       end
  252.     end
  253.     Graphics.freeze
  254.     @spriteset.dispose
  255.     @message_window.dispose
  256.     @down_window.dispose
  257.     if $scene.is_a?(Scene_Title)
  258.       Graphics.transition
  259.       Graphics.freeze
  260.     end
  261.     @am_size = $a.size
  262.   end
  263.   #---------------------
  264.   def bluefool_sort
  265.     if $am != nil
  266.        if $a.size > Blue::NAM_MAX
  267.           a_temp = {}
  268.           j = 0
  269.           for i in ($a.size - Blue::Blue_max)...$a.size
  270.             a_temp[j] = $a[i]
  271.             j += 1
  272.           end  
  273.          $a = a_temp
  274.        end  
  275.        if $am.length < 54
  276.           $a[$a.size] = $am
  277.         else
  278.           while $am.length > 53
  279.             i = 53
  280.             while (/\W/ =~ $am[i-3,3]) != nil
  281.               i -= 1
  282.             end
  283.             $a[$a.size] = $am[0,i]
  284.             $am = $am[i ,$am.length - i]
  285.           end
  286.           $a[$a.size] = $am
  287.        end
  288.        $am = nil
  289.     end
  290.   end  
  291.   #--------------------------------------------------------------------------
  292.   # ● 刷新画面
  293.   #--------------------------------------------------------------------------
  294.   def update
  295.     # 循环
  296.     loop do
  297.       # 按照地图、实例、主角的顺序刷新
  298.       # (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
  299.       #  的机会的重要因素)
  300.       $game_map.update
  301.       $game_system.map_interpreter.update
  302.       $game_player.update
  303.       # 系统 (计时器)、画面刷新
  304.       $game_system.update
  305.       $game_screen.update
  306.       # 如果主角在场所移动中就中断循环
  307.       unless $game_temp.player_transferring
  308.         break
  309.       end
  310.       # 执行场所移动
  311.       transfer_player
  312.       # 处理过渡中的情况下、中断循环
  313.       if $game_temp.transition_processing
  314.         break
  315.       end
  316.     end
  317.     # 刷新活动块
  318.     @spriteset.update
  319.     # 刷新信息窗口
  320.     @message_window.update
  321.     # 游戏结束的情况下
  322.     if $game_temp.gameover
  323.       # 切换的游戏结束画面
  324.       $scene = Scene_Gameover.new
  325.       return
  326.     end
  327.     # 返回标题画面的情况下
  328.     if $game_temp.to_title
  329.       # 切换到标题画面
  330.       $scene = Scene_Title.new
  331.       return
  332.     end
  333.     # 处理过渡中的情况下
  334.     if $game_temp.transition_processing
  335.       # 清除过渡处理中标志
  336.       $game_temp.transition_processing = false
  337.       # 执行过渡
  338.       if $game_temp.transition_name == ""
  339.         Graphics.transition(20)
  340.       else
  341.         Graphics.transition(40, "Graphics/Transitions/" +
  342.           $game_temp.transition_name)
  343.       end
  344.     end
  345.     # 显示信息窗口中的情况下
  346.     if $game_temp.message_window_showing
  347.       return
  348.     end
  349.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  350.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  351.       # 不是在事件执行中或者禁止遇敌中
  352.       unless $game_system.map_interpreter.running? or
  353.              $game_system.encounter_disabled
  354.         # 确定队伍
  355.         n = rand($game_map.encounter_list.size)
  356.         troop_id = $game_map.encounter_list[n]
  357.         # 队伍有效的话
  358.         if $data_troops[troop_id] != nil
  359.           # 设置调用战斗标志
  360.           $game_temp.battle_calling = true
  361.           $game_temp.battle_troop_id = troop_id
  362.           $game_temp.battle_can_escape = true
  363.           $game_temp.battle_can_lose = false
  364.           $game_temp.battle_proc = nil
  365.         end
  366.       end
  367.     end
  368.     #---------------------------------------------
  369.     bluefool_sort
  370.     if @am_size != $a.size
  371.        @down_window.refresh
  372.        if $a != nil and $a.size < Blue::Blue_max + 1
  373.         @down_window.index = $a.size/2 - 1
  374.         elsif $a != nil and $a.size > Blue::Blue_max
  375.         @down_window.index = Blue::Blue_max/2 - 1
  376.        end  
  377.        @am_size = $a.size
  378.      end
  379.     #设置处理开关   
  380.     if $game_switches[12]
  381.       @down_window.contents.clear
  382.     end
  383.     #111111111111
  384.     if Input.trigger?(Input::A)
  385.       if @down_window.active == false
  386.         @down_window.active = true
  387.         $ccc = 1
  388.       else
  389.         @down_window.active = false
  390.         $ccc = 0
  391.       end  
  392.     end
  393.     if Input.trigger?(Input::DOWN)#输入DOWN键的情况
  394.       if @down_window.active == true and @down_window.index < (@down_window.item_max-1)/2
  395.         @down_window.index += 1
  396.       end  
  397.     end  
  398.     if Input.trigger?(Input::UP)#输入UP键的情况
  399.       if @down_window.active == true and @down_window.index > 0
  400.         @down_window.index -= 1
  401.       end  
  402.     end  
  403.     #----------------------------------------------
  404.     # 按下 B 键的情况下
  405.     if Input.trigger?(Input::B)
  406.       # 不是在事件执行中或菜单禁止中
  407.       unless $game_system.map_interpreter.running? or
  408.              $game_system.menu_disabled
  409.         # 设置菜单调用标志以及 SE 演奏
  410.         $game_temp.menu_calling = true
  411.         $game_temp.menu_beep = true
  412.       end
  413.     end
  414.     # 调试模式为 ON 并且按下 F9 键的情况下
  415.     if $DEBUG and Input.press?(Input::F9)
  416.       # 设置调用调试标志
  417.       $game_temp.debug_calling = true
  418.     end
  419.     # 不在主角移动中的情况下
  420.     unless $game_player.moving?
  421.       # 执行各种画面的调用
  422.       if $game_temp.battle_calling
  423.         call_battle
  424.       elsif $game_temp.shop_calling
  425.         call_shop
  426.       elsif $game_temp.name_calling
  427.         call_name
  428.       elsif $game_temp.menu_calling
  429.         call_menu
  430.       elsif $game_temp.save_calling
  431.         call_save
  432.       elsif $game_temp.debug_calling
  433.         call_debug
  434.       end
  435.     end
  436.   end
  437. end
  438. #---------------------------------------------------------
  439. class Interpreter
  440.   def bluefool_sort
  441.       if $am != nil
  442.        if $a.size > Blue::NAM_MAX
  443.           a_temp = {}
  444.           j = 0
  445.           for i in ($a.size - Blue::Blue_max)...$a.size
  446.             a_temp[j] = $a[i]
  447.             j += 1
  448.           end  
  449.          $a = a_temp
  450.        end  
  451.         if $am.length < 54
  452.            $a[$a.size] = $am
  453.         else
  454.            while $am.length > 53
  455.              i = 53
  456.              while (/\W/ =~ $am[i-3,3]) != nil
  457.               i -= 1
  458.              end
  459.              $a[$a.size] = $am[0,i]
  460.              $am = $am[i ,$am.length - i]
  461.            end
  462.            $a[$a.size] = $am
  463.         end
  464.        $am = nil
  465.       end
  466.   end
  467.   def command_101
  468.     if $game_temp.message_text != nil
  469.       return false
  470.     end
  471.     # 设置信息结束后待机和返回调用标志
  472.     @message_waiting = true
  473.     $game_temp.message_proc = Proc.new { @message_waiting = false }
  474.     # message_text 设置为 1 行
  475.     $game_temp.message_text = @list[@index].parameters[0] + "\n"
  476.     if (@list[@index].parameters[0]).split(/\\/)[1] != nil
  477.      $am = @list[@index].parameters[0].split(/\\/)[0]
  478.      else
  479.      $am = @list[@index].parameters[0]
  480.     end  
  481.     bluefool_sort
  482.     line_count = 1
  483.     # 循环
  484.     loop do
  485.       # 下一个事件指令为文章两行以上的情况
  486.       if @list[@index+1].code == 401
  487.         # message_text 添加到第 2 行以下
  488.         $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
  489.         $am = @list[@index+1].parameters[0]
  490.         bluefool_sort
  491.         line_count += 1
  492.       # 事件指令不在文章两行以下的情况
  493.       else
  494.         # 下一个事件指令为显示选择项的情况下
  495.         if @list[@index+1].code == 102
  496.           # 如果选择项能收纳在画面里
  497.           if @list[@index+1].parameters[0].size <= 4 - line_count
  498.             # 推进索引
  499.             @index += 1
  500.             # 设置选择项
  501.             $game_temp.choice_start = line_count
  502.             setup_choices(@list[@index].parameters)
  503.           end
  504.         # 下一个事件指令为处理输入数值的情况下
  505.         elsif @list[@index+1].code == 103
  506.           # 如果数值输入窗口能收纳在画面里
  507.           if line_count < 4
  508.             # 推进索引
  509.             @index += 1
  510.             # 设置输入数值
  511.             $game_temp.num_input_start = line_count
  512.             $game_temp.num_input_variable_id = @list[@index].parameters[0]
  513.             $game_temp.num_input_digits_max = @list[@index].parameters[1]
  514.           end
  515.         end
  516.         # 继续
  517.         return true
  518.       end
  519.       # 推进索引
  520.       @index += 1
  521.     end
  522.   end
  523.   def command_125
  524.     value = operate_value(@parameters[0], @parameters[1], @parameters[2])
  525.     $game_party.gain_gold(value)
  526.     if value >= 0
  527.       $am = "系统:恭喜你获得到了【#{value}#{$data_system.words.gold}】"
  528.     else
  529.       $am = "系统:很遗憾你失去了【#{value.abs.to_s}#{$data_system.words.gold}】"
  530.     end  
  531.     bluefool_sort
  532.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  533.     return true
  534.   end
  535.   def command_126
  536.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  537.     # 增减物品
  538.     $game_party.gain_item(@parameters[0], value)
  539.     if value >= 0
  540.       $am = "系统:恭喜你获得到了#{value.abs.to_s}个【#{$data_items[@parameters[0]].name}】"
  541.     else
  542.       $am = "系统:很遗憾你失去了#{value.abs.to_s}个【#{$data_items[@parameters[0]].name}】"
  543.     end
  544.     bluefool_sort
  545.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  546.     return true
  547.   end
  548.   def command_127
  549.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  550.     # 增减武器
  551.     $game_party.gain_weapon(@parameters[0], value)
  552.     if value >= 0
  553.       $am = "系统:恭喜你得到了#{value.abs.to_s}个【#{$data_weapons[@parameters[0]].name}】"
  554.     else
  555.       $am = "系统:很遗憾你失去了#{value.abs.to_s}个【#{$data_weapons[@parameters[0]].name}】"
  556.     end
  557.     bluefool_sort
  558.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  559.     return true
  560.   end
  561.   def command_128
  562.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  563.     # 增减防具
  564.     $game_party.gain_armor(@parameters[0], value)
  565.     if value >= 0
  566.       $am = "系统:恭喜你获得到了#{value.abs.to_s}个【#{$data_armors[@parameters[0]].name}】"
  567.     else
  568.       $am = "系统:很遗憾你失去了#{value.abs.to_s}个【#{$data_armors[@parameters[0]].name}】"
  569.     end
  570.     bluefool_sort
  571.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  572.     return true
  573.   end
  574.   def command_129
  575.     # 获取角色
  576.     actor = $game_actors[@parameters[0]]
  577.     # 角色有效的情况下
  578.     if actor != nil
  579.       # 操作分支
  580.       if @parameters[1] == 0
  581.         if @parameters[2] == 1
  582.           $game_actors[@parameters[0]].setup(@parameters[0])
  583.         end
  584.         $game_party.add_actor(@parameters[0])
  585.         Audio.me_play("Audio/ME/"+"002-Victory02",100,100)
  586.         $am = "系统:恭喜你【#{$game_actors[@parameters[0]].name}】加入您队伍!"
  587.         bluefool_sort
  588.       else
  589.         $game_party.remove_actor(@parameters[0])
  590.         Audio.me_play("Audio/ME/"+"015-Mystery01",100,100)
  591.         $am = "系统:恭喜你【#{$game_actors[@parameters[0]].name}】离开您队伍!"
  592.         bluefool_sort
  593.       end
  594.     end
  595.     # 继续
  596.     return true
  597.   end
  598.   #-------------------------
  599. end
  600. #==============================================================================
  601. # ■ Window_Down
  602. #------------------------------------------------------------------------------
  603. #   信息窗口。
  604. #==============================================================================

  605. class Window_Down < Window_Selectable
  606.   #--------------------------------------------------------------------------
  607.   # ● 初始化对像
  608.   #--------------------------------------------------------------------------
  609.   def initialize
  610.     super(0, 320, 300, 300)
  611.     @column_max = 1
  612.     self.opacity = 0
  613.     if $a != nil and $a.size < 21
  614.       self.index = $a.size/2
  615.       elsif $a != nil and $a.size > 20
  616.       self.index = 9
  617.     end  
  618.     refresh
  619.     self.active = false
  620.   end
  621.   #--------------------------------------------------------------------------
  622.   # ● 刷新
  623.   #--------------------------------------------------------------------------
  624.   def refresh
  625.     if self.contents != nil
  626.       self.contents.dispose
  627.       self.contents = nil
  628.     end
  629.     if $a != nil and $a.size < Blue::Blue_max + 1
  630.       @item_max = $a.size
  631.       elsif $a != nil and $a.size > Blue::Blue_max
  632.       @item_max = Blue::Blue_max
  633.     end  
  634.     if @item_max > 0
  635.       self.contents = Bitmap.new(width - 32, row_max * 16)
  636.       for i in 0...@item_max
  637.          draw_item(i)
  638.       end
  639.     end
  640.   end
  641.   def item_max
  642.     return @item_max
  643.   end  
  644.   #--------------------------------------------------------------------------
  645.   # ● 描绘项目
  646.   #     index : 项目编号
  647.   #--------------------------------------------------------------------------
  648.   def draw_item(index)
  649.     if $a.size < Blue::Blue_max + 1
  650.      item = $a[index]
  651.      else
  652.      item = $a[index + $a.size - Blue::Blue_max]
  653.     end
  654.     x = 0
  655.     y = index * 16
  656.     self.contents.font.size = 14
  657.     self.contents.font.color = Color.new(255, 128, 255, 255)
  658.     self.contents.draw_text(x + 6, y + 1, self.contents.text_size(item).width, 16, item, 0)
  659.     self.contents.font.color = normal_color
  660.     self.contents.draw_text(x + 5, y, self.contents.text_size(item).width, 16, item, 0)
  661.   end
  662.   #--------------------------------------
  663.   #  ● 刷新光标
  664.   #--------------------------------------
  665.   def update_cursor_rect
  666.     # 光标位置不满 0 的情况下
  667.     if @index < 0
  668.       self.cursor_rect.empty
  669.       return
  670.     end
  671.     # 获取当前的行
  672.     row = @index / @column_max
  673.     # 当前行被显示开头行前面的情况下
  674.     if row < self.top_row
  675.       # 从当前行向开头行滚动
  676.       self.top_row = row
  677.     end
  678.     # 当前行被显示末尾行之后的情况下
  679.     if row > self.top_row + (self.page_row_max - 1)
  680.       # 从当前行向末尾滚动
  681.       self.top_row = row - (self.page_row_max - 1)
  682.     end
  683.     # 计算光标的宽
  684.     cursor_width = self.width / @column_max - 32
  685.     cursor_width = 0
  686.     # 计算光标坐标
  687.     x = @index % @column_max * (cursor_width + 32)
  688.     y = @index / @column_max * 32 - self.oy
  689.     # 更新国标矩形
  690.     self.cursor_rect.set(x, y, cursor_width, 16)
  691.   end
  692. end

  693. class Scene_Battle
  694.   def start_phase5
  695.     # 转移到回合 5
  696.     @phase = 5
  697.     # 演奏战斗结束 ME
  698.     $game_system.me_play($game_system.battle_end_me)
  699.     # 还原为战斗开始前的 BGM
  700.     $game_system.bgm_play($game_temp.map_bgm)
  701.     # 初始化 EXP、金钱、宝物
  702.     exp = 0
  703.     gold = 0
  704.     treasures = []
  705.     # 循环
  706.     for enemy in $game_troop.enemies
  707.       # 敌人不是隐藏状态的情况下
  708.       unless enemy.hidden
  709.         # 获得 EXP、增加金钱
  710.         exp += enemy.exp
  711.         gold += enemy.gold
  712.         # 出现宝物判定
  713.         if rand(100) < enemy.treasure_prob
  714.           if enemy.item_id > 0
  715.             treasures.push($data_items[enemy.item_id])
  716.           end
  717.           if enemy.weapon_id > 0
  718.             treasures.push($data_weapons[enemy.weapon_id])
  719.           end
  720.           if enemy.armor_id > 0
  721.             treasures.push($data_armors[enemy.armor_id])
  722.           end
  723.         end
  724.       end
  725.     end
  726.     # 限制宝物数为 6 个
  727.     treasures = treasures[0..5]
  728.     # 获得 EXP
  729.     for i in 0...$game_party.actors.size
  730.       actor = $game_party.actors[i]
  731.       if actor.cant_get_exp? == false
  732.         last_level = actor.level
  733.         actor.exp += exp
  734.         if actor.level > last_level
  735.           @status_window.level_up(i)
  736.         end
  737.       end
  738.     end
  739.     # 获得金钱
  740.     $game_party.gain_gold(gold)
  741.     $am = "系统:恭喜你获得#{exp}经验,#{gold}#{$data_system.words.gold}"
  742.     bluefool_sort
  743.     # 获得宝物
  744.     for item in treasures
  745.       case item
  746.       when RPG::Item
  747.         $game_party.gain_item(item.id, 1)
  748.         $am = "系统:恭喜你获得#{$data_items[item.id].name}"
  749.         bluefool_sort
  750.       when RPG::Weapon
  751.         $game_party.gain_weapon(item.id, 1)
  752.         $am = "系统:恭喜你获得#{$data_weapons[item.id].name}"
  753.         bluefool_sort
  754.       when RPG::Armor
  755.         $game_party.gain_armor(item.id, 1)
  756.         $am = "系统:恭喜你获得#{$data_armors[item.id].name}"
  757.         bluefool_sort
  758.       end
  759.     end
  760.     # 生成战斗结果窗口
  761.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  762.     # 设置等待计数
  763.     @phase5_wait_count = 100
  764.   end
  765.     def bluefool_sort
  766.       if $am != nil
  767.        if $a.size > Blue::NAM_MAX
  768.           a_temp = {}
  769.           j = 0
  770.           for i in ($a.size - Blue::Blue_max)...$a.size
  771.             a_temp[j] = $a[i]
  772.             j += 1
  773.           end  
  774.          $a = a_temp
  775.        end
  776.         if $am.length < 54
  777.            $a[$a.size] = $am
  778.         else
  779.            while $am.length > 53
  780.              i = 53
  781.              while (/\W/ =~ $am[i-3,3]) != nil
  782.               i -= 1
  783.              end
  784.              $a[$a.size] = $am[0,i]
  785.              $am = $am[i ,$am.length - i]
  786.            end
  787.            $a[$a.size] = $am
  788.         end
  789.        $am = nil
  790.       end
  791.   end
  792. end
复制代码

作者: 「旅」    时间: 2009-8-14 15:21
那个,别忘了12开关可以屏蔽。




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