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

Project1

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

[已经解决] 另外制作一个新状态栏,而且只能用道具查看,but...请问我...

[复制链接]

Lv2.观梦者

梦石
0
星屑
320
在线时间
4 小时
注册时间
2018-5-11
帖子
4
跳转到指定楼层
1
发表于 2018-5-11 17:44:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我的游戏只有一个主角,所以没有伙伴问题,

我想另外多制作一个新状态栏,而且只能用道具才能查看,

我先做了一个道具,道具编号是999,
然后写一个新的角本[Scene_Status2],当使用道具后,
去打开新的视窗[Window_Status2],
结束后会到地图画面。

但是...新的状态栏不会显示
请问我脚本哪里写错了....???

#==============================================================================
# ■ Scene_Status2
#------------------------------------------------------------------------------
#  Status2画面
#==============================================================================
class Scene_Status2 < Scene_ItemBase
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias xxx001_start start
  def start
    xxx001_start
    @status2_window = Window_Status2.new
  end
  #--------------------------------------------------------------------------
  # ● 對應道具items[999]
  #--------------------------------------------------------------------------
  alias xxx001_determine_item determine_item
  def determine_item
    if determine_item = $data_items[999]
      show_sub_window(@status2_window)
    else
      xxx001_determine_item
    end
  end
end

#==============================================================================
# ■ Window_Status2
#------------------------------------------------------------------------------
#密状态栏
#==============================================================================
class Window_Status2 < Window_Base
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, window_width, window_height)
    @actor = $game_party.members.first
    refresh
    activate
  end
  #--------------------------------------------------------------------------
  # ● 幅
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width - 160
  end
  #--------------------------------------------------------------------------
  # ● 高
  #--------------------------------------------------------------------------
  def window_height
    Graphics.height - 123
  end
  #--------------------------------------------------------------------------
  # ● 1區塊
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_block1   (line_height * 0)
  end
  #--------------------------------------------------------------------------
  # ● 1區塊內容
  #--------------------------------------------------------------------------
  def draw_block1(y)
    draw_eexp_info(0, y)
  end
  # ● 內容描画
  #--------------------------------------------------------------------------
  def draw_eexp_info(x, y)
    s1 = @actor.max_level? ? "-------" : @actor.exp
    s2 = @actor.max_level? ? "-------" : @actor.next_level_exp - @actor.exp
    s_next = sprintf(Vocab::ExpNext, Vocab::level)
    change_color(system_color)
    draw_text(x, y + line_height * 0, 180, line_height, Vocab::ExpTotal)
    draw_text(x, y + line_height * 1, 180, line_height, s_next)
    change_color(normal_color)
    draw_text(x, y + line_height * 0, 280, line_height, s1, 2)
    draw_text(x, y + line_height * 1, 280, line_height, s2, 2)
  end
  #--------------------------------------------------------------------------
  # ●返回地圖
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Map.new
  end
end

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
来自 3楼
发表于 2018-5-12 12:01:56 | 只看该作者
首先楼主您这个脚本是在RGSS2运行还是RGSS3运行的?
RGSS2默认并没有Scene_ItemBase这个场景。
RGSS3默认并不会有$scene = Scene_Map.new这个实例方法。
看脚本的样子还是RGSS3的结构。
附上正确的脚本给您参考一下。
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_ItemBase
  4. #------------------------------------------------------------------------------
  5. #  物品画面和技能画面的共同父类
  6. #==============================================================================
  7. class Scene_ItemBase
  8.   #--------------------------------------------------------------------------
  9.   # ● 使用物品
  10.   #--------------------------------------------------------------------------
  11.   alias up_use_item use_item
  12.   def use_item
  13.     p 1
  14.     if $data_items[21]
  15.     use_status_item
  16.   else
  17.     up_use_item
  18.     end
  19.   end
  20.    #--------------------------------------------------------------------------
  21.   # ● 设定
  22.   #--------------------------------------------------------------------------
  23.   def use_status_item
  24.   SceneManager.call(Scene_Status2)
  25.   end
  26. end
  27. #==============================================================================
  28. # ■ Scene_Status2
  29. #------------------------------------------------------------------------------
  30. #  Status2画面
  31. #==============================================================================
  32. class Scene_Status2 < Scene_MenuBase
  33.   #--------------------------------------------------------------------------
  34.   # ● 開始処理
  35.   #--------------------------------------------------------------------------
  36.   alias xxx001_start start
  37.   def start
  38.     xxx001_start
  39.     @status2_window = Window_Status2.new(0,0)
  40.     @status2_window.set_handler(:cancel,   method(:return_scene))
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ●返回地圖
  44.   #--------------------------------------------------------------------------
  45.   def return_scene
  46.     SceneManager.call(Scene_Map)
  47.   end
  48. end
  49. #==============================================================================
  50. # ■ Window_Status2
  51. #------------------------------------------------------------------------------
  52. #==============================================================================
  53. class Window_Status2 < Window_Selectable
  54.   #--------------------------------------------------------------------------
  55.   def initialize(x, y)
  56.     super(x, y, window_width, window_height)
  57.     @actor = $game_party.leader
  58.     refresh
  59.     activate
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 幅
  63.   #--------------------------------------------------------------------------
  64.   def window_width
  65.     Graphics.width - 160
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 高
  69.   #--------------------------------------------------------------------------
  70.   def window_height
  71.     Graphics.height - 123
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 1區塊
  75.   #--------------------------------------------------------------------------
  76.   def refresh
  77.     contents.clear
  78.     draw_block1   (line_height * 0)
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 1區塊內容
  82.   #--------------------------------------------------------------------------
  83.   def draw_block1(y)
  84.     draw_eexp_info(0, y)
  85.   end
  86.   # ● 內容描画
  87.   #--------------------------------------------------------------------------
  88.   def draw_eexp_info(x, y)
  89.     s1 = @actor.max_level? ? "-------" : @actor.exp
  90.     s2 = @actor.max_level? ? "-------" : @actor.next_level_exp - @actor.exp
  91.     s_next = sprintf(Vocab::ExpNext, Vocab::level)
  92.     change_color(system_color)
  93.     draw_text(x, y + line_height * 0, 180, line_height, Vocab::ExpTotal)
  94.     draw_text(x, y + line_height * 1, 180, line_height, s_next)
  95.     change_color(normal_color)
  96.     draw_text(x, y + line_height * 0, 280, line_height, s1, 2)
  97.     draw_text(x, y + line_height * 1, 280, line_height, s2, 2)
  98.   end
  99. end
复制代码
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
来自 5楼
发表于 2018-5-12 13:48:40 | 只看该作者
  1. #==============================================================================
  2. # ■ Scene_ItemBase
  3. #------------------------------------------------------------------------------
  4. #  物品画面和技能画面的共同父类
  5. #==============================================================================
  6. class Scene_ItemBase < Scene_MenuBase
  7.   #--------------------------------------------------------------------------
  8.   # ● 使用物品
  9.   #--------------------------------------------------------------------------
  10.   alias up_use_item use_item
  11.   def use_item
  12.    up_use_item
  13.    use_status_item if item.note.include?("<状态>")
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 设定
  17.   #--------------------------------------------------------------------------
  18.   def use_status_item
  19.   SceneManager.call(Scene_Status2)
  20.   end
  21. end
复制代码

换一种判断方法吧,就是打开状态菜单的道具备注里填入<状态>即可。

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 认可答案

查看全部评分

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

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
14159
在线时间
5205 小时
注册时间
2017-2-18
帖子
390
2
发表于 2018-5-12 10:51:17 | 只看该作者
  #--------------------------------------------------------------------------
  # ● 對應道具items[999]
  #--------------------------------------------------------------------------
  alias xxx001_determine_item determine_item
  def determine_item
    if determine_item = $data_items[999]

上面这里也许应该改成 if @item.id = 999
我没试过,随便说的。
化而为鸟,其名为鸽。怒而咕,咕咕咕咕——咕咕咕!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
320
在线时间
4 小时
注册时间
2018-5-11
帖子
4
4
 楼主| 发表于 2018-5-12 12:54:45 | 只看该作者
感恩~文雅夕露 ,我脚本是RGSS3,
状态栏成功用道具打开了,但是bug出现了
我編號999的道具是設定成[貴重物品],
结果全部在[贵重物品栏]里的道具都会打开这个状态栏....

请问我哪理改错了......

[Scene_Status2][Window_Status2]
是依你贴的改,

但[Scene_ItemBase]我是把它加到原有的底下....↓

#==============================================================================
# ■ Scene_ItemBase
#==============================================================================
class Scene_ItemBase < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 開始
  #--------------------------------------------------------------------------
  def start
    super
    create_actor_window
  end
  #--------------------------------------------------------------------------
  # ● 创建演员窗口
  #--------------------------------------------------------------------------
  def create_actor_window
    @actor_window = Window_MenuActor.new
    @actor_window.set_handler(:ok,     method(:on_actor_ok))
    @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  end
  #--------------------------------------------------------------------------
  # ● 检索当前选择的项目
  #--------------------------------------------------------------------------
  def item
    @item_window.item
  end
  #--------------------------------------------------------------------------
  # ● 获取物品的用户
  #--------------------------------------------------------------------------
  def user
    $game_party.movable_members.max_by {|member| member.pha }
  end
  #--------------------------------------------------------------------------
  # ● 确定光标是否在左栏中
  #--------------------------------------------------------------------------
  def cursor_left?
    @item_window.index % 2 == 0
  end
  #--------------------------------------------------------------------------
  # ● 显示子窗口
  #--------------------------------------------------------------------------
  def show_sub_window(window)
    width_remain = Graphics.width - window.width
    window.x = cursor_left? ? width_remain : 0
    @viewport.rect.x = @viewport.ox = cursor_left? ? 0 : window.width
    @viewport.rect.width = width_remain
    window.show.activate
  end
  #--------------------------------------------------------------------------
  # ● 隐藏子窗口
  #--------------------------------------------------------------------------
  def hide_sub_window(window)
    @viewport.rect.x = @viewport.ox = 0
    @viewport.rect.width = Graphics.width
    window.hide.deactivate
    activate_item_window
  end
  #--------------------------------------------------------------------------
  # ● 演员[决定]
  #--------------------------------------------------------------------------
  def on_actor_ok
    if item_usable?
      use_item
    else
      Sound.play_buzzer
    end
  end
  #--------------------------------------------------------------------------
  # ● 演员[取消]
  #--------------------------------------------------------------------------
  def on_actor_cancel
    hide_sub_window(@actor_window)
  end
  #--------------------------------------------------------------------------
  # ● 项目确定
  #--------------------------------------------------------------------------
  def determine_item
    if item.for_friend?
      show_sub_window(@actor_window)
      @actor_window.select_for_item(item)
    else
      use_item
      activate_item_window
    end
  end
  #--------------------------------------------------------------------------
  # ● 激活项目窗口
  #--------------------------------------------------------------------------
  def activate_item_window
    @item_window.refresh
    @item_window.activate
  end
  #--------------------------------------------------------------------------
  # ● 获取演员将该项目用作数组
  #--------------------------------------------------------------------------
  def item_target_actors
    if !item.for_friend?
      []
    elsif item.for_all?
      $game_party.members
    else
      [$game_party.members[@actor_window.index]]
    end
  end
  #--------------------------------------------------------------------------
  # ● 项目的可用性确定
  #--------------------------------------------------------------------------
  def item_usable?
    user.usable?(item) && item_effects_valid?
  end
  #--------------------------------------------------------------------------
  # ● 确定项目效果是否有效
  #--------------------------------------------------------------------------
  def item_effects_valid?
    item_target_actors.any? do |target|
      target.item_test(user, item)
    end
  end
  #--------------------------------------------------------------------------
  # ● 为演员使用项目
  #--------------------------------------------------------------------------
  def use_item_to_actors
    item_target_actors.each do |target|
      item.repeats.times { target.item_apply(user, item) }
    end
  end
  #--------------------------------------------------------------------------
  # ● 使用项目
  #--------------------------------------------------------------------------
  def use_item
    play_se_for_item
    user.use_item(item)
    use_item_to_actors
    check_common_event
    check_gameover
    @actor_window.refresh
  end
#--------------------------------------------------------------------------
  # ● 使用物品items[999]
  #--------------------------------------------------------------------------
  alias up_use_item use_item
  def use_item
    p 1
    if $data_items[999]
    use_status_item
  else
    up_use_item
    end
  end
   #--------------------------------------------------------------------------
  # ● items[999]设定
  #--------------------------------------------------------------------------
  def use_status_item
    SceneManager.call(Scene_Status2)
  end

  #--------------------------------------------------------------------------
  # ● 常见的事件预约判断
  #    如果事件呼叫保留,它将转换到地图屏幕。
  #--------------------------------------------------------------------------
  def check_common_event
    SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved?
  end
end

点评

脚本没问题,只是$data_items[999]这方法的判断有问题...  发表于 2018-5-12 13:47
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
320
在线时间
4 小时
注册时间
2018-5-11
帖子
4
6
 楼主| 发表于 2018-5-12 15:39:30 | 只看该作者
感谢~文雅夕露,问题成功解决! !
所以前一个判断方法比较是适合用在一般道具...
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 00:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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