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

Project1

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

[已经过期] 关于脚本出错

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1573
在线时间
265 小时
注册时间
2019-1-18
帖子
202
跳转到指定楼层
1
发表于 2019-9-19 14:04:39 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
如图,我做了一个事件,每个事件页里都会执行一个相同指令,然后就会报错,如果只执行一个的话就不会,这是怎么回事?放公共事件里只执行一次也会报错
以下是相关脚本
RUBY 代码复制
  1. #==============================================================================
  2. # 〓 限购商店 〓  <VA>       Author :芯☆淡茹水
  3. #==============================================================================
  4. =begin
  5.   #--------------------------------------------------------------------------
  6.   〓 说明 〓
  7.   #--------------------------------------------------------------------------
  8.   1,该限购商店是以 第一个 出售的物品为标志。
  9.      当 第一个 出售的物品确定为限购商店的标志时,这个物品不会出现在出售列表中。
  10.      标志物品的设置见下文。
  11.   #--------------------------------------------------------------------------
  12.   2,支持存取档的继承以及游戏中的数量补充。支持剩余数量的获取。
  13.  
  14.   #--------------------------------------------------------------------------
  15.   3,商品 第一个 不是 限购商店标志物品 的,为默认商店。
  16.  
  17.   #--------------------------------------------------------------------------
  18.   4,限购商店标志物品可依照下面格式随意设置,
  19.      限购商店的各种脚本操作就以这个标志的ID(物品ID)为基准。
  20.  
  21.   #--------------------------------------------------------------------------
  22.   〓 限购商店标志物品的设置 〓
  23.   #--------------------------------------------------------------------------
  24.   1,限购商店的标志物品(以下简称为“商标”)类型为:数据库 - 物品 。
  25.   #--------------------------------------------------------------------------
  26.   2,限购商店的标志和对应初始限购数量,
  27.      在 商标 的 说明 里写:<RealShopData:n1,n2,n3,,,>
  28.     
  29.      n1,n2,n3,,, ,表示该商店出售的道具的初始限购数量。以出售时的序号排列,
  30.      除 商标 外,第一个出售的道具数量对应 n1 ;第二个对应 n2 ... 以此类推。
  31.      中间用半角逗号 , 相隔,不留空。
  32.     
  33.      也可以缺省设置:比如共 4 件出售道具,只设置前 2 件限购 => <RealShopData:n1,n2>
  34.      也可以只设置 1 和 3 限购 => <RealShopData:n1,,n3>
  35.      注意中间缺省几个的,就补几个半角逗号 ,  。
  36.     
  37.      例1:<RealShopData:20,99,10,35>
  38.           #=> 前 4 件道具的初始限购数量分别为:20,99,10,35 ;后面的不限购。
  39.           
  40.      例2:<RealShopData:55,,,30,15>
  41.           #=> 前 5 件道具的初始限购数量分别为:55,不限,不限,30,15 ;后面的不限购。
  42.     
  43.   #--------------------------------------------------------------------------
  44.   〓 脚本命令 〓
  45.   #--------------------------------------------------------------------------
  46.   1,事件 - 脚本 : setup_sell_nums(id)  
  47.      #=> 以 商标 的ID为基准,还原一个限购商店的数量为初始状态。
  48.     
  49.      id :商标(数据库-物品)的 ID。
  50.     
  51.      例:还原以 3 号 商标 为标志的限购商店的初始数量
  52.          #=> setup_sell_nums(3)
  53.   #--------------------------------------------------------------------------
  54.   2,事件 - 脚本 : shop_stock(id, index, num, type)
  55.      #=> 以 商标 的ID为基准,给限购商店的某个出售道具“进货”。
  56.     
  57.      id    :商标(数据库-物品)的 ID。
  58.      index :需要加货的道具的排列序号。(除 商标 外,第一个道具为 1)
  59.      num   :加货的数量(可以为 负数)。
  60.      type  :加货的方式(可缺省)。
  61.             方式1: 累加。 缺省时默认该方式。
  62.             方式2:指定。 type 参数写 "Set" ,即为该方式。
  63.             
  64.             累加 与 指定 的区别:
  65.             例: 剩余 10 ,累加 20  => 共 30
  66.                 剩余 10 ,指定 20  => 共 20
  67.             
  68.      注意: 若初始某道具无购买数量的限制,使用这条命令给其加数量后,
  69.            该道具会变成有数量限制的道具。使用第 1 条脚本命令可恢复。
  70.              
  71.           
  72.      例1: 给 5 号 商标 的限制商店第 4 个道具“进货” 50
  73.           #=> shop_stock(5, 4, 50)
  74.     
  75.      例2: 指定 8 号 商标 的限制商店第 2 个道具的数量为 20
  76.           #=> shop_stock(8, 2, 20, "Set")
  77.   #--------------------------------------------------------------------------
  78.   〓 数量的获取与判断 〓
  79.   #--------------------------------------------------------------------------
  80.   事件 - 脚本:rs_limit_num(id, index)
  81.   #=> 获取以 商标 的ID为基准的限购商店的某个道具的剩余数量。
  82.  
  83.   id    :商标(数据库-物品)的 ID。
  84.   index :道具在商店的排列序号。
  85.  
  86.   例1:条件判断 7 号 商标 的限购商店的 3 号道具剩余数量是否大于 10
  87.        #=>  事件 - 条件 - 脚本: rs_limit_num(7, 3) > 10
  88.        
  89.   例2:将 1 号 商标 的限购商店的 12 号道具剩余数量代入变量
  90.        #=>  事件 - 变量代入 - 脚本: rs_limit_num(1, 12)
  91.        
  92.   注意:由于需要条件判断,无 数量限制 的道具获取这个值时为 1000000 。
  93.   #--------------------------------------------------------------------------
  94. =end
  95. #==============================================================================
  96. module XdRs_Rs
  97.   #--------------------------------------------------------------------------
  98. # 〓 设置 〓
  99.   #--------------------------------------------------------------------------
  100.   # 数量提示窗口字体大小。
  101.   Hint_Size = 18
  102.  
  103.   #--------------------------------------------------------------------------
  104.   # 数量提示窗口在商店界面的 X 坐标。
  105.   Hint_X = 425
  106.  
  107.   #--------------------------------------------------------------------------
  108.   # 数量提示窗口在商店界面的 Y 坐标。
  109.   Hint_Y = 125
  110.  
  111.   #--------------------------------------------------------------------------
  112.   # 数量提示窗口背景的透明度(0 - 255)。
  113.   Hint_Opacity = 255
  114.  
  115.   #--------------------------------------------------------------------------
  116.   # 商店物品剩余数量的用语。
  117.   Num_Word = "可购买数:"
  118.  
  119.   #--------------------------------------------------------------------------
  120.   # 商店物品没有剩余数量限制时,是否显示数量提示窗口?(是:true ;否:false) 。
  121.   Show_Infinite = true
  122.  
  123.   #--------------------------------------------------------------------------
  124.   # 非限购商店,是否显示数量提示窗口?(是:true ;否:false) 。
  125.   Show_Nt_Limit = false
  126.  
  127.   #--------------------------------------------------------------------------
  128.   # 商店物品没有剩余数量限制时,数量提示窗口显示的数量用语。
  129.   Infinite_Word = "∞"
  130.  
  131. end
  132. #==============================================================================
  133. class Game_System
  134.   #--------------------------------------------------------------------------
  135.   attr_accessor :real_shop_data
  136.   #--------------------------------------------------------------------------
  137.   alias xr_rs_initialize initialize
  138.   def initialize
  139.     xr_rs_initialize
  140.     @real_shop_data = 0
  141.     @surplus_num_data = [nil]
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   def shop_surplus_nums(id=nil)
  145.     id ||= @real_shop_data
  146.     return id == 0 ? nil : remaining_amount(id)
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   def remaining_amount(id)
  150.     save = @surplus_num_data[id]
  151.     base = base_sell_nums(id)
  152.     return base if save.nil?
  153.     data = []
  154.     size = [save.size, base.size].max
  155.     size.times{|i| data.push(save[i] || base[i])}
  156.     return data
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   def base_sell_nums(id)
  160.     $data_items[id].description.match(/<RealShopData:(\S*)>/)
  161.     return $1.split(",").map{|n| n == "" ? nil : n.to_i}
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   def record_rest_nums(data)
  165.     @surplus_num_data[@real_shop_data] = data
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   def shop_stock(id, index, num, type)
  169.     return if num == 0 && type == "Add"
  170.     @surplus_num_data[id] ||= []
  171.     if type == "Set"
  172.       @surplus_num_data[id][index] = num
  173.     else
  174.       @surplus_num_data[id][index] ||= base_sell_nums(id)[index]
  175.       @surplus_num_data[id][index] += num
  176.     end
  177.     @surplus_num_data[id][index] = [@surplus_num_data[id][index], 0].max
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   def setup_sell_nums(id)
  181.     @surplus_num_data[id] = nil if @surplus_num_data[id]
  182.     @surplus_num_data.all?{|d| !d} && @surplus_num_data.clear
  183.   end
  184. end
  185. #==============================================================================
  186. class Game_Interpreter
  187.   #--------------------------------------------------------------------------
  188.   def steup_real_shop
  189.     return if @params[0] != 0 ||
  190.     !$data_items[@params[1]].description.match(/<RealShopData:(\S*)>/)
  191.     $game_system.real_shop_data = @params[1]
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   alias xr_rs_command_302 command_302
  195.   def command_302
  196.     !$game_party.in_battle && steup_real_shop
  197.     xr_rs_command_302
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   def shop_stock(id, index, num, type="Add")
  201.     $game_system.shop_stock(id, index-1, num, type)
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   def setup_sell_nums(id)
  205.     $game_system.setup_sell_nums(id)
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   def rs_limit_num(id, index)
  209.     data = $game_system.shop_surplus_nums(id)
  210.     return (!data || !data[index-1]) ? 1e6 : data[index-1]
  211.   end
  212. end
  213. #==============================================================================
  214. class Window_ShopBuy < Window_Selectable
  215.   #--------------------------------------------------------------------------
  216.   def dispose
  217.     @num_hint && @num_hint.dispose
  218.     super
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   def setup_nums_data(data)
  222.     @nums_data = data
  223.     need_hint_window? && create_num_hint
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   def need_hint_window?
  227.     return @nums_data || XdRs_Rs::Show_Nt_Limit
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   def rect_count
  231.     bitmap = Bitmap.new(32,32)
  232.     size = XdRs_Rs::Hint_Size
  233.     bitmap.font.size = size
  234.     w = bitmap.text_size(XdRs_Rs::Num_Word).width + 32 + size * 2
  235.     h = size + 24
  236.     bitmap.dispose
  237.     return w, h
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   def create_num_hint
  241.     w, h = rect_count
  242.     @num_hint = Window_Base.new(XdRs_Rs::Hint_X,XdRs_Rs::Hint_Y,w,h)
  243.     @num_hint.hide
  244.     @num_hint.opacity = XdRs_Rs::Hint_Opacity
  245.     @num_hint.z = 999
  246.     draw_limit_num
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   def draw_limit_num
  250.     @num_hint.contents.clear
  251.     @old_num = limit_num(@index)
  252.     size = XdRs_Rs::Hint_Size; x = 0
  253.     @num_hint.contents.font.size = size
  254.     @num_hint.contents.font.bold = true
  255.     text = limit_num(@index) ? limit_num(@index).to_s : XdRs_Rs::Infinite_Word
  256.     @num_hint.change_color(system_color)
  257.     cw = @num_hint.contents.text_size(XdRs_Rs::Num_Word).width + 4
  258.     @num_hint.draw_text(x,0,cw,size,XdRs_Rs::Num_Word)
  259.     @num_hint.change_color(is_sold_out(@index) ? knockout_color : normal_color)
  260.     @num_hint.draw_text(x+cw,0,size*2+4,size,text,2)
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   def can_hint_show?
  264.     return self.active && (XdRs_Rs::Show_Infinite || !!limit_num(@index))
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   alias xr_rs_enable? enable?
  268.   def enable?(item)
  269.     return !is_sold_out(@data.index(item)) && xr_rs_enable?(item)
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   def is_sold_out(n)
  273.     return limit_num(n) && limit_num(n) == 0
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   def limit_num(n)
  277.     return @nums_data ? @nums_data[n] : nil
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   def update
  281.     super
  282.     @num_hint && update_num_hint
  283.   end
  284.   #--------------------------------------------------------------------------
  285.   def update_num_hint
  286.     @num_hint.visible = can_hint_show?
  287.     @old_num != limit_num(@index) && draw_limit_num
  288.   end
  289. end
  290. #==============================================================================
  291. class Scene_Shop
  292.   #--------------------------------------------------------------------------
  293.   alias xr_rs_prepare prepare
  294.   def prepare(goods, purchase_only)
  295.     xr_rs_prepare(goods, purchase_only)
  296.     init_nums_data
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   def init_nums_data
  300.     $game_system.real_shop_data > 0 && @goods.shift
  301.     @sell_nums = $game_system.shop_surplus_nums
  302.     @is_sold = false
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   def is_real_sold?
  306.     return $game_system.real_shop_data > 0 && @is_sold
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   alias xr_rs_terminate terminate
  310.   def terminate
  311.     xr_rs_terminate
  312.     is_real_sold? && $game_system.record_rest_nums(@sell_nums)
  313.     $game_system.real_shop_data = 0
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   alias xr_rs_create_buy_window create_buy_window
  317.   def create_buy_window
  318.     xr_rs_create_buy_window
  319.     @buy_window.setup_nums_data(@sell_nums)
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   alias xr_rs_do_buy do_buy
  323.   def do_buy(number)
  324.     xr_rs_do_buy(number)
  325.     @is_sold = true
  326.     limit_num && @sell_nums[@buy_window.index] -= number
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   alias xr_rs_max_buy max_buy
  330.   def max_buy
  331.     max = xr_rs_max_buy
  332.     return limit_num ? [limit_num, max].min : max
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   def limit_num
  336.     return @sell_nums ? @sell_nums[@buy_window.index] : nil
  337.   end
  338. end
  339. #==============================================================================

Lv3.寻梦者

梦石
0
星屑
1573
在线时间
265 小时
注册时间
2019-1-18
帖子
202
3
 楼主| 发表于 2019-9-21 08:53:19 | 只看该作者
VIPArcher 发表于 2019-9-19 14:19
setup_sell_nums(id)
是英文的小括号(),不是中括号[]

中小括号都试了,都会报错
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2019-9-19 14:19:02 | 只看该作者
setup_sell_nums(id)
是英文的小括号()不是中括号[]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 16:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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