Skip to content

车辆 – 仪表输入

汉化标题: 车辆 – 仪表输入
原文标题: Cars – Instruments inputs
汉化更新时间: 2025-11-12 16:32:15 GMT+08:00
英文原文最新更新时间: 2022-06-13T01:18:53+03:00

v0.1.25-preview183以后,引入了一种更完善的仪表配置方式;核心思路是维护一份输入列表,供数字/模拟仪表(含条件文本)、动画甚至发光材质共用,并提供阈值或模拟模式切换。

旧版扩展仪表的代码也已重写,以免三个不同系统并行运行,同时尽量保持兼容;若你发现仍有异常,请告知。

语法

为了兼顾旧配置,选择输入的方式在不同场景下略有区别,例如:

注:“...” 表示某种 INPUT 类型占位符

ini
; 模拟仪表
; 新方法:
[ANALOG_INDICATOR_...]
INPUT = AMBIENT_TEMP

; 旧式写法(仅用于时/分/秒,保证指针钟表可用)
[HOUR_INDICATOR]
...

; 数字仪表
; 通过 digital_instruments.ini 设置
[ITEM_0]
; 数字仪表条目
TYPE_EXT = DRIFT_POINTS
; 绑定漂移得分

; 旧式写法(可用于任意输入)
[DI_DRIFT_POINTS]
; 每个扩展项目
DIGITAL_ITEM = 0
; 指向第 0 个数字项

; 数字仪表(条件)
; 通过 digital_instruments.ini 设置
[ITEM_0]
TYPE_EXT = CONDITION_TEXT
INPUT = TURBO_WASTEGATE

; 自定义动画
; 新方法
[ANIMATION_...]
INPUT = LOWBEAM

; 旧式写法(同样支持任意输入)
[ANIMATION_...]
BIND_TO_EXTRA_A = 1


; 发光材质
; 新方法
[EMISSIVE_...]
INPUT = BODY_DAMAGE


; 旧式写法(也支持任意输入)
[EMISSIVE_LIGHT]
...
...

输入参数

如上例所示,各类对象在其段落内都能自定义输入,几乎所有所需的处理都可在这里完成。

ini
[ANIMATION_...]
INPUT = TYRE_PRESSURE
INPUT_SELECTOR = THIRD

INPUT_ADD = 0.0
INPUT_MULT = 1.0
INPUT_MIN = 10.0
INPUT_MAX = 40.0
INPUT_MOD = 5.0
INPUT_LUT = (| 0=0 | 10=20 |)

INPUT_LAG_UP = 0.9
INPUT_LAG_DOWN = 0.95

INPUT_ROUND = 2.0
INPUT_ROUND_MODE = FLOORING

INPUT_STALLED_VALUE = 7.5
INPUT_STALLED_LAG = 0.85

[EMISSIVE_...]
INPUT = BODY_DAMAGE
INPUT_THRESHOLD = 20
INPUT_THRESHOLD_INVERSE = 1
INPUT_DEBUG = 30
  • INPUT:定义输入类型,但在部分模式下写法不同,可参阅“语法”章节。
  • INPUT_SELECTOR:决定如何处理多值输入(如轮胎气压或车体损伤都包含四个值)。可选值:
    • MIN(或 MINIMUM):取最小值;
    • MAX(或 MAXIMUM):取最大值;
    • SUM(或 TOTAL):求和;
    • MULT(或 MULTIPLIED):连乘;
    • AVG(或 AVERAGE):求平均;
    • LEN(或 LENGTH):计算平方和再开方,例如总 G 值;
    • X(或 FIRST):取第一个值;
    • Y(或 SECOND):取第二个值;
    • Z(或 THIRD):取第三个值;
    • W(或 FOURTH):取第四个值;
    • 任意数字 N:取第 N 个值。
  • INPUT_MULT:将值乘以某个系数;
  • INPUT_ADD:对值加上偏移
  • INPUT_MININPUT_MAX:若设置则对原值进行限幅,默认范围为 -∞/+∞;
  • INPUT_MOD:大于 0 时会先按该值取模(执行于 LUT 之前,限幅之后);
  • INPUT_LUT:可选查找表,可执行缩放、偏移或复杂映射,使用线性插值;
  • INPUT_LAG_UPINPUT_LAG_DOWN:可选平滑处理,作用于 LUT 之后;前者用于实际值高于平滑值时,后者用于实际值较低时;
  • INPUT_ROUND:可选四舍五入粒度(例如 INPUT_ROUND = 0.1 可保留一位小数);
  • INPUT_ROUND_MODE:指定取整方式,可选:
    • FLOOR(或 FLOORING):直接舍去小数;
    • ROUND(或 ROUNDING):常规四舍五入,>= 一半即进位;
    • CEIL(或 CEILING):只要存在小数就进位;
  • INPUT_STALLED_VALUE:发动机熄火时可替换的数值,执行于限幅之后、取模与 LUT 之前;
  • INPUT_STALLED_LAG:配合上述替换值控制过渡平滑度;
  • INPUT_THRESHOLD:默认情况下发光材质只有开/关,此参数用来设定切换阈值。
    如果你需要设定区间,可使用:
    • INPUT_THRESHOLD_LOWERINPUT_THRESHOLD_UPPER:表示区间 A < x < B,不包含边界;
    • INPUT_THRESHOLD_LOWER_INCINPUT_THRESHOLD_UPPER_INC:表示区间 A ≤ x ≤ B,包含边界;
  • INPUT_THRESHOLD_INVERSE:为 0(false)时表示低于阈值触发;
  • INPUT_DEBUG:用于快速测试(尤其是指针仪表),会覆盖原值,相当于最先应用的限幅值。

大多数情况下无需全部设置,因为csp会提供合理默认值;只有在特殊需求时再自定义即可。

可用输入列表

带 “flag” 的为布尔输入,满足条件时为 1.0,否则 0.0(同样可以通过延迟参数平滑)。

  • SPEED:车辆相对世界的速度,单位 km/h;
  • SPEED_WHEELS:由驱动轮角速度计算的速度,单位 km/h;
  • VELOCITY:车辆相对世界的速度向量,单位 m/s;
  • VELOCITY_LOCAL:车辆本地坐标下的速度向量(X 左/右,Y 上/下),单位 m/s;
  • RPM:发动机转速;
  • STEER:方向盘转角(度);
  • HANDBRAKE:手刹状态,范围 0~1;
  • BRAKE:制动踏板状态,范围 0~1;
  • CLUTCH:离合器状态,范围 0~1;
  • FUEL:剩余燃油(升);
  • WATER_TEMPERATURE:水温(°C);
  • TURBO:涡轮增压值;
  • GEAR:当前挡位,倒挡为 -1、空挡为 0(序列式变速箱换挡不经过空挡),默认格式为 GEAR(见下文“格式”);
  • PERF_METER: performance meter comparing this lap with best, seconds;
  • PERF_METER:全速对比表,相当于当前圈与最佳圈的时间差(秒);
  • PERF_METER_DIFF:AC performance 应用里红/绿条显示的数值;
  • TYRE_WEAR:轮胎磨损,四个值,范围 0~1:
    • 前左:INPUT_SELECTOR = 0XFIRST
    • 前右:INPUT_SELECTOR = 1YSECOND
    • 后左:INPUT_SELECTOR = 2ZTHIRD
    • 后右:INPUT_SELECTOR = 3WFOURTH
  • TYRE_VIRTUAL_KM:轮胎累计虚拟里程,四个值,范围 0~1:
    • 前左:INPUT_SELECTOR = 0XFIRST
    • 前右:INPUT_SELECTOR = 1YSECOND
    • 后左:INPUT_SELECTOR = 2ZTHIRD
    • 后右:INPUT_SELECTOR = 3WFOURTH
  • TYRE_DIRT:轮胎沾染泥土程度,四个值,范围 0~1;
  • TYRE_SLIP:轮胎滑移率,四个值;
  • TYRE_SLIP_ANGLE:轮胎滑移角,四个值;
  • ENGINE_LIFE(或 ENGINE_DAMAGE):剩余发动机寿命,范围 0.0~1000.0(别名默认使用反向阈值);
  • SUSP_DAMAGE:悬挂损伤,四个值,范围 0~1;
  • GEARBOX_DAMAGE:变速箱损伤,范围 0~1;
  • BODY_DAMAGE:每个方向的最大碰撞速度,四个值,单位 km/h:
    • 前部:INPUT_SELECTOR = 0XFIRST
    • 后部:INPUT_SELECTOR = 1YSECOND
    • 左侧:INPUT_SELECTOR = 2ZTHIRD
    • 右侧:INPUT_SELECTOR = 3WFOURTH
  • SUSP_TRAVEL:悬挂行程,四个值,单位 m;
  • RIDE_HEIGHT:离地高度,四个值,单位 m;
  • SLIP_RATIO:车轮滑移率,四个值;
  • G_FORCE:当前 G 值(三维向量,单位 g);
    • 横向:INPUT_SELECTOR = 0XFIRST
    • 垂向:INPUT_SELECTOR = 1YSECOND
    • 纵向:INPUT_SELECTOR = 2ZTHIRD
  • GEAR_GRINDING(flag):齿轮是否打齿?
  • LAP_TIME:单圈耗时(秒);
  • LAP_TIME_BEST:最佳单圈(秒);
  • LAP_TIME_LAST:上一圈耗时(秒);
  • LAP_COUNT:已完成圈数;
  • HORN(flag):喇叭是否鸣响?
  • POSITION:车辆在排行榜中的位置;

灯光相关

  • LIGHT(或 HEADLIGHTS,flag):前照灯是否开启?
  • BRAKE(或 BRAKE_LIGHTS,flag):刹车灯是否点亮?
  • REVERSE(或 REVERSE_LIGHTS,flag):倒车灯是否点亮?
  • HAZARD(flag):双闪是否开启(默认带闪烁逻辑)?
  • LOWBEAM(flag):近光灯是否开启?
  • HIGHBEAM(flag):远光灯是否开启?
  • EXTRA_A(flag):Extra A 是否激活?
  • EXTRA_B(flag):Extra B 是否激活?
  • EXTRA_C(flag):Extra C 是否激活?
  • EXTRA_D(flag):Extra D 是否激活?
  • EXTRA_E(flag):Extra E 是否激活?
  • EXTRA_F(flag):Extra F 是否激活?
  • TURNSIGNAL_LEFT(flag):左转向灯是否开启?
  • TURNSIGNAL_RIGHT(flag):右转向灯是否开启?
  • TURNSIGNAL_NOHAZARD_LEFT(flag):左转向灯是否开启(且不是因双闪触发)?
  • TURNSIGNAL_NOHAZARD_RIGHT(flag):右转向灯是否开启(且不是因双闪触发)?
  • TURNSIGNAL(flag):任一转向灯是否开启?
  • TURNSIGNAL_NOHAZARD(flag):转向灯是否开启(排除双闪)?
  • CORNERINGLAMP_LEFT(flag):左侧转向辅助灯是否开启?
  • CORNERINGLAMP_RIGHT(flag):右侧转向辅助灯是否开启?
  • OPENDOORS(flag):车门是否打开?
  • SEATBELT(flag):安全带是否系好?

为兼容性预留的独立挡位标志

  • GEAR_R(flag):是否位于倒挡?
  • GEAR_N(flag):是否位于空挡?
  • GEAR_D(flag):是否位于前进挡(AT)?
  • GEAR_1(flag):是否一档?
  • GEAR_2(flag):是否二档?
  • GEAR_3(flag):是否三档?
  • GEAR_4(flag):是否四档?
  • GEAR_5(flag):是否五档?
  • GEAR_6(flag):是否六档?
  • GEAR_7(flag):是否七档?
  • GEAR_8(flag):是否八档?
  • GEAR_9(flag):是否九档?

额外物理(回放暂不支持)

  • BRAKEBIAS:制动力分配,范围 0.0~1.0;
  • ABS(flag):ABS 是否开启?
  • ABS_INACTION(flag):ABS 是否正在介入(默认带闪烁)?
  • SPEEDLIMITER:限速器设置(km/h,0 为关闭);
  • SPEEDLIMITER_INACTION(flag):限速器是否正在生效(默认闪烁)?
  • TYRE_COMPOUND_INDEX:当前轮胎配方索引;
  • DIFF_PRELOAD:差速器预紧力;
  • TRACTIONCONTROL:牵引力控制模式(整数);
  • TRACTIONCONTROL_INACTION(flag):牵引力控制是否正在工作(默认闪烁)?
  • AWD_FRONT_SHARE_PERC:此刻分配到前轴的扭矩比例,范围 0~1;
  • AWD_FRONT_SHARE_NM:此刻分配到前轴的扭矩,单位 N·m;
  • TYRE_PRESSURE(或 TYRES):轮胎气压,四个值;
  • TYRE_TEMPERATURE:轮胎温度,四个值;
  • ENGINE_TORQUE:当前发动机扭矩(N·m);
  • ENGINE_POWER:当前发动机功率(bhp);
  • KERS_CHARGE:KERS 电量;
  • KERS_CURRENT_KJ:KERS 当前输出(kJ);
  • KERS_MAX_KJ:KERS 最大输出(kJ);
  • KERS_LOAD:KERS 负载;
  • KERS_INPUT:KERS 输入;
  • KERS_CHARGING(flag):KERS 是否处于充电状态?
  • TURBO_BOOST:涡轮增压值(对于启用 EXT_SPIN_DELAY 的扩展涡轮可为负),每个涡轮分别有值,可让指针绑定具体涡轮;
  • TURBO_WASTEGATE:当前涡轮泄压阀开度,同样为每个涡轮提供独立值。

扩展物理

  • USER_SPEEDLIMITER(flag):用户自定义(electronics.ini 中 custom physics)限速器是否启用?
  • ENGINE_MAP:当前发动机映射索引;
  • CPHYS_SCRIPT_0:自定义物理 Lua 脚本写入的值 #0;
  • CPHYS_SCRIPT_1:脚本值 #1;
  • CPHYS_SCRIPT_2:脚本值 #2;
  • CPHYS_SCRIPT_3:脚本值 #3;
  • CPHYS_SCRIPT_4:脚本值 #4;
  • CPHYS_SCRIPT_5:脚本值 #5;
  • CPHYS_SCRIPT_6:脚本值 #6;
  • CPHYS_SCRIPT_7:脚本值 #7;
  • TC2;
  • FUELMAP;

一些额外新增的

  • DRIVEN_TOTAL:总里程表,单位 km(初始值可由 Odometer、Sidekick 或 CM 提供);
  • DRIVEN_SESSION:当前session里程,单位 km;
  • STALLED(flag):发动机是否熄火(暂以低转速持续一段时间判定)?
  • BATTERY:估算的电瓶电压;
  • OIL_PRESSURE:估算的油压;
  • OIL_TEMPERATURE:估算的油温;
  • EXHAUST_TEMPERATURE:估算的排气温度;

雨刮

  • WIPERS_MODE:0 表示关闭,其他值为当前档位;
  • WIPERS_PROGRESS:雨刷动画进度;

其他少见用途(可能给大屏/监视器)

  • DRIFT_VALID(flag):当前漂移是否有效(例如未驶出赛道)?
  • DRIFT_BONUS_ON(flag):漂移连击奖励是否激活?
  • DRIFT_COMBO:漂移连击计数(整数);
  • DRIFT_INSTANT:即时漂移得分(整数);
  • DRIFT_POINTS:累计漂移得分(整数);
  • TRACK_PROGRESS:赛道进度,范围 0~1;
  • COMPASS:车辆朝向角度,0° 指北、90° 指东,默认格式 COMPASS

油耗相关(开发中,公式可能调整)

  • FUEL_BURNT:本回合消耗的燃油量(升);
  • FUEL_BURNT_TOTAL:总体燃油消耗(升);
  • FUEL_CONSUMPTION_KPL:本回合的平均 km/L;
  • FUEL_CONSUMPTION_LP100K:本回合平均 L/100km;
  • FUEL_CONSUMPTION_MPG:本回合平均油耗miles/galon;
  • FUEL_CONSUMPTION_LPL:本回合平均每圈油耗(升);
  • FUEL_CONSUMPTION_KPL_TOTAL:总体平均油耗 km/L;
  • FUEL_CONSUMPTION_LP100K_TOTAL:总体平均油耗 L/100km;
  • FUEL_CONSUMPTION_MPG_TOTAL:总体平均油耗miles/galon;
  • FUEL_CONSUMPTION_LPL_TOTAL:总体平均每圈油耗(升);
  • FUEL_ESTIMATE_DISTANCE:根据本回合油耗估算剩余可行使距离(米);
  • FUEL_ESTIMATE_DISTANCE_TOTAL:根据总体油耗估算剩余距离(米);
  • FUEL_ESTIMATE_TIME:根据本回合油耗估算剩余时间(秒);
  • FUEL_ESTIMATE_TIME_TOTAL:根据总体油耗估算剩余时间(秒);
  • FUEL_ESTIMATE_LAPS:根据本回合油耗估算可跑圈数;
  • FUEL_ESTIMATE_LAPS_TOTAL:根据总体油耗估算可跑圈数。

比赛数据

  • POSITION:比赛名次,从 1 开始;
  • LAP_TIME:当前圈用时(秒),默认时间格式为 “LAP_TIME”;
  • BEST_LAP_TIME:最佳单圈(秒);
  • LAST_LAP_TIME:上一圈用时(秒);
  • EXPECTED_LAP_TIME:预计单圈(基于最佳圈和性能差值,单位秒);
  • LAPS_COUNT:已跑圈数;
  • FLAG_TYPE:当前显示的比赛旗帜类型(与赛道状态相同)。

与车辆无关的环境数据

  • AMBIENT_TEMPERATURE:环境气温(°C);
  • ROAD_TEMPERATURE:赛道温度(°C);
  • WIND_SPEED:风速(km/h);
  • WIND_VELOCITY:世界坐标的风速向量(m/s);
  • WIND_DIR:风向(度),默认格式 COMPASS
  • TIME:从 00:00 起的秒数,默认格式 TIME
  • TIME_HOURS:小时数,默认 INPUT_MOD = 24
  • TIME_MINUTES:分钟数,默认 INPUT_MOD = 60
  • TIME_SECONDS:秒数,默认 INPUT_MOD = 60

格式

在数字仪表上正确显示某些输入(如圈速)需要额外格式化;此类输入通常带有默认格式,你也可以覆写它,或为普通输入指定格式。详细说明参见 此处

更复杂的表达式

自 CSP 0.1.77 起,输入可引用其他输入并使用表达式。若要引用,可先创建共享输入:

ini
[SHARED_INPUT_...]
NAME = my_input  ; 用于引用的名称
INPUT = GAS
; 使用油门作为来源
; 可使用全部标准 INPUT 参数

之后即可直接引用,或写出复杂表达式:

ini
[EMISSIVE_...]
INPUT = 'calc:max(my_input * GAS, BRAKE)'

共享输入也可以引用其他共享输入:

ini
[SHARED_INPUT_...]
NAME = my_other_input
INPUT = 'calc:pow(my_input, 20) + WIND_SPEED'

可用函数:

  • 无参常量:
    • e: euler number;
    • e:自然常数;
    • pi: pi.
    • pi:圆周率。
  • 单参数函数:
    • abs(x):取绝对值;
    • acos(x):反余弦,弧度;
    • asin(x):反正弦,弧度;
    • atan(x):反正切,弧度;
    • ceil(x):向上取整;
    • cos(x):余弦(弧度);
    • cosh(x):双曲余弦;
    • exp(x):返回 e^x
    • floor(x):向下取整;
    • ln(x):自然对数;
    • log(x):以 10 为底对数;
    • log10(x):以 10 为底对数;
    • saturate(x): 如果 x 介于 0 和 1 之间,则返回 x;否则,返回 0 或 1,以较近者为准。
    • sign(x):返回符号(0 则返回 0);
    • sin(x):正弦(弧度);
    • sinh(x):双曲正弦;
    • smoothstep(x):平滑阶跃,用于渐变;
    • smootherstep(x):更平滑的 smoothstep;
    • sqrt(x):平方根;
    • tan(x):正切(弧度);
    • tanh(x):双曲正切。
  • 双参数函数:
    • atan2(x, y):由 x、y 计算弧度角;
    • max(x, y):取较大值;
    • min(x, y):取较小值;
    • pow(x, y):x 的 y 次幂;
    • step(x, y):y ≥ x 时返回 1,否则 0。
  • 多参数函数:
    • clamp(x, min, max):将 x 限制在 [min, max] 区间;
    • remap(x, a, b, c, d):将区间 [a, b] 线性映射到 [c, d](不自动夹取)。