Project1

标题: 关于限制物品个数后的上限提示问题 [打印本页]

作者: 零式翅膀    时间: 2011-8-13 10:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2011-8-13 11:03
好吧你去vx区搜一下物品 上限,我前不久才回答的,修改的位置也大致相同,现在我是手机浏览,就不方便贴出来了
作者: 零式翅膀    时间: 2011-8-13 11:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2011-8-13 11:27
本帖最后由 fux2 于 2011-8-13 11:29 编辑
零式翅膀 发表于 2011-8-13 11:12
额 尝试搜索一下 没有找到斑竹大大的帖子耶- - 主要是如果通过商店以外的再获得物品还是会获得 如果要通 ...


好吧我现在用电脑了。
为了有点启发性,我们绕个弯弯.
因为是“获取物品”操作,想增加提示肯定是要在此操作上动手脚.
按 F11打开脚本编辑器,按下Ctrl+Shift+F,输入"增减物品",确定
然后经过判断(事件运行的解释都是在分割定义里的.),所以可以在
Interpreter 4的220行开始看到这一段
  1.   def command_126
  2.     # 获取要操作的值
  3.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  4.     # 增减物品
  5.     $game_party.gain_item(@parameters[0], value)
  6.     # 继续
  7.     return true
  8.   end
复制代码
由此得知解释器是调用$game_party.gain_item来获取道具的.
$game_party 是一个Game_Party类,在这个类里你可以看到gain_item方法的定义
  1.   def gain_item(item_id, n)
  2.     # 更新 hash 的个数数据
  3.     if item_id > 0
  4.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  5.     end
  6.   end
复制代码
默认系统这里的获取本身就有点浪费效率,虽然可以无视,但是扩展性就被抹杀了.
所以我们可以改成
  1.   def gain_item(item_id, n)
  2.     if item_id > 0
  3.       if item_number(item_id) + n > 99
  4.         @items[item_id] = 99
  5.       elsif item_number(item_id) + n <=0
  6.         @items[item_id] = 0
  7.       else
  8.         @items[item_id] = item_number(item_id) + n
  9.       end
  10.     end
  11.   end
复制代码
这样我们就可以在=99的部分做手脚
例子:
  1.   def gain_item(item_id, n)
  2.     if item_id > 0
  3.       if item_number(item_id) + n > 99
  4.         @items[item_id] = 99
  5.         $game_temp.message_text = "道具已满"
  6.       elsif item_number(item_id) + n <=0
  7.         @items[item_id] = 0
  8.       else
  9.         @items[item_id] = item_number(item_id) + n
  10.       end
  11.     end
  12.   end
复制代码

作者: 零式翅膀    时间: 2011-8-13 11:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2011-8-13 11:29
零式翅膀 发表于 2011-8-13 11:28
已经找到脚本了 谢谢斑竹提醒 去研究区

囧,我写了这么多
作者: 零式翅膀    时间: 2011-8-13 11:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2011-8-13 11:51
零式翅膀 发表于 2011-8-13 11:33
其实这个也很有用 谢谢斑竹 俺正常尝试呢

可能我理解题意出错了,能详细说明下你想要的效果吗?
作者: fux2    时间: 2011-8-13 11:51
零式翅膀 发表于 2011-8-13 11:33
其实这个也很有用 谢谢斑竹 俺正常尝试呢

可能我理解题意出错了,能详细说明下你想要的效果吗?
作者: 零式翅膀    时间: 2011-8-13 11:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2011-8-13 11:59
零式翅膀 发表于 2011-8-13 11:53
恩 本来打算是如果一个物品上限到了 通过剧情或者宝箱再入手同样的道具 会提醒:道具满了 然后道具拿不到 ...

放回宝箱的话就没有这么简单了,通常思路是再给事件增加一个属性,用来储存道具.
嗯,这是个问题,那么我可能下午发布这个脚本吧,您稍等即可.
作者: 零式翅膀    时间: 2011-8-13 12:12
提示: 作者被禁止或删除 内容自动屏蔽




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