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

Project1

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

[原创发布] 多个背包函数脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2010-8-23
帖子
161
跳转到指定楼层
1
发表于 2013-6-8 13:19:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 512195574 于 2014-4-6 22:05 编辑

啊,第一次做脚本,不知道有人发过类似的东西了没有……

下面进入正题:

因为这只是个函数脚本,没有窗口化什么的,如果要做成菜单界面的多背包的话就只是基础了……(还得大改估计)。
这个脚本的功能主要解决游戏中的角色场景切换、而物品常在问题(如OZ中由PET切换到snow,或者梦境中,前者或平时的道具还能使用的情况)
使用之后就可以用这个脚本保存以前有的物品了,换新人物时物品清零,而原主角加入后再将物品得到

条用方法:注释中有了,我在这复制一下= =
事件中执行脚本调用,或者脚本中也是同样的方法


  get_allthing(c,j,d)

取得物品的数据
  c:数参,取得物品ID上限,如果全部取得的话取数据库里的最大值就好了
j:数参,背包名称,因为是第一次所以只做了三个,适用范围1~3
  d:布尔参,true/false,是否清空,true时可以在取得物品数据的同时清空取得的物品




  give_allthing(c,j)

给予玩家背包物品
  c:数参,给予物品ID上限,如果全部给予的话取数据库里的最大值就好了
j:数参,取得j号背包中的东西,同上只做了三个,适用范围1~3



拓展用法:
一窝堆仓库:每次东西过多时取得物品并清除,调用仓库的时候一起拿走……

冲突:
数据类的脚本,因为从没改过、引用任何定义,所以冲突的概率不大。不过遇到类似随机装备这种对低层数据修改的就不大好说了……

修改版在三楼,加了点不算太实用的功能……如果只是做到介绍中的效果的话,这个版本就已经足够了



下面是脚本

  1. =begin
  2. ===============================================================================
  3.   多个背包函数脚本……(请原谅我的语文水平)
  4.   作者:512195574
  5.   调用方法:
  6.   get_allthing(c,j,d)
  7.   give_allthing(c,j)
  8.   c:数参,取得物品上限,如果全部取得的话取数据库里的最大值就好了
  9.   j:数参,背包名称,因为是第一版所以只做了三个,适用范围1~3
  10.   d:布尔参,是否清空,true时可以在取得物品数据的同时清空取得的物品
  11. ===============================================================================
  12. =end
  13. def get_allthing(c,j,d)
  14.   if j == 1
  15.     @itempack1 = []
  16.     @weaponpack1 = []
  17.     @armorpack1 = []
  18.     for i in 0..c
  19.       @itempack1[i]=$game_party.item_number(i)
  20.       @weaponpack1[i]=$game_party.weapon_number(i)
  21.       @armorpack1[i]=$game_party.armor_number(i)
  22.     end
  23.   end
  24.   if j == 2
  25.     @itempack2 = []
  26.     @weaponpack2 = []
  27.     @armorpack2 = []
  28.     for i in 1..c
  29.       @itempack2[i]=$game_party.item_number(i)
  30.       @weaponpack2[i]=$game_party.weapon_number(i)
  31.       @armorpack2[i]=$game_party.armor_number(i)
  32.     end
  33.   end
  34.   if j == 3
  35.     @itempack3 = []
  36.     @weaponpack3 = []
  37.     @armorpack3 = []
  38.     for i in 0..c
  39.       @itempack3[i]=$game_party.item_number(i)
  40.       @weaponpack3[i]=$game_party.weapon_number(i)
  41.       @armorpack3[i]=$game_party.armor_number(i)
  42.     end
  43.   end
  44.   if d == true
  45.     for i in 0..c
  46.       $game_party.gain_item(i,-99)
  47.       $game_party.gain_weapon(i,-99)
  48.       $game_party.gain_armor(i,-99)
  49.     end
  50.   end
  51. end

  52. def give_allthing(c,j)
  53.   if j == 1
  54.     for i in 0..c
  55.       $game_party.gain_item(i,@itempack1[i])
  56.       $game_party.gain_weapon(i,@weaponpack1[i])
  57.       $game_party.gain_armor(i,@armorpack1[i])
  58.     end
  59.   end
  60.   if j == 2
  61.     for i in 0..c
  62.       $game_party.gain_item(i,itempack2[i])
  63.       $game_party.gain_weapon(i,weaponpack2[i])
  64.       $game_party.gain_armor(i,armorpack2[i])
  65.     end
  66.   end
  67.   if j == 3
  68.     for i in 0..c
  69.       $game_party.gain_item(i,itempack3[i])
  70.       $game_party.gain_weapon(i,weaponpack3[i])
  71.       $game_party.gain_armor(i,armorpack3[i])
  72.     end
  73.   end
  74. end
复制代码

评分

参与人数 1星屑 +12 收起 理由
存档不能 + 12 实用

查看全部评分

其实我是个三流的画师  ←_←

Lv1.梦旅人

梦石
0
星屑
46
在线时间
1502 小时
注册时间
2010-8-27
帖子
392
2
发表于 2013-6-8 15:12:06 | 只看该作者
不知道这个脚本是否适用于物品上限不同的情况?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2010-8-23
帖子
161
3
 楼主| 发表于 2013-6-8 15:37:51 | 只看该作者
本帖最后由 512195574 于 2013-6-9 14:51 编辑
存档不能 发表于 2013-6-8 15:12
不知道这个脚本是否适用于物品上限不同的情况?


这样就应该可以了,其实还可以加入参数确定下限,这样可以只记录或者得到一部分的物品……不管那样参数就要有8个了,还不如分成三条指令= =
  1. =begin
  2. ===============================================================================
  3.   多个背包函数脚本……v1.01(请原谅我的语文水平)
  4.   作者:512195574
  5.   调用方法:
  6. @shanxian = n(n表示物品数量的上限)
  7.   get_allthing(c1,c2,c3,j,d)
  8.   give_allthing(c1,c2,c3,j)
  9.   c:数参,取得物品ID的上限,如果全部取得的话取数据库里的最大值就好了(1,2,3分别代表物品、武器、防具的上限)
  10.   j:数参,背包名称,因为是第一版所以只做了三个,适用范围1~3
  11.   d:布尔参,true/false,是否清空,true时可以在取得物品数据的同时清空取得的物品
  12. ===============================================================================
  13. =end
  14. def get_allthing(c1,c2,c3,j,d)
  15.   if j == 1
  16.     @itempack1 = []
  17.     @weaponpack1 = []
  18.     @armorpack1 = []
  19.     for i in 0..c1
  20.       @itempack1[i]=$game_party.item_number(i)
  21.       @weaponpack1[i]=$game_party.weapon_number(i)
  22.       @armorpack1[i]=$game_party.armor_number(i)
  23.     end
  24.   end
  25.   if j == 2
  26.     itempack2 = []
  27.     weaponpack2 = []
  28.     armorpack2 = []
  29.     for i in 1..c2
  30.       itempack2[i]=$game_party.item_number(i)
  31.       weaponpack2[i]=$game_party.weapon_number(i)
  32.       armorpack2[i]=$game_party.armor_number(i)
  33.     end
  34.   end
  35.   if j == 3
  36.     itempack3 = []
  37.     weaponpack3 = []
  38.     armorpack3 = []
  39.     for i in 0..c3
  40.       itempack3[i]=$game_party.item_number(i)
  41.       weaponpack3[i]=$game_party.weapon_number(i)
  42.       armorpack3[i]=$game_party.armor_number(i)
  43.     end
  44.   end
  45.   if d == true
  46.     for i in 0..c1
  47.       $game_party.gain_item(i,-@shanxian)
  48.       $game_party.gain_weapon(i,-@shanxian)
  49.       $game_party.gain_armor(i,-@shanxian)
  50.     end
  51.     for i in 0..c2
  52.       $game_party.gain_weapon(i,-@shanxian)
  53.     end
  54.     for i in 0..c3
  55.       $game_party.gain_armor(i,-@shanxian)
  56.     end
  57.   end
  58. end

  59. def give_allthing(c1,c2,c3,j)
  60.   if j == 1
  61.     for i in 0..c1
  62.         if @itempack1[i] + $game_party.item_number(i) >= @shanxian
  63.           $game_party.gain_item(i,@shanxian-$game_party.item_number(i))
  64.         else
  65.           $game_party.gain_item(i,@itempack1[i])
  66.         end
  67.         if @weaponpack1[i] + $game_party.weapon_number(i) >= @shanxian
  68.           $game_party.gain_weapon(i,@shanxian-$game_party.weapon_number(i))
  69.         else
  70.           $game_party.gain_weapon(i,@weaponpack1[i])
  71.         end
  72.         if @armorpack1[i] + $game_party.armor_number(i) >= @shanxian
  73.           $game_party.gain_armor(i,@shanxian-$game_party.armor_number(i))
  74.         else
  75.           $game_party.gain_armor(i,@armorpack1[i])  
  76.         end
  77.     end
  78.   end
  79.   if j == 2
  80.     for i in 0..c2
  81.         if @itempack2[i] + $game_party.item_number(i) >= @shanxian
  82.           $game_party.gain_item(i,@shanxian-$game_party.item_number(i))
  83.         else
  84.           $game_party.gain_item(i,@itempack2[i])
  85.         end
  86.         if @weaponpack2[i] + $game_party.weapon_number(i) >= @shanxian
  87.           $game_party.gain_weapon(i,@shanxian-$game_party.weapon_number(i))
  88.         else
  89.           $game_party.gain_weapon(i,@weaponpack2[i])
  90.         end
  91.         if @armorpack2[i] + $game_party.armor_number(i) >= @shanxian
  92.           $game_party.gain_armor(i,@shanxian-$game_party.armor_number(i))
  93.         else
  94.           $game_party.gain_armor(i,@armorpack2[i])  
  95.         end
  96.     end
  97.   end
  98.   if j == 3
  99.     for i in 0..c3
  100.         if @itempack3[i] + $game_party.item_number(i) >= @shanxian
  101.           $game_party.gain_item(i,@shanxian-$game_party.item_number(i))
  102.         else
  103.           $game_party.gain_item(i,@itempack3[i])
  104.         end
  105.         if @weaponpack3[i] + $game_party.weapon_number(i) >= @shanxian
  106.           $game_party.gain_weapon(i,@shanxian-$game_party.weapon_number(i))
  107.         else
  108.           $game_party.gain_weapon(i,@weaponpack3[i])
  109.         end
  110.         if @armorpack3[i] + $game_party.armor_number(i) >= @shanxian
  111.           $game_party.gain_armor(i,@shanxian-$game_party.armor_number(i))
  112.         else
  113.           $game_party.gain_armor(i,@armorpack3[i])  
  114.         end
  115.     end
  116.   end
  117. end
复制代码

点评

……第二背包会出错…… j:数参,背包名称,因为是第一版所以只做了三个,适用范围1~3 J的地方填1不出错,填2出错……就连范例修改后也会出错  发表于 2014-1-5 09:37
其实我是个三流的画师  ←_←
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
46
在线时间
1502 小时
注册时间
2010-8-27
帖子
392
4
发表于 2013-6-8 16:36:33 | 只看该作者
我就说随口一问楼主就搞出来了,真是太认真了……
不过我还想问一下,这个上限应该不是指实际记录的物品数量,而是指物品的最大容量吧?
也就是说我记录99个红药入背包,即使红药实际上有100个,背包中的数据也最多只到99个,这样吗?

点评

修改完成……制作的第一个脚本,认真点是应该的  发表于 2013-6-8 17:10
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2010-8-23
帖子
161
5
 楼主| 发表于 2013-6-8 16:53:48 | 只看该作者
本帖最后由 512195574 于 2013-6-8 17:09 编辑
存档不能 发表于 2013-6-8 16:36
我就说随口一问楼主就搞出来了,真是太认真了……
不过我还想问一下,这个上限应该不是指实际记录 ...


原来是指这个意思,解释可能说的不清楚……参数c指的是数据库的物品ID上限……也就是说如果数据库里有200件东西,那么C选200就好了,选150的话,后50个物品就不会读取了……(用数参而不是定义中的参数直接读取最大值的原因,是因为这样可以防止与其他脚本冲突)
而物品数量是全读取的,100红药不知道用的什么脚本得到的(上限不是99吗……),不知道使用后是不是还能给予100个物品。
这个脚本主要就是游戏换主角时物品清空,再到主角来时物品加入用。实行仓库式多背包还得大改……那样不如用R站上现存的仓库脚本了。

至于物品数量上限……也有办法,脚本输入
@shanxian = 50
就行了
表示物品上限为50,也就是说如果这个数值确定50的话,就算有70个物品,读取之后,返回也最多50个……这样就适用于那些将物品上限调整了的脚本了
其实我是个三流的画师  ←_←
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
46
在线时间
1502 小时
注册时间
2010-8-27
帖子
392
6
发表于 2013-6-8 18:21:33 | 只看该作者
原来如此,这样就清楚了,不过我觉得楼主还是改一下解释吧,不然物品上限一般人不会往物品id上想的
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

7
发表于 2013-6-9 09:39:58 | 只看该作者
感觉楼主的说明有些废话···这脚本其实就是那个p神做的RMVX的多背包脚本的RMXP版本吧?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
发表于 2013-6-9 09:48:15 | 只看该作者
  1. get_allthing(15,1,false)
复制代码
楼主为什么我这样运行了脚本会出错···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2010-8-23
帖子
161
9
 楼主| 发表于 2013-6-9 10:36:52 | 只看该作者
本帖最后由 512195574 于 2013-6-9 10:40 编辑
chd114 发表于 2013-6-9 09:39
感觉楼主的说明有些废话···这脚本其实就是那个p神做的RMVX的多背包脚本的RMXP版本吧? ...


不知道啊……没用过RMVX,只是因为做的游戏需要切换主角,但是物品不能跟着携带,所以就想到了这个脚本(我是按照C语言的思路编的,肯定没他那个好,而且没有窗口化,与其叫多背包不如叫做主角从监狱中醒来系统= =)

我这测试的很正常……还有第二版的需要5个参数,如果第一版这样还出错就不知道为什么了= =
我记得你的那个游戏底层数据好像修改的很大……
其实我是个三流的画师  ←_←
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

10
发表于 2013-6-9 11:45:41 | 只看该作者
512195574 发表于 2013-6-9 10:36
不知道啊……没用过RMVX,只是因为做的游戏需要切换主角,但是物品不能跟着携带,所以就想到了这个脚本( ...

你把范例发出来我下来看看怎么用的好了···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-13 04:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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