Project1

标题: 请问怎么设置只可以买入不可以卖出的商店啊 [打印本页]

作者: xczasc    时间: 2018-7-11 06:43
标题: 请问怎么设置只可以买入不可以卖出的商店啊
如题,不会脚本真是我心中的痛
作者: 18649119621    时间: 2018-7-11 09:36
本帖最后由 RyanBern 于 2018-7-12 15:58 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================
  4.  
  5. #只能购买的商店:
  6. #在商店前面一行事件添加脚本:$game_temp.shop_type = 1
  7.  
  8. #只能卖出的商店:
  9. #在商店前面一行事件添加脚本:$game_temp.shop_type = 2
  10.  
  11. #普通商店:不用改动。
  12.  
  13. class Scene_Shop
  14.   # --------------------------
  15.   def main
  16.     @help_window = Window_Help.new
  17.     @command_window = Window_ShopCommand.new
  18.     @gold_window = Window_Gold.new
  19.     @gold_window.x = 480
  20.     @gold_window.y = 64
  21.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  22.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  23.     @buy_window.active = false
  24.     @buy_window.visible = false
  25.     @buy_window.help_window = @help_window
  26.     @sell_window = Window_ShopSell.new
  27.     @sell_window.active = false
  28.     @sell_window.visible = false
  29.     @sell_window.help_window = @help_window
  30.     @number_window = Window_ShopNumber.new
  31.     @number_window.active = false
  32.     @number_window.visible = false
  33.     @status_window = Window_ShopStatus.new
  34.     @status_window.visible = false
  35.     if $game_temp.shop_type == 1
  36.       @command_window.index = 0
  37.       @command_window.active = false
  38.       @dummy_window.visible = false
  39.       @buy_window.active = true
  40.       @buy_window.visible = true
  41.       @buy_window.refresh
  42.       @status_window.visible = true
  43.     end
  44.     if $game_temp.shop_type == 2
  45.       @command_window.index = 1
  46.       @command_window.active = false
  47.       @dummy_window.visible = false
  48.       @sell_window.active = true
  49.       @sell_window.visible = true
  50.       @sell_window.refresh
  51.     end
  52.     Graphics.transition
  53.     loop do
  54.       Graphics.update
  55.       Input.update
  56.       update
  57.       if $scene != self
  58.         break
  59.       end
  60.     end
  61.     Graphics.freeze
  62.     @status_window.item = nil
  63.     @status_window.refresh
  64.     @help_window.dispose
  65.     @command_window.dispose
  66.     @gold_window.dispose
  67.     @dummy_window.dispose
  68.     @buy_window.dispose
  69.     @sell_window.dispose
  70.     @number_window.dispose
  71.     @status_window.dispose
  72.     $game_temp.shop_type = 0
  73.   end
  74.   # --------------------------
  75.   def update
  76.     @help_window.update
  77.     @command_window.update
  78.     @gold_window.update
  79.     @dummy_window.update
  80.     @buy_window.update
  81.     @sell_window.update
  82.     @number_window.update
  83.     @status_window.update
  84.     if @command_window.active
  85.       update_command
  86.       return
  87.     end
  88.     if @buy_window.active
  89.       update_buy
  90.       return
  91.     end
  92.     if @sell_window.active
  93.       update_sell
  94.       return
  95.     end
  96.     if @number_window.active
  97.       update_number
  98.       return
  99.     end
  100.   end
  101.   # --------------------------
  102.   def update_command
  103.     if Input.trigger?(Input::B)
  104.       $game_system.se_play($data_system.cancel_se)
  105.       $scene = Scene_Map.new
  106.       return
  107.     end
  108.     if Input.trigger?(Input::C)
  109.       case @command_window.index
  110.       when 0
  111.         $game_system.se_play($data_system.decision_se)
  112.         @command_window.active = false
  113.         @dummy_window.visible = false
  114.         @buy_window.active = true
  115.         @buy_window.visible = true
  116.         @buy_window.refresh
  117.         @status_window.visible = true
  118.       when 1
  119.         $game_system.se_play($data_system.decision_se)
  120.         @command_window.active = false
  121.         @dummy_window.visible = false
  122.         @sell_window.active = true
  123.         @sell_window.visible = true
  124.         @sell_window.refresh
  125.       when 2
  126.         $game_system.se_play($data_system.decision_se)
  127.         $scene = Scene_Map.new
  128.       end
  129.       return
  130.     end
  131.   end
  132.   # --------------------------
  133.   def update_buy
  134.     @status_window.item = @buy_window.item
  135.     if Input.trigger?(Input::B)
  136.       if $game_temp.shop_type == 1
  137.          $game_system.se_play($data_system.cancel_se)
  138.          $scene = Scene_Map.new
  139.       else
  140.       $game_system.se_play($data_system.cancel_se)
  141.       @command_window.active = true
  142.       @dummy_window.visible = true
  143.       @buy_window.active = false
  144.       @buy_window.visible = false
  145.       @status_window.visible = false
  146.       @status_window.item = nil
  147.       @help_window.set_text("")
  148.       end
  149.       return
  150.     end
  151.     if Input.trigger?(Input::C)
  152.       @item = @buy_window.item
  153.       if @item == nil or @item.price > $game_party.gold
  154.         $game_system.se_play($data_system.buzzer_se)
  155.         return
  156.       end
  157.       case @item
  158.       when RPG::Item
  159.         number = $game_party.item_number(@item.id)
  160.       when RPG::Weapon
  161.         number = $game_party.weapon_number(@item.id)
  162.       when RPG::Armor
  163.         number = $game_party.armor_number(@item.id)
  164.       end
  165.       if number == 99
  166.         $game_system.se_play($data_system.buzzer_se)
  167.         return
  168.       end
  169.       $game_system.se_play($data_system.decision_se)
  170.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  171.       max = [max, 99 - number].min
  172.       @buy_window.active = false
  173.       @buy_window.visible = false
  174.       @number_window.set(@item, max, @item.price)
  175.       @number_window.active = true
  176.       @number_window.visible = true
  177.     end
  178.   end
  179.   # --------------------------
  180.   def update_sell
  181.     if Input.trigger?(Input::B)
  182.       if $game_temp.shop_type == 2
  183.          $game_system.se_play($data_system.cancel_se)
  184.          $scene = Scene_Map.new
  185.       else
  186.       $game_system.se_play($data_system.cancel_se)
  187.       @command_window.active = true
  188.       @dummy_window.visible = true
  189.       @sell_window.active = false
  190.       @sell_window.visible = false
  191.       @status_window.item = nil
  192.       @help_window.set_text("")
  193.       return
  194.       end
  195.     end
  196.     if Input.trigger?(Input::C)
  197.       @item = @sell_window.item
  198.       @status_window.item = @item
  199.       if @item == nil or @item.price == 0
  200.         $game_system.se_play($data_system.buzzer_se)
  201.         return
  202.       end
  203.       $game_system.se_play($data_system.decision_se)
  204.       case @item
  205.       when RPG::Item
  206.         number = $game_party.item_number(@item.id)
  207.       when RPG::Weapon
  208.         number = $game_party.weapon_number(@item.id)
  209.       when RPG::Armor
  210.         number = $game_party.armor_number(@item.id)
  211.       end
  212.       max = number
  213.       @sell_window.active = false
  214.       @sell_window.visible = false
  215.       @number_window.set(@item, max, @item.price / 2)
  216.       @number_window.active = true
  217.       @number_window.visible = true
  218.       @status_window.visible = true
  219.     end
  220.   end
  221.   # --------------------------
  222.   def update_number
  223.     if Input.trigger?(Input::B)
  224.       $game_system.se_play($data_system.cancel_se)
  225.       @number_window.active = false
  226.       @number_window.visible = false
  227.       case @command_window.index
  228.       when 0
  229.         @buy_window.active = true
  230.         @buy_window.visible = true
  231.       when 1
  232.         @sell_window.active = true
  233.         @sell_window.visible = true
  234.         @status_window.visible = false
  235.       end
  236.       return
  237.     end
  238.     if Input.trigger?(Input::C)
  239.       $game_system.se_play($data_system.shop_se)
  240.       @number_window.active = false
  241.       @number_window.visible = false
  242.       case @command_window.index
  243.       when 0
  244.         $game_party.lose_gold(@number_window.number * @item.price)
  245.         case @item
  246.         when RPG::Item
  247.           $game_party.gain_item(@item.id, @number_window.number)
  248.         when RPG::Weapon
  249.           $game_party.gain_weapon(@item.id, @number_window.number)
  250.         when RPG::Armor
  251.           $game_party.gain_armor(@item.id, @number_window.number)
  252.         end
  253.         @gold_window.refresh
  254.         @buy_window.refresh
  255.         @status_window.refresh
  256.         @buy_window.active = true
  257.         @buy_window.visible = true
  258.       when 1
  259.         $game_party.gain_gold(@number_window.number * (@item.price / 2))
  260.         case @item
  261.         when RPG::Item
  262.           $game_party.lose_item(@item.id, @number_window.number)
  263.         when RPG::Weapon
  264.           $game_party.lose_weapon(@item.id, @number_window.number)
  265.         when RPG::Armor
  266.           $game_party.lose_armor(@item.id, @number_window.number)
  267.         end
  268.         @gold_window.refresh
  269.         @sell_window.refresh
  270.         @status_window.refresh
  271.         @sell_window.active = true
  272.         @sell_window.visible = true
  273.         @status_window.visible = false
  274.       end
  275.       return
  276.     end
  277.   end
  278. end
  279.  
  280.  
  281.  
  282.  
  283. class Window_ShopCommand < Window_Selectable
  284.   # ----------------------------------------
  285.   def initialize
  286.     super(0, 64, 480, 64)
  287.     self.contents = Bitmap.new(width - 32, height - 32)
  288.     @item_max = 3
  289.     @column_max = 3
  290.     @commands = ["购买", "卖出", "离开"]
  291.     self.contents.font.name = "黑体"
  292.     self.contents.font.size = 24
  293.     refresh
  294.     self.index = 0
  295.   end
  296.   # ----------------------------------------
  297.   def refresh
  298.     self.contents.clear
  299.     if $game_temp.shop_type == 0
  300.       for i in 0...@item_max
  301.       draw_item(i)
  302.       end
  303.     end
  304.     if $game_temp.shop_type == 1
  305.       self.contents.draw_text(4, 0, 324, 32, "只能购买,不能卖出")
  306.       self.index = -1
  307.       update_cursor_rect
  308.     end
  309.     if $game_temp.shop_type == 2
  310.       self.contents.draw_text(4, 0, 324, 32, "只能卖出,不能购买")
  311.       self.index = -1
  312.       update_cursor_rect
  313.     end
  314.   end
  315.   # ----------------------------------------
  316.   def draw_item(index)
  317.     x = 4 + index * 160
  318.     self.contents.draw_text(x, 0, 128, 32, @commands[index])
  319.   end
  320.   # ----------------------------------------
  321.   def update_cursor_rect
  322.     if $game_temp.shop_type == 0
  323.       super
  324.     end
  325.     if $game_temp.shop_type == 1 || $game_temp.shop_type == 2
  326.       self.cursor_rect.empty
  327.     end
  328.   end
  329. end
  330. class Game_Temp
  331.   # ----------------------------------------
  332.   attr_accessor :shop_type
  333.   alias ini initialize
  334.   def initialize
  335.     ini
  336.     @shop_type = 0
  337.   end
  338. end
  339.  
  340.  
  341. #==============================================================================
  342. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  343. #=========================================================================

作者: 18649119621    时间: 2018-7-11 09:36
就是这个脚本,291行可以换字体

作者: 18649119621    时间: 2018-7-11 09:42
这是以前的脚本,能用。以前66RPG上有的

作者: xczasc    时间: 2018-7-11 12:54
18649119621 发表于 2018-7-11 09:42
这是以前的脚本,能用。以前66RPG上有的

超级感谢!
作者: xczasc    时间: 2018-7-11 13:02
诶它说Window_Selectable没有被定义。
作者: 18649119621    时间: 2018-7-11 13:23
可能有脚本冲突,把这个脚本换个位置试试

作者: 18649119621    时间: 2018-7-11 13:25
我这里是没有问题的,你看一看输入脚本正确了没有

作者: xczasc    时间: 2018-7-11 13:33
18649119621 发表于 2018-7-11 13:25
我这里是没有问题的,你看一看输入脚本正确了没有

可以用了!!谢谢!!!
作者: Tsar_NicholasII    时间: 2018-7-18 00:43
(xxx商人):是否购买一个x物品?
显示选择项:买,不买
买的场合:
条件分歧:金钱 y 以上时:
(xxx商人):购买成功。x物品+1。金钱-y。
除此以外的场合:
(xxx商人):卢布不足。
不买的场合:无
作者: Tsar_NicholasII    时间: 2018-7-18 00:44
这个很简单根本用不上脚本




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1