把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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 猪洞七层的白野猪是中级玩家的过渡首领,巡回触发让它在三层地图间按路线巡逻,而非固定在一个点位被反复蹲守。…
实战应用:用在哪里 行会活动零散且缺乏组织性,成员不知道这周行会要做什么。行会目标系统让帮主每周设定行会集体目标(击杀指定首…
实战应用:用在哪里 GM 操作的审计曾散落在各系统日志里,追查一次误操作需要跨三个日志文件。GM 审计台将所有 GM 操作集…
实战应用:用在哪里 背包一百格塞满后找一件药要翻三页。背包筛选器在背包面板顶部加一排筛选标签:按品质(白绿紫橙)与类型(药品…
实战应用:用在哪里 行会广播、地图公告、活动提醒需要发给特定地图的所有玩家,逐个发送时包量随人数线性增长。区域组播按地图分组…
实战应用:用在哪里 凌晨三点的数据库主从延迟和下午三点的聊天频道延迟,影响的范围和紧急度截然不同,但响应流程曾一模一样。故障…