查看: 84|回复: 11

[传统脚本] 数组材料仓库,几行代码搞定材料仓库,再也不需要变量去记录了

[复制链接]

36

主题

92

回帖

1358

积分

金牌会员

积分
1358
发表于 2026-5-29 20:24:08 | 显示全部楼层 |阅读模式
材料仓库用txt记录存了什么,登入的时候读取   D$材料仓库   


ReadConfigFileItem ..\QuestDiary\开区清理\材料仓库.txt  <$str(T128)> 材料仓库 <$STR(S$配置项内容)>
MOV D$材料仓库 <$STR(S$配置项内容)>

T128是玩家的个人标识,可以看其他帖子,有说明


下面用容器+数组的形式进行读取写入,材料仓库名录.txt是允许哪些东西可以存进去

下面这个储存,我是间隔一段时间就存下来。然后玩家大腿小腿都存一次
WriteConfigFileItem ..\QuestDiary\开区清理\材料仓库.txt <$str(T128)> 材料仓库 <$STR(D$材料仓库)>

-----------------------------下面就是具体代码了,自己随便P个背景图就可以用,调整下容器的大小
#if
#act
;sendmsg 7 <$STR(D$材料仓库)>
; 将字典中的Key放到 L$Keys中
GetDictItems D$材料仓库 0 L$材料名称
;将字典中的Value放到 L$Values中
GetDictItems D$材料仓库 1 L$材料数量
;sendmsg 6 <$STR(L$材料名称)>
GetListVarCount L$材料名称 N$已存总数
#if
large N$已存总数 200
#act
mov N$已存总数 200
#if
large N$已存总数 0
#act
MOV N$图鉴内容编号 2
MOV N$材料展示排数 0
MOV N$材料展示X 10
MOV N$材料展示Y 10
MOV S$材料展示
MOV N102 0
MOV N$已展示数 0
INC S$材料展示 <&Layout:#L1~#L<$STR(N$图鉴内容编号)>:0:10:718:327>
Loopgoto @_@材料展示 <$STR(N$已存总数)>
; MOV N$已展示数 0
; INC S$材料展示 <&Layout:#L1~#L<$STR(N$图鉴内容编号)>:0:10:718:327>
; WHILE N102 < N$已存总数
;goto @_@材料展示
;INC N102 1
;ENDWHILE
#elseact
MOV S$材料展示
#if
#act
OPENMERCHANTBIGDLG 182 957 1 4 0 0 1 747 6 1
#say
<>\
<>\
<>     <TEXT:材料仓库:310:-40{FCOLOR=151;FSIZE=16;FNAME=黑体}>\
<>    <点击图标即可全部取出/FCOLOR=95>   <输入物品名字取出/@@InPutString2>       <一键存入全部材料/@一键存>         \
<>\
<&ListView:~#L1:30:90:718:337:1:0:0:0:0:0:31:291:292:293:293:297:297:297:294:295:295>\
<$STR(S$材料展示)>\
[@InPutString2]
#IF
CheckVarInList L$材料名称 <$STR(S2)>
#ACT
GetListVarIndex L$材料名称 <$STR(S2)> N1
Dec D$材料仓库 <$STR(S2)>
GIVE <$Str(L$材料名称[<$STR(N1)>])> <$Str(L$材料数量[<$STR(N1)>])>
GOTO @材料仓库开始
#ELSEACT
MESSAGEBOX \[取出失败]:\请输入正确的物品名称!\或材料[<$STR(S2)>]不在仓库内!
BREAK
[@_@材料展示]
#if
#act
GetDBItemFieldValue <$STR(L$材料名称[<$STR(N102)>])> IDX N$展示IDX
INC S$材料展示 <&ItemShow:#L<$STR(N$图鉴内容编号)>~:<$STR(N$展示IDX)>:<$STR(L$材料数量[<$STR(N102)>])>:<$STR(N$材料展示X)>:<$STR(N$材料展示Y)>:1:0:0:1/@取出(<$STR(L$材料名称[<$STR(N102)>])>,<$STR(L$材料数量[<$STR(N102)>])>)>
INC N$材料展示X 49
INC N$已展示数 1
#if
equal N$已展示数 14
#act
INC N$材料展示排数 1
MOV N$已展示数 0
MOV N$材料展示X 10
INC N$材料展示Y 55
#IF
equal N$材料展示排数 6
#ACT
MOV N$材料展示排数 0
inc N$图鉴内容编号 1
INC S$材料展示 <&Layout:#L1~#L<$STR(N$图鉴内容编号)>:0:10:718:327>
MOV N$材料展示X 10
MOV N$材料展示Y 10
#if
#act
INC N102 1
[@一键存]
#if
large N$已存总数 200
#act
messagebox 材料仓库最多存入200样物品,请适当清理仓库中的垃圾后再存入\当前你已经存了<$STR(N$已存总数)>样
break
#if
#act
goto @_@一键存开始
[@_@一键存开始]
#IF
#ACT
GetBagInfo ItemName L$背包所有物品
GetListVarCount L$背包所有物品 N$背包所有物品总数
;sendmsg 6 背包内有<$STR(L$背包所有物品)>])>共<$STR(N$背包所有物品总数)>个
MOV N$背包物品筛选号 0
LOOPGOTO @_@开始背包物品存入 <$STR(N$背包所有物品总数)>
GOTO @材料仓库开始
[@_@开始背包物品存入]
#if
NOT CHECKTEXTLIST ..\QuestDiary\配置文件\材料仓库名录.txt <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])>
#act
INC N$背包物品筛选号 1
Break
#if
#act
GetBagItemCount <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])> N100
;sendmsg 6 背包内有<$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])><$STR(N100)>个
MOV N$新存总数 <$STR(N$已存总数)>
#if
equal  N100 0
#ACT
Break
#if
large N$新存总数 200
#ACT
sendmsg 5 你总共存入的材料品类大于200,禁止存入
Break
#if
CheckVarInList L$材料名称 <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])>
#act
GetListVarIndex L$材料名称 <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])> N1
;sendmsg 7 <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])>位于第<$STR(N1)>个子元素,有<$Str(L$Values[<$STR(N1)>])>个
MOV N$原有数量 <$Str(L$材料数量[<$STR(N1)>])>
INC N$原有数量 <$STR(N100)>
Inc D$材料仓库 <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])>:<$STR(N$原有数量)>
take <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])> <$STR(N100)>
#elseact
MOV N$原有数量 <$STR(N100)>
Inc D$材料仓库 <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])>:<$STR(N$原有数量)>
take <$STR(L$背包所有物品[<$STR(N$背包物品筛选号)>])> <$STR(N100)>
INC N$新存总数 1
#IF
#ACT
INC N$背包物品筛选号 1
[@取出]
#act
MOV S$取出物品名称 <$SCRIPTPARAM1>
MOV S$取出物品数量 <$SCRIPTPARAM2>
goto @_@开始取出
[@_@开始取出]
#if
CheckVarInList L$材料名称 <$STR(S$取出物品名称)>
#act
give <$STR(S$取出物品名称)> <$STR(S$取出物品数量)>
Dec D$材料仓库 <$STR(S$取出物品名称)>
SendMsg 6 取出<$STR(S$取出物品名称)><$STR(S$取出物品数量)>个
GOTO @材料仓库开始
#elseact
messagebox 你要取出的物品已经没有了


35

主题

96

回帖

1356

积分

金牌会员

积分
1356
QQ
发表于 2026-5-29 20:52:52 | 显示全部楼层
还不错,有点东西!支持你

0

主题

158

回帖

1082

积分

金牌会员

积分
1082
发表于 2026-5-29 21:59:07 | 显示全部楼层
还不错,有点东西!支持你

36

主题

92

回帖

1358

积分

金牌会员

积分
1358
楼主 发表于 7 天前 | 显示全部楼层
啦啦啦啦啦啦

4

主题

6

回帖

254

积分

中级会员

积分
254
发表于 7 天前 | 显示全部楼层
你这个是几行代码?  还有自动存的时候频繁触发的读取文本,不会卡吗?

42

主题

593

回帖

2035

积分

金牌会员

积分
2035
发表于 7 天前 | 显示全部楼层
还不错,有点东西!支持你

0

主题

158

回帖

1082

积分

金牌会员

积分
1082
发表于 7 天前 | 显示全部楼层

你这个是几行代码?  还有自动存的时候频繁触发的读取文本,不会卡吗?

36

主题

92

回帖

1358

积分

金牌会员

积分
1358
楼主 发表于 6 天前 | 显示全部楼层
cq5388309 发表于 2026-5-31 09:46
你这个是几行代码?  还有自动存的时候频繁触发的读取文本,不会卡吗?

自动存的时间间隔不需要太高,因为大腿小腿的时候也需要存一次

36

主题

92

回帖

1358

积分

金牌会员

积分
1358
楼主 发表于 6 天前 | 显示全部楼层
啦啦啦啦啦啦

0

主题

20

回帖

279

积分

中级会员

积分
279
发表于 4 天前 | 显示全部楼层
还不错,有点东西!支持你
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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