设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2080|回复: 1
打印 上一主题 下一主题

[已经解决] 求助,物品價格比例腳本問題

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2111
在线时间
950 小时
注册时间
2015-7-16
帖子
767

开拓者

跳转到指定楼层
1
发表于 2016-5-1 11:06:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
先上個圖


然後上腳本
RUBY 代码复制
  1. #==============================================================================
  2. # ** 物品價格比例
  3. #  作者:影月千秋
  4. #  适用:VA
  5. #------------------------------------------------------------------------------
  6. # * 简介
  7. #    提供物品交易时对價格的一系列处理,比如全体物品售价增加20%、全体物品回收
  8. # (販賣)價格增加原价的35%、某物品的販賣價格占原价的70%等等。
  9. #    Github:[url]https://github.com/ShadowMomo/Smomo-RGSS-Scripts[/url]
  10. #==============================================================================
  11. # * 使用方法
  12. #   将此脚本插入到其他脚本以下,Main以上
  13. #   在下方设定脚本所使用的开关及变量ID
  14. #   数据库中,在物品的备注栏按照下方的正则式来填写匹配备注
  15. #   游戏中可以通过操作开关和变量来进行價格处理
  16. #
  17. #  * 说明
  18. #   買價:从商店买商品的價格
  19. #   賣價:卖给商店的商品價格
  20. #
  21. #  * 物品的备注
  22. #   在备注中按照正则式填写,默认格式为 <販賣 XX> ,XX为任意数字,表示这个物品
  23. #  的買價将会是原价的 XX%
  24. #   例:
  25. #    <販賣 65>
  26. #
  27. #  * Buying变量
  28. #   游戏中更改这个变量的值,则物品買價将为:原价 乘以(1 + 变量值 %)
  29. #
  30. #  * Selling变量
  31. #   改变所有物品賣價占買價的比例,新比例 = 原比例 + 变量值
  32. #   如果物品备注栏做了上述设置(脚本第21行),则原比例即为设置的比例;如果没有,
  33. #  则原比例为50。
  34. #
  35. #  * 其他可选功能
  36. #   见设定区内置说明。
  37. #==============================================================================
  38. # * 更新
  39. #   V 1.2 2014.09.07 新增功能 新功能依赖虚拟日历
  40. #   V 1.1 2014.08.15 新增功能 并规范化
  41. #   V 1.0 2013.12.15 新建
  42. #==============================================================================
  43. # * 声明
  44. #   本脚本来自"影月千秋", 使用/修改/转载请保留此信息。
  45. #==============================================================================
  46.  
  47. $smomo ||= {}
  48. if $smomo["ItemPriceRate"].nil?
  49. $smomo["ItemPriceRate"] = true
  50.  
  51. #===============================================================================
  52. # ** Smomo
  53. #===============================================================================
  54. module Smomo
  55.   #=============================================================================
  56.   # ** Smomo::ItemPriceRate
  57.   #=============================================================================
  58.   module ItemPriceRate
  59.     Using = 38
  60.     # 开关ID:启用/禁用脚本功能
  61.     Buying = 32
  62.     # 变量ID:控制 从商店购买物品时 價格增加的比例
  63.     Selling = 33
  64.     # 变量ID:控制 在商店卖出物品时 賣價占原价比例的增量
  65.     Match_Reg = /<販賣\s+(\d+)>/
  66.     # 匹配物品备注栏的正则式,如果懂的话可以自己改(不建议)
  67.     # 默认: /<販賣\s+(\d+)>/   匹配举例: <販賣 21>  其中21可以替换为任意数字
  68.     # 以下是可选功能
  69.     OPTIONAL = {
  70.       profiteer: 1,
  71.       # 在販賣商品时,如果商店中没有有你要卖的商品(你拥有商品 而商店没有)
  72.       # 你的賣價相对你原賣價的倍数
  73.       # 即:实际賣價 = 賣價 * 该值
  74.       # 设为1 则此功能停用
  75.       limitForCalendar: {
  76.       # 配合虚拟日历系统([url]http://tinyurl.com/psamf9t[/url])使用
  77.       # 欲使此功能生效,请将虚拟日历系统置于此系统上方
  78.       # 使某物品被买了特定数目之后会停售 直到第二天才恢复
  79.       # 仅对物品有效 对武器和防具无效
  80.         # 物品ID => 限制数目,
  81.         3 => 4,
  82.         6 => 158,
  83.       },
  84.     }
  85. #=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+#
  86. #-------------                     --------------------------------------------#
  87.                "请勿跨过这块区域"
  88. #-------------                     --------------------------------------------#
  89. #+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=#
  90.     if $smomo["Calendar"]
  91.       OPTIONAL[:lfcalendar] = OPTIONAL[:limitForCalendar].clone
  92.       met = ->{OPTIONAL[:lfcalendar].each_key{|i| OPTIONAL[:lfcalendar][i] = 0}}
  93.       Smomo::Calendar.routine.push met
  94.       met.call
  95.     end
  96.   end
  97. end
  98. #==============================================================================
  99. # ** Window_ShopBuy
  100. #==============================================================================
  101. class Window_ShopBuy
  102.   alias :item_price_rate_price :price
  103.   def price(item)
  104.     return item.price unless @price[item]
  105.     if $game_switches[Smomo::ItemPriceRate::Using]
  106.       @price[item] * (100 + $game_variables[Smomo::ItemPriceRate::Buying]) / 100
  107.     else
  108.       item_price_rate_price item
  109.     end
  110.   end
  111.   alias :item_price_rate_make_item_list :make_item_list
  112.   def make_item_list
  113.     item_price_rate_make_item_list
  114.     sio = Smomo::ItemPriceRate::OPTIONAL
  115.     @data.reject!{|item|
  116.       i = item.id
  117.       item.is_a?(RPG::Item) && sio[:lfcalendar][i] &&
  118.       sio[:lfcalendar][i] >= sio[:limitForCalendar][i]
  119.     }
  120.   end
  121. end
  122. #==============================================================================
  123. # ** Scene_Shop
  124. #==============================================================================
  125. class Scene_Shop
  126.   alias :item_price_rate_selling_price :selling_price
  127.   def selling_price
  128.     (if $game_switches[Smomo::ItemPriceRate::Using]
  129.       rate = Smomo::ItemPriceRate::Match_Reg =~ @item.note ? $1.to_i : 50
  130.       rate += $game_variables[Smomo::ItemPriceRate::Selling]
  131.       @buy_window.make_item_list
  132.       prc = @item.price * rate / 100
  133.       prc > buying_price ? buying_price : prc
  134.     else
  135.       item_price_rate_selling_price
  136.     end * (@goods.none?{|g| g[1] == @item.id} ?
  137.     Smomo::ItemPriceRate::OPTIONAL[:profiteer] : 1)).round
  138.   end
  139.   alias :item_price_rate_do_buy :do_buy
  140.   def do_buy(number)
  141.     item_price_rate_do_buy number
  142.     sio = Smomo::ItemPriceRate::OPTIONAL
  143.     if @item.is_a?(RPG::Item) && sio[:lfcalendar][@item.id]
  144.       sio[:lfcalendar][@item.id] += number
  145.     end
  146.   end
  147.   alias :item_price_rate_max_buy :max_buy
  148.   def max_buy
  149.     sio = Smomo::ItemPriceRate::OPTIONAL
  150.     if @item.is_a?(RPG::Item) && sio[:lfcalendar][@item.id]
  151.       new_max = sio[:limitForCalendar][@item.id] - sio[:lfcalendar][@item.id]
  152.       [item_price_rate_max_buy, new_max].min
  153.     else
  154.       item_price_rate_max_buy
  155.     end
  156.   end
  157. end
  158.  
  159. else
  160.   msgbox "请不要重复加载此脚本 : )\n【物品價格比例 ItemPriceRate】"
  161. end
  162. #==============================================================================#
  163. #=====                        =================================================#
  164.            "脚 本 尾"
  165. #=====                        =================================================#
  166. #==============================================================================#
[神性领域扩张:扩张神性领域]
说了等于没说.

Lv1.梦旅人

梦石
0
星屑
60
在线时间
62 小时
注册时间
2016-5-2
帖子
177
2
发表于 2016-5-4 07:18:09 | 只看该作者
本帖最后由 李牧羊 于 2016-5-4 07:20 编辑

呃...在下斗胆试试了先...
这个没有bug


1.  新开工程
2.  前置脚本
3.  设置备注

三项经过【控制变量法】的测试,均如楼主一样报错,因此在下猜测这应该是个bug,使用前面的版本就可以了
已测,可行

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案
duzine + 10 感謝,雖然後來還是無效,但我發現替代物了.

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-27 06:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表