Project1
标题:
怎么让单个物品分数量上限
[打印本页]
作者:
黑之翅膀
时间:
2011-10-14 18:32
标题:
怎么让单个物品分数量上限
手枪的上限=1 种子数量上限=10
买了一次手枪之后去商店就不能买了,怎么做?
(种子达到10个就不能获得,不能买不能捡) dsu_plus_rewardpost_czw
作者:
Kimu
时间:
2011-10-14 21:35
纯事件的话,可以考虑商店处理之前弄个条件分歧,某物品数量,
如果需要这种功能的物品很多的话,还是用脚本改了
作者:
一箭烂YiJL
时间:
2011-10-14 22:58
本帖最后由 一箭烂YiJL 于 2011-10-14 23:03 编辑
随便写的。注:引用了沉影不器的脚本。main之上
# 在物品、防具、武器的备注栏里面写下"getlimit = ???"
# ??? 是个数字,就是上限。
#==============================================================================
# ■ [VX] 读取rmvx备注栏 2.02.1001 by 沉影不器
#==============================================================================
$fscript = {} if $fscript == nil
$fscript["ReadNote"] = "2.02.1001"
#==============================================================================
# ■ RPG
#==============================================================================
module RPG
#=============================================================================
# □ ReadNote
#=============================================================================
module ReadNote
def self.read(str, section, mismatch = nil)
str.each_line do |line|
## 不希望忽略大小写,则删掉下一行最后一个i
eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
end
return mismatch
end
end
#=============================================================================
# ■ BaseItem
#=============================================================================
class BaseItem
#-------------------------------------------------------------------------
# ○ 读取rmvx备注栏指定字段
# section : 字段名
# mismatch : 未匹配时的返回值
#-------------------------------------------------------------------------
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
#=============================================================================
# ■ Enemy
#=============================================================================
class Enemy
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
#=============================================================================
# ■ State
#=============================================================================
class State
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
end
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● 获得/损失物品
# item : 物品
# n : 数量
# include_equip : 包括已装备的物品
#--------------------------------------------------------------------------
def gain_item(item, n, include_equip = false)
number = item_number(item)
limit = item.read_note("getlimit").to_i
limit = 99 if item.read_note("getlimit").to_i == 0
case item
when RPG::Item
@items[item.id] = [[number + n, 0].max, limit].min
when RPG::Weapon
@weapons[item.id] = [[number + n, 0].max, limit].min
when RPG::Armor
@armors[item.id] = [[number + n, 0].max, limit].min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
end
end
end
end
复制代码
���
作者:
黑之翅膀
时间:
2011-10-17 15:16
不行啊,虽然购买之后物品是指定数,但是在购买的时候买多了就用多钱了
作者:
一箭烂YiJL
时间:
2011-10-17 21:50
黑之翅膀 发表于 2011-10-17 15:16
不行啊,虽然购买之后物品是指定数,但是在购买的时候买多了就用多钱了
很多东西也依靠这个函数的,如商店、事件(尤其是任务物品)、其他场景....。当用到这类型的脚本的时候,
兼容性十分危险,尤其这个函数没有返回成功或失败。除非失败了以后,物件就会丢在地图上。
否则兼容别的脚本的话,是要自己花功夫将每一个获得物品的脚本都要改。
(可惜默认脚本没有判断可否添加或删除物品这个函数的机制啊!)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1