想约好友去沃玛森林却不知道他在哪张图,逐个私聊问位置效率极低;直接开放坐标又泄露行踪、被人蹲点拦截。好友寻踪封装:查询精度只到"地图名"不到坐标,对方随时可以关闭行踪可见,离线与隐藏统一返回"不可知"——位置是半开放的社交信息,不是监控。
行踪开关。示例代码如下:
local function setTraceable(actor, on)
setplayvar(actor, 1, "Traceable", on and 1 or 0, 1)
sendmsg(actor, 1, on and "行踪已对好友可见。" or "行踪已隐藏。")
end
地图查询。示例代码如下:
local function findFriend(actor, friendName)
local friend = getplayerbyname(friendName)
local visible = false
local mapName = "未知"
if friend then
if (tonumber(getplayvar(friend, 1, "Traceable")) or 1) == 1 then
visible = true
mapName = tostring(getplayvar(friend, 1, "CurMap") or "未知")
end
end
if not visible then
sendmsg(actor, 1, friendName .. " 的行踪不可知。")
return
end
sendmsg(actor, 1, friendName .. " 当前在 " .. mapName)
end
setTraceable 是行踪总开关(isSave=1 持久保存,默认可见,首次登录提示一次知情权);findFriend 把名字经 getplayerbyname 转成对象,先读对方的 Traceable 开关、再读 CurMap 地图名——只有地图名没有坐标,组队够用、蹲点无用。离线与主动隐藏统一返回"行踪不可知",不泄露在线状态——隐私的颗粒度做在返回值上。
好友寻踪踩过三个坑:一是初版直接返回坐标(x,y),被用于蹲点拦截与抢怪,降级为只到地图名后纠纷消失;二是离线好友返回"未知地图"却顺带暴露了离线状态,把离线与隐藏统一成"行踪不可知",在线状态也属隐私;三是默认值反复摇摆(默认可见还是隐藏),定为默认可见加首次登录一次性提示,兼顾便利与知情。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、一行代码拆解:hp = 10000 + teamN 5000 —— 运镖劫镖的全部骨架:镖车按护送人数增强血量…
【语法】 一、隐蔽陷阱:逐个插入建堆要 n 次上浮;自底向上从末个非叶子节点倒序下沉,一遍线性把乱序表调成合法堆。 二、底层…
【语法】 一、抛坑提问:一个数等于它全部真因子之和就叫真因子和数,6 等于 1 加 2 加 3——判定只需枚举到平方根配对求…
【游戏】 一、一行代码拆解:n = math.floor(have / 5) —— 批量合成的全部骨架:5 个碎片合成 1 …
【游戏】 一、一行代码拆解:if INSURED[actor] then 赔付 end —— 装备保险的全部骨架:死亡掉落判…
【语法】 一、隐蔽陷阱:找第 K 小元素先全量排序再取下标,n log n 浪费在无关排序上;快速选择借用快排分区——每轮只…