如何禁止比赛开始后玩家手动选队

XCPLS 一级用户组 3月前 326

怎么做到热身阶段玩家允许自由换队,比赛开始后就禁止手动换边,插件是基于MatchZy改的,图中蓝圈中的代码是我自己加的,但是没有用,请问一下监听器是这样用的吗,还是说我用错事件了,求各位大佬解答一下


CSGO插件分享-申明 1、本网站名称:CSGO插件分享-中文站  网址:https://bbs.csgocn.net
2、本站的宗旨在于为CSGO玩家提供一个插件分享的中文资源平台,多数插件来源于SourceMod论坛,并配以中文介绍和安装教程。
3、欢迎有能力的朋友共享有趣的CSGO插件资源。
4、本站资源大多为百度网盘,如发现链接失效,可以点: 这里进行反馈,我们会第一时间更新。
最新回复 (4)
  • 我不当学长 管理员组@Ta 3月前 0
    引用 2
    你说的这个换边功能,matchzy默认自带的吧。热身可换边,比赛开始后就禁止手动换边
  • 我不当学长 管理员组@Ta 3月前 0
    引用 3

    0.8.2

    August 25, 2024

    • Added capability to have multiple coaches in a team.
    • Coaches will now be invisible, they will drop the bomb on the spawn if they get it and will die 1 second before freezetime ends.
    • If a match is loaded, player will directly join their respective team, skipping the join team menu.
    • Fixed a bug where loading a saved nade would make the player stuck.
    • Added matchzy_stop_command_no_damage convar to determine whether the stop command becomes unavailable if a player damages a player from the opposing team.
    • .map command can now be used without "de_" prefix for maps. (Example: .map dust2)

    这个版本好像加入了跳过选边界面

  • XCPLS 楼主 一级用户组@Ta 2月前 0
    引用 4
    我不当学长 0.8.2 August 25, 2024 Added capability to have multiple coaches in a team. Coaches will ...
    开始后还是能手动换边,我想找一种禁止打开换边菜单的方法
  • kakke 一级用户组@Ta 29天前 1
    引用 5
    #include  <sourcemod>
    #include  <sdktools>
    #include  <clientprefs>

    #define  TEAM_TERRORIST  2
    #define  TEAM_CT  3

    //  全局变量
    bool  g_bGameStarted  =  false;

    //  插件初始化函数
    public  void  OnPluginStart()
    {
            //  注册热身和比赛开始监听
            HookEvent("round_start",  OnRoundStart,  EventHookMode_Post);
            HookEvent("game_newmap",  OnGameNewMap,  EventHookMode_Post);
            HookEvent("player_team",  OnPlayerChangeTeam,  EventHookMode_Post);

            //  启动时检查当前状态
            g_bGameStarted  =  false;
    }

    //  监听新地图开始时重置比赛状态
    public  void  OnGameNewMap(Event  event,  const  char[]  name,  bool  dontBroadcast)
    {
            g_bGameStarted  =  false;    //  游戏还没有开始
    }

    //  监听回合开始
    public  void  OnRoundStart(Event  event,  const  char[]  name,  bool  dontBroadcast)
    {
            g_bGameStarted  =  false;    //  设置为热身阶段
    }

    //  监听玩家切换队伍
    public  void  OnPlayerChangeTeam(Event  event,  const  char[]  name,  bool  dontBroadcast)
    {
            int  client  =  GetClientOfUserId(GetEventInt(event,  "userid"));

            //  如果比赛已经开始,禁止切换队伍
            if  (g_bGameStarted  &&  client  !=  0)
            {
                    int  currentTeam  =  GetClientTeam(client);

                    //  如果玩家试图切换到敌队,回退其操作
                    if  (currentTeam  ==  TEAM_TERRORIST)
                    {
                            PrintToChat(client,  "比赛开始后无法切换到反恐队。");
                            ForcePlayerChangeTeam(client,  TEAM_TERRORIST);
                    }
                    else  if  (currentTeam  ==  TEAM_CT)
                    {
                            PrintToChat(client,  "比赛开始后无法切换到恐怖分子队。");
                            ForcePlayerChangeTeam(client,  TEAM_CT);
                    }
            }
            else
            {
                    //  在热身阶段允许切换队伍
                    PrintToChat(client,  "您可以自由切换队伍。");
            }
    }

    //  监听游戏开始时的事件
    public  void  OnGameStart(Event  event,  const  char[]  name,  bool  dontBroadcast)
    {
            //  比赛开始时禁止换队
            g_bGameStarted  =  true;
            PrintToChatAll("比赛已开始,禁止手动换队!");
    }
返回