CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战996引擎喂养计划日程表

【进阶实战】喂养计划:宠物定时喂养的日程表封装

2026-09-24 11:46 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战996引擎Lua喂养计划日程表

业务场景

圣兽白虎一天喂三顿(8 点、14 点、20 点),手动喂养靠玩家记性,漏喂就闹脾气。喂养计划表:玩家预先配置每日三个时段,引擎定时器每小时对表,到点自动投喂兽粮——计划驱动替代记忆驱动,漏喂率归零。计划可增删,表驱动让"加一顿夜宵"只改一行配置。

核心实现

计划配置与整点对表:定时器每小时整点触发,命中计划时段即投喂。示例代码如下:

lua
local FEED_PLAN = { 8, 14, 20 }
local function onHourTick(actor)
    actor = getplayerbyname(actor)
    local h = tonumber(os.date("%H")) or 0
    for _, planHour in ipairs(FEED_PLAN) do
        if h == planHour then
            feedByPlan(actor)
        end
    end
end
local function feedByPlan(actor)
    local hunger = tonumber(getplayvar(actor, "HUMAN", "PetHunger")) or 100
    if hunger >= 95 then
        sendmsg(actor, 1, "白虎很饱,本餐自动跳过。")
        return
    end
    if not takeitem(actor, "兽粮", 1) then
        sendmsg(actor, 1, "兽粮不足,本餐投喂失败。")
        return
    end
    hunger = math.min(100, hunger + 40)
    setplayvar(actor, "HUMAN", "PetHunger", hunger, 1)
    sendmsg(actor, 1, "计划投喂完成,饱食度 " .. hunger .. "。")
end

计划增删:夜宵档 23 点追加进表,下一轮整点自动生效。示例代码如下:

lua
local function addPlanHour(actor, hour)
    actor = getplayerbyname(actor)
    if hour < 0 or hour > 23 then
        sendmsg(actor, 1, "时段必须是 0 到 23。")
        return
    end
    for _, h in ipairs(FEED_PLAN) do
        if h == hour then
            sendmsg(actor, 1, "该时段已在计划中。")
            return
        end
    end
    FEED_PLAN[#FEED_PLAN + 1] = hour
    table.sort(FEED_PLAN)
    sendmsg(actor, 1, "已加入 " .. hour .. " 点档,计划共 " .. #FEED_PLAN .. " 餐。")
end

接口拆解

FEED_PLAN 是时段配置表,整点定时器(ontimer 每小时档)触发 onHourTick 对表。os.date("%H") 取当前小时与计划比对,命中即投喂。takeitem(actor, itemname, qty) 布尔闸门,兽粮不足投喂失败但不破坏计划。setplayvar 第五参 1 落库,饱食度跨重启连续。math.min 把投喂后的饱食度钳在 100 以内。

踩坑记录

喂养计划踩过三个坑:一是定时器按 3600 秒间隔跑而不是按整点对齐,脚本重启后漂到半点触发,小时比对永远失配,驱动器要在启动时把首次触发对齐到下一个整点;二是投喂失败(兽粮不足)后不做任何标记,下个整点继续无声失败,连续两次失败要发一次提醒;三是计划表无上限,被加到 24 个整点全喂,兽粮消耗翻倍,单日计划上限 4 餐写死在增删入口。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

策划架构996引擎

【策划架构】沙城驻军:占领方的防务与轮值设计

设计初衷 攻城战结束后占领方只带走税收:胜利的行会拿城就走,沙巴克城内防务空虚——落败方三天后卷土重来,攻防变成无休止的拉锯…

2026-09-25 14:46 996 技术组
高级技巧996引擎

【高级技巧】洪水填充:连通区域的标记算法

底层原理 地图编辑器点一下刷掉相邻同色区域、扫雷点开一片空地——背后都是洪水填充:从起点出发,把所有满足条件且连通的位置逐个…

2026-09-25 14:46 996 技术组
策划架构996引擎

【策划架构】转会制度:玩家换帮的冷却与资产设计

设计初衷 玩家想换帮会被三重锁困住:帮贡清零、职位归零、人情作废——转会成本高到宁可忍受,涣散的帮会靠沉没成本锁人,兴旺的帮…

2026-09-25 14:46 996 技术组
策划架构996引擎

【策划架构】退役仪式:老玩家的告别与传承设计

设计初衷 老玩家退游总是静悄悄:某一天不再上线,好友几个月后才发现——十年的江湖没有告别,装备与荣誉随账号一起沉睡。退役仪式…

2026-09-25 14:46 996 技术组
高级技巧996引擎

【高级技巧】树形结构:parentId扁平表转树的封装

底层原理 行会职位、技能树、分类目录在存储层都是扁平表:每行带 id 与 parentId,运行时却需要树形递归展示。扁平转…

2026-09-25 14:46 996 技术组
高级技巧996引擎

【高级技巧】快速幂:指数运算的对数加速

底层原理 求 b 的 n 次方,逐个连乘是 O(n);快速幂把指数按二进制拆解——n 的每一个二进制位对应一次底数平方,位为…

2026-09-25 14:46 996 技术组