Project1

标题: 金錢不少于輸入值 [打印本页]

作者: mononobe123    时间: 2019-3-19 15:17
标题: 金錢不少于輸入值
本帖最后由 VIPArcher 于 2022-5-31 08:52 编辑

怎麽設計出數值輸入處理>如果進錢不少過數值>…………/如果少過數值則失敗?
我用了隨即獲得物品的脚本,但提示脚本好像對這無效,不會顯示隨即獲得的物品。
這是提示的脚本:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● 得失物品提示
  3. #--------------------------------------------------------------------------
  4.  
  5. module Taroxd end
  6.  
  7. module Taroxd::GainMessage
  8.  
  9.   # --- 设置 ---
  10.  
  11.   # 信息格式
  12.  
  13.   # 转义符:
  14.   # \name    代表物品名称 / 金钱单位
  15.   # \value   代表获得 / 失去的物品 / 金钱数量
  16.   # \icon    绘制物品 / 金钱的图标
  17.   # \action  代表“获得”或者“失去”。可在下面修改。
  18.   # 支持“显示文字”中的所有转义符。
  19.   ITEM_FORMAT  = '\action了 \name * \value'
  20.   GOLD_FORMAT  = '\action了 \value \name'
  21.   ACTION_GAIN  = '获得'
  22.   ACTION_LOSE  = '失去'
  23.   GOLD_ICON_INDEX = 361           # 金钱图标的索引
  24.  
  25.   BACKGROUND   = 1                # 窗口背景(0/1/2)
  26.   POSITION     = 1                # 显示位置(0/1/2)
  27.  
  28.   # 音效(不需要的话可以直接删去对应的行)
  29.   GAIN_GOLD_SE = 'Shop'           # 获得金钱
  30.   LOSE_GOLD_SE = 'Blow2'          # 失去金钱
  31.   GAIN_ITEM_SE = 'Item1'          # 获得物品
  32.   LOSE_ITEM_SE = LOSE_GOLD_SE     # 失去物品
  33.  
  34.   # 设置功能是否启用。
  35.   # true:启用。
  36.   # false:不启用。
  37.   # $game_switches[开关ID]: 对应开关打开时。
  38.   def self.enabled?
  39.     true
  40.   end
  41.  
  42.   # --- 设置结束 ---
  43.  
  44.   # 显示提示信息。获得金钱时将 item 设为 nil。
  45.   def self.show(value, item)
  46.     @item = item
  47.     [url=home.php?mod=space&uid=2683223]@value[/url] = value
  48.     $game_message.background = BACKGROUND
  49.     $game_message.position = POSITION
  50.     $game_message.add(message)
  51.     play_se
  52.   end
  53.  
  54.   private
  55.  
  56.   # 获取提示的消息
  57.   def self.message
  58.     if @item
  59.       format = ITEM_FORMAT
  60.       icon_index = @item.icon_index
  61.       name = @item.name
  62.     else
  63.       format = GOLD_FORMAT
  64.       icon_index = GOLD_ICON_INDEX
  65.       name = Vocab.currency_unit
  66.     end
  67.  
  68.     # gsub: 以替换前的字符串为键,替换后内容为值的 hash。可以自由设置。
  69.     gsub = {
  70.       '\action' => @value > 0 ? ACTION_GAIN : ACTION_LOSE,
  71.       '\value'  => @value.abs,
  72.       '\icon'   => "\\I[#{icon_index}]",
  73.       '\name'   => name
  74.     }
  75.  
  76.     format.gsub(Regexp.union(gsub.keys), gsub)
  77.   end
  78.  
  79.   def self.play_se
  80.     const = :"#{@value > 0 ? 'GAIN' : 'LOSE'}_#{@item ? 'ITEM' : 'GOLD'}_SE"
  81.     se = const_defined?(const) && const_get(const)
  82.     Audio.se_play('Audio/SE/' + se) if se
  83.   end
  84. end
  85.  
  86. class Game_Party < Game_Unit
  87.   # 获取道具总数(包括装备)
  88.   def item_number_with_equip(item)
  89.     members.inject(item_number(item)) { |a, e| a + e.equips.count(item) }
  90.   end
  91. end
  92.  
  93. class Game_Interpreter
  94.  
  95.   GainMessage = Taroxd::GainMessage
  96.  
  97.   # 别名:不显示提示窗口的事件指令
  98.   alias_method :gain_gold_without_message,   :command_125
  99.   alias_method :gain_item_without_message,   :command_126
  100.   alias_method :gain_weapon_without_message, :command_127
  101.   alias_method :gain_armor_without_message,  :command_128
  102.  
  103.   # 显示提示窗口
  104.   def show_gain_message(value, item = nil)
  105.     return if value.zero?
  106.     GainMessage.show(value, item)
  107.     wait_for_message
  108.   end
  109.  
  110.   # 增减持有金钱
  111.   def command_125
  112.     return gain_gold_without_message unless GainMessage.enabled?
  113.     last_gold = $game_party.gold
  114.     gain_gold_without_message
  115.     show_gain_message($game_party.gold - last_gold)
  116.   end
  117.  
  118.   # 增减物品
  119.   def command_126
  120.     return gain_item_without_message unless GainMessage.enabled?
  121.     item = $data_items[@params[0]]
  122.     last_num = $game_party.item_number(item)
  123.     gain_item_without_message
  124.     show_gain_message($game_party.item_number(item) - last_num, item)
  125.   end
  126.  
  127.   # 增减武器
  128.   def command_127
  129.     return gain_weapon_without_message unless GainMessage.enabled?
  130.     item = $data_weapons[@params[0]]
  131.     last_num = $game_party.item_number_with_equip(item)
  132.     gain_weapon_without_message
  133.     value = $game_party.item_number_with_equip(item) - last_num
  134.     show_gain_message(value, item)
  135.   end
  136.  
  137.   # 增减护甲
  138.   def command_128
  139.     return gain_armor_without_message unless GainMessage.enabled?
  140.     item = $data_armors[@params[0]]
  141.     last_num = $game_party.item_number_with_equip(item)
  142.     gain_armor_without_message
  143.     value = $game_party.item_number_with_equip(item) - last_num
  144.     show_gain_message(value, item)
  145.   end
  146. end
  147. ————————————————————————————————————————————————————————————————————
  148. 然後這是隨即獲得物品的脚本:
  149. # ■ 获得随机物品
  150. #------------------------------------------------------------------------------
  151. #  使用方法:
  152. #     事件脚本gain_item(种类, 范围, 数量)
  153. #   种类
  154. #     物品 => "i" 或 "物品"
  155. #     武器 => "w" 或 "武器"
  156. #     防具 => "a" 或 "防具"
  157. #   范围
  158. #     可以是数组(Array)或范围(Range)
  159. #  
  160. #   例
  161. #     从1~4号中随机选一个物品,获得1个          => gain_item("物品", 1..4   , 1)
  162. #     从1,10~20号中随机选一个武器,获得2个   => gain_item("武器", [1, 10..20]   , 2)
  163. #     从1,3,5号中随机选一个防具,获得3个        => gain_item("防具", [1,3,5], 3)
  164. #==============================================================================
  165. class Game_Interpreter
  166.  
  167.   def gain_item(category, range_or_array, value)
  168.     p range_or_array
  169.     range_or_array = range_or_array.to_a if range_or_array.is_a?(Range)
  170.     id = range_or_array.sample
  171.     id = id.to_a.sample while !id.is_a?(Fixnum)
  172.     p id
  173.  
  174.     p category
  175.     case category
  176.     when "物品" ,"i" then data = $data_items
  177.     when "武器" ,"w" then data = $data_weapons
  178.     when "防具" ,"a" then data = $data_armors
  179.     else raise "在事件脚本中使用脚本指令gain_item时指定的种类不正确!"
  180.     end
  181.  
  182.     $game_party.gain_item(data[id], value)
  183.   end
  184. end

作者: JasperCrazy    时间: 2019-3-19 17:14
不知道有没有理解错。最简单粗暴的办法:

跑一遍这个公共事件,22号变量即为你拥有的金钱。
再把你输入的数值作为一个变量,与22号比较一下。
作者: soulsaga    时间: 2019-3-19 17:32
:LZ你问的什么鬼问题..无法理解..
作者: xiaohuangdi    时间: 2019-3-19 17:56
重装机兵   报价买战车效果。


作者: mononobe123    时间: 2019-3-19 20:20
soulsaga 发表于 2019-3-19 17:32
:LZ你问的什么鬼问题..无法理解..

嗯……嘛,其他問題解決了。但隨即獲得物品提示無法解決,在圖書館的脚本都用過了,但是都沒用




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