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

Project1

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

[已经解决] VX新菜单脚本如何加入新菜单项?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
525
在线时间
0 小时
注册时间
2009-2-5
帖子
2
跳转到指定楼层
1
发表于 2009-2-5 16:50:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
需要加入一个新菜单,比如$scene = Scene_Lvup.new,请问该如何更改?
尝试过2L,3L,4L的方法,都是出现WINDOW_BASE错误
出错内容如下
    bitmap = Cache.system("Iconset")
    rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    self.contents.blt(x, y, bitmap, rect, enabled ? 255 : 128)



  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #==============================================================================
  4. class Scene_Menu < Scene_Base
  5.   #--------------------------------------------------------------------------
  6.   # ● 初始化对象
  7.   #     menu_index : 指令光标初期位置
  8.   #     show       : 是否动态出现菜单
  9.   #--------------------------------------------------------------------------
  10.   def initialize(menu_index = 0, show = false)
  11.     @menu_index = menu_index
  12.     @status_index = 0
  13.     @show = show
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 开始处理
  17.   #--------------------------------------------------------------------------
  18.   def start
  19.     super
  20.     create_menu_background
  21.     create_command_window
  22.     @gold_window = Window_Gold.new(384, 360)
  23.     @gold_window.opacity = 0
  24.     @gold_window.y = @show ? 416 : 360
  25.     @status_window = Window_MenuTarget.new(64, 144)
  26.     @status_window.visible = false
  27.     @status_window.openness = 0
  28.     @help_window = Window_Help.new
  29.     @help_window.y = @show ? -56 : 0
  30.     @command_window.help_window = @help_window
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 结束处理
  34.   #--------------------------------------------------------------------------
  35.   def terminate
  36.     super
  37.     dispose_menu_background
  38.     @command_window.dispose
  39.     @gold_window.dispose
  40.     @status_window.dispose
  41.     @help_window.dispose
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 更新画面
  45.   #--------------------------------------------------------------------------
  46.   def update
  47.     super
  48.     update_menu_background
  49.     @command_window.update
  50.     @gold_window.update
  51.     @status_window.update
  52.     @help_window.update
  53.     loop do
  54.       break if @help_window.y >= 0
  55.       @help_window.y += 8
  56.       @gold_window.y -= 8
  57.       @command_window.y -= 8
  58.       Graphics.update
  59.     end
  60.     @help_window.y = 0
  61.     @command_window.y = 360
  62.     if @command_window.active
  63.       update_command_selection
  64.       if @menu_index != @command_window.index
  65.         @menu_index = @command_window.index
  66.         @command_window.refresh
  67.       end
  68.     elsif @status_window.active
  69.       update_actor_selection
  70.       if @status_index != @status_window.index
  71.         @status_index = @status_window.index
  72.         @status_window.refresh
  73.       end
  74.     end
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 打开指令窗口
  78.   #--------------------------------------------------------------------------
  79.   def show_status_window
  80.     @status_window.open
  81.     begin
  82.       @status_window.update
  83.       Graphics.update
  84.     end until @status_window.openness == 255
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 关闭指令窗口
  88.   #--------------------------------------------------------------------------
  89.   def hide_status_window
  90.     @status_window.close
  91.     begin
  92.       @status_window.update
  93.       Graphics.update
  94.     end until @status_window.openness == 0
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 菜单背景快照
  98.   #--------------------------------------------------------------------------
  99.   def snapshot_for_sub_menu
  100.     $game_temp.sub_menu_bitmap.dispose
  101.     $game_temp.sub_menu_bitmap = Graphics.snap_to_bitmap
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 生成菜单画面背景
  105.   #--------------------------------------------------------------------------
  106.   def create_menu_background
  107.     @menuback_sprite = Sprite.new
  108.     @menuback_sprite.bitmap = $game_temp.menu_bitmap
  109.     update_menu_background
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 生成指令窗口
  113.   #--------------------------------------------------------------------------
  114.   def create_command_window
  115.     s1 = Vocab::item
  116.     s2 = Vocab::skill
  117.     s3 = Vocab::equip
  118.     s4 = Vocab::status
  119.     s5 = Vocab::save
  120.     s6 = Vocab::game_end
  121.     @command_window = Window_Menu_Command.new(544, [s1, s2, s3, s4, s5, s6])
  122.     @command_window.y = @show ? 416 : 360
  123.     @command_window.index = @menu_index
  124.     @command_window.refresh
  125.     if $game_party.members.size == 0          # 同伴人数为 0 的情况下
  126.       @command_window.draw_item(0, false)     # 物品无效化
  127.       @command_window.draw_item(1, false)     # 特技无效化
  128.       @command_window.draw_item(2, false)     # 装备无效化
  129.       @command_window.draw_item(3, false)     # 状态无效化
  130.     end
  131.     if $game_system.save_disabled             # 禁止存档的情况下
  132.       @command_window.draw_item(4, false)     # 存档无效化
  133.     end
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 更新指令选择
  137.   #--------------------------------------------------------------------------
  138.   def update_command_selection
  139.     if Input.trigger?(Input::B)
  140.       loop do
  141.         break if @help_window.y <= -56
  142.         @help_window.y -= 8
  143.         @gold_window.y += 8
  144.         @command_window.y += 8
  145.         Graphics.update
  146.       end
  147.       Sound.play_cancel
  148.       $scene = Scene_Map.new
  149.     elsif Input.trigger?(Input::C)
  150.       if $game_party.members.size == 0 and @command_window.index < 4
  151.         Sound.play_buzzer
  152.         return
  153.       elsif $game_system.save_disabled and @command_window.index == 4
  154.         Sound.play_buzzer
  155.         return
  156.       end
  157.       Sound.play_decision
  158.       case @command_window.index
  159.       when 0      # 物品
  160.         @help_window.set_text("")
  161.         snapshot_for_sub_menu
  162.         $scene = Scene_Item.new
  163.       when 1,2,3  # 特技、装备、状态
  164.         @help_window.set_text("")
  165.         snapshot_for_sub_menu
  166.         start_actor_selection
  167.       when 4      # 存档
  168.         @help_window.set_text("")
  169.         snapshot_for_sub_menu
  170.         $scene = Scene_File.new(true, false, false)
  171.       when 5      # 游戏结束
  172.         @help_window.set_text("")
  173.         snapshot_for_sub_menu
  174.         $scene = Scene_End.new
  175.       end
  176.     end
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● アクター選択の開始
  180.   #--------------------------------------------------------------------------
  181.   def start_actor_selection
  182.     @command_window.active = false
  183.     @status_window.active = true
  184.     @status_window.visible = true
  185.     show_status_window
  186.     if $game_party.last_actor_index < @status_window.item_max
  187.       @status_window.index = $game_party.last_actor_index
  188.     else
  189.       @status_window.index = 0
  190.     end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● アクター選択の終了
  194.   #--------------------------------------------------------------------------
  195.   def end_actor_selection
  196.     @command_window.active = true
  197.     @status_window.active = false
  198.     hide_status_window
  199.     @status_window.visible = false
  200.     @status_window.index = -1
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● アクター選択の更新
  204.   #--------------------------------------------------------------------------
  205.   def update_actor_selection
  206.     if Input.trigger?(Input::B)
  207.       Sound.play_cancel
  208.       end_actor_selection
  209.     elsif Input.trigger?(Input::C)
  210.       $game_party.last_actor_index = @status_window.index
  211.       Sound.play_decision
  212.       case @command_window.index
  213.       when 1  # スキル
  214.         $scene = Scene_Menu_Skill.new(@status_window.index)
  215.       when 2  # 装備
  216.         $scene = Scene_Equip.new(@status_window.index)
  217.       when 3  # ステータス
  218.         $scene = Scene_Status.new(@status_window.index)
  219.       end
  220.     end
  221.   end
  222. end
复制代码

此贴于 2009-2-11 23:04:45 被版主八云紫提醒,请楼主看到后对本贴做出回应。
本贴由论坛斑竹八云紫结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^

Lv1.梦旅人

Haagen-Daz

梦石
0
星屑
50
在线时间
14 小时
注册时间
2009-1-24
帖子
614
2
发表于 2009-2-5 16:52:59 | 只看该作者
  s1 = Vocab::item
   s2 = Vocab::skill
   s3 = Vocab::equip
   s4 = Vocab::status
   s5 = Vocab::save
   s6 = Vocab::game_end
这里加一个 s7 = xxx
be back
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
帖子
237
3
发表于 2009-2-5 19:14:29 | 只看该作者
另外在
def update_command_selection

case @command_window.index
加上对应的
when XX  #XX为在命令框的编号,第一个为0 楼上说s7 就是when 6
$scene = Scene_Lvup.new #调用其他窗口的命令#
  之后就是写窗口的事了
我。。不是寂寞。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
59
在线时间
31 小时
注册时间
2009-1-30
帖子
207
4
发表于 2009-2-6 00:54:50 | 只看该作者
def create_command_window
   s1 = Vocab::item
   s2 = Vocab::skill
   s3 = Vocab::equip
   s4 = Vocab::status
   s5 = Vocab::save
   S6 = “升级加点”   修改
   s7 = Vocab::game_end
   @command_window = Window_Menu_Command.new(544, [s1, s2, s3, s4, s5, s6, S7])修改

   @command_window.y = @show ? 416 : 360
   @command_window.index = @menu_index
   @command_window.refresh
   if $game_party.members.size == 0          # 同伴人数为 0 的情况下
     @command_window.draw_item(0, false)     # 物品无效化
     @command_window.draw_item(1, false)     # 特技无效化
     @command_window.draw_item(2, false)     # 装备无效化
     @command_window.draw_item(3, false)     # 状态无效化
   end
   if $game_system.save_disabled             # 禁止存档的情况下
     @command_window.draw_item(4, false)     # 存档无效化
   end
end
#--------------------------------------------------------------------------
# ● 更新指令选择
#--------------------------------------------------------------------------
def update_command_selection
   if Input.trigger?(Input::B)
     loop do
       break if @help_window.y <= -56
       @help_window.y -= 8
       @gold_window.y += 8
       @command_window.y += 8
       Graphics.update
     end
     Sound.play_cancel
     $scene = Scene_Map.new
   elsif Input.trigger?(Input::C)
     if $game_party.members.size == 0 and @command_window.index < 4
       Sound.play_buzzer
       return
     elsif $game_system.save_disabled and @command_window.index == 4
       Sound.play_buzzer
       return
     end
     Sound.play_decision
     case @command_window.index
     when 0      # 物品
       @help_window.set_text("")
       snapshot_for_sub_menu
       $scene = Scene_Item.new
     when 1,2,3  # 特技、装备、状态
       @help_window.set_text("")
       snapshot_for_sub_menu
       start_actor_selection
     when 4      # 存档
       @help_window.set_text("")
       snapshot_for_sub_menu
       $scene = Scene_File.new(true, false, false)
     when 5      #新菜单     修改

       @help_window.set_text("")
       snapshot_for_sub_menu
       $scene = Scene_Lvup.new
     when 6      # 游戏结束
       @help_window.set_text("")
       snapshot_for_sub_menu
       $scene = Scene_End.new
     end
   end
end




你这个貌似是升级加点的脚本吧!
蚊香
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
525
在线时间
0 小时
注册时间
2009-2-5
帖子
2
5
 楼主| 发表于 2009-2-6 17:17:03 | 只看该作者
尝试过以上方法,全部出现 window_base 错误……哪位高手肯帮帮我?{/dk}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
6
发表于 2009-2-6 17:53:36 | 只看该作者
怎么扯到Scene_Base描绘图标的方法去了……

怀疑是你那个Scene_Lvup本来就写错了,或者需要初始化参数?

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

7
发表于 2009-2-6 20:48:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-8 10:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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