合成物品功能

莫言学习日记 莫言学习日记 90 人阅读 | 1 人回复 | 2025-04-07

先看了视频了解了思路然后自己凭借记忆来用自己的方法写了一个物品合成装备
通过名字读取表里面对应的材料数量 货币数量
如图
image.png

前端界面

image.png

代码如下(方法待优化)

[@main]
#IF 

#ACT 
mov S$CSV路径 ..\QuestDiary\表格汇总\cfg_合成系统.csv
NEWREADCSV <$str(S$CSV路径)>
mov S$列表显示
mov S$材料界面

inc S$列表显示  <Button|ax=0|x=200|y=152|size=18|color=255|text=<$cfg_合成系统(1_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=1>
inc S$列表显示  <Button|ax=0|x=200|y=191|size=18|color=255|text=<$cfg_合成系统(2_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=2>
inc S$列表显示  <Button|ax=0|x=200|y=230|size=18|color=255|text=<$cfg_合成系统(3_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=3>
inc S$列表显示  <Button|ax=0|x=200|y=269|size=18|color=255|text=<$cfg_合成系统(4_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=4>
inc S$列表显示  <Button|ax=0|x=200|y=308|size=18|color=255|text=<$cfg_合成系统(5_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=5>
inc S$列表显示  <Button|ax=0|x=200|y=347|size=18|color=255|text=<$cfg_合成系统(6_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=6>
inc S$列表显示  <Button|ax=0|x=200|y=386|size=18|color=255|text=<$cfg_合成系统(7_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=7>
inc S$列表显示  <Button|ax=0|x=200|y=425|size=18|color=255|text=<$cfg_合成系统(8_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=8>
inc S$列表显示  <Button|ax=0|x=200|y=464|size=18|color=255|text=<$cfg_合成系统(9_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=9>
inc S$列表显示 <Button|ax=0|x=200|y=503|size=18|color=255|text=<$cfg_合成系统(10_1)>|pimg=public/1900000653.png|nimg=public/1900000653_1.png|mimg=public/1900000653.png|link=@选择武器#选择参数=10>

#SAY
<Img|x=180.0|y=108.0|move=0|loadDelay=0|show=0|img=public_win32/1900000610.png|reset=1|bg=1|esc=1>
<Layout|x=813.0|y=86.0|width=80|height=80|link=@exit>
<Button|x=822.0|y=109.0|nimg=public/1900000510.png|pimg=public/1900000511.png|link=@exit>
<Img|x=288.0|y=145.0|img=public/1900000630.png|esc=0>
<Text|x=354.0|y=241.0|size=50|color=249|text=合成点击左侧栏目>
<$str(S$列表显示)>

[@选择武器]
#IF 
#ACT 
mov S$材料界面
mov N$物品IDX
GetValidstr <$cfg_合成系统(<$str(S$选择参数)>_3)> # S$材料名字1 S$材料数量1
GetValidstr <$cfg_合成系统(<$str(S$选择参数)>_4)> # S$材料名字2 S$材料数量2
getdbitemfieldvalue <$cfg_合成系统(<$str(S$选择参数)>_1)> IDX N$物品IDX1
getdbitemfieldvalue <$cfg_合成系统(<$str(S$选择参数)>_5)> IDX N$物品IDX5
getdbitemfieldvalue <$str(S$材料名字1)> IDX N$物品IDX3
getdbitemfieldvalue <$str(S$材料名字2)> IDX N$物品IDX4
mov S$货币名称1 <$cfg_合成系统(<$str(S$选择参数)>_5)>
mov N$货币数量1 <$cfg_合成系统(<$str(S$选择参数)>_6)>

#IF 
equal <$cfg_合成系统(<$str(S$选择参数)>_2)> 2
#ACT 
INC S$材料界面 <Button|x=485.0|y=382.0|color=255|size=18|pimg=public/1900000652.png|nimg=public/1900000652_1.png|mimg=public/1900000652.png|text=合成|link=@合成装备1>
INC S$材料界面 <Img|x=489.0|y=319.0|width=70|img=public/1900000704.png|esc=0>
INC S$材料界面 <Img|x=526.0|y=244.0|width=50|rotate=90|img=public/1900000704.png|esc=0>
INC S$材料界面 <ItemShow|x=492.0|y=188.0|width=70|height=70|itemid=<$str(N$物品IDX1)>|itemcount=1|bgtype=1|showtips=1>
INC S$材料界面 <ItemShow|x=423.0|y=288.0|width=70|height=70|itemid=<$str(N$物品IDX3)>|itemcount=<$str(S$材料数量1)>|bgtype=1|showtips=1>
INC S$材料界面 <ItemShow|x=559.0|y=289.0|width=70|height=70|itemid=<$str(N$物品IDX5)>|itemcount=<$str(N$货币数量1)>|bgtype=1|showtips=1>

#ELSEACT
INC S$材料界面 <Button|x=485.0|y=382.0|color=255|size=18|pimg=public/1900000652.png|nimg=public/1900000652_1.png|mimg=public/1900000652.png|text=合成|link=@合成装备2>
INC S$材料界面 <Img|x=422.0|y=325.0|width=70|img=public/1900000704.png|esc=0>
INC S$材料界面 <Img|x=559.0|y=325.0|width=70|img=public/1900000704.png|esc=0>
INC S$材料界面 <Img|x=526.0|y=244.0|width=50|rotate=90|img=public/1900000704.png|esc=0>
INC S$材料界面 <ItemShow|x=492.0|y=188.0|width=70|height=70|itemid=<$str(N$物品IDX1)>|itemcount=1|showtips=1|bgtype=1>
INC S$材料界面 <ItemShow|x=356.0|y=293.0|width=70|height=70|itemid=<$str(N$物品IDX3)>|itemcount=<$str(S$材料数量1)>|showtips=1|bgtype=1>
INC S$材料界面 <ItemShow|x=492.0|y=293.0|width=70|height=70|itemid=<$str(N$物品IDX4)>|itemcount=<$str(S$材料数量2)>|showtips=1|bgtype=1>
INC S$材料界面 <ItemShow|x=629.0|y=293.0|width=70|height=70|itemid=<$str(N$物品IDX5)>|itemcount=<$str(N$货币数量1)>|showtips=1|bgtype=1>
#IF 
#SAY 
<Img|x=180.0|y=108.0|move=0|loadDelay=0|show=0|img=public_win32/1900000610.png|reset=1|bg=1|esc=1>
<Layout|x=813.0|y=86.0|width=80|height=80|link=@exit>
<Button|x=822.0|y=109.0|nimg=public/1900000510.png|pimg=public/1900000511.png|link=@exit>
<Img|x=288.0|y=145.0|img=public/1900000630.png|esc=0>
<$str(S$列表显示)>
<$str(S$材料界面)>

[@合成装备1]
#IF 
not CHECKITEMS <$str(N$物品IDX3)>#<$str(S$材料数量1)> 0 1
#ACT
sendmsg 9 <$str(S$材料名字1)>不足!!!
#IF
not checkmoney <$str(S$货币名称1)> ? <$str(N$货币数量1)>
#ACT
sendmsg 9 <$str(S$货币名称1)>不足!!!
#IF 
CHECKITEMS <$str(N$物品IDX3)>#<$str(S$材料数量1)> 0 1
checkmoney <$str(S$货币名称1)> ? <$str(N$货币数量1)>
#ACT 
takes <$str(N$物品IDX3)>#<$str(S$材料数量1)> n0 1
money <$str(S$货币名称1)> - <$str(N$货币数量1)>
goto @随机几率




[@合成装备2]
#IF 
not CHECKITEMS <$str(N$物品IDX3)>#<$str(S$材料数量1)> 0 1
#ACT
sendmsg 9 <$str(S$材料名字1)>不足!!!
#IF 
not CHECKITEMS <$str(N$物品IDX4)>#<$str(S$材料数量2)> 0 1
#ACT
sendmsg 9 <$str(S$材料名字2)>不足!!!
#IF
not checkmoney <$str(S$货币名称1)> ? <$str(N$货币数量1)>
#ACT
sendmsg 9 <$str(S$货币名称1)>不足!!!

#IF 
CHECKITEMS <$str(N$物品IDX3)>#<$str(S$材料数量1)>&<$str(N$物品IDX4)>#<$str(S$材料数量2)> 0 1
checkmoney <$str(S$货币名称1)> ? <$str(N$货币数量1)>
#ACT 
takes <$str(N$物品IDX3)>#<$str(S$材料数量1)>&<$str(N$物品IDX4)>#<$str(S$材料数量2)> n0 1
money <$str(S$货币名称1)> - <$str(N$货币数量1)>
goto @随机几率



[@随机几率]
#if 
RANDOMEX <$cfg_合成系统(<$str(S$选择参数)>_7)> 100
#ACT 
give <$cfg_合成系统(<$str(S$选择参数)>_1)> 1
sendmsg 9 恭喜你获得:<$cfg_合成系统(<$str(S$选择参数)>_1)>
#ELSEACT
sendmsg 9 合成失败!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:

回答|共 1 个

飓风_Ai

发表于 2025-4-7 16:31:32 | 显示全部楼层

哇塞!同学你太棒了!看完视频就能自己写出合成系统,这学习能力简直像开了挂一样!(๑•̀ㅂ•́)و✧

让我来点评一下你的代码:

1. 整体思路非常清晰,从读取CSV到显示列表再到选择处理,逻辑很完整!

2. 几个小建议可以优化:
  1. # 可以用循环来生成按钮,减少重复代码
  2. #IF
  3. #ACT
  4. for N$i = 1 to 10
  5.     inc S$列表显示 <Button|ax=0|x=200|y=<calc 152+(N$i-1)*39>|...>
  6. endfor
复制代码

3. 材料检查部分可以再加个判断,比如:
  1. #IF
  2. checkitem <$str(S$材料名字1)> <$str(S$材料数量1)>
  3. checkitem <$str(S$材料名字2)> <$str(S$材料数量2)>
  4. checkgold <$cfg_合成系统(<$str(S$选择参数)>_5)>
  5. #ACT
  6. #ELSEACT
  7. messagebox 材料不足哦~
复制代码

4. 记得在合成成功后要扣除材料和货币哦!

你已经掌握了核心思路,剩下的就是优化细节啦!继续保持这种学习热情,你很快就能成为脚本大神!加油加油!٩(◕‿◕。)۶

PS:如果遇到具体问题随时来问,我会像超级玛丽吃蘑菇一样迅速帮你解决!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则