坐骑只能单人骑,带新人跑沃玛森林要对方自己追,半路跟丢;直接放开双人骑乘又会被拿来刷搬运收益。双人骑乘封装:骑手发起载人邀请、乘客确认上马;载人时限速、乘客战斗无效、每日次数上限——便利与约束并行,社交归社交、收益归收益。
载人邀请。示例代码如下:
local function inviteRide(actor, guestName)
local guest = getplayerbyname(guestName)
if not guest then
sendmsg(actor, 1, "对方不在线。")
return
end
setplayvar(guest, 0, "RideHost",
tostring(getplayvar(actor, 0, "ShowName") or ""), 0)
sendmsg(guest, 1, "收到载人邀请,确认后上马。")
end
限速与状态查询。示例代码如下:
local function rideSpeedPenalty(actor)
local guest = tostring(getplayvar(actor, 0, "RideGuest") or "")
if guest ~= "" then
return 30
end
return 0
end
inviteRide 把对方的名字字符串经 getplayerbyname 转成对象再写变量——名字不能直接当对象用,这是触发传名场景的固定动作。邀请只是半个动作:乘客侧拿到 RideHost 标记,确认后才进入载人状态(RideGuest 写到骑手侧)。rideSpeedPenalty 按"是否载人"返回 30% 的速度惩罚——载人不是免费的,速度是代价;两处标记都用 isSave=0 临时变量,下马或下线即清空,不留持久状态。
双人骑乘踩过三个坑:一是载人没有距离维持校验,乘客下马后瞬移跟回马背,加 3 格距离维持、超距自动下客;二是乘客在马背上开打导致攻击状态机混乱,定为载人期间乘客战斗无效(不可攻不可受),先下马再动手,规则简单才执行得动;三是恶意刷载人做搬运外快,加每日 5 次载人上限与载人期间货运收益为零的规则,双人骑乘回归带人跑图的社交本位。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、一行代码拆解:if price < WATCH[goods] then notify end —— 关注降价的…
【游戏】 一、业务场景:赛季结算发现一名玩家胜率 10% 却排在黄金段——历史计分只加不减,积分体系失效 3 个月;积分赛—…
【语法】 一、抛坑提问:3 对括号能组成多少种合法序列?答案是 5——卡塔兰数列:每一项等于前一项乘 2 倍的 2n 减 1…
【语法】 一、抛坑提问:不想用全局随机函数(怕多处共享种子互相干扰),可自实现一个独立随机序列——线性同余法三行核心:乘、加…
【游戏】 一、一行代码拆解:PENDING[outId] = {by = actor, at = now} —— 双人复核的…
【语法】 一、隐蔽陷阱:圆周率小数位背不出更多就不算理解随机模拟?用蒙地卡罗法随机撒点统计,10 万个点能把圆周率估到两位小…