把RTS的前哨站机制搬进行会玩法:公会在野外据点消耗资金与木材建前哨站,建成后据点周边的采集产出归公会所有,前哨站可被敌对公会攻占易主。资源圈的扩张与防守成为公会战争的长期目标。
建造入口校验据点空闲与公会资金,建造后写入据点归属。actor是字符串,转对象后扣资源登记。
local COST = { coin = 100000, wood = 50 }
local outpost = {}
function buildOutpost(actor, spotId)
local player = class(actor)
if outpost[spotId] ~= nil then
sendmsg(actor, 0, "该据点已有前哨站")
return
end
if player:checkitemw("金币", COST.coin) == false or player:checkitemw("木材", COST.wood) == false then
sendmsg(actor, 0, "需要金币10万与木材50单位")
return
end
player:takeitem("金币", COST.coin)
player:takeitem("木材", COST.wood)
outpost[spotId] = getplayvar(actor, 2, "GUILD_NAME")
sendcentermsg(class(actor):GetName() .. " 为公会建起了前哨站!")
end
前哨站归属公会成员在其辐射范围内采集产出加三成,攻占易主后加成随归属转移。
local function gatherBonus(actor, spotId)
local player = class(actor)
local owner = outpost[spotId]
if owner ~= nil and owner == getplayvar(actor, 2, "GUILD_NAME") then
giveitem(actor, "矿石", 13)
sendmsg(actor, 0, "前哨站辐射加成:本次采集+30%")
return
end
giveitem(actor, "矿石", 10)
end
建造、归属加成、易主转移三路径验证;据点表与归属名单的一致性抽查。上线后看野区据点的占领率与攻占战频次,前哨站的争夺热度是公会玩法的活跃指标。
outpost表按据点ID记录归属公会名,行会解散后据点变无主,归属要在行会状态回调里清空。加成的三成只对矿石生效,木材与药材不加成,产出加成的范围写进前哨站说明。checkitemw的双资源校验要连续执行,中途插入其他逻辑会扣了金币没扣木材。建造的据点坐标与采集范围的重叠区在地图编辑器预留,运行时找空地会摆放失败。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…