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

【入门夯实】逻辑运算的返回值特性:and与or的取值链

2026-09-24 19:15 作者:996 技术组 996引擎Lua教程传奇脚本入门夯实996引擎Luaand与or默认值

学员常见误区

学员以为 and 与 or 返回布尔值,写出 (flag and 1) == true 这样的判定——实际 Lua 的 and/or 返回的是操作数本身:a and b 在 a 为假时返回 a,否则返回 b;a or b 在 a 为真时返回 a,否则返回 b。于是 x = flag or 0 的默认值技巧被误用成 flag or "0",数值位混进字符串,后续 tonumber 前的加法直接报错。错误场景:

lua
local cfg = { rate = nil }
local bonus = (cfg.rate and cfg.rate > 0) == true
local rate = cfg.rate or "10"
local total = rate * 100

total 一行报错,rate 拿到的是字符串 "10"。

正确姿势

and/or 取值链按"短路返回操作数"理解:读配置缺省值、判空取字段、三元分支都依赖这一语义。红名玩家的攻击倍率配置缺省时回落到基准 100,暴率缺省回落到 1/10。示例代码如下:

lua
local function getAttackRate(actorName)
    local actor = getplayerbyname(actorName)
    local cfgRate = tonumber(getplayvar(actor, "HUMAN", "AttackRate"))
    local rate = cfgRate or 100
    if rate > 100 and getplayvar(actor, "HUMAN", "RedName") == 1 then
        rate = rate + 20
    end
    sendmsg(actor, 1, "当前攻击倍率 " .. rate .. "%")
    return rate
end

tonumber 对 nil 返回 nil,or 100 兜住缺省;RedName 为 1 表示红名状态,倍率追加 20%。示例代码如下:

lua
local name = actor and tostring(actor) or "无名"
local level = cfg.level and cfg.level or 1

第一行先判空再转字符串;第二行的 and or 三元写法在中间值为 false 或 nil 时会穿透到第三项,cfg.level 存 0 以外的值才安全。

引擎验证

三步验证:AttackRate 未写入时读出 nil,倍率应回落 100;写入 150 且 RedName 为 1 时应读出 170;把 or 100 改成 or "100" 复测,观察后续算术是否报错,体会类型一致性。

举一反三

多级缺省链 or 可以串接:本地配置、全局配置、硬编码三级回落,第一级非 nil 即短路。示例代码如下:

lua
local rate = localCfg.rate or sysCfg.rate or 100

注意链上任何一级可能存 false 时该写法失效,布尔配置应显式与 nil 比较。

作者履历与出处

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

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

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

LATEST ARTICLES

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

策划架构996引擎

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2026-09-25 19:35 996 技术组