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

Project1

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

[已经解决] 随机出售商品报错问题

[复制链接]

Lv2.观梦者

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

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

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

x
本帖最后由 是猪别乱叫 于 2016-9-11 13:07 编辑

一旦使用物品触发随机商店就会报错,而用地图上的人物对话却不会,求大神帮忙

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
2
 楼主| 发表于 2016-9-11 13:05:18 | 只看该作者
  1. =begin

  2.   說明:
  3.   
  4.   事件中執行腳本呼叫隨機物品商店
  5.   
  6.     random_shop(group, number)
  7.     例:隨機出售組:A中的三件商品:  random_shop(:A, 3)
  8.   
  9.    
  10.   打折出售
  11.   
  12.     random_shop(group, number, disount)
  13.     例:8折出售商品: random_shop(:B, 4, 0.8)
  14.    
  15.    
  16.   不讓玩家出售物品
  17.   
  18.     random_shop(group, number, discount, purchase_only)
  19.     例(須設定折扣):random_shop(:C, 20, 1, 1)
  20.    
  21. =end


  22. class Game_Interpreter
  23.   Random_Goods = { #在這裡定義你的商品列表
  24.     :A => [:i1_6, :i18_20, :i23_40], #i物品,w武器,每個組用逗號隔開 :i1_6, :i18_20, :i23_40
  25.     :B => [:i1_6, :i18_20, :a1_10],   #:i1_6, :i18_20, :a1_10
  26.            #這樣代表i物品1~10,w武器1~12,a護甲5~9
  27.     :C => [:w1_60]
  28.   }
  29.   # 設置變數號碼,當變數改變后商人才會更新商品
  30.   # 設置為 nil 的話,每次跟商人對話商品都會更新
  31.   Goods_Change_Var = nil
  32.   #
  33.   def random_shop(group, num, discount = 1, purchase_only = false)
  34.     return if $game_party.in_battle
  35.     goods = [] #空
  36.     Random_Goods[group].each {|g|
  37.       g = g.to_s
  38.       type = g[0]=="i" ? 0 : g[0]=="w" ? 1 : 2
  39.       if g.include?("_")
  40.         a, b = g.scan(/\d+/)
  41.         for i in a.to_i..b.to_i
  42.           begin
  43.             goods.push(random_goods_info(discount, type, i))
  44.           rescue
  45.             report_random_goods_crash(group, g)
  46.             return
  47.           end
  48.         end
  49.       else
  50.         g =~ /(\d+)/
  51.         begin
  52.           goods.push(random_goods_info(discount, type, $1.to_i))
  53.         rescue
  54.           report_random_goods_crash(group, g)
  55.           return
  56.         end
  57.       end
  58.     }
  59.     SceneManager.call(Scene_Shop)
  60.     SceneManager.scene.prepare(new_random_goods(goods, num), purchase_only)
  61.     Fiber.yield
  62.   end
  63.   #
  64.   def new_random_goods(goods, num)
  65.     return unless event = get_character(0)
  66.     if Goods_Change_Var
  67.       key = [@map_id, @event_id, :random_goods]
  68.       var = $game_variables[Goods_Change_Var]
  69.       unless $game_self_switches.get_value(key) &&
  70.              $game_self_switches.get_value(key)[0] == var
  71.         goods = goods.sample(num).sort
  72.         $game_self_switches.set_without_refresh(key, [var, goods])
  73.         return goods
  74.       else
  75.         return $game_self_switches.get_value(key)[1]
  76.       end
  77.     else
  78.       return goods.sample(num).sort
  79.     end
  80.   end
  81.   #
  82.   def random_goods_info(discount, type, i)
  83.     discount == 1 ?
  84.       [type, i, 0, which_random_goods(type)[i].price] :
  85.       [type, i, 1, (which_random_goods(type)[i].price * discount).round]
  86.   end
  87.   def which_random_goods(type)
  88.     case type
  89.     when 0; $data_items
  90.     when 1; $data_weapons
  91.     when 2; $data_armors
  92.     end
  93.   end
  94.   #
  95.   def report_random_goods_crash(group, g)
  96.     msgbox("隨機商店發生錯誤:Group :#{group}  Element :#{g}") if $TEST
  97.   end
  98. end

  99. class Game_SelfSwitches
  100.   def set_without_refresh(key, value)
  101.     @data[key] = value
  102.   end
  103.   def get_value(key)
  104.     @data[key]
  105.   end
  106. end

复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
3
 楼主| 发表于 2016-9-11 14:11:48 | 只看该作者
好吧,我用开关触发地图上的人物事件解决了。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 21:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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