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

Project1

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

[已经过期] 关于这个脚本。。。。。。

[复制链接]

Lv4.逐梦者

【欧皇】

梦石
3
星屑
2046
在线时间
1004 小时
注册时间
2013-8-19
帖子
3486

开拓者

跳转到指定楼层
1
发表于 2015-7-22 17:34:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 欧买歌 于 2015-7-22 17:39 编辑

RUBY 代码复制
  1. class Game_Party
  2. Item = Struct.new(:id, :n, :type)
  3.   attr_reader   :items
  4.   alias add_initialize_xdrs  initialize
  5.   def initialize
  6.     add_initialize_xdrs
  7.     @items = [nil]
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 获取物品的所持数
  11.   #     item_id : 物品 ID
  12.   #--------------------------------------------------------------------------
  13.   def item_number(item_id)
  14.     n = 0
  15.     for item in @items
  16.       next if item.nil?
  17.       n += item.n if item.id == item_id and item.type == 0
  18.     end
  19.     return n
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 增加物品 (减少)
  23.   #     item_id : 物品 ID
  24.   #     n       : 个数
  25.   #--------------------------------------------------------------------------
  26.   def gain_item(item_id, n)
  27.     return if n == 0
  28.     if item_id > 0
  29.       if n > 0
  30.         1.upto(@items.size-1){|i|
  31.         item = @items[i]
  32.         next if item.type != 0
  33.         if item.id == item_id
  34.           add = [99 - item.n, n].min;item.n += add;n -= add;break if n == 0
  35.         end}
  36.         @items.push(Item.new(item_id, n, 0)) if n > 0
  37.       else
  38.         (@items.size-1).downto(1){|i|
  39.         item = @items[i]
  40.         next if item.type != 0
  41.         if item.id == item_id
  42.           add = [n.abs, item.n].min;item.n -= add;n += add; break if n == 0
  43.           @items.delete(item) if item.n == 0
  44.         end}
  45.       end
  46.     end
  47.   end
  48.   end
  49. #=============================================================================
  50. class Window_Item < Window_Selectable
  51.   #--------------------------------------------------------------------------
  52.   # ● 获取物品
  53.   #--------------------------------------------------------------------------
  54.   def item
  55.     case @data[self.index].type
  56.     when 0 :$data_items[@data[self.index].id]
  57.     end
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 刷新
  61.   #--------------------------------------------------------------------------
  62.   def refresh
  63.     if self.contents != nil
  64.       self.contents.dispose
  65.       self.contents = nil
  66.     end
  67.     @data = []
  68.     # 添加物品
  69.     for item in $game_party.items
  70.       next if item.nil?
  71.       next if $game_temp.in_battle and item.type != 0
  72.       @data.push(item)
  73.     end
  74.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  75.     @item_max = @data.size
  76.     if @item_max > 0
  77.       self.contents = Bitmap.new(width - 32, row_max * 32)
  78.       for i in 0...@item_max
  79.         draw_item(i)
  80.       end
  81.     end
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 描绘项目
  85.   #     index : 项目编号
  86.   #--------------------------------------------------------------------------
  87.   def draw_item(index)
  88.     number = @data[index].n
  89.     item = case @data[index].type
  90.            when 0 :$data_items[@data[index].id]
  91.            end
  92.     if item.is_a?(RPG::Item) and
  93.        $game_party.item_can_use?(item.id)
  94.       self.contents.font.color = normal_color
  95.     else
  96.       self.contents.font.color = disabled_color
  97.     end
  98.     x = 4 + index % 2 * (288 + 32)
  99.     y = index / 2 * 32
  100.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  101.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  102.     bitmap = RPG::Cache.icon(item.icon_name)
  103.     opacity = self.contents.font.color == normal_color ? 255 : 128
  104.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  105.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  106.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  107.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  108.   end
  109. end

这个脚本原作者是@芯☆淡茹水 我本想私信他,但是他却说他工作忙没时间改,但我也只是个新手,所以来提问区伸手了。
这个脚本是类似网游的背包,99个物品为一组,满了99个,就会多出一格放相同的物品,以此类推。
但是我测试了下却发现了BUG
1.X物品为0时打开背包看却发现物品还在而且数量显示0
2.物品数大于99时不能买东西
3.一次性获得大于99的物品(或者购买),获得的东西将不会分组。
我这个新手不知道怎么改啊,求触~!  

点评

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????  发表于 2015-7-22 17:44
15377917649 支持支付宝捐款  发表于 2015-7-22 17:43
QQ:2223942063
Q群:365819625
贪吃方1.4

Lv5.捕梦者

梦石
0
星屑
33079
在线时间
5104 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2015-7-22 20:49:05 | 只看该作者
粗略的看了下。第一个问题:把 42 ,4,3行换成下面
  1. add = [n.abs, item.n].min;item.n -= add;n += add
  2. @items.delete(item) if item.n == 0;break if n == 0
复制代码

评分

参与人数 1星屑 +100 收起 理由
hys111111 + 100 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-23 03:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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