| 赞 | 62  | 
 
| VIP | 492 | 
 
| 好人卡 | 47 | 
 
| 积分 | 42 | 
 
| 经验 | 71557 | 
 
| 最后登录 | 2024-5-25 | 
 
| 在线时间 | 4890 小时 | 
 
 
 
 
 
Lv3.寻梦者 (版主)   /) /)< 
	- 梦石
 - 0 
 
        - 星屑
 - 4212 
 
        - 在线时间
 - 4890 小时
 
        - 注册时间
 - 2009-2-16
 
        - 帖子
 - 8434
 
 
   
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
RT,想在真实商店中出售超过该价格的商品,如何实现? 
真实商店脚本:- #============================================================================== 
 
 - # 本脚本来自www.66rpg.com,转载和使用请保留此信息 
 
 - # 脚本名:真实商店,脚本作者:柳柳 
 
 - #============================================================================== 
 
 - # 
 
 - # 功能: 
 
 - # 
 
 - # 买进卖出的物品在商店有所体现,卖出后会在商店可买物品中出现,物品有数量限制 
 
 - # 商店可进货出货————总之就是模拟真实商店。 
 
 - #  
 
 - # 这个脚本和原装商店并不冲突,两个商店可以并存。 
 
 - # 
 
 - # 使用方法: 
 
 - # 
 
 - # 1、在下面被井号框起来的中间部分,设置初期物品。格式如下: 
 
 - #    @goods[商店编号] = [ [种类,ID,可卖数量] ,  [种类,ID,可卖数量]......] 
 
 - #    其中种类,0为道具,1为武器,2为防具;ID是数据库编号 
 
 - # 
 
 - # 2、调用:$scene = Scene_Shop_Va.new(商店编号)  
 
 - #    比如你可以直接测试$scene = Scene_Shop_Va.new(1),已经设置好了。 
 
 - # 
 
 - # 3、商店出货:$game_system.shop_change(商店编号,种类,ID,数量) 
 
 - #    如果是进货,把数量设置为负数即可 
 
 - # 
 
 - #============================================================================== 
 
 - # ■ Scene_Shop 
 
 - #------------------------------------------------------------------------------ 
 
 - #  处理商店画面的类。 
 
 - #============================================================================== 
 
 - class Game_System 
 
 -  attr_accessor :goods   
 
 -  alias vaule_shop_66RPG_initialize initialize 
 
 -  def initialize 
 
 -    vaule_shop_66RPG_initialize 
 
 -    @goods = [] 
 
 -  ########################################################################### 
 
 -    # 初期的时候的商店物品,编号顺序:种类,ID,可卖数量 
 
 -    @goods[1] = [[0,1,15],[0,2,10],[1,2,3]]  
 
 -    @goods[2] = [[0,3,8],[1,4,1],[1,2,1],[1,3,1],[1,4,1]]  
 
 -    @goods[3] = [[0,5,2],[1,3,1],[1,2,3]]  
 
 -  ########################################################################### 
 
 -  end 
 
 -  def shop_change(shop,kind,id,delnumber) 
 
 -    dl = delnumber 
 
 -    for dt in $game_system.goods[shop] 
 
 -      if (dt[0]==kind) and (dt[1]==id) 
 
 -        dt[2] -= dl 
 
 -        dt[2] = [dt[2],99].min 
 
 -        if dt[2] == 0 
 
 -          $game_system.goods[shop].delete(dt) 
 
 -        end 
 
 -        return 
 
 -      end 
 
 -    end 
 
 -    $game_system.goods[shop].push([kind,id,-delnumber]) 
 
 -  end 
 
 - end 
 
  
- class Scene_Shop_Va 
 
 -  def initialize(shop_number) 
 
 -    # 当前商店编号 
 
 -    @shop_now = shop_number     
 
 -  end   
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 主处理 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def main 
 
 -    # 生成帮助窗口 
 
 -    @help_window = Window_Help.new 
 
 -    # 生成指令窗口 
 
 -    @command_window = Window_ShopCommand.new 
 
 -    # 生成金钱窗口 
 
 -    @gold_window = Window_Gold.new 
 
 -    @gold_window.x = 480 
 
 -    @gold_window.y = 64 
 
 -    # 生成时间窗口 
 
 -    @dummy_window = Window_Base.new(0, 128, 640, 352) 
 
 -    # 生成购买窗口 
 
 -    @buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now]) 
 
 -    @buy_window.active = false 
 
 -    @buy_window.visible = false 
 
 -    @buy_window.help_window = @help_window 
 
 -    # 生成卖出窗口 
 
 -    @sell_window = Window_ShopSell.new 
 
 -    @sell_window.active = false 
 
 -    @sell_window.visible = false 
 
 -    @sell_window.help_window = @help_window 
 
 -    # 生成数量输入窗口 
 
 -    @number_window = Window_ShopNumber.new 
 
 -    @number_window.active = false 
 
 -    @number_window.visible = false 
 
 -    # 生成状态窗口 
 
 -    @status_window = Window_ShopStatus.new 
 
 -    @status_window.visible = false 
 
 -    # 执行过渡 
 
 -    Graphics.transition 
 
 -    # 主循环 
 
 -    loop do 
 
 -      # 刷新游戏画面 
 
 -      Graphics.update 
 
 -      # 刷新输入信息 
 
 -      Input.update 
 
 -      # 刷新画面 
 
 -      update 
 
 -      # 如果画面切换的话就中断循环 
 
 -      if $scene != self 
 
 -        break 
 
 -      end 
 
 -    end 
 
 -    # 准备过渡 
 
 -    Graphics.freeze 
 
 -    # 释放窗口 
 
 -    @help_window.dispose 
 
 -    @command_window.dispose 
 
 -    @gold_window.dispose 
 
 -    @dummy_window.dispose 
 
 -    @buy_window.dispose 
 
 -    @sell_window.dispose 
 
 -    @number_window.dispose 
 
 -    @status_window.dispose 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 刷新画面 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def update 
 
 -    # 刷新窗口 
 
 -    @help_window.update 
 
 -    @command_window.update 
 
 -    @gold_window.update 
 
 -    @dummy_window.update 
 
 -    @buy_window.update 
 
 -    @sell_window.update 
 
 -    @number_window.update 
 
 -    @status_window.update 
 
 -    # 指令窗口激活的情况下: 调用 update_command 
 
 -    if @command_window.active 
 
 -      update_command 
 
 -      return 
 
 -    end 
 
 -    # 购买窗口激活的情况下: 调用 update_buy 
 
 -    if @buy_window.active 
 
 -      update_buy 
 
 -      return 
 
 -    end 
 
 -    # 卖出窗口激活的情况下: 调用 update_sell 
 
 -    if @sell_window.active 
 
 -      update_sell 
 
 -      return 
 
 -    end 
 
 -    # 个数输入窗口激活的情况下: 调用 update_number 
 
 -    if @number_window.active 
 
 -      update_number 
 
 -      return 
 
 -    end 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 刷新画面 (指令窗口激活的情况下) 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def update_command 
 
 -    # 按下 B 键的情况下 
 
 -    if Input.trigger?(Input::B) 
 
 -      # 演奏取消 SE 
 
 -      $game_system.se_play($data_system.cancel_se) 
 
 -      # 切换到地图画面 
 
 -      $scene = Scene_Map.new 
 
 -      return 
 
 -    end 
 
 -    # 按下 C 键的情况下 
 
 -    if Input.trigger?(Input::C) 
 
 -      # 命令窗口光标位置分支 
 
 -      case @command_window.index 
 
 -      when 0  # 购买 
 
 -        # 演奏确定 SE 
 
 -        $game_system.se_play($data_system.decision_se) 
 
 -        # 窗口状态转向购买模式 
 
 -        @command_window.active = false 
 
 -        @dummy_window.visible = false 
 
 -        @buy_window.active = true 
 
 -        @buy_window.visible = true 
 
 -        @buy_window.refresh 
 
 -        @status_window.visible = true 
 
 -      when 1  # 卖出 
 
 -        # 演奏确定 SE 
 
 -        $game_system.se_play($data_system.decision_se) 
 
 -        # 窗口状态转向卖出模式 
 
 -        @command_window.active = false 
 
 -        @dummy_window.visible = false 
 
 -        @sell_window.active = true 
 
 -        @sell_window.visible = true 
 
 -        @sell_window.refresh 
 
 -      when 2  # 取消 
 
 -        # 演奏确定 SE 
 
 -        $game_system.se_play($data_system.decision_se) 
 
 -        # 切换到地图画面 
 
 -        $scene = Scene_Map.new 
 
 -      end 
 
 -      return 
 
 -    end 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 刷新画面 (购买窗口激活的情况下) 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def update_buy 
 
 -    # 设置状态窗口的物品 
 
 -    @status_window.item = @buy_window.item 
 
 -    # 按下 B 键的情况下 
 
 -    if Input.trigger?(Input::B) 
 
 -      # 演奏取消 SE 
 
 -      $game_system.se_play($data_system.cancel_se) 
 
 -      # 窗口状态转向初期模式 
 
 -      @command_window.active = true 
 
 -      @dummy_window.visible = true 
 
 -      @buy_window.active = false 
 
 -      @buy_window.visible = false 
 
 -      @status_window.visible = false 
 
 -      @status_window.item = nil 
 
 -      # 删除帮助文本 
 
 -      @help_window.set_text("") 
 
 -      return 
 
 -    end 
 
 -    # 按下 C 键的情况下 
 
 -    if Input.trigger?(Input::C) 
 
 -      # 获取物品 
 
 -      @item = @buy_window.item 
 
 -      # 物品无效的情况下、或者价格在所持金以上的情况下 
 
 -      if @item == nil or @item.price > $game_party.gold 
 
 -        # 演奏冻结 SE 
 
 -        $game_system.se_play($data_system.buzzer_se) 
 
 -        return 
 
 -      end 
 
 -      # 获取物品所持数 
 
 -      case @item 
 
 -      when RPG::Item 
 
 -        number = $game_party.item_number(@item.id) 
 
 -      when RPG::Weapon 
 
 -        number = $game_party.weapon_number(@item.id) 
 
 -      when RPG::Armor 
 
 -        number = $game_party.armor_number(@item.id) 
 
 -      end 
 
 -      # 如果已经拥有了 99 个情况下 
 
 -      if number == 99 
 
 -        # 演奏冻结 SE 
 
 -        $game_system.se_play($data_system.buzzer_se) 
 
 -        return 
 
 -      end 
 
 -      # 演奏确定 SE 
 
 -      $game_system.se_play($data_system.decision_se) 
 
 -      # 计算可以最多购买的数量 
 
 -      max = @item.price == 0 ? 99 : $game_party.gold / @item.price 
 
 -      max = [[max, 99 - number].min,@buy_window.item_number].min 
 
 -      # 窗口状态转向数值输入模式 
 
 -      @buy_window.active = false 
 
 -      @buy_window.visible = false 
 
 -      @number_window.set(@item, max, @item.price) 
 
 -      @number_window.active = true 
 
 -      @number_window.visible = true 
 
 -    end 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 画面更新 (卖出窗口激活的情况下) 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def update_sell 
 
 -    # 按下 B 键的情况下 
 
 -    if Input.trigger?(Input::B) 
 
 -      # 演奏取消 SE 
 
 -      $game_system.se_play($data_system.cancel_se) 
 
 -      # 窗口状态转向初期模式 
 
 -      @command_window.active = true 
 
 -      @dummy_window.visible = true 
 
 -      @sell_window.active = false 
 
 -      @sell_window.visible = false 
 
 -      @status_window.item = nil 
 
 -      # 删除帮助文本 
 
 -      @help_window.set_text("") 
 
 -      return 
 
 -    end 
 
 -    # 按下 C 键的情况下 
 
 -    if Input.trigger?(Input::C) 
 
 -      # 获取物品 
 
 -      @item = @sell_window.item 
 
 -      # 设置状态窗口的物品 
 
 -      @status_window.item = @item 
 
 -      # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下 
 
 -      if @item == nil or @item.price == 0 
 
 -        # 演奏冻结 SE 
 
 -        $game_system.se_play($data_system.buzzer_se) 
 
 -        return 
 
 -      end 
 
 -      # 演奏确定 SE 
 
 -      $game_system.se_play($data_system.decision_se) 
 
 -      # 获取物品的所持数 
 
 -      case @item 
 
 -      when RPG::Item 
 
 -        number = $game_party.item_number(@item.id) 
 
 -      when RPG::Weapon 
 
 -        number = $game_party.weapon_number(@item.id) 
 
 -      when RPG::Armor 
 
 -        number = $game_party.armor_number(@item.id) 
 
 -      end 
 
 -      # 最大卖出个数 = 物品的所持数 
 
 -      max = number 
 
 -      # 窗口状态转向个数输入模式 
 
 -      @sell_window.active = false 
 
 -      @sell_window.visible = false 
 
 -      @number_window.set(@item, max, @item.price / 2) 
 
 -      @number_window.active = true 
 
 -      @number_window.visible = true 
 
 -      @status_window.visible = true 
 
 -    end 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 刷新画面 (个数输入窗口激活的情况下) 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def update_number 
 
 -    # 按下 B 键的情况下 
 
 -    if Input.trigger?(Input::B) 
 
 -      # 演奏取消 SE 
 
 -      $game_system.se_play($data_system.cancel_se) 
 
 -      # 设置个数输入窗口为不活动·非可视状态 
 
 -      @number_window.active = false 
 
 -      @number_window.visible = false 
 
 -      # 命令窗口光标位置分支 
 
 -      case @command_window.index 
 
 -      when 0  # 购买 
 
 -        # 窗口状态转向购买模式 
 
 -        @buy_window.active = true 
 
 -        @buy_window.visible = true 
 
 -      when 1  # 卖出 
 
 -        # 窗口状态转向卖出模式 
 
 -        @sell_window.active = true 
 
 -        @sell_window.visible = true 
 
 -        @status_window.visible = false 
 
 -      end 
 
 -      return 
 
 -    end 
 
 -    # 按下 C 键的情况下 
 
 -    if Input.trigger?(Input::C) 
 
 -      # 演奏商店 SE 
 
 -      $game_system.se_play($data_system.shop_se) 
 
 -      # 设置个数输入窗口为不活动·非可视状态 
 
 -      @number_window.active = false 
 
 -      @number_window.visible = false 
 
 -      # 命令窗口光标位置分支 
 
 -      case @command_window.index 
 
 -      when 0  # 购买 
 
 -        # 购买处理 
 
 -        temp = 0 
 
 -        $game_party.lose_gold(@number_window.number * @item.price) 
 
 -        case @item 
 
 -        when RPG::Item 
 
 -          $game_party.gain_item(@item.id, @number_window.number) 
 
 -        when RPG::Weapon 
 
 -          $game_party.gain_weapon(@item.id, @number_window.number) 
 
 -          temp = 1 
 
 -        when RPG::Armor 
 
 -          $game_party.gain_armor(@item.id, @number_window.number) 
 
 -          temp = 2 
 
 -        end 
 
 -        goods_del(temp,@item.id,@number_window.number) 
 
 -        # 刷新各窗口 
 
 -        @buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now])
 
 -        @buy_window.help_window = @help_window
 
 -        @gold_window.refresh 
 
 -        @buy_window.refresh 
 
 -        @status_window.refresh 
 
 -        # 窗口状态转向购买模式 
 
 -        @buy_window.active = true 
 
 -        @buy_window.visible = true 
 
 -      when 1  # 卖出 
 
 -        # 卖出处理 
 
 -        $game_party.gain_gold(@number_window.number * (@item.price / 2)) 
 
 -        temp = 0 
 
 -        case @item 
 
 -        when RPG::Item 
 
 -          $game_party.lose_item(@item.id, @number_window.number) 
 
 -        when RPG::Weapon 
 
 -          $game_party.lose_weapon(@item.id, @number_window.number) 
 
 -          temp = 1 
 
 -        when RPG::Armor 
 
 -          $game_party.lose_armor(@item.id, @number_window.number) 
 
 -          temp = 2 
 
 -        end 
 
 -        # 刷新各窗口 
 
 -        goods_del(temp,@item.id,-@number_window.number) 
 
 -        @buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now]) 
 
 -        @buy_window.active = false 
 
 -        @buy_window.visible = false 
 
 -        @buy_window.help_window = @help_window 
 
 -        @gold_window.refresh 
 
 -        @sell_window.refresh 
 
 -        @status_window.refresh 
 
 -        # 窗口状态转向卖出模式 
 
 -        @sell_window.active = true 
 
 -        @sell_window.visible = true 
 
 -        @status_window.visible = false 
 
 -      end 
 
 -      return 
 
 -    end 
 
 -  end 
 
 -  # 删除可出售商品内容 
 
 -  def goods_del(kind,id,delnumber) 
 
 -    dl = delnumber 
 
 -    for dt in $game_system.goods[@shop_now] 
 
 -      if (dt[0]==kind) and (dt[1]==id) 
 
 -        dt[2] -= dl 
 
 -        dt[2] = [dt[2],99].min 
 
 -        if dt[2] == 0 
 
 -          $game_system.goods[@shop_now].delete(dt) 
 
 -        end 
 
 -        return 
 
 -      end 
 
 -    end 
 
 -    $game_system.goods[@shop_now].push([kind,id,-delnumber]) 
 
 -  end 
 
 - end 
 
  
- #============================================================================== 
 
 - # ■ Window_ShopBuy_Va 
 
 - #------------------------------------------------------------------------------ 
 
 - #  商店画面、浏览显示可以购买的商品的窗口。 
 
 - #============================================================================== 
 
  
- class Window_ShopBuy_Va < Window_Selectable 
 
 -  attr_accessor :shop_goods 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 初始化对像 
 
 -  #     shop_goods : 商品 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def initialize(shop_goods) 
 
 -    super(0, 128, 368, 352) 
 
 -    @shop_goods = shop_goods 
 
 -    refresh 
 
 -    self.index = 0 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 获取物品 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def item 
 
 -    return @data[self.index] 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 获取物品 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def item_number 
 
 -    return @data_number[self.index] 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 刷新 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def refresh 
 
 -    if self.contents != nil 
 
 -      self.contents.dispose 
 
 -      self.contents = nil 
 
 -    end 
 
 -    @data = [] 
 
 -    @data_number = [] 
 
 -    for goods_item in @shop_goods 
 
 -      case goods_item[0] 
 
 -      when 0 
 
 -        item = $data_items[goods_item[1]] 
 
 -      when 1 
 
 -        item = $data_weapons[goods_item[1]] 
 
 -      when 2 
 
 -        item = $data_armors[goods_item[1]] 
 
 -      end 
 
 -      if (item != nil) and (goods_item[2] != 0) 
 
 -        @data.push(item) 
 
 -        @data_number.push(goods_item[2]) 
 
 -      else 
 
 -        @data.delete(item) 
 
 -      end 
 
 -    end 
 
 -    # 如果项目数不是 0 就生成位图、描绘全部项目 
 
 -    @item_max = @data.size 
 
 -    if @item_max > 0 
 
 -      self.contents = Bitmap.new(width - 32, row_max * 32) 
 
 -      for i in 0...@item_max 
 
 -        draw_item(i) 
 
 -      end 
 
 -    end 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 描绘羡慕 
 
 -  #     index : 项目编号 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def draw_item(index) 
 
 -    item = @data[index] 
 
 -    # 获取物品所持数 
 
 -    case item 
 
 -    when RPG::Item 
 
 -      number = $game_party.item_number(item.id) 
 
 -    when RPG::Weapon 
 
 -      number = $game_party.weapon_number(item.id) 
 
 -    when RPG::Armor 
 
 -      number = $game_party.armor_number(item.id) 
 
 -    end 
 
 -    # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色 
 
 -    # 除此之外的情况设置为无效文字色 
 
 -    if item.price <= $game_party.gold and number < 99 
 
 -      self.contents.font.color = normal_color 
 
 -    else 
 
 -      self.contents.font.color = disabled_color 
 
 -    end 
 
 -    x = 4 
 
 -    y = index * 32 
 
 -    rect = Rect.new(x, y, self.width - 32, 32) 
 
 -    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) 
 
 -    bitmap = RPG::Cache.icon(item.icon_name) 
 
 -    opacity = self.contents.font.color == normal_color ? 255 : 128 
 
 -    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) 
 
 -    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) 
 
 -    self.contents.draw_text(x + 240, y, 88, 32, "剩  ", 2) 
 
 -    self.contents.draw_text(x + 240, y, 88, 32, @data_number[index].to_s, 2) 
 
 -    self.contents.draw_text(x + 180, y, 88, 32, item.price.to_s, 2) 
 
 -  end 
 
 -  #-------------------------------------------------------------------------- 
 
 -  # ● 刷新帮助文本 
 
 -  #-------------------------------------------------------------------------- 
 
 -  def update_help 
 
 -    @help_window.set_text(self.item == nil ? "" : self.item.description) 
 
 -  end 
 
 - end 
 
  
-  
 
  
 
- #==============================================================================
 
 - # 本脚本来自www.66RPG.com,使用和转载请保留此信息
 
 - #==============================================================================
 
  复制代码 |   
 
 
 
 |