查看: 1929|回复: 1

[已经解决] 萌新求大神把喵呜喵5的高价回收物品的商店脚本加个交谈...

[复制链接]
梦石
0
星屑
164
在线时间
1748 小时
注册时间
2012-1-24
回帖
168
发表于 2015-10-21 21:27:02 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 1561496327 于 2015-10-22 15:07 编辑

喵呜喵5的高价回收物品的商店脚本
萌新求大神把喵呜喵5的高价回收物品的商店脚本加个交谈选项,就是和下面的脚本效果差不多
[pre lang="ruby" file="Window_ShopCommand"]#encoding:utf-8
#==============================================================================
# ■ Window_ShopCommand
#------------------------------------------------------------------------------
#  商店画面中,选择买入/卖出的窗口。
#==============================================================================

class Window_ShopCommand < Window_HorzCommand
  #↓ =================== ↓#
  TALK_FLAG = 85         # 用于对话后选择项位置的重置,参考范例中的【开关2】
  TALK_DISP = "交谈"    # 用于交谈功能显示在商店菜单中的文字
  #↑ =================== ↑#
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  def initialize(window_width, purchase_only)
    @window_width = window_width
    @purchase_only = purchase_only
    super(0, 0)
    self.index = 2 if $game_switches[TALK_FLAG] == true
  end
  #--------------------------------------------------------------------------
  # ● 获取列数
  #--------------------------------------------------------------------------
  def col_max
    return 4
  end
  #--------------------------------------------------------------------------
  # ● 生成指令列表
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(Vocab::ShopBuy,    :buy)
    add_command(Vocab::ShopSell,   :sell,   !@purchase_only)
    add_command(TALK_DISP,         :talk)
    add_command(Vocab::ShopCancel, :cancel)
  end
end
[/pre]
[pre lang="ruby" file="Scene_Shop"]#encoding:utf-8
#==============================================================================
# ■ Scene_Shop
#------------------------------------------------------------------------------
#  商店画面
#==============================================================================

class Scene_Shop < Scene_MenuBase
  #↓ =================== ↓#
  TALK_SWITCH = 84
  # 开关编号,根据此开关在事件中设置是显示对话还是直接跳出循环。参考范例中的【开关1】
  
  ALL_Tr = false
  # 全体窗口透明开关,true为全部透明,方便自己制作合适的背景。
  
  # 在事件中调用脚本,内容为:
  #   ---------------------------------
  #   $TALK_TITLE = "请问您需要什么?"
  #   $TALK_BACK = "shopback_001"
  #   ---------------------------------
  #   $TALK_TITLE——进入商店界面后显示的文字,通过全局变量传递。
  #   $TALK_BACK ——进入商店界面后显示的背景立绘图。
  #↑ =================== ↑#
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_gold_window
    create_command_window
    create_dummy_window
    create_number_window
    create_status_window
    create_buy_window
    create_category_window
    create_sell_window
    transparent_all if ALL_Tr
    @help_window.y = Graphics.height - @help_window.height
    @help_window.set_text($TALK_TITLE)
    @back_sprite = Sprite.new(@viewport)
    @back_sprite.bitmap = Cache.picture($TALK_BACK)
  end
  #--------------------------------------------------------------------------
  # ● 使所有窗口透明
  #--------------------------------------------------------------------------
  def transparent_all
    instance_variables.each do |varname|
      ivar = instance_variable_get(varname)
      ivar.opacity = 0 if ivar.is_a?(Window)
    end
  end
  #--------------------------------------------------------------------------
  # ● 释放所有窗口
  #--------------------------------------------------------------------------
  def dispose_all_windows
    super
    @back_sprite.bitmap.dispose
    @back_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 生成金钱窗口
  #--------------------------------------------------------------------------
  def create_gold_window
    @gold_window = Window_Gold.new
    @gold_window.viewport = @viewport
  end
  #--------------------------------------------------------------------------
  # ● 生成指令窗口
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_ShopCommand.new(Graphics.width - @gold_window.width, @purchase_only)
    @command_window.viewport = @viewport
    @command_window.x = @gold_window.width
    @command_window.set_handler(:buy,    method(:command_buy))
    @command_window.set_handler(:sell,   method(:command_sell))
    @command_window.set_handler(:talk,   method(:command_talk))
    @command_window.set_handler(:cancel, method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # ● 生成填充窗口
  #--------------------------------------------------------------------------
  def create_dummy_window
    wy = @command_window.y + @command_window.height
    wh = Graphics.height - wy - @help_window.height
    @dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
    @dummy_window.viewport = @viewport
    @dummy_window.hide
  end
  #--------------------------------------------------------------------------
  # ● 生成数值输入窗口
  #--------------------------------------------------------------------------
  def create_number_window
    wy = @dummy_window.y
    wh = @dummy_window.height
    @number_window = Window_ShopNumber.new(0, wy, wh)
    @number_window.viewport = @viewport
    @number_window.hide
    @number_window.set_handler(:ok,     method(:on_number_ok))
    @number_window.set_handler(:cancel, method(:on_number_cancel))
  end
  #--------------------------------------------------------------------------
  # ● 生成卖出窗口
  #--------------------------------------------------------------------------
  def create_sell_window
    wy = @category_window.y + @category_window.height
    wh = Graphics.height - wy - @help_window.height
    @sell_window = Window_ShopSell.new(0, wy, Graphics.width, wh)
    @sell_window.viewport = @viewport
    @sell_window.help_window = @help_window
    @sell_window.hide
    @sell_window.set_handler(:ok,     method(:on_sell_ok))
    @sell_window.set_handler(:cancel, method(:on_sell_cancel))
    @category_window.item_window = @sell_window
  end
  #--------------------------------------------------------------------------
  # ● 指令“交谈”
  #--------------------------------------------------------------------------
  def command_talk
    $game_switches[TALK_SWITCH] = true
    $game_map.need_refresh = true
    return_scene
  end
  #--------------------------------------------------------------------------
  # ● 买入“取消”
  #--------------------------------------------------------------------------
  def on_buy_cancel
    @command_window.activate
    @buy_window.hide
    @status_window.hide
    @status_window.item = nil
    @help_window.clear
    @help_window.set_text($TALK_TITLE)
  end
  #--------------------------------------------------------------------------
  # ● 分类“取消”
  #--------------------------------------------------------------------------
  def on_category_cancel
    @command_window.activate
    @category_window.hide
    @sell_window.hide
    @help_window.set_text($TALK_TITLE)
  end
end
[/pre]
顺便安利一下ShareX这个软件,看多久才会有人解决这个问题

等待,可能会完成,大概吧。
我就一TM傻逼

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-10-22 08:13:08 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-10-22 14:05 编辑

未测试:
喵呜喵5高价回收物品的商店脚本已更新,最新版的脚本直接把你给的第一段代码中第20行
  1. self.index = 2 if $game_switches[TALK_FLAG] == true
复制代码
改成
  1. select_symbol(:talk) if $game_switches[TALK_FLAG]
复制代码
即可兼容

点评

还装的萌萌哒  发表于 2015-10-22 11:49
你不就是喵呜喵吗= =  发表于 2015-10-22 11:48

评分

参与人数 2星屑 +30 梦石 +1 收起 理由
taroxd + 1 认可答案
1561496327 + 30 伟大的人!我要赞美你!

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部