【CS2】MatchZy - 基于CSSharp实现的满10比赛服插件 通用内容 服务器管理 CS2

我不当学长 管理员组 2023-11-5 5847

插件介绍:

MatchZy 是一个为CS2提供 训练/满十比赛/训练赛 管理的服务器插件,它的配置非常的简单!

原作者的Discord群组:

Discord

题外话:

CSSharp是一个类似于SourceMod的插件开发环境,它一样是基于Metamod开发。简单理解:Metamod是最基础的平台,Sourcemod或者CSSharp是基于Metamod开发出来的框架,最后我们用的插件一般是再次基于Sourcemod或者CSSharp开发来的。插件平台的架构如下图所示:

安装方法:

注意:CSSharp 插件仅能够在 Linux 系统上使用。


MatchZy能干什么?

MatchZy 可以解决很多比赛管理需求。它提供了基本命令,如 !ready、!unready、!pause、!unpause、!tac、!stop 等,提供比赛统计信息等等!

特别亮点

  • 训练模式提供: .bot, .spawn, .ctspawn, .tspawn, .nobots 和 .exitprac 命令!
  • 热身阶段无限金钱
  • 拼刀回合 (按照预期的逻辑,即拥有最多存活玩家的队伍获胜。如果玩家数量相同,则具有HP优势的团队获胜。如果HP相同,则随机决定获胜者)
  • 开始比赛 (由拼刀胜利方决定开始与否. 刀局也是可以选择性开启).
  • 比赛开始自动录制Demo,比赛结束自动停止录制 (必须要配置 tv_enable 1)
  • 支持回合回溯 (当前使用 valve's 默认的备份系统)
  • 能够创建管理员并允许他们访问管理员命令
  • 数据库统计和 CSV 统计!MatchZy 将所有比赛的数据和统计数据存储在本地 SQLite 数据库中,并创建一个 CSV 文件,用于存储该比赛中每个玩家的详细统计数据!
  • 配置简单
  • 敬请期待!

基本命令:

大多数命令也可以使用 !前缀而不是 .(比如 !ready)

  • .ready 标记玩家已准备就绪
  • .unready 标记玩家没有准备好
  • .pause 暂停比赛。
  • .unpause 请求取消暂停比赛。双方对于都需要输入 .unpause 来取消暂停比赛
  • .stay 保持在当前阵营(由拼刀获胜方输入)
  • .switch 交换阵营 (由拼刀获胜方输入)
  • .stop 恢复当前回合的备份(两队都需要输入.stop才能恢复当前回合)
  • .tac 战术暂停

训练模式命令:

  • .spawn <number> Spawns to the provided spawn number of same team
  • .ctspawn <number> Spawns to the provided spawn number of CT
  • .tspawn <number> Spawns to the provided spawn number of T
  • .bot 在玩家当前位置上添加机器人
  • .nobots 移除所有机器人

管理员命令:

  • .start 强制开始比赛
  • .restart 强制重启/重置比赛
  • .pause 以管理员身份暂停比赛(玩家无法取消暂停管理员暂停的比赛)。
  • .unpause 强制取消暂停比赛。
  • .restore <round> 恢复到特定回合。
  • .knife 切换是否进行刀局。如果不开启拼刀回合,比赛在热身结束之后就正式开始。
  • .readyrequired <number> 设置开始比赛所需的已准备玩家数,如果配置为0,表示必须所有玩家都准备。
  • .settings 显示当前设置,例如是否启用了拼刀回合,已准备的玩家个数。
  • .map <mapname> 更换地图
  • .asay <message> 以管理员身份在公屏发话
  • .reload_admins 重新加载 admins.json
  • .prac 开始训练模式
  • .exitprac 退出训练模式并且进入比赛模式

配置:

所有与 MatchZy 相关的配置文件都可以在 csgo/cfg/MatchZy 中找到(如果您已正确提取内容,则 MatchZy 文件夹应该在 cfg 文件夹中)。

创建管理员

在csgo/cfg/MatchZy中,应该存在一个名为admins.json的文件。如果它不存在,它将在加载插件时自动创建。您可以在该 JSON 文件中添加管理员的 Steam64 ID,如下例所述:

{
    "76561198154367261": "",
    "<another_steam_id>: ""
}

配置MatchZy的ConVars:

同样,在 csgo/cfg/MatchZy 中,应该存在一个名为 config.cfg 的文件。每当加载插件时,都会执行此文件。如果您对此文件进行了任何更改并想要重新加载配置,只需在服务器上执行 exec MatchZy/config.cfg 命令即可。

文件的内容如下,它还包含所有命令的功能介绍。

// This config file is executed when MatchZy plugin is loaded
// Do not add commands other than matchzy config console variables
// More configurations and variables will be coming in future updates.

// Whether knife round is enabled by default or not. Default value: true
// This is the default value, but knife can be toggled by admin using .knife command
matchzy_knife_enabled_default true

// Minimum ready players required to start the match. If set to 0, all connected players have to ready-up to start the match. Default: 2
matchzy_minimum_ready_required 2

// Path of folder in which demos will be saved. If defined, it must not start with a slash and must end with a slash. Set to empty string to use the csgo root.
// Example: matchzy_demo_path MatchZy/
// A folder named MatchZy will be created in csgo folder if it does not exist and will store the recorded demos in it. Default value is MatchZy/ which means demos will be stored in MatchZy/
matchzy_demo_path MatchZy/

// Whether !stop/.stop command is enabled by default or not. Default value: false
// Note: We are using Valve backup system to record and restore the backups. In most of the cases, this should be just fine.
// But in some cases, this may not be reliable hence default value is false
matchzy_stop_command_available false

// Whether to pause the match after round restore or not. Default value: true
// Players/admins can unpause the match using !unpause/.unpause. (For players, both the teams will have to use unpause command)
matchzy_pause_after_restore true

// Chat prefix to show whenever a MatchZy message is sent to players. Default value: [{Green}MatchZy{Default}]
// Available Colors: {Default}, {Darkred}, {Green}, {LightYellow}, {LightBlue}, {Olive}, {Lime}, {Red}, {Purple}, {Grey}, {Yellow}, {Gold}, {Silver}, {Blue}, {DarkBlue}
// {BlueGrey}, {Magenta} and {LightRed}. Make sure to end your prefix with {Default} to avoid coloring the complete messages in your prefix color
matchzy_chat_prefix [{Green}MatchZy{Default}]

配置热身/拼刀/比赛/训练模式的cfg:

同样,在csgo/cfg/MatchZy中,应该存在名为warmup.cfg,knife.cfg,live.cfg和prac.cfg的文件。这些配置分别在热身、刀、直播和练习模式启动时执行。

您可以根据需要修改这些文件。

如果在预期位置找不到这些配置,则 MatchZy 将执行代码中存在的默认配置。


比赛/玩家战绩信息:

数据库战绩:

MatchZy 带有一个默认数据库 (SQLite),它会自动配置自己。目前我们使用 2 个表,matchzy_match_data 和 matchzy_player_stats。顾名思义,matchzy_match_data保存每场比赛的数据,如matchid、阵营名称、比分等。然而,matchzy_player_stats存储了参加该比赛的每位玩家的数据/统计数据。它存储匹配 id、击杀、死亡、助攻和其他重要统计数据等数据!

CSV战绩:

比赛结束后,将从SQLite数据库中提取数据,并在csgo/MatchZy_Stats文件夹中写入一个CSV文件。此文件夹将包含每个匹配项的 CSV 文件(文件名模式:match_data_{matchid}.csv),并且它将具有与matchzy_player_stats中存在的相同数据。

这里有一个改进的余地,比如在CSV文件中或至少在文件名里面体现匹配分数。我很快就会做出这个改变!


不足之处

  • 配置团队名称(目前将使用默认名称,如 Counter-Terrorist 和 Terrorist 。这是因为 CSSharp 尚未提供对 ConVars 的访问,这是维护阵营名称并对其执行操作所必需的,例如在中场休息时侧边切换后内部交换阵营名称)

    • 虽然您可以使用 mp_teamname_1 和 mp_teamname_2 命令手动配置阵营名称,但由于上述原因,它们不会反映在统计信息中。
  • 将玩家锁定在团队中(也即是说,玩家可以自行阵营。由于这是比赛的一个非常重要的要求,这将很快完成!)

  • 使用 JSON 文件和/或 HTTP 请求配置匹配。(这也是一个重要的要求,一旦以上几点关闭,就会实施!

  • 在 Webhook 上发送事件和数据。(我将尽快对此进行研究,以便我们可以围绕 MatchZy 构建一个 Web 面板,通过该面板我们可以配置匹配并接收事件和统计数据。

  • 地图 Ban/Pick


开发者须知

MatchZy插件使用C#语言编写,如果你想要参与插件开发,你需要安装C#开发环境 .NET 7.0 SDK ,安装完毕之后,你可以做一下操作

  1. 克隆MatchZy的git仓库
  2. 修改 MatchZy.csproj 文件,然后将正确的 CounterStrikeSarp.API.dll 的文件路径写到对应位置:
    (CounterStrikeSarp.API.dll 文件来自 CounterStrikeSharp 插件, 在上面的安装步骤里面提过)
  3. 在终端输入 dotnet restore 来恢复和安装依赖
  4. 修改代码(按你的想法来
  5. 在终端输入 dotnet publish ,然后你会得到一个叫做bin的文件夹,这就是插件编译之后的程序目录
  6. 定位到 bin/Debug/net7.0/publish/ 然后把所有的内容复制到服务器的 csgo/addons/counterstrikesharp/plugins/MatchZy (CounterStrikeSharp.API.dll 和CounterStrikeSharp.API.pdb 这两个文件可以跳过不覆盖)
  7. 完成! 你可以测试你的修改,也欢迎对本插件贡献你的代码!:p

下载地址:

https://cowtransfer.com/s/2bc1cec3c30c4b 点击链接查看 [ matchzy-0.2.0-with-cssharp.zip ] ,或访问奶牛快传 cowtransfer.com 输入传输口令 44hh00 查看;

参考:


CSGO插件分享-申明 1、本网站名称:CSGO插件分享-中文站  网址:https://bbs.csgocn.net
2、本站的宗旨在于为CSGO玩家提供一个插件分享的中文资源平台,多数插件来源于SourceMod论坛,并配以中文介绍和安装教程。
3、欢迎有能力的朋友共享有趣的CSGO插件资源。
4、本站资源大多为百度网盘,如发现链接失效,可以点: 这里进行反馈,我们会第一时间更新。
最新回复 (16)
返回