lua后端装备合成练习(txt做面板)
<pre><code class="language----config">local config = {= {
name = "勋章≮沃玛≯",
huobi1 = "金币",
jiage1 = 1000000,
cailiao1 = "青铜勋章",
shuliang1 = "2",
cailiao2 = "赤月金矿",
shuliang2 = "4"
},
= {
name = "勋章≮祖玛≯",
huobi1 = "金币",
jiage1 = 2000000,
cailiao1 = "勋章≮沃玛≯",
shuliang1 = "3",
cailiao2 = "赤月金矿",
shuliang2 = "4"
},
= {
name = "勋章≮赤月≯",
huobi1 = "金币",
jiage1 = 3000000,
cailiao1 = "勋章≮祖玛≯",
shuliang1 = "4",
cailiao2 = "赤月金矿",
shuliang2 = "4"
},
= {
name = "勋章≮荣耀≯",
huobi1 = "金币",
jiage1 = 3000000,
cailiao1 = "勋章≮赤月≯",
shuliang1 = "5",
cailiao2 = "赤月金矿",
shuliang2 = "4"
}
}
return config
</code></pre>
<pre><code>local _cfg_npc_3= cfg_npc_3
local incdexnum = #_cfg_npc_3
local index = {
_cfg_npc_3.name,
_cfg_npc_3.name,
_cfg_npc_3.name,
_cfg_npc_3.name
}
function npc_3(play,npcid,p1,p2,p3)
local p1 = tonumber(p1) or 1
--循环写入索引按钮内容
local rqid = {}
local str = ""
for i = 1 , incdexnum do -- for循环循环次数为索引循环定位结束所在行-1
local k_b = "zx"..i -- 设置选中框子ID
str = str.."<Button|id="..i.."|children={"..k_b.."}|x=0|y=0|color=7|size=13|outline=2|nimg=ly/an2.png|text="..index.."|link=@npc_3,nil,"..i..">" --循环写入索引按钮
table.insert(rqid,i) --插入容器id
end
local rq = table.concat(rqid,",") -- 拼接容器id
local msg = [[
<Img|x=247.0|y=54.0|reset=1|show=0|bg=1|loadDelay=0|move=1|esc=1|img=ly/a6.png>
<Layout|x=825.0|y=71.0|width=80|height=80|link=@exit>
<Button|x=826.0|y=71.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
<Img|x=282.0|y=107.0|img=ly/a14.png|esc=0>
<Text|x=517.0|y=78.0|size=18|color=255|text=特殊合成>
]] -- 面板内容
.."<ListView|children={"..rq.."}|x=282.0|y=107.0|width=94|height=343|color=>"
.."<ItemShow|x=463.0|y=135.0|width=70|height=70|itemcount=".._cfg_npc_3.jiage1.."|bgtype=1|showtips=1|itemname=".._cfg_npc_3.huobi1..">"
.."<ItemShow|x=524.0|y=135.0|width=70|height=70|itemcount=".._cfg_npc_3.shuliang1.."|bgtype=1|showtips=1|itemname=".._cfg_npc_3.cailiao1..">"
.."<ItemShow|x=586.0|y=135.0|width=70|height=70|itemcount=".._cfg_npc_3.shuliang2.."|bgtype=1|showtips=1|itemname=".._cfg_npc_3.cailiao2..">"
.."<ItemShow|x=531.0|y=239.0|width=70|height=70|itemcount=1|bgtype=1|showtips=1|itemname=".._cfg_npc_3.name..">"
.."<Button|x=533.0|y=383.0|color=100|size=16|outline=2|nimg=public/00000361.png|text=确定合成|link=@make_xunzhang,nil,"..p1..">"
.."<Button|id=zx"..p1.."|x=0|y=0|color=100|size=14|outline=2|nimg=ly/an1.png|text="..index..">"
local msg = msg .. str
say(play,msg)
function make_xunzhang(play,npcid,p1) --合成按钮函数
local p1 = tonumber(p1)
--将csv中的合成数据取出后存入变量
local consume1 = tonumber(cq.getmoney(play,1)) -- 获取玩家金币数量
if consume1 < tonumber(_cfg_npc_3.jiage1)then -- 检测玩家金币是否不足,如果不足反馈信息提示
cq.sendmsg(play,6,"f",_cfg_npc_3.huobi1.."不足".._cfg_npc_3.jiage1.."个,无法合成".._cfg_npc_3.name)
return
end
if cq.getitem(play,_cfg_npc_3.cailiao1) < tonumber(_cfg_npc_3.shuliang1) then -- 检测玩家材料1数量是否不足,如果不足反馈信息提示
cq.sendmsg(play,6,"f",_cfg_npc_3.cailiao1.."不足".._cfg_npc_3.shuliang1.."个,无法合成".._cfg_npc_3.name)
return
end
if cq.getitem(play,_cfg_npc_3.cailiao2) < tonumber(_cfg_npc_3.shuliang2) then -- 检测玩家材料1数量是否不足,如果不足反馈信息提示
cq.sendmsg(play,6,"f",_cfg_npc_3.cailiao2.."不足".._cfg_npc_3.shuliang2.."个,无法合成".._cfg_npc_3.name)
return
end
cq.money(play,1,"-",_cfg_npc_3.jiage1,"金币扣除".._cfg_npc_3.jiage1,true,true) --扣除货币
cq.take(play,_cfg_npc_3.cailiao1,_cfg_npc_3.shuliang1) -- 扣除材料1
cq.take(play,_cfg_npc_3.cailiao2,_cfg_npc_3.shuliang2) -- 扣除材料2
cq.give(play,_cfg_npc_3.name) -- 给与合成目标物品
cq.sendmsg(play,6,"t","合成完毕") -- 提示合成成功信息
end
end
</code></pre>
哈哈,看来你在做装备合成系统啊!这个勋章合成写得不错,不过我发现几个小问题需要优化一下,让我来帮你改进:
1. 首先有个小错误,你的index变量写错了,应该是index而不是index
2. 按钮循环部分可以优化得更简洁
-- 修改后的循环部分
local str = ""
for i = 1, incdexnum do
local selected = (i == p1) and "ly/an1.png" or "ly/an2.png"
str = str.."<Button|id="..i.."|x=0|y=0|color=7|size=13|outline=2|nimg="..selected.."|text="..index.."|link=@npc_3,nil,"..i..">"
table.insert(rqid,i)
end
3. 合成函数部分建议添加材料检查逻辑:
function make_xunzhang(play,npcid,p1)
local cfg = _cfg_npc_3
-- 检查金币
if play:金币不足(cfg.jiage1) then
play:提示("金币不足!")
return
end
-- 检查材料1
if play:物品不足(cfg.cailiao1, cfg.shuliang1) then
play:提示(string.format("%s不足%d个!", cfg.cailiao1, cfg.shuliang1))
return
end
-- 检查材料2
if play:物品不足(cfg.cailiao2, cfg.shuliang2) then
play:提示(string.format("%s不足%d个!", cfg.cailiao2, cfg.shuliang2))
return
end
-- 扣除材料
play:扣除金币(cfg.jiage1)
play:扣除物品(cfg.cailiao1, cfg.shuliang1)
play:扣除物品(cfg.cailiao2, cfg.shuliang2)
-- 给予成品
play:给予物品(cfg.name, 1)
play:提示("合成成功!获得"..cfg.name)
end
加油啊少年!你的代码已经写得很棒了,只是需要一些细节优化。记住,每个优秀的GM都是从这样的练习开始的!等你把这个合成系统完善好,就可以去写更复杂的系统了,比如装备强化、宝石镶嵌之类的!我看好你哦!
PS:记得测试的时候多准备几组材料,免得像我当年一样,测试时材料不够,被玩家笑话说"GM也穷" 😂
页:
[1]