发个公告全服公告 <$username>在<$map>地图度过雷劫,当前转生已达***次 使用不同颜色
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-06 19:13:49 |
👁️ 阅读: 0
嗨,我是Lua后端老师!
小仙,要发送一个带玩家名、地图名和动态转生次数的全服彩色公告,我们可以用 `sendcustommsg` 函数。它允许我们自定义消息内容、颜色和屏幕位置。
首先,我们需要获取玩家的转生次数。假设转生次数存储在玩家的自定义变量 `ZS_LEVEL` 中。然后,我们用字符串拼接的方式构造公告内容。
下面是一个完整的示例脚本,你可以在NPC对话脚本中调用,或者放在某个触发事件(比如升级、使用道具)里执行:
```lua
-- 发送全服彩色公告
function SendRebirthAnnounce(actor)
-- 获取玩家名字
local playerName = getplaydef(actor, "NAME") -- 获取玩家名字
-- 获取玩家当前地图名
local mapName = getmapinfo(actor, "NAME") -- 获取地图名
-- 获取玩家的转生次数,假设存储在自定义变量ZS_LEVEL中
local rebirthCount = getplayvar(actor, "ZS_LEVEL") or 0 -- 获取转生次数,默认为0
-- 构造公告消息
local announceMsg = playerName .. "在" .. mapName .. "地图度过雷劫,当前转生已达" .. rebirthCount .. "次"
-- 发送全服公告 (type=0 表示全服)
-- 使用红色字体(FColor=255),黄色背景(BColor=65535),屏幕居中位置(X=0, Y=100)
sendcustommsg(actor, 0, announceMsg, 255, 65535, 0, 100)
-- 可选:在控制台也打印一下,方便调试
release_print("全服公告已发送: " .. announceMsg)
end
-- 调用示例:假设这是从某个NPC脚本或触发器中调用
-- SendRebirthAnnounce(玩家ID)
```
**代码解释:**
1. **`getplaydef(actor, "NAME")`**: 获取玩家的角色名。
2. **`getmapinfo(actor, "NAME")`**: 获取玩家当前所在地图的名字。
3. **`getplayvar(actor, "ZS_LEVEL")`**: 从玩家的自定义变量中获取名为 `ZS_LEVEL` 的值,这个值代表转生次数。你需要确保在游戏中通过 `setplayvar` 正确设置了这个变量。
4. **`sendcustommsg`**: 这是核心的公告函数。
* `actor`: 触发这个函数的玩家对象(字符串ID)。
* `type=0`: 表示发送给**全服**所有玩家。
* `announceMsg`: 我们拼接好的公告文本。
* `FColor=255`: 字体颜色为**红色**(颜色值255)。
* `BColor=65535`: 背景颜色为**黄色**(颜色值65535)。
* `X=0, Y=100`: 公告在屏幕上的显示坐标(X=0居中,Y=100是纵向位置)。
**如何调整颜色?**
你可以修改 `FColor`(前景色/字体色)和 `BColor`(背景色)的值。常见的颜色值有:
* 255: 红色
* 65280: 绿色
* 65535: 黄色
* 16711680: 蓝色
* 16777215: 白色
* 0: 黑色
**重要提示:**
这个函数 `SendRebirthAnnounce` 需要在一个能获取到 `actor`(玩家ID)的上下文中被调用,比如在 `QF` 触发脚本里,或者NPC的对话脚本中。如果你直接运行,需要传入一个有效的玩家ID字符串。
如果你想让公告在玩家达成某个条件时自动触发,比如转生成功后,你需要在对应的 `QF` 触发段(例如某个升级或使用道具的触发)里调用这个函数。记得先在 `QF` 中检查是否有对应的接口事件哦!
试试看吧,小仙!如果有不明白的,随时可以再来问我,或者请教浮生梦尊师!
← 返回问答库