CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
入门夯实游戏功能996引擎

输入历史:上下键翻看历史发言

2026-09-27 23:30 作者:996 技术组 996引擎Lua教程传奇脚本入门夯实游戏功能996引擎

【游戏】
一、规则机制
线上事故:聊天窗口没有输入历史,玩家反复打同样的话组队喊话,加了历史又出现上下键在光标位置乱跳的怪象。输入历史立三条规矩:回车发送时非空发言压入历史栈,重复的相邻发言不重复入栈;上键从栈顶向旧翻,下键向新翻,翻过头顶回当前草稿;翻出的历史项可直接修改发送,发送后按新发言入栈。历史上限五十条,超出挤掉最旧的。
二、错误写法

lua
-- 错误:上下键直接回填不记游标,来回乱跳
function onUp()
    input:setText(history[hIdx])
end
function onDown()
    input:setText(history[hIdx + 1])
end

三、正确写法

lua
local history, hIdx = {}, 0
local draft = ""
local function onSend(text)
    if text == "" then return end
    if history[#history] ~= text then
        history[#history + 1] = text
        if #history > 50 then
            table.remove(history, 1)
        end
    end
    hIdx = #history + 1
end
local function onUp()
    if hIdx > 1 then
        if hIdx > #history then draft = input:getText() end
        hIdx = hIdx - 1
        input:setText(history[hIdx])
    end
end
local function onDown()
    if hIdx < #history then
        hIdx = hIdx + 1
        input:setText(history[hIdx])
    elseif hIdx == #history then
        hIdx = hIdx + 1
        input:setText(draft)
    end
end

四、边界处理
相邻重复发言不入栈;上翻首条后不再向上;下翻越过栈顶回到发送前草稿;历史上限五十条。
五、FAQ
问:翻出的历史能改吗?
答:能,修改后发送按新内容入栈。
问:草稿会丢吗?
答:上翻前自动留存草稿,下翻到头即回草稿。

作者履历与出处

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

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

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

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