Project1

标题: 如何让同种类物品不重叠 [打印本页]

作者: 黑舞嗜    时间: 2011-10-27 22:21
标题: 如何让同种类物品不重叠

让同种类物品不重叠,多出来的在另一个格子里创建,求脚本达人相助
作者: Rion幻音    时间: 2011-10-27 22:21
本帖最后由 Rion幻音 于 2011-10-28 09:25 编辑

用法是在物品的备注栏里写
stackmax[可叠加数量]
NONDISCARD    是不可丢弃
resize_inventory (更改背包大小)

范例: Item Test.rar (246.45 KB, 下载次数: 71)
就这样~~



翻去865行,把
@warning_window = Window_Warning.new
return
这两行给注释掉,再插入
clear_loot_slots
是这样的效果吗?
作者: 黑之翅膀    时间: 2011-10-28 00:08
可以在物品里多几个吗?比如
001:物品A
002:物品A
003:物品A
变量代入
当001物品A= “限制数”
002物品A+1
作者: iisnow    时间: 2011-10-28 09:42
本帖最后由 iisnow 于 2011-10-28 09:48 编辑

刚刚自己写的脚本:
试试吧!可能背包总格子方面还没有考虑,要考虑的话,我就去稍微改一下好了
  1. module ITEM_APART
  2.   
  3.   MAX  =  999  # 默认最多携带量
  4.   
  5. end

  6. # 用法说明:在物品的描述后加@再加上最大叠加数即可:
  7. # 例如:己方单体 HP 回复。@50

  8. class Game_Party
  9.   
  10.   include ITEM_APART

  11.   def initialize
  12.     # 建立角色序列
  13.     @actors = []
  14.     # 初始化金钱与步数
  15.     @gold = 0
  16.     @steps = 0
  17.     # 生成物品、武器、防具的所持数 hash
  18.     @items = {}
  19.     @weapons = {}
  20.     @armors = {}
  21.     @limt = []              # 生成个物品可叠加数
  22.     get_limit
  23.   end
  24.    
  25.   def gain_item(item_id, n)
  26.     # 更新 hash 的个数数据
  27.     if item_id > 0
  28.       @items[item_id] = [[item_number(item_id) + n, 0].max ,MAX].min
  29.     end
  30.   end
  31.   
  32.   def limt(id)
  33.     return @limt[id]
  34.   end
  35.   
  36.   def get_limit
  37.     for i in 1...$data_items.size
  38.       @limt[i] = $data_items[i].description.split("@")[1].to_i
  39.     end
  40.   end
  41.   
  42. end

  43. class Window_Item < Window_Selectable
  44.   
  45. def refresh
  46.     if self.contents != nil
  47.       self.contents.dispose
  48.       self.contents = nil
  49.     end
  50.     @data = []
  51.     # 添加报务
  52.     for i in 1...$data_items.size
  53.       if $game_party.item_number(i) > 0
  54.         if $game_party.item_number(i) > $game_party.limt(i)
  55.           part_num = $game_party.item_number(i) / $game_party.limt(i)
  56.           if $game_party.item_number(i) % $game_party.limt(i) != 0
  57.             part_num += 1
  58.           end
  59.           for p in 0...part_num
  60.             @data.push($data_items[i])
  61.           end
  62.         end
  63.       end
  64.     end
  65.     # 在战斗中以外添加武器、防具
  66.     unless $game_temp.in_battle
  67.       for i in 1...$data_weapons.size
  68.         if $game_party.weapon_number(i) > 0
  69.           @data.push($data_weapons[i])
  70.         end
  71.       end
  72.       for i in 1...$data_armors.size
  73.         if $game_party.armor_number(i) > 0
  74.           @data.push($data_armors[i])
  75.         end
  76.       end
  77.     end
  78.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  79.     @item_max = @data.size
  80.     if @item_max > 0
  81.       self.contents = Bitmap.new(width - 32, row_max * 32)
  82.       for i in 0...@item_max
  83.         draw_item(i)
  84.       end
  85.     end
  86.   end
  87.   
  88.   def draw_item(index)
  89.     item = @data[index]
  90.     case item
  91.     when RPG::Item
  92.       if @data[index + 1] == item
  93.         number = $game_party.limt(item.id)
  94.       else
  95.         number = $game_party.item_number(item.id) % $game_party.limt(item.id)
  96.         if number == 0
  97.           number = $game_party.limt(item.id)
  98.         end
  99.       end
  100.     when RPG::Weapon
  101.       number = $game_party.weapon_number(item.id)
  102.     when RPG::Armor
  103.       number = $game_party.armor_number(item.id)
  104.     end
  105.     if item.is_a?(RPG::Item) and
  106.        $game_party.item_can_use?(item.id)
  107.       self.contents.font.color = normal_color
  108.     else
  109.       self.contents.font.color = disabled_color
  110.     end
  111.     x = 4 + index % 2 * (288 + 32)
  112.     y = index / 2 * 32
  113.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  114.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  115.     bitmap = RPG::Cache.icon(item.icon_name)
  116.     opacity = self.contents.font.color == normal_color ? 255 : 128
  117.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  118.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  119.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  120.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  121.   end
  122.   
  123. end

  124.   
复制代码
大致是这个样子:


可能还要改改那个描述显示,加上:
description.split("@")[0]
就可以了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1