Project1

标题: 「在地图上显示变量」 [打印本页]

作者: 亲爱的小朋友~    时间: 2014-2-14 17:02
标题: 「在地图上显示变量」
  1. module XXX
  2.   SXMC = "声望"
  3.   SXBH = 1
  4. end
  5. class Window_Gold2 < Window_Base
  6.   def initialize
  7.     super(640 - 160, 480 - 64,160,64)
  8.     self.contents = Bitmap.new(width - 32, height - 32)
  9.     refresh
  10.   end
  11.   def refresh
  12.     value = $game_variables[XXX::SXBH].to_s
  13.     cx = contents.text_size(XXX::SXMC).width
  14.     name = XXX::SXMC
  15.     self.contents.font.color = normal_color
  16.     self.contents.draw_text(4, 0, 120-cx-2, 32, "#{value}", 2)
  17.     self.contents.font.color = system_color
  18.     self.contents.draw_text(124-cx, 0, cx, 32, name, 2)
  19.   end
  20. end
复制代码
额..第一次来6r发东西……我是新人小朋友~这样可以吗?
SXMC就是单位名称,SXBH就是变量编号..
在地图上显示需要在相应地方添加语句。
  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================

  6. class Scene_Map
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成活动块
  12.     @spriteset = Spriteset_Map.new
  13.     # 生成信息窗口
  14.     @message_window = Window_Message.new
  15.     # 生成声望窗口
  16.     @sw_window = Window_Gold2.new
  17.     # 执行过渡
  18.     Graphics.transition
  19.     # 主循环
  20.     loop do
  21.       # 刷新游戏画面
  22.       Graphics.update
  23.       # 刷新输入信息
  24.       Input.update
  25.       # 刷新画面
  26.       update
  27.       # 如果画面切换的话就中断循环
  28.       if $scene != self
  29.         break
  30.       end
  31.     end
  32.     # 准备过渡
  33.     Graphics.freeze
  34.     # 释放活动块
  35.     @spriteset.dispose
  36.     # 释放信息窗口
  37.     @message_window.dispose
  38.     # 释放声望窗口
  39.     @sw_window.dispose
  40.     # 标题画面切换中的情况下
  41.     if $scene.is_a?(Scene_Title)
  42.       # 淡入淡出画面
  43.       Graphics.transition
  44.       Graphics.freeze
  45.     end
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 刷新画面
  49.   #--------------------------------------------------------------------------
  50.   def update
  51.     # 循环
  52.     loop do
  53.       # 刷新声望
  54.       @sw_window.update
  55.       # 按照地图、实例、主角的顺序刷新
  56.       # (本更新顺序不会在满足事件的执行条件下成为给予角色瞬间移动
  57.       #  的机会的重要因素)
  58.       $game_map.update
  59.       $game_system.map_interpreter.update
  60.       $game_player.update
  61.       # 系统 (计时器)、画面刷新
  62.       $game_system.update
  63.       $game_screen.update
  64.       # 如果主角在场所移动中就中断循环
  65.       unless $game_temp.player_transferring
  66.         break
  67.       end
  68.       # 执行场所移动
  69.       transfer_player
  70.       # 处理过渡中的情况下、中断循环
  71.       if $game_temp.transition_processing
  72.         break
  73.       end
  74.     end
  75.     # 刷新活动块
  76.     @spriteset.update
  77.     # 刷新信息窗口
  78.     @message_window.update
  79.     # 游戏结束的情况下
  80.     if $game_temp.gameover
  81.       # 切换的游戏结束画面
  82.       $scene = Scene_Gameover.new
  83.       return
  84.     end
  85.     # 返回标题画面的情况下
  86.     if $game_temp.to_title
  87.       # 切换到标题画面
  88.       $scene = Scene_Title.new
  89.       return
  90.     end
  91.     # 处理过渡中的情况下
  92.     if $game_temp.transition_processing
  93.       # 清除过渡处理中标志
  94.       $game_temp.transition_processing = false
  95.       # 执行过渡
  96.       if $game_temp.transition_name == ""
  97.         Graphics.transition(20)
  98.       else
  99.         Graphics.transition(40, "Graphics/Transitions/" +
  100.           $game_temp.transition_name)
  101.       end
  102.     end
  103.     # 显示信息窗口中的情况下
  104.     if $game_temp.message_window_showing
  105.       return
  106.     end
  107.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  108.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  109.       # 不是在事件执行中或者禁止遇敌中
  110.       unless $game_system.map_interpreter.running? or
  111.              $game_system.encounter_disabled
  112.         # 确定队伍
  113.         n = rand($game_map.encounter_list.size)
  114.         troop_id = $game_map.encounter_list[n]
  115.         # 队伍有效的话
  116.         if $data_troops[troop_id] != nil
  117.           # 设置调用战斗标志
  118.           $game_temp.battle_calling = true
  119.           $game_temp.battle_troop_id = troop_id
  120.           $game_temp.battle_can_escape = true
  121.           $game_temp.battle_can_lose = false
  122.           $game_temp.battle_proc = nil
  123.         end
  124.       end
  125.     end
  126.     # 按下 B 键的情况下
  127.     if Input.trigger?(Input::B)
  128.       # 不是在事件执行中或菜单禁止中
  129.       unless $game_system.map_interpreter.running? or
  130.              $game_system.menu_disabled
  131.         # 设置菜单调用标志以及 SE 演奏
  132.         $game_temp.menu_calling = true
  133.         $game_temp.menu_beep = true
  134.       end
  135.     end
  136.     # 调试模式为 ON 并且按下 F9 键的情况下
  137.     if $DEBUG and Input.press?(Input::F9)
  138.       # 设置调用调试标志
  139.       $game_temp.debug_calling = true
  140.     end
  141.     # 不在主角移动中的情况下
  142.     unless $game_player.moving?
  143.       # 执行各种画面的调用
  144.       if $game_temp.battle_calling
  145.         call_battle
  146.       elsif $game_temp.shop_calling
  147.         call_shop
  148.       elsif $game_temp.name_calling
  149.         call_name
  150.       elsif $game_temp.menu_calling
  151.         call_menu
  152.       elsif $game_temp.save_calling
  153.         call_save
  154.       elsif $game_temp.debug_calling
  155.         call_debug
  156.       end
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 调用战斗
  161.   #--------------------------------------------------------------------------
  162.   def call_battle
  163.     # 清除战斗调用标志
  164.     $game_temp.battle_calling = false
  165.     # 清除菜单调用标志
  166.     $game_temp.menu_calling = false
  167.     $game_temp.menu_beep = false
  168.     # 生成遇敌计数
  169.     $game_player.make_encounter_count
  170.     # 记忆地图 BGM 、停止 BGM
  171.     $game_temp.map_bgm = $game_system.playing_bgm
  172.     $game_system.bgm_stop
  173.     # 演奏战斗开始 SE
  174.     $game_system.se_play($data_system.battle_start_se)
  175.     # 演奏战斗 BGM
  176.     $game_system.bgm_play($game_system.battle_bgm)
  177.     # 矫正主角姿势
  178.     $game_player.straighten
  179.     # 切换到战斗画面
  180.     $scene = Scene_Battle.new
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 调用商店
  184.   #--------------------------------------------------------------------------
  185.   def call_shop
  186.     # 清除商店调用标志
  187.     $game_temp.shop_calling = false
  188.     # 矫正主角姿势
  189.     $game_player.straighten
  190.     # 切换到商店画面
  191.     $scene = Scene_Shop.new
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 调用名称输入
  195.   #--------------------------------------------------------------------------
  196.   def call_name
  197.     # 清除调用名称输入标志
  198.     $game_temp.name_calling = false
  199.     # 矫正主角姿势
  200.     $game_player.straighten
  201.     # 切换到名称输入画面
  202.     $scene = Scene_Name.new
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 调用菜单
  206.   #--------------------------------------------------------------------------
  207.   def call_menu
  208.     # 清除菜单调用标志
  209.     $game_temp.menu_calling = false
  210.     # 已经设置了菜单 SE 演奏标志的情况下
  211.     if $game_temp.menu_beep
  212.       # 演奏确定 SE
  213.       $game_system.se_play($data_system.decision_se)
  214.       # 清除菜单演奏 SE 标志
  215.       $game_temp.menu_beep = false
  216.     end
  217.     # 矫正主角姿势
  218.     $game_player.straighten
  219.     # 切换到菜单画面
  220.     $scene = Scene_Menu.new
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 调用存档
  224.   #--------------------------------------------------------------------------
  225.   def call_save
  226.     # 矫正主角姿势
  227.     $game_player.straighten
  228.     # 切换到存档画面
  229.     $scene = Scene_Save.new
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 调用调试
  233.   #--------------------------------------------------------------------------
  234.   def call_debug
  235.     # 清除调用调试标志
  236.     $game_temp.debug_calling = false
  237.     # 演奏确定 SE
  238.     $game_system.se_play($data_system.decision_se)
  239.     # 矫正主角姿势
  240.     $game_player.straighten
  241.     # 切换到调试画面
  242.     $scene = Scene_Debug.new
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 主角的场所移动
  246.   #--------------------------------------------------------------------------
  247.   def transfer_player
  248.     # 清除主角场所移动调试标志
  249.     $game_temp.player_transferring = false
  250.     # 移动目标与现在的地图有差异的情况下
  251.     if $game_map.map_id != $game_temp.player_new_map_id
  252.       # 设置新地图
  253.       $game_map.setup($game_temp.player_new_map_id)
  254.     end
  255.     # 设置主角位置
  256.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  257.     # 设置主角朝向
  258.     case $game_temp.player_new_direction
  259.     when 2  # 下
  260.       $game_player.turn_down
  261.     when 4  # 左
  262.       $game_player.turn_left
  263.     when 6  # 右
  264.       $game_player.turn_right
  265.     when 8  # 上
  266.       $game_player.turn_up
  267.     end
  268.     # 矫正主角姿势
  269.     $game_player.straighten
  270.     # 刷新地图 (执行并行事件)
  271.     $game_map.update
  272.     # 在生成活动块
  273.     @spriteset.dispose
  274.     @spriteset = Spriteset_Map.new
  275.     # 处理过渡中的情况下
  276.     if $game_temp.transition_processing
  277.       # 清除过渡处理中标志
  278.       $game_temp.transition_processing = false
  279.       # 执行过渡
  280.       Graphics.transition(20)
  281.     end
  282.     # 执行地图设置的 BGM、BGS 的自动切换
  283.     $game_map.autoplay
  284.     # 设置画面
  285.     Graphics.frame_reset
  286.     # 刷新输入信息
  287.     Input.update
  288.   end
  289. end
复制代码

作者: 【凌】    时间: 2014-2-14 23:17
抢沙发给个图
作者: chd114    时间: 2014-2-15 01:25
太长了···而且有更简单实用的= =比如魔塔样板、ARPG···
作者: 精灵使者    时间: 2014-2-15 01:27
可以利用复制金钱窗口的模式来显示变量的说呐~
其实这个也很不错的说。
赞一个!




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