帮我写一个挖矿脚本
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-17 18:13:19 |
👁️ 阅读: 6
我是lua后端老师!
小仙,你好!想要一个挖矿脚本是吧?没问题,咱们这就来写一个简单又实用的挖矿脚本,用上咱们引擎里的进度条功能,体验感拉满!
首先,咱们得在 `QFunction-0.lua` 文件里,为聊天触发写个入口。比如,当玩家在聊天框输入“挖矿”时,就启动我们的脚本。
```lua
-- 在 QFunction-0.lua 文件中添加聊天触发
function triggerchat(actor, sMsg, chat)
-- 检查玩家是否说了“挖矿”
if sMsg == "挖矿" then
-- 调用挖矿主函数
startMining(actor)
-- 阻止这句话发到聊天频道
return 1
end
end
```
接下来,咱们写核心的挖矿函数。这里会用到一个非常强大的函数 `showprogressbardlg`,它能显示一个进度条,模拟采集过程。
```lua
-- 挖矿主函数
function startMining(actor) -- 注解:开始挖矿
-- 先给玩家一个提示
sendmsg(actor, "你开始挥舞鹤嘴锄,努力挖矿中...", 1)
-- 调用进度条函数
-- 参数说明:actor(玩家对象), 5(进度条时间5秒), "onMiningSuccess"(成功后执行的函数名),
-- "挖矿中..."(进度条上显示的文字), 1(可以中断), "onMiningInterrupt"(中断后执行的函数名)
showprogressbardlg(actor, 5, "onMiningSuccess", "挖矿中...", 1, "onMiningInterrupt")
end
-- 挖矿成功回调函数
function onMiningSuccess(actor) -- 注解:挖矿成功
-- 随机决定是否挖到矿,这里简单用个随机数
local luck = math.random(1, 100)
if luck > 30 then -- 70%的几率成功
-- 给予玩家矿石,这里假设矿石的StdMode是2,Idx是1000
giveitem(actor, "黑铁矿石", 1)
sendmsg(actor, "恭喜你挖到了一块[黑铁矿石]!", 1)
-- 可以在这里设置物品来源,记录是挖矿得来的
-- 首先获取刚刚给予的物品对象(这里简化处理,实际可能需要遍历背包最后一个物品)
-- 我们用一个假设的函数getLastGivenItem来示意,实际引擎可能需要其他方式获取物品对象
-- local itemObj = getLastGivenItem(actor)
-- if itemObj then
-- local sourceInfo = {
-- map = getmapinfo(actor, 1), -- 获取当前地图名
-- source = 7, -- 7代表挖矿来源
-- player = getplaydef(actor, "名字"), -- 获取玩家名
-- time = os.date("%Y-%m-%d %H:%M:%S") -- 当前时间
-- }
-- -- 将table转为json字符串,需要用到tbl2json函数(如果引擎提供)
-- local jsonStr = tbl2json(sourceInfo)
-- -- 设置物品来源(需要实际物品对象,此处为示意)
-- -- setthrowitemly2(actor, itemObj, jsonStr)
-- end
else
sendmsg(actor, "很遗憾,这次什么都没有挖到。", 1)
end
-- 挖完后可以提示继续
sendmsg(actor, "输入“挖矿”可以继续挖。", 1)
end
-- 挖矿中断回调函数
function onMiningInterrupt(actor) -- 注解:挖矿被中断
sendmsg(actor, "你停止了挖矿。", 1)
end
```
**脚本要点解析:**
1. **触发入口**:通过 `triggerchat` 监听玩家输入的“挖矿”命令。
2. **进度条模拟**:`showprogressbardlg` 是关键,它创建了一个可视化的等待过程,参数 `canstop` 设为 `1` 允许玩家移动中断,更真实。
3. **成功奖励**:在 `onMiningSuccess` 函数里,用 `giveitem` 给玩家发放奖励,并用 `sendmsg` 发送提示。
4. **物品来源(高级)**:注释部分展示了如何用 `setthrowitemly2` 记录物品是“挖矿”得来的,这需要你将物品对象和来源信息的json字符串传给它。来源类型 `source` 填 `7` 就代表挖矿。
5. **随机性**:使用 `math.random` 来增加挖矿的随机乐趣。
**使用方式:**
玩家只需要在游戏聊天框输入“挖矿”两个字,就会开始一个5秒的挖矿进度条。如果成功,就有几率获得“黑铁矿石”。
小仙,这个脚本框架就搭好了!你可以根据自己服的需求,修改挖矿时间、奖励物品、成功概率,甚至可以增加消耗“体力”或“鹤嘴锄”耐久度的功能。哪里不明白,随时再来问我,或者请教我师傅浮生梦哦!
← 返回问答库