You are viewing a potentially older version of this package. View all versions.
AIAWAR-OnlineFlights-1.3.0 icon

OnlineFlights

PEAK 联机航班 — 主菜单多人航班浏览面板,搜索并加入公开 Steam 大厅,8 语言自动切换、剪贴板一键加入、房间密码保护、地区中文显示、Steam 头像加载

By AIAWAR
Date uploaded 3 months ago
Version 1.3.0
Download link AIAWAR-OnlineFlights-1.3.0.zip
Downloads 890
Dependency string AIAWAR-OnlineFlights-1.3.0

This mod requires the following mods to function

BepInEx-BepInExPack_PEAK-5.4.75301 icon
BepInEx-BepInExPack_PEAK

BepInEx pack for PEAK. Preconfigured and ready to use.

Preferred version: 5.4.75301

README

OnlineFlights — PEAK 联机航班

在 PEAK 主菜单添加一个多人航班浏览面板,可以搜索并加入其他玩家创建的公开 Steam 大厅,无需加好友即可一起登山。

功能

  • 多语言支持:自动检测 Steam 游戏语言,支持中文、英文、日语、德语、法语、西班牙语、葡萄牙语、乌克兰语共 8 种语言
  • 航班浏览面板:主菜单右侧滑出式面板,暖色羊皮纸/赤陶美学,锚点自适应布局
  • 搜索公开大厅:自动查询全球公开 Steam 大厅(最多 200 个),支持按房间名/房主名关键词过滤
  • 剪贴板加入:复制好友发来的邀请链接,点击面板中的剪贴板卡片即可加入房间
  • 一键加入:点击卡片上的「加入」按钮直接加入大厅(有密码的房间需先输入密码)
  • 房间信息卡:面板顶部显示当前房间详情(房间名、房主、地区、场景、人数),支持复制邀请链接和房间码
  • 暂停菜单增强:游戏内暂停菜单显示房间信息卡 + 玩家 Steam 头像
  • 自定义房间:在 BepInEx 配置中设置自定义房间名、密码和房间介绍
  • 公开大厅:自动将你创建的大厅设为公开,让其他玩家能搜索到
  • 滚动播报栏:面板底部像素风滚动提示条
  • 自动刷新:每 120 秒自动刷新航班列表,也可手动刷新

安装

  1. 确保已安装 BepInEx 5
  2. 将 OnlineFlights 文件夹放入 PEAK/BepInEx/plugins/ 目录
  3. 启动游戏即可

配置

在游戏内或 BepInEx/config/com.peakmod.onlineflights.cfg 中调整:

配置项 默认值 说明
公开大厅 true 将创建的大厅设为公开
自定义房间名 (空) 房间显示名称
房间密码 (空) 加入时需输入的密码
房间介绍 Bing Bong~Bing Bong~ 房间介绍文本,显示在卡片滚动栏
面板宽度 840 面板宽度(像素)
面板高度 480 面板高度(像素)
面板X偏移 700 面板水平偏移
面板Y偏移 0 面板垂直偏移

使用

  • 进入主菜单后,面板会在连接成功后自动滑出
  • 点击主菜单左侧的篝火按钮可手动开关面板
  • 点击房间卡片空白处复制加入链接(加密房间不可复制)
  • 复制好友发来的链接后,点击面板首位的剪贴板卡片即可加入
  • 点击「加入」按钮直接加入大厅
  • 按 Esc 关闭面板

技术信息

  • BepInEx 5 / HarmonyX / netstandard2.1 / Unity 6
  • 通过 SteamMatchmaking API 查询公开大厅
  • 通过 steam://joinlobby 协议加入大厅
  • 地区信息来自 Photon 区域代码,场景信息来自游戏原生元数据
  • 按钮图标为 DLL 内嵌资源(OnlineFlights.FlightsButton.png)

注意事项

  • Steam 头像:好友自动加载;非好友(缓存损坏时)走 HTTP 保底从 steamcommunity.com 获取,国内直连需开启加速器

CHANGELOG

Changelog

[1.3.0] - 2026-07-29

新增

  • 多语言支持:中文、英文、日语、德语、法语、西班牙语、葡萄牙语、乌克兰语共 8 种语言,自动检测 Steam 游戏语言切换
  • 剪贴板加入卡片:房间列表首位新增剪贴板卡片,复制邀请链接后点击即可加入房间,SDF 圆角加号图标
  • 标题栏面板标题和刷新按钮支持 TMP 自动缩放,防止长翻译文本溢出
  • 面板标题、刷新按钮、加入按钮等多处 UI 文本国际化

优化

  • 地区显示:中文环境下显示中文地区名(如"香港""日本"),其他语言显示 Photon 原始代码
  • 房间卡片头像 56×56 → 60×60,人数文本显示区域更宽裕
  • 加密房间按钮文本"码" → "密码",含义更清晰
  • 剪贴板无链接提示"未识别到房间码" → "未检测到房间链接",与引导文案一致
  • 密码房安全:设置了密码的房间不再允许点击卡片复制加入链接,防止绕过密码保护
  • 地区解析顺序优化:具体国家(HK/TW)在大洲兜底(CN/AS)之前匹配,避免 StartsWith 子串误判

修复

  • 剪贴板加入:提取最长数字序列作为大厅 ID(17-19 位),避免误取 7 位 AppID
  • 像素字体缺少"+"字形导致加号不渲染,改用 SDF 纹理生成
  • 面板标题和按钮文本在德语/乌克兰语等长翻译语言下溢出按钮边界

[1.2.1] - 2026-07-24

修复

  • 面板恢复:设置树深层导航(主菜单→设置→模组配置→设置→主菜单)后面板正确恢复,_inSettingsTree 标志位防止内部导航覆盖预存状态
  • Steam 头像错误码:GetLargeFriendAvatar 返回 -1 时不再视为有效句柄(改为 h <= 0 过滤)

优化

  • 头像加载管线精简为三阶段:快速匹配 → RequestUserInformation → HTTP 保底(移除 10s 延迟重试和缓存刷新逻辑,总等待时间大幅缩短)
  • HTTP 保底超时 8s → 15s,图片下载加 1 次重试,适配加速器环境
  • 房间元数据写入房主 Steam ID(ownerSteamId),用于浏览端加载头像
  • 自动刷新间隔 60s → 120s
  • 代码清理:移除诊断日志、冗余注释、无用 using,DLL 110080 → 100864 字节(-8.4%)

[1.2.0] - 2026-07-23

新增

  • 设置/制作人员名单打开时自动关闭航班面板,关闭后恢复显示(_wasOpen 状态记忆,面板原本关闭则不恢复)
  • 房间卡片头像:SteamID 缺失但房主名存在时,显示房主名首字而非「?」
  • 房间介绍:房主可在 BepInEx 配置中设置介绍文本(默认 "Bing Bong~Bing Bong~"),写入大厅元数据 description 键,卡片第三行滚动显示

修复

  • Steam 头像加载:陌生人须先调 RequestUserInformation(steamId, false) 请求头像数据,否则 GetLargeFriendAvatar 永远返回默认头像
  • Steam 头像默认头像陷阱:GetLargeFriendAvatar 在异步请求完成前就返回默认头像的非零句柄,导致自定义头像永远不被加载。改为追踪句柄变化——句柄更新才重新提取,连续两轮稳定后才接受
  • 暂停菜单「资料」/「好友」按钮点击串台:移除根部 Image 的 raycastTarget(相邻按钮中心距仅 38px,根部矩形重叠导致后创建的 AddFriendButton 截走 ProfileButton 点击),点击目标仅限 KickIcon 子对象
  • KickIcon 缩放 0.7 → 0.9,补偿点击面积;ButtonHoverFX 悬停缩放同步更新

优化

  • 房间卡片重做:宽度 270 → 250px,高度 84 → 100px;地区·人数移至头像正下方(10px 居中);房间名独占第一行全宽(168px,14→9px 自动缩放);加入按钮下移至与第二行对齐并左移;新增第三行「房间介绍」滚动文本(RectMask2D 裁剪,40px/s 右→左滚动,短文本居中不滚动)
  • 卡片交互触感重做:CrispHover 取代 SpringHover(DOTween OutCubic 120ms 悬停 1.03x + 50ms 按压 0.97x + 100ms 释放,阴影同步,零弹簧振荡)
  • 暂停菜单按钮悬停反馈:ButtonHoverFX(仅 IPointerEnter/Exit 两接口)取代 EventTrigger(16 接口),避免截断 Button 的 PointerDown/Up 状态追踪
  • 跑马灯移除悬停暂停机制(删除 TickerHoverHandler 内部类及 viewport raycast),DLL 体积缩减

依赖

  • BepInEx 5.4.23.5 → BepInExPack_PEAK 5.4.75301

[1.1.0] - 2026-07-22

清理与重构

  • 移除点击外部关闭面板逻辑(该功能从未生效:Background 层 raycastTarget 始终为 false,EventSystem 轮询仅响应键盘/手柄 Submit)
  • 移除全透明 Background 遮罩层(随点击外部关闭一同删除)
  • 抽取 UIFactory.Place / Stretch / Fill 布局辅助方法,收掉 FlightsPanel、RoomInfoHeader、FlightCard、RoomCodeDialog 中约 50 处 RectTransform 锚定八股
  • 搜索过滤移除 RoomCode 匹配(房间密码不应被搜索框匹配)
  • 纹理加载改为仅内嵌资源,删除外部 FlightsButton.png 覆盖加载路径及 System.IO 依赖
  • 移除 FlightInfo.Name 孤儿字段及相关解析代码
  • 修正 FlightInfo 中 3 处过时的富presence注释
  • 修正 BiomeNames 类摘要注释

体积

  • DLL 98304 → 95744 字节(-2.6%)
  • IL 41678 → 39259 字节(-5.8%)

[1.0.0] - 2026-07-18

首次发布

  • 主菜单航班浏览面板(暖色羊皮纸/赤陶美学)
  • Steam 公开大厅搜索(全球范围,最多 200 个)
  • 按房间名/房主名关键词过滤
  • 一键加入大厅(支持房间密码)
  • 房间信息卡(房间名、房主、地区中文、场景、人数、Photon 区域)
  • 暂停菜单房间信息 + 玩家 Steam 头像
  • 自定义房间名和密码(BepInEx 配置)
  • 强制公开大厅(双层 Harmony 补丁:Steam API 层 + 游戏代码层)
  • 底部像素风滚动播报栏(悬停暂停)
  • 每 60 秒自动刷新 + 手动刷新
  • 主菜单篝火按钮(DLL 内嵌图标)
  • 面板锚点自适应布局,支持配置宽高和偏移