Project1

标题: 解决】怎么获得一个道具的价格? [打印本页]

作者: neko001    时间: 2017-4-13 21:18
标题: 解决】怎么获得一个道具的价格?
本帖最后由 neko001 于 2017-4-14 19:03 编辑

怎么获得一个道具的价格?
我x想要玩家给NPC一个东西,NPC给玩家一些钱。
不限制交付的种类....需要一个一个设置吗?可不可以使用变量
变量1 = 物品 ID1 的价格
作者: 世界第一中二    时间: 2017-4-13 21:35
你是说出售物品?道具不是能够设置价格的么?
作者: 52129848    时间: 2017-4-13 22:00
本帖最后由 52129848 于 2017-4-13 22:21 编辑

RUBY 代码复制
  1. =begin
  2. ===============================================================================
  3.   变量商店 By喵呜喵5
  4. ===============================================================================
  5.  
  6. 【说明】
  7.  
  8.   可以使用变量在商店进行购物
  9.  
  10.   首先先在事件中使用脚本命令输入
  11.  
  12.     m5_20160528_shop(变量的ID,"变量的名称")
  13.  
  14.   例如:m5_20160528_shop(1,"节操")
  15.  
  16.   若事件指令中下一条指令为商店处理,则进入商店时购买物品消耗的是对应的变量
  17.  
  18. =end
  19. $m5script ||= {}; $m5script[:M5VS20160528] = 20160528
  20. module M5VS20160528
  21. #==============================================================================
  22. #  设定部分
  23. #==============================================================================
  24.  
  25.   EQUAL = false
  26.  
  27.   # 设置为 true 时,变量商店物品的出售价格为【数据库中】物品售价的一半
  28.   # 设置为 false 时,变量商店物品的出售价格为【该商店】物品售价的一半
  29.   # (一般来说,个人建议将变量商店请设置为只允许购买)
  30.  
  31. #==============================================================================
  32. #  设定结束
  33. #==============================================================================
  34.   def self.init; set(0, nil); end
  35.   def self.gold; @data[0]; end
  36.   def self.unit; @data[1]; end
  37.   def self.set(gold, unit); @data = [gold, unit]; end
  38.   def self.work(&block)
  39.     origin_gold = $game_party.gold
  40.     $game_party.m5_20160528_set_gold($game_variables[gold]) if unit
  41.     block.call
  42.     return unless unit
  43.     $game_variables[gold] = $game_party.gold
  44.     $game_party.m5_20160528_set_gold(origin_gold)
  45.   end
  46. end
  47. M5VS20160528.init
  48. class Game_Interpreter
  49.   def m5_20160528_shop(gold, unit)
  50.     return unless next_event_code == 302
  51.     M5VS20160528.set(gold, unit)
  52.     @index += 1
  53.     execute_command
  54.     M5VS20160528.init
  55.   end
  56. end
  57. class Window_Gold
  58.   alias m5_20160528_value value
  59.   def value
  60.     M5VS20160528.unit ? $game_variables[M5VS20160528.gold] : m5_20160528_value
  61.   end
  62.   alias m5_20160528_unit currency_unit
  63.   def currency_unit; M5VS20160528.unit || m5_20160528_unit; end
  64. end
  65. class Game_Party; def m5_20160528_set_gold(gold); @gold = gold; end; end
  66. class Scene_Shop
  67.   alias m5_20140318_do_buy do_buy
  68.   def do_buy(number); M5VS20160528.work{ m5_20140318_do_buy(number) }; end
  69.   alias m5_20140318_do_sell do_sell
  70.   def do_sell(number); M5VS20160528.work{ m5_20140318_do_sell(number) }; end
  71.   alias m5_20140318_selling_price selling_price
  72.   def selling_price
  73.     return m5_20140318_selling_price unless M5VS20160528.unit
  74.     return m5_20140318_selling_price if M5VS20160528::EQUAL
  75.     p = buying_price || 0
  76.     p / 2
  77.   end
  78. end
RUBY 代码复制
  1. =begin
  2. ===============================================================================
  3.   高价回收物品的商店 By喵呜喵5
  4. ===============================================================================
  5.  
  6. 【说明】
  7.  
  8.   指定的开关打开时,事件指令中的商店处理会进入特定的物品回收商店
  9.  
  10.   在物品回收商店中无法购买物品,只能贩卖物品
  11.  
  12.   物品的售价则为商店处理中设置的物品价格(而非数据库中设置的价格)
  13.  
  14. =end
  15. $m5script ||= {}
  16. $m5script[:M5SS20151022] = 20151022
  17. module M5SS20151022
  18. #==============================================================================
  19. # 设定部分
  20. #==============================================================================
  21.  
  22.   SWI = 1
  23.  
  24.   #这里设置一个开关ID,当开关打开时使用商店处理将进入物品回收商店
  25.  
  26.   SHOW1 = true    # true / false
  27.  
  28.   #设置为true时,在物品回收商店也能以正常价格(原价除2)贩卖没有设置价格的物品
  29.  
  30.   SHOW2 = false    # true / false
  31.  
  32.   #设置为true时,在物品回收商店中也会显示玩家不拥有但有设置价格的物品
  33.  
  34. #==============================================================================
  35. # 设定结束
  36. #==============================================================================
  37. class Sell < Window_ShopSell
  38.   attr_writer :shop_goods
  39.   def initialize *args
  40.     super *args
  41.     @shop_goods = []
  42.   end
  43.   def make_item_list
  44.     @data = []
  45.     @price = {}
  46.     @shop_goods.each do |goods|
  47.       item = ( case goods[0]
  48.                when 0 then $data_items
  49.                when 1 then $data_weapons
  50.                when 2 then $data_armors
  51.                end )[ goods[1] ]
  52.       if item
  53.         next unless include?(item)
  54.         @data << item
  55.         @price[item] = goods[2] == 0 ? item.price : goods[3]
  56.       end
  57.     end
  58.     if SHOW1
  59.       @data += $game_party.all_items.select {|item| include?(item)}
  60.       @data.uniq!
  61.     end
  62.     @data = @data.select{|item| $game_party.has_item?(item)} unless SHOW2
  63.     @data.push(nil) if include?(nil)
  64.   end
  65.   def enable?(item)
  66.     item && (@price[item] ? @price[item] > 0 : item.price > 0) && $game_party.has_item?(item)
  67.   end
  68. end
  69. class Command < Window_ShopCommand
  70.   def col_max; @list.size; end
  71.   def make_command_list
  72.     super
  73.     @list.delete_if { |command| command[:symbol] == :buy }
  74.   end
  75. end
  76. Scene_Clone = Scene_Shop.clone
  77. class Scene_Clone
  78.   Window_ShopCommand = M5SS20151022::Command
  79.   Window_ShopSell = M5SS20151022::Sell
  80. end
  81. class Scene < Scene_Clone
  82.   def create_sell_window
  83.     super
  84.     @sell_window.shop_goods = @goods
  85.   end
  86.   def selling_price; buying_price || super; end
  87. end
  88.  
  89. end # module M5SS20151022
  90.  
  91. class Game_Interpreter
  92.   alias m5_20140320_command_302 command_302
  93.   def command_302
  94.     temp_scene = Scene_Shop
  95.     if $game_switches[M5SS20151022::SWI]
  96.       Object.const_set(:Scene_Shop, M5SS20151022::Scene)
  97.       ( @params = @params.clone )[4] = false
  98.     end
  99.     m5_20140320_command_302
  100.     Object.const_set(:Scene_Shop, temp_scene)
  101.   end
  102. end

     是不是你想要的?
作者: 魔法丶小肉包    时间: 2017-4-13 22:02
本帖最后由 魔法丶小肉包 于 2017-4-13 22:25 编辑

考虑到不知道玩家会交付哪件道具给NPC,所以楼主可以这样↓(提供思路而已)

在事件页里如上图设置,便会自动获取玩家选择的物品的数据库中所设置的价格,
在玩家选择之后,便会自动获得金钱并扣除此物品1个



作者: guoxiaomi    时间: 2017-4-13 23:41
本帖最后由 guoxiaomi 于 2017-4-13 23:45 编辑

——什么也没有——




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