【CS2】CS2MenuManager 菜单管理器 通用内容 开发者相关

我不当学长 管理员组 1天前 58

插件介绍:

CS2MenuManager 是一个灵活且用户友好的菜单系统,使用 CounterStrikeSharp 库为 Counter-Strike 2 开发。该项目为 Server 管理员和开发人员提供了创建可自定义菜单的能力。它对玩家来说易于使用,对管理员来说也很容易配置和扩展。如果您想捐赠或需要有关插件的帮助,请随时通过 Discord 私下或在原作者的服务器上与他联系。

Nuget

NuGet Badge NuGet-Badge

安装

  1. 下载:
  1. 安装文件:
  • 将下载的 ZIP 文件的内容解压缩到文件夹中 addons/counterstrikesharp/shared 
  1. 配置设置:
  • 调整 addons/counterstrikesharp/shared/CS2MenuManager/ 目录下 config.toml 文件中的设置。
  1. 重新启动服务器:
  • 重新启动服务器以使更改生效。您需要在插件中使用此 API。

用法

创建菜单

您可以创建任何类型的菜单。所有菜单类型都具有类似的结构。以下是如何创建 Chat Menu 的示例:

支持的菜单:ChatMenuConsoleMenuCenterHtmlMenuWasdMenuScreenMenuPanoramaVote

ChatMenu menu = new("Title", this);

menu.AddItem("Option 1", (p, o) =>
{
    p.PrintToChat("You selected option 1");
});

menu.AddItem("Option 2X", DisableOption.DisableShowNumber);
menu.AddItem("Option 3X", DisableOption.DisableHideNumber);

menu.Display(player);
 

添加子菜单

您可以向任何菜单添加子菜单。以下是链接子菜单的方法:

menu.PrevMenu = AnySubMenu();

private static CenterHtmlMenu AnySubMenu()
{
    CenterHtmlMenu menu = new("Title", this);
    //...
    return menu;
}
 

选择后行为设置

您可以在使用 PostSelectAction 选择选项后设置行为。默认设置是在选择后关闭菜单。

menu.AddItem("Option After Reset", (p, o) =>
{
    o.PostSelectAction = PostSelectAction.Reset;
});
 

设置菜单时间

您可以设置菜单的时间。时间到了,菜单会自动关闭。

menu.Display(menu, 10);
// OR
ConsoleMenu menu = new("Console Menu", this)
{
    MenuTime = 20
};
 

全景投票菜单

PanoramaVote 菜单允许您使用 Panorama UI 创建交互式投票菜单。下面是一个示例:

var menu = new PanoramaVote("#SFUI_vote_panorama_vote_default", "Hold on, Let me Cook", VoteResultCallback, VoteHandlerCallback, this)
{
    VoteCaller = player // null is the server.
};

menu.DisplayVoteToAll(20);
 

回调

public bool VoteResultCallback(YesNoVoteInfo info)
{
    /*
    public int TotalVotes;
    public int YesVotes;
    public int NoVotes;
    public int TotalClients;
    public Dictionary<int, (int, int)> ClientInfo = [];
    */

    if (info.YesVotes > info.NoVotes)
    {
        Server.PrintToChatAll("Vote passed!");
        return true;
    }
    
    Server.PrintToChatAll("Vote failed!");
    return false;
}

public void VoteHandlerCallback(YesNoVoteAction action, int param1, CastVote param2)
{
    switch (action)
    {
        case YesNoVoteAction.VoteAction_Start:
            Server.PrintToChatAll("Vote started!");
            break;

        case YesNoVoteAction.VoteAction_Vote:
            var player = Utilities.GetPlayerFromSlot(param1);
            if (player == null) return;
            player.PrintToChat("You voted: " + (param2 == CastVote.VOTE_OPTION1 ? "Yes" : "No"));
            break;

        case YesNoVoteAction.VoteAction_End:
            switch ((YesNoVoteEndReason)param1)
            {
                case YesNoVoteEndReason.VoteEnd_Cancelled:
                    Server.PrintToChatAll("Vote Ended! Cancelled");
                    break;
                case YesNoVoteEndReason.VoteEnd_AllVotes:
                    Server.PrintToChatAll("Vote Ended! Thank you for participating.");
                    break;
                case YesNoVoteEndReason.VoteEnd_TimeUp:
                    Server.PrintToChatAll("Vote Ended! Time is up.");
                    break;
            }
            break;
    }
}
 

References 

该项目是在以下项目的帮助下准备的。

效果图片

聊天菜单

控制台菜单

CenterHtmlMenu

Wasd 菜单

屏幕菜单

Panorama Vote  全景投票

参考:

上传的附件:

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