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

【入门夯实】字符串查找的起点参数:find的init与plain双参数

2026-09-24 19:15 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本入门夯实996引擎Luastring.find起点参数

学员常见误区

string.find 默认从头匹配,学员在"找第二次出现"时写成循环里反复调用 find(s, sub),每次都命中同一位置死循环。另一个误区是名字含 % . ( 等字符时没关模式匹配,find 把名字当 pattern 解析直接报错。错误场景:

lua
local record = "烈火剑法+7,裁决之杖+5,烈火剑法+3"
local pos = string.find(record, "烈火剑法")
local pos2 = string.find(record, "烈火剑法")

pos2 与 pos 相同,永远找不到第二把烈火剑法。

正确姿势

第三参 init 指定查找起点:第 1 次命中位置加 1 作为第 2 次的起点;第四参 true 关闭模式匹配做纯文本查找。示例代码如下:

lua
local record = "烈火剑法+7,裁决之杖+5,烈火剑法+3"
local function findAll(s, sub)
    local hits = {}
    local from = 1
    while from <= #s do
        local p = string.find(s, sub, from, true)
        if not p then
            break
        end
        hits[#hits + 1] = p
        from = p + #sub
    end
    return hits
end
local hits = findAll(record, "烈火剑法")

两点说明:起点必须跳过整个命中串(p + #sub),否则同一位置重复命中;纯文本查找模式下 +7 这类后缀不会被当模式解析。示例代码如下:

lua
local p1 = string.find(record, "烈火剑法")
local p2 = string.find(record, "烈火剑法", p1 + 4, true)

p2 指向第 2 处烈火剑法,位置 15 起。

引擎验证

三步验证:把强化记录串换成 200 字长串,findAll 应返回 2 个位置;把第二个起点写死为 1,验证得到重复位置的错误结果;把查找词换成含 + 号的 "裁决之杖+5",plain 为 true 时正常命中,去掉 true 时报 malformed pattern。

举一反三

反向需求"从指定位置向前找"没有现成接口,思路是把串反转后用同样的起点参数查找,再把位置换算回原串坐标。示例代码如下:

lua
local rev = string.reverse(record)
local pr = string.find(rev, "烈火剑法", 1, true)
local origin = #record - pr - #"烈火剑法" + 3

学员可代入数据验证换算是否正确。

作者履历与出处

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

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

最新技术文章 · 实战干货

LATEST ARTICLES

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

策划架构996引擎

【策划架构】抚恤金:阵亡抚恤的发放标准设计

设计初衷 攻城战阵亡只有损失:装备掉落、耐久磨损——牺牲没有补偿,行会的伤亡成本全由个人承担,指挥不敢打硬仗。抚恤金设计:攻…

2026-09-25 19:35 996 技术组 · 0 阅读
策划架构996引擎

【策划架构】协防系统:盟友驻防的调度与分账设计

设计初衷 攻城战一触即发,盟友帮会口头答应协防却总是人没到:跨帮支援没有调度与结算机制,人情协防全凭自觉。协防系统设计:盟约…

2026-09-25 19:35 996 技术组 · 0 阅读
高级技巧996引擎

【高级技巧】享元模式:重复数据的共享封装

底层原理 一张地图上 500 棵同款树,每棵存完整的模型数据——重复数据存 500 份。享元模式把不变的部分(模型、贴图)抽…

2026-09-25 19:35 996 技术组 · 0 阅读
高级技巧996引擎

【高级技巧】桥接模式:两个维度的独立扩展封装

底层原理 技能系统按"元素×形态"组合:火球冰球乘单体群攻——每加一种元素或一种形态,组合数量乘性增长(4 元素 3 形态 …

2026-09-25 19:35 996 技术组 · 0 阅读
策划架构996引擎

【策划架构】期货系统:稀缺物资的期货交易设计

设计初衷 稀缺产出(强化石、晋级材料)的供需错位:产出季价格崩盘、断供季价格飞天——剧烈波动伤害生产者与消费者两端。期货交易…

2026-09-25 19:35 996 技术组 · 0 阅读
进阶实战996引擎

【进阶实战】傀儡机关:巡逻守卫的三态行为封装

业务场景 驻地巡逻 AI 只会沿固定路线走:玩家摸清路线后绕行如入无人之境。傀儡机关封装:机关傀儡按"巡逻、警戒、袭扰"三态…

2026-09-25 19:35 996 技术组 · 0 阅读