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

Project1

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

[已经解决] 找个强人来修改个开关

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-6-5
帖子
312
跳转到指定楼层
1
发表于 2009-8-13 15:07:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个脚本是不受控制的,像加个开关,当12好开关打开后就显示,当开关关闭时就隐藏!要怎么设置啊??找个强人来修改下!!!!

  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.     if Input.trigger?(Input::A)
  380.       if @down_window.active == false
  381.         @down_window.active = true
  382.         $ccc = 1
  383.       else
  384.         @down_window.active = false
  385.         $ccc = 0
  386.       end  
  387.     end
  388.     if Input.trigger?(Input::DOWN)#输入DOWN键的情况
  389.       if @down_window.active == true and @down_window.index < (@down_window.item_max-1)/2
  390.         @down_window.index += 1
  391.       end  
  392.     end  
  393.     if Input.trigger?(Input::UP)#输入UP键的情况
  394.       if @down_window.active == true and @down_window.index > 0
  395.         @down_window.index -= 1
  396.       end  
  397.     end  
  398.     #----------------------------------------------
  399.     # 按下 B 键的情况下
  400.     if Input.trigger?(Input::B)
  401.       # 不是在事件执行中或菜单禁止中
  402.       unless $game_system.map_interpreter.running? or
  403.              $game_system.menu_disabled
  404.         # 设置菜单调用标志以及 SE 演奏
  405.         $game_temp.menu_calling = true
  406.         $game_temp.menu_beep = true
  407.       end
  408.     end
  409.     # 调试模式为 ON 并且按下 F9 键的情况下
  410.     if $DEBUG and Input.press?(Input::F9)
  411.       # 设置调用调试标志
  412.       $game_temp.debug_calling = true
  413.     end
  414.     # 不在主角移动中的情况下
  415.     unless $game_player.moving?
  416.       # 执行各种画面的调用
  417.       if $game_temp.battle_calling
  418.         call_battle
  419.       elsif $game_temp.shop_calling
  420.         call_shop
  421.       elsif $game_temp.name_calling
  422.         call_name
  423.       elsif $game_temp.menu_calling
  424.         call_menu
  425.       elsif $game_temp.save_calling
  426.         call_save
  427.       elsif $game_temp.debug_calling
  428.         call_debug
  429.       end
  430.     end
  431.   end
  432. end
  433. #---------------------------------------------------------
  434. class Interpreter
  435.   def bluefool_sort
  436.       if $am != nil
  437.        if $a.size > Blue::NAM_MAX
  438.           a_temp = {}
  439.           j = 0
  440.           for i in ($a.size - Blue::Blue_max)...$a.size
  441.             a_temp[j] = $a[i]
  442.             j += 1
  443.           end  
  444.          $a = a_temp
  445.        end  
  446.         if $am.length < 54
  447.            $a[$a.size] = $am
  448.         else
  449.            while $am.length > 53
  450.              i = 53
  451.              while (/\W/ =~ $am[i-3,3]) != nil
  452.               i -= 1
  453.              end
  454.              $a[$a.size] = $am[0,i]
  455.              $am = $am[i ,$am.length - i]
  456.            end
  457.            $a[$a.size] = $am
  458.         end
  459.        $am = nil
  460.       end
  461.   end
  462.   def command_101
  463.     if $game_temp.message_text != nil
  464.       return false
  465.     end
  466.     # 设置信息结束后待机和返回调用标志
  467.     @message_waiting = true
  468.     $game_temp.message_proc = Proc.new { @message_waiting = false }
  469.     # message_text 设置为 1 行
  470.     $game_temp.message_text = @list[@index].parameters[0] + "\n"
  471.     if (@list[@index].parameters[0]).split(/\\/)[1] != nil
  472.      $am = @list[@index].parameters[0].split(/\\/)[0]
  473.      else
  474.      $am = @list[@index].parameters[0]
  475.     end  
  476.     bluefool_sort
  477.     line_count = 1
  478.     # 循环
  479.     loop do
  480.       # 下一个事件指令为文章两行以上的情况
  481.       if @list[@index+1].code == 401
  482.         # message_text 添加到第 2 行以下
  483.         $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
  484.         $am = @list[@index+1].parameters[0]
  485.         bluefool_sort
  486.         line_count += 1
  487.       # 事件指令不在文章两行以下的情况
  488.       else
  489.         # 下一个事件指令为显示选择项的情况下
  490.         if @list[@index+1].code == 102
  491.           # 如果选择项能收纳在画面里
  492.           if @list[@index+1].parameters[0].size <= 4 - line_count
  493.             # 推进索引
  494.             @index += 1
  495.             # 设置选择项
  496.             $game_temp.choice_start = line_count
  497.             setup_choices(@list[@index].parameters)
  498.           end
  499.         # 下一个事件指令为处理输入数值的情况下
  500.         elsif @list[@index+1].code == 103
  501.           # 如果数值输入窗口能收纳在画面里
  502.           if line_count < 4
  503.             # 推进索引
  504.             @index += 1
  505.             # 设置输入数值
  506.             $game_temp.num_input_start = line_count
  507.             $game_temp.num_input_variable_id = @list[@index].parameters[0]
  508.             $game_temp.num_input_digits_max = @list[@index].parameters[1]
  509.           end
  510.         end
  511.         # 继续
  512.         return true
  513.       end
  514.       # 推进索引
  515.       @index += 1
  516.     end
  517.   end
  518.   def command_125
  519.     value = operate_value(@parameters[0], @parameters[1], @parameters[2])
  520.     $game_party.gain_gold(value)
  521.     if value >= 0
  522.       $am = "系统:恭喜你获得到了【#{value}#{$data_system.words.gold}】"
  523.     else
  524.       $am = "系统:很遗憾你失去了【#{value.abs.to_s}#{$data_system.words.gold}】"
  525.     end  
  526.     bluefool_sort
  527.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  528.     return true
  529.   end
  530.   def command_126
  531.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  532.     # 增减物品
  533.     $game_party.gain_item(@parameters[0], value)
  534.     if value >= 0
  535.       $am = "系统:恭喜你获得到了#{value.abs.to_s}个【#{$data_items[@parameters[0]].name}】"
  536.     else
  537.       $am = "系统:很遗憾你失去了#{value.abs.to_s}个【#{$data_items[@parameters[0]].name}】"
  538.     end
  539.     bluefool_sort
  540.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  541.     return true
  542.   end
  543.   def command_127
  544.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  545.     # 增减武器
  546.     $game_party.gain_weapon(@parameters[0], value)
  547.     if value >= 0
  548.       $am = "系统:恭喜你得到了#{value.abs.to_s}个【#{$data_weapons[@parameters[0]].name}】"
  549.     else
  550.       $am = "系统:很遗憾你失去了#{value.abs.to_s}个【#{$data_weapons[@parameters[0]].name}】"
  551.     end
  552.     bluefool_sort
  553.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  554.     return true
  555.   end
  556.   def command_128
  557.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  558.     # 增减防具
  559.     $game_party.gain_armor(@parameters[0], value)
  560.     if value >= 0
  561.       $am = "系统:恭喜你获得到了#{value.abs.to_s}个【#{$data_armors[@parameters[0]].name}】"
  562.     else
  563.       $am = "系统:很遗憾你失去了#{value.abs.to_s}个【#{$data_armors[@parameters[0]].name}】"
  564.     end
  565.     bluefool_sort
  566.     Audio.se_play("Audio/SE/"+"006-System06",100,100)
  567.     return true
  568.   end
  569.   def command_129
  570.     # 获取角色
  571.     actor = $game_actors[@parameters[0]]
  572.     # 角色有效的情况下
  573.     if actor != nil
  574.       # 操作分支
  575.       if @parameters[1] == 0
  576.         if @parameters[2] == 1
  577.           $game_actors[@parameters[0]].setup(@parameters[0])
  578.         end
  579.         $game_party.add_actor(@parameters[0])
  580.         Audio.me_play("Audio/ME/"+"002-Victory02",100,100)
  581.         $am = "系统:恭喜你【#{$game_actors[@parameters[0]].name}】加入您队伍!"
  582.         bluefool_sort
  583.       else
  584.         $game_party.remove_actor(@parameters[0])
  585.         Audio.me_play("Audio/ME/"+"015-Mystery01",100,100)
  586.         $am = "系统:恭喜你【#{$game_actors[@parameters[0]].name}】离开您队伍!"
  587.         bluefool_sort
  588.       end
  589.     end
  590.     # 继续
  591.     return true
  592.   end
  593.   #-------------------------
  594. end
  595. #==============================================================================
  596. # ■ Window_Down
  597. #------------------------------------------------------------------------------
  598. #   信息窗口。
  599. #==============================================================================

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

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

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
2
发表于 2009-8-13 15:14:37 | 只看该作者
在地图的某处设置12号开关=ON,并且设置为"并行处理."
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

3
发表于 2009-8-13 15:18:04 | 只看该作者
本帖最后由 「旅」 于 2009-8-13 15:21 编辑

379行下面加上
  1.     if $game_switches[1]
  2.       @down_window.contents.clear
  3.       @lv03 = true
  4.     else
  5.       if @lv03
  6.       @down_window.refresh
  7.       @lv03 = false
  8.       end
  9.     end
复制代码
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6875
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

4
发表于 2009-8-13 15:48:42 | 只看该作者
本帖最后由 后知后觉 于 2009-8-13 16:18 编辑

我的操作流程是这样的
先搜索 class Scene_Map
发现多了一个 Window_Down.new
然后搜索 class Window_Down
然后看了下定义的东西,嗯 没有重定义 def update
然后我就在class Window_Down下面加了几行
def update
  super
  self.visible = $game_switches[12]
end
然后运行发现没有效果
然后我全局搜索了这一行 @down_window.update
结果这个方法没有被执行
然后我搜索了这一行 @message_window.update
找到了这个脚本里的这一行在下面写了一行
@down_window.update
然后测试 成功
有没有后遗症我就不清楚了....
不过自身的BUG到是找到了4个
1.这是一个带有光标的窗口,居然没有调用update这个方法 真是神奇
2.我调用了这个update方法后发现没有没有上下翻页
3.当第一次按下SHIFT的时候再按B键进入菜单 然后再返回地图
  这个时候要按2下SHIFT才能行走
4.如果面对着一个NPC的时候按下SHIFT 如果再按下C键的话 会触发面对着的这个NPC的事件

哎哎~~BUG还真多呀~











你知道得太多了

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 00:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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