拜师收徒拉新有效果,但白嫖奖励的假师徒也跟着来。出师考核把关系质量量化:等级差三十级起步、徒弟通过十题玩法考核,双方才拿满出师奖励,社交关系从挂名走向真实陪伴。
拜师校验双方等级差至少三十级、师父在收名额内、徒弟未在师门。actor是字符串,转对象后读双方等级。
function npc_baishi(actor, masterName)
local player = class(actor)
local master = getplayerbyname(masterName)
if master == nil or not isplayer(master) then
sendmsg(actor, 0, "师父不在线,无法拜师")
return
end
local mlv = getbaseinfo(master, 6)
local plv = getbaseinfo(actor, 6)
if mlv - plv < 30 then
sendmsg(actor, 0, "师父需高出30级方可收徒")
return
end
if tonumber(getplayvar(master, 2, "MENTEE_CNT") or "0") >= 3 then
sendmsg(actor, 0, "该玩家名下徒弟已满3人")
return
end
setplayvar(master, "HUMAN", "MENTEE_CNT", (tonumber(getplayvar(master, 2, "MENTEE_CNT") or "0")) + 1, 1)
setplayvar(actor, "HUMAN", "MASTER_NAME", masterName, 1)
end
徒弟满四十级可发起出师,十道玩法常识题答对八道通过,奖励双方各自的出师礼包。
function chushiExam(actor, score)
local masterName = getplayvar(actor, 2, "MASTER_NAME")
if score >= 8 then
sendmail(actor, 0, "出师奖励", "考核通过,师徒缘满", "金币|100000;出师称号卷轴|1")
sendmail(masterName, 0, "徒弟出师", "徒弟考核通过,获得谢师礼", "金币|200000")
setplayvar(masterName and masterName or "", 2, "MENTEE_CNT", (tonumber(getplayvar(masterName, 2, "MENTEE_CNT") or "1")) - 1, 1)
else
sendmsg(actor, 0, "十题答对8题才算出师,本次答对" .. score .. "题")
end
end
测试覆盖等级差边界、名额上限、考核通过与否三条路径。上线后盯出师率,低于四成说明考核过难或师徒互动不足,问卷跟进真实原因。
MENTEE_CNT在徒弟删除角色后残留,名额被占死,每月跑一次名额对账脚本清理失效关系。getplayvar按名字读他人变量在部分版本受限,读不到时按失败处理并提示,别默认为零继续走。考核题库要与玩法同步更新,玩法改版题目不更新,玩家答对旧答案反被判错。谢师礼的二十万金币高于徒弟奖励是刻意设计,刺激师父主动带新,数值再调前先看两周数据。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 悬赏捕杀把玩家之间的恩怨变成可托付的系统行为:仇家难以亲自复仇时,花费金条发布悬赏,全服玩家接单击杀目标…
实战应用:用在哪里 策划改表是日常动作,漏填字段、引用了不存在的编号、数值越界这三类问题占了配表故障的绝大多数。等玩家报错再…
实战应用:用在哪里 行会擂台给中小行会提供了固定的对抗出口:挑战方击败守擂方后接管擂台,连胜次数决定每日结算奖励档位。接口层…
实战应用:用在哪里 世界首领战里玩家最关心的是伤害前十名:榜单要求随时插入、随时能按序取出,每来一条伤害记录都重新排序一次太…
实战应用:用在哪里 百人同屏的攻城战里,把每条移动、施法消息广播给全地图是最常见的性能失误。九宫格视野的做法是把地图切成等大…
实战应用:用在哪里 留言板、行会招募语、邮件标题这类字段会被玩家自由填写,并写入角色变量或转发给持久层。拼接式的写法一旦遇到…