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

Project1

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

[已经解决] 请问如何在地图画面上新建窗口 用于显示x变量

[复制链接]

Lv2.观梦者

梦石
0
星屑
350
在线时间
35 小时
注册时间
2017-8-30
帖子
12
跳转到指定楼层
1
发表于 2018-2-14 20:55:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
成功在战斗画面添加了窗口,现在想知道怎么在地图画面上添加窗口,谢谢_(:з」∠)_

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
2
发表于 2018-2-14 21:00:01 | 只看该作者
本帖最后由 文雅夕露 于 2018-2-14 21:15 编辑

其实跟战斗画面的生成方式大同小异。
只是判断生成和消除的方法要变一变。

有点小问题还没有解决,随便写写而已。

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


RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Douzhi
  3. #------------------------------------------------------------------------------
  4. #  菜单画面显示斗志值的窗口。
  5. #==============================================================================
  6.  
  7. class Window_Douzhi < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(0, 0, 160, 96)
  13.     self.contents = Bitmap.new(width - 32, height - 32)
  14.     refresh
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 刷新
  18.   #--------------------------------------------------------------------------
  19.   def refresh
  20.     self.contents.clear
  21.     self.contents.font.color = system_color
  22.     self.contents.draw_text(4, 0, 120, 32, "斗志:")
  23.     self.contents.font.color = normal_color
  24.     self.contents.draw_text(4, 32, 120, 32, $game_variables[1].to_s, 2)
  25.   end
  26. end

点评

可以在refresh方法里判断v[1]是否变化,没变就跳过  发表于 2018-2-27 19:50
删掉点东西 已经好了 万分感激_(:з」∠)_  发表于 2018-2-15 14:55

评分

参与人数 2星屑 +50 +1 收起 理由
guoxiaomi + 50 认可答案
hanpian + 1 认可答案

查看全部评分

一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
350
在线时间
35 小时
注册时间
2017-8-30
帖子
12
3
 楼主| 发表于 2018-2-15 14:37:03 | 只看该作者
文雅夕露 发表于 2018-2-14 21:00
其实跟战斗画面的生成方式大同小异。
只是判断生成和消除的方法要变一变。

我也是这么改的 然后在update那边报错了_(:з」∠)_

点评

报错内容是什么呢...这边测试没问题...最多就是有个不会立即更新的Bug...  发表于 2018-2-15 14:46
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
350
在线时间
35 小时
注册时间
2017-8-30
帖子
12
4
 楼主| 发表于 2018-2-15 14:52:47 | 只看该作者
文雅夕露 发表于 2018-2-14 21:00
其实跟战斗画面的生成方式大同小异。
只是判断生成和消除的方法要变一变。

'update'方法未定义
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 07:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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