畅享博客 > canaan > 游戏拾缀 > [原创]搭建无限仓库(附捕风的例子)
2006-12-6 23:44:51

[原创]搭建无限仓库(附捕风的例子)

第一步,自定义变量(先举操作例子,后解释,下同)
D:\MirServer\Mir200\Envir\MapQuest_def路径下,QManage.txt文件中写入以下语句:

[@login]
#IF
#ACT
VAR Integer HUMAN SZJZ

VAR Integer HUMAN SZJZ这句就是写入了一个自变量,同时还应该写LOADVAR HUMAN SZJZ ..\QuestDiary\数据文件\DCKSave.txt
这两句是一对,不可缺。

QManage.txt是一个登陆触发脚本,登陆游戏即对人物生效的。
VAR Integer HUMAN SZJZ是把SZJZ定义为自变量。
LOADVAR HUMAN SZJZ ..\QuestDiary\数据文件\DCKSave.txt是读取或是说导出SZJZ这个自变量。
QuestDiary这个文件就在D:\MirServer\Mir200\Envir这个路径下面,如果您觉得不爽,去掉前面两点,路径改成f:\我就喜欢这样干\QuestDiary也没有什么关系,只是以后的路径都要一致,否则读取和写入都不能成功!
数据文件就是QuestDiary下的一个文件家,如果你喜欢,写成“我偏不要数据文件”也未尝不可,呵呵,只是下面步骤中,路径必须保持一致,否则读取与写入无效!
DCKSave.txt也是一个名字随你取的文件,"DCK"是大仓库的拼音缩写,你改成XXOO.txt也未尝不可,只是后面的步骤中,路径和文件名都必须与变量及对应的物品都保持一致,否则读取与写入时无效!
 当然,你可以把物品分类,然后分存在不同的文件中,把DCKSave.txt分成"戒指.txt""项链.txt""手镯.txt""衣服.txt"等等,都可以,只是后面的脚本语句中,路径要保持一致

第二步,写NPC脚本
有了第一步做铺垫,第二步的脚本语言才有效,否则,当与NPC对话时的框框中有变量时,npc的框框中会显示"??"。与npc的对话框中,只要有一个变量没在QManage.txt定义过,npc就会显示"??"
举例说明吧(蓝字是解释)

[@main]
请选择要存取的物品:时间:<$DATETIME> [color/blue]是时间命令,游戏本身存在的变量[/color]<离开/@exit>\
——————————————————————————————\
<模块/@模块>模块可以表示任何物品名称,如圣战戒指
——————————————————————————————\
<下一页/@xiayiye>      <返回/@mm>     <关闭/exit>   
\
[@xiayiye]
请选择要存取的物品:时间:<$DATETIME> <离开/@exit>\
——————————————————————————————\
<模块2/@模块2>
——————————————————————————————\
<上一页/@main>      <返回/@mm>     <关闭/exit>   

[@模块]
您当前拥有的 模块 数量是:<$HUMAN(模)>这就是显示自定义变量所对应的数量,模可以用第一步的SZJZ来代替\
您可以进行如下操作:\ \
<存放/@模块y3>\
<取回/@模块y4>\
<返回/@mm>
[@模块y3]
#IF
checkitem 模块 1
#ACT
take 模块 1
CALCVAR HUMAN 模 + 1
SAVEVAR HUMAN 模 ..\QuestDiary\数据文件\DCKSave.txt
SENDMSG 5 存放成功!您当前拥有的模块数量是:<$HUMAN(模)>
goto @模块y3
#ELSEACT
messagebox 对不起!存放失败,请确认你是否有该物品!
[@模块y4]
#IF
CHECKVAR HUMAN 模 > 0
#ACT
CALCVAR HUMAN 模 - 1
SAVEVAR HUMAN 模 ..\QuestDiary\数据文件\DCKSave.txt
give 模块 1
SENDMSG 5 取回成功!您当前拥有的模块数量是:<$HUMAN(模)>
#ELSEACT
messagebox 对不起!取回失败,该物品的库存量不足!
——————————————————————————————————————————————

<$DATETIME>显示时间
<$HUMAN(模)>显示数量
如以下
<模块/@模块><$HUMAN(模)>在游戏中将会显示  模块:0    (假设还没有存进去)
如果"模"并没有在第一步中定义好,那么游戏中将会显示 ??
好了,把第二步种的模块替换成圣战戒指,把替换成SZJZ。这样,一个物品圣战戒指的无限仓库就完成了,如果还想要做其它物品的无限仓库,重复以上操作就OK了

 

 模块——方便重复操作
无限仓库功能模块
[@main]
请选择要存取的物品:时间:<$DATETIME> <离开/@exit>\
——————————————————————————————\
<模块/@模块><$HUMAN(模)>
——————————————————————————————\
<下一页/@xiayiye2>      <返回/@main>     <关闭/exit>   
\

[@模块]
您当前拥有的 模块 数量是:<$HUMAN(模)>\
您可以进行如下操作:\ \
<存放/@模块y3>\
<取回/@模块y4>\
<返回/@main>
[@模块y3]
#IF
checkitem 模块 1
#ACT
take 模块 1
CALCVAR HUMAN 模 + 1
SAVEVAR HUMAN 模 ..\QuestDiary\数据文件\DCKSave.txt
SENDMSG 5 存放成功!您当前拥有的模块数量是:<$HUMAN(模)>
goto @模块y3.....................这句为了存放大量同样的物品设置的循环,循环至包袱里没有该物品为止,要不然你存两个以上的物品要花不少时间。因为不弹出对话框而且NPC脚本语句很长的话,有一段系统相应时间,不信去封魔谷沃玛教主那里一次换两个同样的勋章试试看,换好一个后换第二个的时候是不是要等上一小会儿,点了也没有什么反应,是不是?
#ELSEACT
messagebox 对不起!存放失败,请确认你是否有该物品!
[@模块y4]
#IF
CHECKVAR HUMAN 模 > 0
#ACT
CALCVAR HUMAN 模 - 1
SAVEVAR HUMAN 模 ..\QuestDiary\数据文件\DCKSave.txt
give 模块 1
SENDMSG 5 取回成功!您当前拥有的模块数量是:<$HUMAN(模)>
#ELSEACT
messagebox 对不起!取回失败,该物品的库存量不足!
===============================================;
QManage中的模块

VAR Integer HUMAN 模
LOADVAR HUMAN 模 ..\QuestDiary\数据文件\DCKSave.txt

捕风相关脚本举例
D:\MirServer\Mir200\Envir\MapQuest_def,QManage.txt文件中的语句,取片段
---------------------------------------
[@login]
#IF
#ACT
VAR Integer HUMAN SZJZ
VAR Integer HUMAN SZQZ
VAR Integer HUMAN SZXL
。。。。。。
VAR Integer HUMAN qssz8
VAR Integer HUMAN sysz8
VAR Integer HUMAN sbrsz8
VAR Integer HUMAN xlsz8
VAR Integer HUMAN lzsz8
VAR Integer HUMAN ylst8
VAR Integer HUMAN smyd8
VAR Integer HUMAN fyst8
VAR Integer HUMAN myhs8
VAR Integer HUMAN tqsz8
VAR Integer HUMAN wdsz8
VAR Integer HUMAN ybsz8
VAR Integer HUMAN xwzz8
VAR Integer HUMAN xtfz8
VAR Integer HUMAN xldz8
VAR Integer HUMAN tmzz8
VAR Integer HUMAN tsfz8
VAR Integer HUMAN tddz8
VAR Integer HUMAN zwzz8
VAR Integer HUMAN zyfz8
VAR Integer HUMAN zydz8
VAR Integer HUMAN shsz8
VAR Integer HUMAN xbsz8
VAR Integer HUMAN ymsz8
VAR Integer HUMAN jyzz8
VAR Integer HUMAN jtfz8
VAR Integer HUMAN jcdz8
VAR Integer HUMAN mmsz8
VAR Integer HUMAN rrltz8
VAR Integer HUMAN rrpxz8
VAR Integer HUMAN rrlxz8
VAR Integer HUMAN sltyz8
VAR Integer HUMAN slzfz8
VAR Integer HUMAN slhtz8
VAR Integer HUMAN xyryz8
VAR Integer HUMAN xyqgz8
VAR Integer HUMAN xyzjz8
VAR Integer HUMAN bzsz8
VAR Integer HUMAN wzsz8
VAR Integer HUMAN xlcr8
VAR Integer HUMAN bwhz8
VAR Integer HUMAN mssyhs8
VAR Integer HUMAN msyhhs8
LOADVAR HUMAN msyhhs8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN mssyhs8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN bwhz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xlcr8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN wzsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN bzsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xyzjz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xyqgz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xyryz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN slhtz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN slzfz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN sltyz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN rrlxz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN rrpxz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN rrltz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN mmsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN jcdz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN jtfz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN jyzz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN ymsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xbsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN shsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN zydz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN zyfz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN zwzz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN tddz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN tsfz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN tmzz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xldz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xtfz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xwzz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN ybsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN wdsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN tqsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN myhs8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN fyst8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN smyd8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN ylst8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN lzsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN xlsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN sbrsz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN sysz8 ..\QuestDiary\数据文件\DCKSave.txt
LOADVAR HUMAN qssz8 ..\QuestDiary\数据文件\DCKSave.txt
。。。。。。
-------------------------------------
手镯的相关语句
[@main]
请选择要存取的物品:时间:<$DATETIME> <离开/@exit>\
——————————————————————————————\
<骑士手镯/@骑士手镯>:<$HUMAN(qssz8)> <三眼手镯/@三眼手镯>:<$HUMAN(sysz8)> <思贝儿手镯/@思贝儿手镯>:<$HUMAN(sbrsz8)> <心灵手镯/@心灵手镯>:<$HUMAN(xlsz8)> <龙之手镯/@龙之手镯>:<$HUMAN(lzsz8)> <阎罗手套/@阎罗手套>:<$HUMAN(ylst8)> \
<神秘腰带/@神秘腰带>:<$HUMAN(smyd8)> <防御手套/@防御手套>:<$HUMAN(fyst8)> <魔御护手/@魔御护手>:<$HUMAN(myhs8)> <铁青手镯/@铁青手镯>:<$HUMAN(tqsz8)> <钨丹手镯/@钨丹手镯>:<$HUMAN(wdsz8)> <玉碧手镯/@玉碧手镯>:<$HUMAN(ybsz8)> \
<玄武战镯/@玄武战镯>:<$HUMAN(xwzz8)> <玄天法镯/@玄天法镯>:<$HUMAN(xtfz8)> <玄灵道镯/@玄灵道镯>:<$HUMAN(xldz8)> <天冥战镯/@天冥战镯>:<$HUMAN(tmzz8)> <天师法镯/@天师法镯>:<$HUMAN(tsfz8)> <天帝道镯/@天帝道镯>:<$HUMAN(tddz8)> \
<真武战镯/@真武战镯>:<$HUMAN(zwzz8)> <真元法镯/@真元法镯>:<$HUMAN(zyfz8)> <真阳道镯/@真阳道镯>:<$HUMAN(zydz8)> <圣魂手镯/@圣魂手镯>:<$HUMAN(shsz8)> <玄冰手镯/@玄冰手镯>:<$HUMAN(xbsz8)> <炎魔手镯/@炎魔手镯>:<$HUMAN(ymsz8)> \
<九阳战镯/@九阳战镯>:<$HUMAN(jyzz8)> <九天法镯/@九天法镯>:<$HUMAN(jtfz8)> <九重道镯/@九重道镯>:<$HUMAN(jcdz8)> <虹魔手镯/@虹魔手镯>:<$HUMAN(mmsz8)> \
——————————————————————————————\
<下一页/@手镯2>      <返回/@mm>     <关闭/@exit>   
\

[@手镯2]
请选择要存取的物品:时间:<$DATETIME> <离开/@exit>\
——————————————————————————————\
<瑞日临天镯/@瑞日临天镯>:<$HUMAN(rrltz8)>     <瑞日辟邪镯/@瑞日辟邪镯>:<$HUMAN(rrpxz8)>     <瑞日流仙镯/@瑞日流仙镯>:<$HUMAN(rrlxz8)> \
<圣灵踏云镯/@圣灵踏云镯>:<$HUMAN(sltyz8)>     <圣灵追风镯/@圣灵追风镯>:<$HUMAN(slzfz8)>     <圣灵混天镯/@圣灵混天镯>:<$HUMAN(slhtz8)>  \
<逍遥如意镯/@逍遥如意镯>:<$HUMAN(xyryz8)>     <逍遥穹光镯/@逍遥穹光镯>:<$HUMAN(xyqgz8)>     <逍遥紫金镯/@逍遥紫金镯>:<$HUMAN(xyzjz8)> \
<霸主手镯/@霸主手镯>:<$HUMAN(bzsz8)> <王者手镯/@王者手镯>:<$HUMAN(wzsz8)> <翔龙缠绕/@翔龙缠绕>:<$HUMAN(xlcr8)> <霸王幻镯/@霸王幻镯>:<$HUMAN(bwhz8)>\
<迷失闪耀护手/@迷失闪耀护手>:<$HUMAN(mssyhs8)>         <迷失银河护手/@迷失银河护手>:<$HUMAN(msyhhs8)> \
——————————————————————————————\
<上一页/@main>      <返回/@mm>     <关闭/@exit>   

[@心灵手镯]
您当前拥有的 心灵手镯 数量是:<$HUMAN(xlsz8)>\
您可以进行如下操作:\ \
<存放/@心灵手镯y3>\
<取回/@心灵手镯y4>\
<返回/@mm>
[@心灵手镯y3]
#IF
checkitem 心灵手镯 1
#ACT
take 心灵手镯 1
CALCVAR HUMAN xlsz8 + 1
SAVEVAR HUMAN xlsz8 ..\QuestDiary\数据文件\DCKSave.txt
SENDMSG 5 存放成功!您当前拥有的心灵手镯数量是:<$HUMAN(xlsz8)>
goto @心灵手镯y3
#ELSEACT
messagebox 对不起!存放失败,请确认你是否有该物品!
[@心灵手镯y4]
#IF
CHECKVAR HUMAN xlsz8 > 0
#ACT
CALCVAR HUMAN xlsz8 - 1
SAVEVAR HUMAN xlsz8 ..\QuestDiary\数据文件\DCKSave.txt
give 心灵手镯 1
SENDMSG 5 取回成功!您当前拥有的心灵手镯数量是:<$HUMAN(xlsz8)>
#ELSEACT
messagebox 对不起!取回失败,该物品的库存量不足!

[@思贝儿手镯]
您当前拥有的 思贝儿手镯 数量是:<$HUMAN(sbrsz8)>\
您可以进行如下操作:\ \
<存放/@思贝儿手镯y3>\
<取回/@思贝儿手镯y4>\
<返回/@mm>
[@思贝儿手镯y3]
#IF
checkitem 思贝儿手镯 1
#ACT
take 思贝儿手镯 1
CALCVAR HUMAN sbrsz8 + 1
SAVEVAR HUMAN sbrsz8 ..\QuestDiary\数据文件\DCKSave.txt
SENDMSG 5 存放成功!您当前拥有的思贝儿手镯数量是:<$HUMAN(sbrsz8)>
goto @思贝儿手镯y3
#ELSEACT
messagebox 对不起!存放失败,请确认你是否有该物品!
[@思贝儿手镯y4]
#IF
CHECKVAR HUMAN sbrsz8 > 0
#ACT
CALCVAR HUMAN sbrsz8 - 1
SAVEVAR HUMAN sbrsz8 ..\QuestDiary\数据文件\DCKSave.txt
give 思贝儿手镯 1
SENDMSG 5 取回成功!您当前拥有的思贝儿手镯数量是:<$HUMAN(sbrsz8)>
#ELSEACT
messagebox 对不起!取回失败,该物品的库存量不足!

[@三眼手镯]
您当前拥有的 三眼手镯 数量是:<$HUMAN(sysz8)>\
您可以进行如下操作:\ \
<存放/@三眼手镯y3>\
<取回/@三眼手镯y4>\
<返回/@mm>
[@三眼手镯y3]
#IF
checkitem 三眼手镯 1
#ACT
take 三眼手镯 1
CALCVAR HUMAN sysz8 + 1
SAVEVAR HUMAN sysz8 ..\QuestDiary\数据文件\DCKSave.txt
SENDMSG 5 存放成功!您当前拥有的三眼手镯数量是:<$HUMAN(sysz8)>
goto @三眼手镯y3
#ELSEACT
messagebox 对不起!存放失败,请确认你是否有该物品!
[@三眼手镯y4]
#IF
CHECKVAR HUMAN sysz8 > 0
#ACT
CALCVAR HUMAN sysz8 - 1
SAVEVAR HUMAN sysz8 ..\QuestDiary\数据文件\DCKSave.txt
give 三眼手镯 1
SENDMSG 5 取回成功!您当前拥有的三眼手镯数量是:<$HUMAN(sysz8)>
#ELSEACT
messagebox 对不起!取回失败,该物品的库存量不足!

[@骑士手镯]
您当前拥有的 骑士手镯 数量是:<$HUMAN(qssz8)>\
您可以进行如下操作:\ \
<存放/@骑士手镯y3>\
<取回/@骑士手镯y4>\
<返回/@mm>
[@骑士手镯y3]
#IF
checkitem 骑士手镯 1
#ACT
take 骑士手镯 1
CALCVAR HUMAN qssz8 + 1
SAVEVAR HUMAN qssz8 ..\QuestDiary\数据文件\DCKSave.txt
SENDMSG 5 存放成功!您当前拥有的骑士手镯数量是:<$HUMAN(qssz8)>
goto @骑士手镯y3
#ELSEACT
messagebox 对不起!存放失败,请确认你是否有该物品!
[@骑士手镯y4]
#IF
CHECKVAR HUMAN qssz8 > 0
#ACT
CALCVAR HUMAN qssz8 - 1
SAVEVAR HUMAN qssz8 ..\QuestDiary\数据文件\DCKSave.txt
give 骑士手镯 1
SENDMSG 5 取回成功!您当前拥有的骑士手镯数量是:<$HUMAN(qssz8)>
#ELSEACT
messagebox 对不起!取回失败,该物品的库存量不足!

重复,取片段

存放好以后,对应路径对经文件下就会出现如下东东
我的路径设置在D:\MirServer\Mir200\Envir\QuestDiary\数据文件下,文件名是DCKSave.txt
里面就有这样的东东
[没有]玩家ID
qssz8=1骑士手镯有1个库存
sysz8=8三眼手镯有8个库存
[我是新来的]
sbrsz8=0思贝儿手镯曾经存过,现在没有了

一般遇到的问题
1.点击npc,有"??"出现
在玩家能看到的npc对话界面中
有类似<$HUMAN(qssz8)>的语句,而qssz8却没有在玩家登陆的时候定义过。

2.存了东西,也可以取出来,但是小退以后仓库的东西就变0了
路径不一致,
LOADVAR HUMAN 模   下面的路径
SAVEVAR HUMAN 模    下面的路径
一定要保持一致

3.自定义这么多物品,重复的字母代码自定义了两件不同的东西
这个你放心,程序会提示你的,哪个字母代码已经用过了
或者像我一样,先把东西分类,手镯分在第8类,然后字母后面我都加了一个8字
这样重复的机率就更小了


推荐到鲜果: 查阅更多相关主题的帖子: 传奇 无限仓库

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)