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

Project1

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

[已经解决] 关于喵呜的分解道具脚本,求分解后获得物品的提示

[复制链接]

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
跳转到指定楼层
1
发表于 2016-11-13 16:58:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. =begin
  2. ===============================================================================
  3.   分解道具 By喵呜喵5
  4. ===============================================================================


  5. 【说明】


  6.   将主角背包里面的武器,防具,道具分解成其他若干道具。
  7.   分解之后,原物品消失,分解后的物品会放入主角的背包中。


  8.   在对应物品的备注栏输入:


  9.     <分解所得 [1,3]>


  10.   则分解该物品可以随机获得 1~3 个的 1 号道具


  11.   在备注栏输入:


  12.     <分解所得 [1,3]>
  13.     <分解所得 [2,4]>


  14.   则分解该物品可以随机获得 1~3 个的 1 号道具 和 1~4 个的 2 号道具


  15.   在事件指令的脚本中输入


  16.     M5DI20160122.call


  17.   来打开分解界面


  18. =end
  19. $m5script ||= {}; raise("需要喵呜喵5基础脚本的支持") unless $m5script[:M5Base]
  20. $m5script[:M5DI20160122] = 20160122; M5script.version(20151221)
  21. module M5DI20160122
  22. #==============================================================================
  23. # 设定部分
  24. #==============================================================================


  25.   GOLD = 500


  26.   # 单次分解所需的金钱


  27.   RATE = 0.1


  28.   # 分解获得更多数量道具的几率 + 10%


  29.   SE = 'Bell2'


  30.   # 分解成功时播放的音效,不需要的话填写 nil


  31.   VOCAB = {


  32.     ITEM:   "分解道具",
  33.     WEAPON: "分解装备",
  34.     ARMOR:  "分解宝石",


  35.     HINT_HEAD:  "分解成功后将获得",
  36.     HINT_FOOT:  "确定分解吗?",
  37.     HINT_ERROR: "金钱不足",
  38.     HINT_SEP:   "-",
  39.     HINT_UNIT:  "个",


  40.     OK:     "分解",
  41.     CNACEL: "放弃"


  42.   }


  43.   # 用语设定


  44. #==============================================================================
  45. # 设定结束
  46. #==============================================================================


  47. class << self
  48.   def enough_money?; $game_party.gold >= GOLD; end
  49.   def call; SceneManager.call(Scene_decompose); end
  50. end


  51. Gold = Class.new(Window_Gold)


  52. class Category < Window_ItemCategory
  53.   def initialize(width)
  54.     @gold_width = width
  55.     super()
  56.   end
  57.   def window_width; Graphics.width - @gold_width; end
  58.   def col_max; return 3; end
  59.   def make_command_list
  60.     add_command(VOCAB[:ITEM], :item)
  61.     add_command(VOCAB[:WEAPON], :weapon)
  62.     add_command(VOCAB[:ARMOR], :armor)
  63.   end
  64. end


  65. class Confirm < Window_HorzCommand
  66.   def initialize(x,y)
  67.     super
  68.     self.openness = 0
  69.     self.z = 300
  70.     self.back_opacity = 230
  71.   end
  72.   def window_width; Graphics.width; end
  73.   def col_max; 2; end
  74.   def make_command_list
  75.     add_command(VOCAB[:OK], :ok, M5DI20160122.enough_money?)
  76.     add_command(VOCAB[:CNACEL], :cancel)
  77.   end
  78. end


  79. class Result < Window_Base
  80.   def initialize(height)
  81.     super(0, 0, Graphics.width, height)
  82.     self.openness = 0
  83.     self.z = 300
  84.     self.back_opacity = 230
  85.   end
  86.   def line_height; super; end
  87.   def draw_line(line, type, data)
  88.     y = line * line_height
  89.     case type
  90.     when 0 then draw_text_ex(0, y, data)
  91.     when 1
  92.       padding = 15
  93.       width = contents.width - padding * 2
  94.       draw_item_name(data[0], padding, y, true, width)
  95.       num = (data[1] == 1 ? "1 " : "1 #{VOCAB[:HINT_SEP]} #{data[1]} ")
  96.       draw_text(padding, y, width, line_height, num + VOCAB[:HINT_UNIT], 2)
  97.     end
  98.     line += 1
  99.   end
  100.   def refresh(data)
  101.     contents.clear
  102.     line = 0
  103.     line = draw_line(line, 0, VOCAB[:HINT_HEAD])
  104.     line = draw_line(line, 0, "")
  105.     data.each {|item| line = draw_line(line, 1, item) }
  106.     line = draw_line(line, 0, "")
  107.     line = draw_line(line, 0,
  108.       M5DI20160122.enough_money? ? VOCAB[:HINT_FOOT] : VOCAB[:HINT_ERROR])
  109.   end
  110. end


  111. class List < Window_ItemList
  112.   def include?(item)
  113.     return item.is_a?(RPG::Item) if @category == :item
  114.     super(item)
  115.   end
  116.   def enable?(item); item; end
  117.   def category=(category)
  118.     return if @category == category
  119.     @m5_data = nil
  120.     super(category)
  121.   end
  122.   def make_item_list
  123.     super
  124.     @m5_data = {} unless @m5_data
  125.     @data.reject! do |item|
  126.       next false if @m5_data[item.id]
  127.       result = item.m5_20160122_decompose_result
  128.       next true unless result
  129.       @m5_data[item.id] = result
  130.       false
  131.     end
  132.     @index = [@index, @data.size - 1].min
  133.   end
  134.   def item_decompose_data
  135.     return [] unless item
  136.     @m5_data[item.id].collect{|id, num| [$data_items[id], num] }
  137.   end
  138. end


  139. class Scene_decompose < Scene_MenuBase
  140.   def start
  141.     super
  142.     #create_help_window
  143.     @sprite1 = Sprite.new
  144.     @sprite1.bitmap = Cache.system("Background") #没有释放图片。如果以后有问题可以释放
  145.     create_gold_window
  146.     create_category_window
  147.     create_list_window
  148.     create_confirm_window
  149.     create_result_window
  150.     create_help_ex
  151.   end
  152.   def create_category_window
  153.     @category_window = Category.new(@gold_window.width)
  154.    # @category_window.help_window = @help_window
  155.     @category_window.y = 10#@help_window.height
  156.     @category_window.opacity=160
  157.     @category_window.set_handler(:ok, method(:on_category_ok))
  158.     @category_window.set_handler(:cancel, method(:return_scene))
  159.   end
  160.   def create_gold_window
  161.     @gold_window = Gold.new
  162.     @gold_window.opacity=160
  163.     @gold_window.x = Graphics.width - @gold_window.width
  164.     @gold_window.y = 0#@help_window.height
  165.   end
  166.   def create_list_window
  167.     wy = @category_window.y + @category_window.height+10
  168.     wh = Graphics.height - wy
  169.     @item_window = List.new(0, wy, Graphics.width, wh)
  170.     #@item_window.help_window = @help_window
  171.     @item_window.opacity=160
  172.     @item_window.set_handler(:ok,     method(:on_item_ok))
  173.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  174.     @category_window.item_window = @item_window
  175.   end
  176.   def create_confirm_window
  177.     @confirm_window = Confirm.new(0, 0)
  178.     @confirm_window.y = Graphics.height - @confirm_window.height
  179.     @confirm_window.set_handler(:ok,     method(:on_confirm_ok))
  180.     @confirm_window.set_handler(:cancel, method(:on_confirm_cancel))
  181.   end
  182.   def create_result_window
  183.     @result_window = Result.new(Graphics.height - @confirm_window.height)
  184.   end
  185.   def on_category_ok
  186.     @item_window.activate.select(0)
  187.   end
  188.   def on_item_ok
  189.     @result_window.refresh(@item_window.item_decompose_data)
  190.     @result_window.open
  191.     @confirm_window.refresh
  192.     @confirm_window.open.activate.select(0)
  193.     @help_ex_window.hide
  194.   end
  195.   def on_item_cancel
  196.     @item_window.unselect
  197.     @category_window.activate
  198.     @help_ex_window.hide
  199.   end
  200.   def on_confirm_ok
  201.     $game_party.lose_item(@item_window.item, 1)
  202.     @item_window.item_decompose_data.each do |i, n|
  203.       num = n * (rand + RATE)
  204.       num = [[num.round, 1].max, n].min
  205.       #获得物品
  206.       $game_party.gain_item(i, num)
  207.     end
  208.     $game_party.lose_gold(GOLD)
  209.     Audio.se_play("Audio/SE/#{SE}") if SE
  210.     @gold_window.refresh
  211.     @item_window.refresh
  212.     on_confirm_cancel
  213.   end
  214.   def on_confirm_cancel
  215.     @result_window.close
  216.     @confirm_window.close
  217.     @item_window.activate
  218.   end
  219. end


  220. end # module M5DI20160122


  221. class RPG::BaseItem
  222.   def m5_20160122_decompose_result
  223.     value = []
  224.     m5note("分解所得",nil,true,true) do |result|
  225.       value << eval(result.gsub(/,/){','})
  226.     end
  227.     value.empty? ? nil : value
  228.   end
  229. end
复制代码

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 结帖

查看全部评分

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
2
 楼主| 发表于 2016-11-13 16:59:20 | 只看该作者
物品分解不知道获得了几个道具,分解的多了没提示很困扰
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3115
在线时间
2502 小时
注册时间
2012-3-1
帖子
764
3
发表于 2016-11-13 18:45:55 | 只看该作者
本帖最后由 卡奥尼特 于 2016-11-16 14:17 编辑

@喵呜喵5
來看下吧…………
建議妳下次直接問腳本作者吧


【回版主】

只想被善意的提示違規。直接被提示什麼的,不太想接受呢。反而有種針對性
至少能接受這點程度的扣分理由 “不能純@人哦”

评分

参与人数 1星屑 -1 收起 理由
RaidenInfinity -1 版规B5 纯@人 = 无意义回复

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
4
 楼主| 发表于 2016-11-14 20:30:27 | 只看该作者
{:4_88:}
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
342
在线时间
377 小时
注册时间
2013-1-30
帖子
219
5
发表于 2016-11-14 21:08:46 | 只看该作者
要不要试着再装一个物品获得提示的脚本。

这类脚本只要你得到了新的道具或装备(有的还包括钱),都会在对话框中加以提示。

点评

哎,不行,分解后的物品得失都没提示,难道就这样烂尾了吗  发表于 2016-11-15 15:19
已经有了个在地图上显示获得物品的脚本......我在找找看吧  发表于 2016-11-15 13:55

评分

参与人数 1星屑 -1 收起 理由
VIPArcher -1 通常这类脚本只提示事件指令获得的道具哦.

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21422
在线时间
9385 小时
注册时间
2012-6-19
帖子
7114

开拓者短篇九导演组冠军

6
发表于 2016-11-16 10:12:45 | 只看该作者
本帖最后由 喵呜喵5 于 2016-11-16 10:39 编辑

比较忙,这周末加一个上去,先占楼

========


脚本已更新: https://rpg.blue/home.php?mod=sp ... o=blog&id=14828

评分

参与人数 2星屑 +265 梦石 +1 收起 理由
VIPArcher + 255 + 1 塞糖
是猪别乱叫 + 10 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-2-20 05:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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