Yue-bin 8b5e3c33d2
All checks were successful
Publish Release / build (push) Successful in 36s
chore(PlayerManager): 更新版本号从4.0.7到4.0.8
- 将项目版本号从4.0.7升级至4.0.8
- 保持其他配置不变
2026-06-22 05:44:30 +08:00
2025-02-09 00:10:19 +08:00
2025-02-09 00:10:19 +08:00
2026-06-22 05:44:17 +08:00

玩家管理器

即以前的kick、玩家记录等插件

功能

  • 房间查找
  • 转让房主
  • 玩家记录
    • 被记录的玩家显示为黄名
    • 是steam好友的玩家显示为绿名优先级更高
    • 被拉黑的玩家显示为红名(优先级最高)
  • kick除了host和自己之外的任何人
  • 拉黑玩家,当你是房主的时候生效
  • 可选择开启,默认开启的防踢
  • 可配置的界面开启按键默认为F2
  • 可以随时切换房间的公开性
  • 静音单个玩家
  • 一键加好友

作者

老狼老狼几点钟、Moncak、z7572

更新日志

v4.0.8

  1. 添加了转让房主功能
  2. 现在如果某个按钮(行组件)对所有人都不显示,则不留空

v4.0.7

  1. 现在点击大厅列表中的按钮进入大厅会在列表中将该大厅用灰色样式标识,标记已进入过
  2. 现在不会在每帧都初始化一遍LocalPlayer 难道他真的是猪??

v4.0.6

  1. 大厅搜索范围按钮现在可同步修改快速匹配的搜索范围
  2. 修复了禁音功能 难道他真的是猪??

v4.0.5

  1. 修复了加好友按钮始终不显示的问题 难道他真的是猪??

v4.0.4

  1. 房间列表现在在房间内也显示,但是点击无效
  2. 添加了加好友按钮
  3. 修复了禁音功能 难道他真的是猪??

v4.0.3

  1. 静音单个玩家
  2. 性能优化
  3. 提供了更多可选是否开启功能显示的配置项
  4. 提供按钮组件注册入口
  5. 更好的房间公开性切换

v3.1.1

  1. 添加了房间公开性切换功能
  2. 更改房间筛选条件现在会触发刷新列表
  3. 现在房间列表不会在房间内显示,防止误触导致的游戏状态不一致
  4. 一些重构和优化

v3.0.3

  1. 修复了kick按钮无论如何都会显示的问题难道他真的是猪

v3.0.2

  1. 修复了删除玩家记录时回写会导致所有记录的名字消失的问题

需要注意的是目前版本在重新记录玩家之后,曾用名会被现在的名字替换

v3.0.1

存在较大问题请勿更新

  1. 修复了玩家记录不能被正确读取的问题
  2. 将每次绘制时获取玩家信息改为按需获取
  3. 将记录和拉黑合并为一个按钮
  4. 修复了显示曾用名不能正常工作的问题
  5. 删除了遗留的无用代码

v3.0.0

存在较大问题请勿更新

  1. 较为彻底地重构了代码
  2. 添加了黑名单功能
  3. 现在可以移除被记录的玩家
  4. 现在可以显示玩家被记录时的名字(若存在)
  5. 优化了玩家信息的判断方式信息字符串包含steamid->先将信息字符串用于初始化playerinfo然后比对playerinfo

v2.0.0

从老狼的新版源码改过来的插件比上一版少了一些bug而且现在可以使用配置文件

在老狼的基础上加上了绿名和防踢开关的配置,以及一些日志

从原来的插件迁移到这个版本不需要改变 CustomPlayerRecord.txt文件的位置,即保留在原来的 ...\StickFightTheGame\StickFight_Data目录中

某人终于想通了data目录就是用来存data的反正没修改原有文件

v1.0.0

从原版直接使用反编译修改游戏转换到 BepInEx

感谢老狼的原版插件

旧版插件用户可以通过把 ...\StickFightTheGame\StickFight_Data下的 CustomPlayerRecord.txt文件移动到 ...\StickFightTheGame\BepInEx\config\目录来保留以前的记录

接口文档

组件注册

v4.0.3 起开放 GUI 组件注册,允许其他插件向界面的 Header 区或玩家行插入自定义控件。

命名空间:stick.plugins.playermanager.Gui


RegisterManager — 注册/反注册 API

// 注册一个 Header 行(纵向排列,行内子组件横向排列)
static void RegisterHeaderRow(IHeaderRow row);

// 注册一个玩家行组件(每个玩家行中横向排列)
static void RegisterPlayerRow(IPlayerRowWidget widget);

// 按 Name 反注册
static bool UnregisterHeaderRow(string name);
static bool UnregisterPlayerRow(string name);

玩家行组件

每个大厅成员对应一行,注册的组件在行内从左到右排列。两种组件:

PlayerRowButtonWidget — 可点击按钮

参数 类型 必填 说明
Name string 唯一标识,用于反注册
Width float 组件宽度(像素)
GetText Func<PlayerInfo, string> 按钮文字,player 为当前行玩家
OnClick Action<PlayerInfo> 点击回调
Condition Func<PlayerInfo, bool> 返回 false 时对该玩家隐藏
Style GUIStyle 静态样式
GetStyle Func<PlayerInfo, GUIStyle> 动态样式,优先于 Style

PlayerRowLabelWidget — 只读文本

参数 类型 必填 说明
Name string 唯一标识
Width float 组件宽度(像素)
GetText Func<PlayerInfo, string> 显示文本
Condition Func<PlayerInfo, bool> 返回 false 时隐藏
Style GUIStyle 自定义样式

Header 组件

Header 区位于标题下方,每行可含多个子组件。两种子组件:

HeaderRow — 一个 Header 行

参数 类型 必填 说明
Name string 唯一标识
Children List<IHeaderWidget> 行内子组件列表
Condition Func<bool> 返回 false 时整行隐藏

HeaderLabelWidget — 行内文本

参数 类型 必填 说明
Name string 唯一标识
Width float 组件宽度(像素)
Content Func<string> 显示文本
Condition Func<bool> 返回 false 时隐藏
Style GUIStyle 自定义样式

HeaderButtonWidget — 行内按钮

参数 类型 必填 说明
Name string 唯一标识
Width float 组件宽度(像素)
Text string 按钮文字
Action Action 点击回调
Condition Func<bool> 返回 false 时隐藏
Style GUIStyle 自定义样式

示例

using stick.plugins.playermanager.Gui;
using stick.plugins.playermanager.Recorder;

// 玩家行按钮
RegisterManager.RegisterPlayerRow(new PlayerRowButtonWidget
{
    Name = "MyButton",
    GetText = player => "打招呼",
    OnClick = player => Debug.Log($"你好 {player}"),
    Width = 100f,
    Condition = player => !PlayerManager.IsLocalPlayer(player),
});

// 玩家行标签
RegisterManager.RegisterPlayerRow(new PlayerRowLabelWidget
{
    Name = "MyLabel",
    GetText = player => $"#{player.SteamId}",
    Width = 150f,
    Style = GUIStyles.Label,
});

// Header 行(含标签 + 按钮)
RegisterManager.RegisterHeaderRow(new HeaderRow
{
    Name = "MyHeader",
    Condition = () => PlayerManager.IsHost(PlayerManager.LocalPlayer),
    Children = new List<IHeaderWidget>
    {
        new HeaderLabelWidget
        {
            Name = "Status",
            Content = () => "状态: 运行中",
            Width = 150f,
        },
        new HeaderButtonWidget
        {
            Name = "Action",
            Text = "执行",
            Action = () => Debug.Log("点击"),
            Width = 100f,
        },
    },
});

// 反注册
RegisterManager.UnregisterPlayerRow("MyButton");
Description
玩家管理器,爱来自老狼
Readme 2 MiB
2026-06-22 05:44:30 +08:00
Languages
C# 100%