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

Project1

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

[已经解决] 怎么做一个用脚本呼唤出的系统窗口?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2008-12-11
帖子
124
跳转到指定楼层
1
发表于 2012-4-23 23:02:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 乱摸阿弥陀佛 于 2012-4-23 23:16 编辑

在地图上用一句脚本调用,窗口里有“保存、读取、返回、退出”四个功能的选项,不用事件做

评分

参与人数 1星屑 -200 收起 理由
eve592370698 -200 老会员违规可要严惩

查看全部评分

Lv3.寻梦者

双子人

梦石
0
星屑
3190
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

3
发表于 2012-4-24 12:47:42 | 只看该作者
本帖最后由 hys111111 于 2012-4-24 12:49 编辑
  1. #==============================================================================
  2. # 脚本召唤方法:
  3. # $scene = Scene_System.new
  4. #==============================================================================

  5. class Scene_System
  6.   #--------------------------------------------------------------------------
  7.   # ● 初始化对像
  8.   #     menu_index : 命令光标的初期位置
  9.   #--------------------------------------------------------------------------
  10.   def initialize(menu_index = 0)
  11.     @menu_index = menu_index
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 主处理
  15.   #--------------------------------------------------------------------------
  16.   def main
  17.     # 生成命令窗口
  18.     s1 = "保存"
  19.     s2 = "读取"
  20.     s3 = "返回"
  21.     s4 = "退出"
  22.     @command_window = Window_Command.new(160, [s1, s2, s3, s4])
  23.     @command_window.index = @menu_index
  24.     @command_window.x = 240
  25.     @command_window.y = 176
  26.     # 执行过渡
  27.     Graphics.transition
  28.     # 主循环
  29.     loop do
  30.       # 刷新游戏画面
  31.       Graphics.update
  32.       # 刷新输入信息
  33.       Input.update
  34.       # 刷新画面
  35.       update
  36.       # 如果切换画面就中断循环
  37.       if $scene != self
  38.         break
  39.       end
  40.     end
  41.     # 准备过渡
  42.     Graphics.freeze
  43.     # 释放窗口
  44.     @command_window.dispose
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 刷新画面
  48.   #--------------------------------------------------------------------------
  49.   def update
  50.     # 刷新窗口
  51.     @command_window.update
  52.     update_command
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 刷新画面 (命令窗口被激活的情况下)
  56.   #--------------------------------------------------------------------------
  57.   def update_command
  58.     # 按下 B 键的情况下
  59.     if Input.trigger?(Input::B)
  60.       # 演奏取消 SE
  61.       $game_system.se_play($data_system.cancel_se)
  62.       # 切换的地图画面
  63.       $scene = Scene_Map.new
  64.       return
  65.     end
  66.     # 按下 C 键的情况下
  67.     if Input.trigger?(Input::C)
  68.       # 命令窗口的光标位置分支
  69.       case @command_window.index
  70.       when 0  # 保存
  71.         # 演奏确定 SE
  72.         $game_system.se_play($data_system.decision_se)
  73.         # 切换到物品画面
  74.         $scene = Scene_Save.new
  75.       when 1 #读取
  76.         # 演奏确定 SE
  77.         $game_system.se_play($data_system.decision_se)
  78.         # 切换到物品画面
  79.         $scene = Scene_Load2.new
  80.       when 2 #返回
  81.         # 演奏确定 SE
  82.         $game_system.se_play($data_system.decision_se)
  83.         $scene = Scene_Map.new
  84.       when 3 #退出
  85.         # 演奏确定 SE
  86.         $game_system.se_play($data_system.decision_se)
  87.         # 切换到游戏结束画面
  88.         $scene = Scene_End.new
  89.       end
  90.       return
  91.     end
  92.   end
  93. end
  94. #==============================================================================
  95. # ■ Scene_Load2
  96. #------------------------------------------------------------------------------
  97. #  处理读档画面的类。
  98. #==============================================================================

  99. class Scene_Load2 < Scene_File
  100.   #--------------------------------------------------------------------------
  101.   # ● 初始化对像
  102.   #--------------------------------------------------------------------------
  103.   def initialize
  104.     # 再生成临时对像
  105.     $game_temp = Game_Temp.new
  106.     # 选择存档时间最新的文件
  107.     $game_temp.last_file_index = 0
  108.     latest_time = Time.at(0)
  109.     for i in 0..3
  110.       filename = make_filename(i)
  111.       if FileTest.exist?(filename)
  112.         file = File.open(filename, "r")
  113.         if file.mtime > latest_time
  114.           latest_time = file.mtime
  115.           $game_temp.last_file_index = i
  116.         end
  117.         file.close
  118.       end
  119.     end
  120.     super("要载入哪个文件?")
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 确定时的处理
  124.   #--------------------------------------------------------------------------
  125.   def on_decision(filename)
  126.     # 文件不存在的情况下
  127.     unless FileTest.exist?(filename)
  128.       # 演奏冻结 SE
  129.       $game_system.se_play($data_system.buzzer_se)
  130.       return
  131.     end
  132.     # 演奏读档 SE
  133.     $game_system.se_play($data_system.load_se)
  134.     # 写入存档数据
  135.     file = File.open(filename, "rb")
  136.     read_save_data(file)
  137.     file.close
  138.     # 还原 BGM、BGS
  139.     $game_system.bgm_play($game_system.playing_bgm)
  140.     $game_system.bgs_play($game_system.playing_bgs)
  141.     # 刷新地图 (执行并行事件)
  142.     $game_map.update
  143.     # 切换到地图画面
  144.     $scene = Scene_Map.new
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 取消时的处理
  148.   #--------------------------------------------------------------------------
  149.   def on_cancel
  150.     # 演奏取消 SE
  151.     $game_system.se_play($data_system.cancel_se)
  152.     # 切换到标题画面
  153.     $scene = Scene_System.new
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 读取存档数据
  157.   #     file : 读取用文件对像 (已经打开)
  158.   #--------------------------------------------------------------------------
  159.   def read_save_data(file)
  160.     # 读取描绘存档文件用的角色数据
  161.     characters = Marshal.load(file)
  162.     # 读取测量游戏时间用画面计数
  163.     Graphics.frame_count = Marshal.load(file)
  164.     # 读取各种游戏对像
  165.     $game_system        = Marshal.load(file)
  166.     $game_switches      = Marshal.load(file)
  167.     $game_variables     = Marshal.load(file)
  168.     $game_self_switches = Marshal.load(file)
  169.     $game_screen        = Marshal.load(file)
  170.     $game_actors        = Marshal.load(file)
  171.     $game_party         = Marshal.load(file)
  172.     $game_troop         = Marshal.load(file)
  173.     $game_map           = Marshal.load(file)
  174.     $game_player        = Marshal.load(file)
  175.     # 魔法编号与保存时有差异的情况下
  176.     # (加入编辑器的编辑过的数据)
  177.     if $game_system.magic_number != $data_system.magic_number
  178.       # 重新装载地图
  179.       $game_map.setup($game_map.map_id)
  180.       $game_player.center($game_player.x, $game_player.y)
  181.     end
  182.     # 刷新同伴成员
  183.     $game_party.refresh
  184.   end
  185. end
复制代码
感觉写的脚本好快

点评

hys君厲害!  发表于 2012-4-24 20:24
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2010-7-16
帖子
48
2
发表于 2012-4-24 12:40:01 | 只看该作者
系统菜单不是sence_menu.new吗?
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 12:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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