【已解决】PrintToCenterHTML如何在回合开始时使用

Shamihane 一级用户组 3月前 328

感谢学长 我研究完了回来铺个路

CSSharp中没有回合开始结束的Listener,只可以用Source的Event,通过
RegisterEventHandler这个函数中添加布尔值,再用Ontick监听器加IF判定Event

需要注意几个踩坑点 PrintToCenterHTML需要添加延迟才可以正常显示,我是用两个Event时间差实现的延迟
比如我想在回合开始时显示一张图片在屏幕中心,以下为相关代码

private bool roundstart = true;
      private bool htmlstart = true;

        private void StartLive()
        {
            RegisterEventHandler<EventRoundStart>((@event, info) =>
            {
                roundstart = true;
                return HookResult.Continue;
            });
            RegisterEventHandler<EventRoundFreezeEnd>((@event, info) =>
            {
                htmlstart = false;
                return HookResult.Continue;
            });
            RegisterListener<Listeners.OnTick>(() =>
            {
               
                if (roundstart)
                {
                    roundstart = false;
                    htmlstart = true;
                }  
                if (htmlstart)
                {
                    for (int i = 1; i < Server.MaxPlayers; i++)
                    {
                        var ent = NativeAPI.GetEntityFromIndex(i);
                        if (ent == 0)
                            continue;
       
                        var client = new CCSPlayerController(ent);
                        if (client == null || !client.IsValid)
                            continue;
                        client.PrintToCenterHtml(
                        $"<img src='图片地址' alt='Image' /><br>"
                        );
                    }
                }
            });

CSGO插件分享-申明 1、本网站名称:CSGO插件分享-中文站  网址:https://bbs.csgocn.net
2、本站的宗旨在于为CSGO玩家提供一个插件分享的中文资源平台,多数插件来源于SourceMod论坛,并配以中文介绍和安装教程。
3、欢迎有能力的朋友共享有趣的CSGO插件资源。
4、本站资源大多为百度网盘,如发现链接失效,可以点: 这里进行反馈,我们会第一时间更新。
最新回复 (8)
  • 我不当学长 管理员组@Ta 3月前 0
    引用 2
    Ontick当然会造成一直显示了,因为tick每时每刻都会被触发,换一个一次性的监听事件,比如onroundstart或者onroundend等等,具体时间的名字,需要你自己找找,我写的不一定对。
  • Shamihane 楼主 一级用户组@Ta 3月前 0
    引用 3
    我不当学长 Ontick当然会造成一直显示了,因为tick每时每刻都会被触发,换一个一次性的监听事件,比如onroundstart或者onroundend等等,具体时间的名字,需要你自己找找,我写的不一定对。
    哦哦原来如此()
  • Shamihane 楼主 一级用户组@Ta 3月前 0
    引用 4
    还有一个小问题  printtocenterhtml可以显示图片吗
  • Shamihane 楼主 一级用户组@Ta 3月前 1
    引用 6

    感谢学长 我研究完了回来铺个路

    CSSharp中没有回合开始结束的Listener,只可以用Source的Event,通过
    RegisterEventHandler这个函数中添加布尔值,再用Ontick监听器加IF判定Event

    需要注意几个踩坑点 PrintToCenterHTML需要添加延迟才可以正常显示,我是用两个Event时间差实现的延迟
    比如我想在回合开始时显示一张图片在屏幕中心,以下为相关代码

    private bool roundstart = true;
    private bool htmlstart = true;
    private void StartLive()
            {
                RegisterEventHandler<EventRoundStart>((@event, info) =>
                {
                    roundstart = true;
                    return HookResult.Continue;
                });
                RegisterEventHandler<EventRoundFreezeEnd>((@event, info) =>
                {
                    htmlstart = false;
                    return HookResult.Continue;
                });
                RegisterListener<Listeners.OnTick>(() =>
                {
                   
                    if (roundstart)
                    {
                        roundstart = false;
                        htmlstart = true;
                    }  
                    if (htmlstart)
                    {
                        for (int i = 1; i < Server.MaxPlayers; i++)
                        {
                            var ent = NativeAPI.GetEntityFromIndex(i);
                            if (ent == 0)
                                continue;
           
                            var client = new CCSPlayerController(ent);
                            if (client == null || !client.IsValid)
                                continue;
                            client.PrintToCenterHtml(
                            $"<img src='图片地址' alt='Image' /><br>"
                            );
                        }
                    }
                });
    }
     
  • 我不当学长 管理员组@Ta 3月前 0
    引用 7
    Shamihane 感谢学长 我研究完了回来铺个路 CSSharp中没有回合开始结束的Listener,只可以用Source的Event,通过RegisterEventHandler这个函数中添加布尔值,再用Ontic ...
    功能确实满足了,但是提点小意见,ontick会一直执行而不会停止,只是说不会再show  image了,感觉可以想办法再优化一下性能,create的timer来做这个show一段时间图片的功能
  • 我不当学长 管理员组@Ta 3月前 0
    引用 8
    Shamihane 感谢学长 我研究完了回来铺个路 CSSharp中没有回合开始结束的Listener,只可以用Source的Event,通过RegisterEventHandler这个函数中添加布尔值,再用Ontic ...
    可以看看我贴的链接里面,他是怎样怎样让图片持续显示的
  • 我不当学长 管理员组@Ta 3月前 0
    引用 9
    Shamihane 感谢学长 我研究完了回来铺个路 CSSharp中没有回合开始结束的Listener,只可以用Source的Event,通过RegisterEventHandler这个函数中添加布尔值,再用Ontic ...
    不过感觉你的需求就是在回合开始到冻结时间结束,用ontick似乎也没问题,哈哈
返回