帮我封装上面的函数 我需要拿到txt里面调用 当我点击一个按钮就会显示
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-18 23:54:56 |
👁️ 阅读: 4
我是lua后端老师!
小仙,你想封装一个函数在TXT里调用,点击按钮时显示信息对吧?我来帮你封装一个通用的函数,这样你可以在TXT脚本里方便地调用。
```lua
-- 获取玩家信息并显示的封装函数
-- @param actor string 玩家对象ID
-- @param infoType integer 信息类型(1-等级,2-职业,3-性别,4-地图名,5-坐标X,6-坐标Y,7-当前金币,834-最大HP,35-当前HP,36-最大MP,37-当前MP)
-- @return string 返回对应的信息字符串
function GetPlayerInfo(actor, infoType)
-- 先检查玩家对象是否存在
if not isplayer(actor) then
return "玩家不存在"
end
local info = getbaseinfo(actor, infoType)
-- 根据不同的信息类型返回对应的描述
if infoType == 1 then
return "等级:" .. tostring(info)
elseif infoType == 2 then
local jobs = {"无职业", "战士", "法师", "道士"}
return "职业:" .. (jobs[info + 1] or "未知")
elseif infoType == 3 then
return "性别:" .. (info == 0 and "男" or "女")
elseif infoType == 4 then
return "地图:" .. (info or "未知地图")
elseif infoType == 5 then
return "坐标X:" .. tostring(info)
elseif infoType == 6 then
return "坐标Y:" .. tostring(info)
elseif infoType == 7 then
return "金币:" .. tostring(info)
elseif infoType == 34 then
return "最大HP:" .. tostring(info)
elseif infoType == 35 then
return "当前HP:" .. tostring(info)
elseif infoType == 36 then
return "最大MP:" .. tostring(info)
elseif infoType == 37 then
return "当前MP:" .. tostring(info)
else
return "信息类型:" .. infoType .. " = " .. tostring(info)
end
end
-- 显示玩家综合信息的封装函数
-- @param actor string 玩家对象ID
function ShowPlayerAllInfo(actor)
if not isplayer(actor) then
say(actor, "玩家不存在")
return
end
local msg = "===== 玩家信息 =====\n"
-- 获取基本信息
msg = msg .. "等级:" .. tostring(getbaseinfo(actor, 1)) .. "\n"
msg = msg .. "职业:" .. tostring(getbaseinfo(actor, 2)) .. "\n"
msg = msg .. "性别:" .. (getbaseinfo(actor, 3) == 0 and "男" or "女") .. "\n"
msg = msg .. "地图:" .. (getbaseinfo(actor, 4) or "未知") .. "\n"
msg = msg .. "坐标:" .. tostring(getbaseinfo(actor, 5)) .. "," .. tostring(getbaseinfo(actor, 6)) .. "\n"
msg = msg .. "金币:" .. tostring(getbaseinfo(actor, 7)) .. "\n"
msg = msg .. "HP:" .. tostring(getbaseinfo(actor, 35)) .. "/" .. tostring(getbaseinfo(actor, 34)) .. "\n"
msg = msg .. "MP:" .. tostring(getbaseinfo(actor, 37)) .. "/" .. tostring(getbaseinfo(actor, 36)) .. "\n"
-- 获取背包空格数
local bagBlank = getbagblank(actor)
if bagBlank then
msg = msg .. "背包空格:" .. tostring(bagBlank) .. "\n"
end
-- 获取当前攻击模式
local attackMode = getattackmode(actor)
if attackMode then
local modes = {"全体攻击", "和平攻击", "夫妻攻击", "师徒攻击", "编组攻击", "行会攻击", "红名攻击", "国家攻击"}
msg = msg .. "攻击模式:" .. (modes[attackMode + 1] or "未知") .. "\n"
end
say(actor, msg)
end
-- 获取物品信息的封装函数
-- @param actor string 玩家对象ID
-- @param itemName string 物品名称
function ShowItemInfo(actor, itemName)
if not isplayer(actor) then
return
end
-- 获取物品基础信息
local itemId = getstditeminfo(itemName, 1) -- 获取物品ID
local itemNameFromId = getstditeminfo(itemId, 2) -- 通过ID获取物品名称
local itemStdMode = getstditeminfo(itemName, 3) -- 获取物品StdMode
local msg = "===== 物品信息 =====\n"
msg = msg .. "物品名称:" .. itemNameFromId .. "\n"
msg = msg .. "物品ID:" .. tostring(itemId) .. "\n"
msg = msg .. "物品类型:" .. tostring(itemStdMode) .. "\n"
-- 获取背包中该物品的数量
local itemCount = getbagitemcount(actor, itemName)
msg = msg .. "背包数量:" .. tostring(itemCount) .. "\n"
say(actor, msg)
end
-- 简单的按钮点击响应函数
-- @param actor string 玩家对象ID
-- @param buttonId integer 按钮ID
function OnButtonClick(actor, buttonId)
if buttonId == 1 then
-- 按钮1:显示玩家信息
ShowPlayerAllInfo(actor)
elseif buttonId == 2 then
-- 按钮2:显示等级
local level = GetPlayerInfo(actor, 1)
say(actor, level)
elseif buttonId == 3 then
-- 按钮3:显示坐标
local posX = GetPlayerInfo(actor, 5)
local posY = GetPlayerInfo(actor, 6)
say(actor, posX .. "\n" .. posY)
elseif buttonId == 4 then
-- 按钮4:显示背包空格
local bagBlank = getbagblank(actor)
if bagBlank then
say(actor, "背包剩余空格:" .. tostring(bagBlank))
end
else
say(actor, "未知按钮ID:" .. tostring(buttonId))
end
end
```
现在你可以在TXT脚本里这样调用:
```txt
[@main]
#IF
#ACT
; 显示所有玩家信息
callscriptex <$USERNAME> "ShowPlayerAllInfo" "<$USERNAME>"
; 或者只显示等级
callscriptex <$USERNAME> "GetPlayerInfo" "<$USERNAME>" "1"
; 或者响应按钮点击
callscriptex <$USERNAME> "OnButtonClick" "<$USERNAME>" "1"
```
小仙,这样封装后你就可以在TXT里方便地调用了。记得把这些函数放在你的Lua脚本文件里,然后在TXT里用`callscriptex`命令调用。有什么不明白的可以随时问我哦!
← 返回问答库