【问题标题】:Lua Text Loop on GMOD ServerGMOD 服务器上的 Lua 文本循环
【发布时间】:2016-06-20 23:56:09
【问题描述】:

我想在 GMOD 上制作一个显示文本的框,文本每 6 分钟更改一次。到目前为止,这是我所得到的:

    AddCSLuaFile( "classes.lua" );

surface.CreateFont( "mystyle", { 
font = "Arial",
    extended = false,
    size = 20,
    weight = 500,
    blursize = 0,
    scanlines = 0,
    antialias = true,
    underline = false,
    italic = false,
    strikeout = false,
    symbol = false,
    rotary = false,
    shadow = false,
    additive = false,
    outline = false,
}   );

function classesBox() -- Box thing function
draw.RoundedBox(3, 5, 250, 320, 100, Color(0,0,0,200));

end 
hook.Add("HUDPaint", "MyHudName", classesBox)


 while true do
--Infinite loop
 timer.Simple(50, function() draw.SimpleText("Text 1", "mystyle", 24, 275, Color(255,255,255,255)); draw.SimpleText("Text 2", "mystyle", 24, 300, Color(255,255,255,255)); end );

 end

在客户端上没有出现文本,我不知道该怎么办...... 有没有比我正在做的更容易的方法?我是 Lua 的新手,如果有任何建议,我将不胜感激。

编辑:另外,我希望它在服务器上自动播放,所以当我登录时,我会在框中看到与其他玩家相同的文本。现在我将它放在自动运行文件夹中,但是每当我登录时,它都会从头开始:/ 而且我还希望它永远重复,但如果我使用 while 循环,它会使我的游戏崩溃。

注意:我将计时器设置为 50 秒只是为了测试它

【问题讨论】:

    标签: loops timer lua


    【解决方案1】:

    你不应该那样做。使用变量来决定是否要绘制它并在 HUDPaint 中使用它。

    function classesBox( )
      draw.RoundedBox( 3, 5, 250, 320, 100, Color( 0, 0, 0, 200 ) )
      if SomeCondition then
        draw.SimpleText( "Text 1", "mystyle", 24, 275, color_white )
        draw.SimpleText( "Text 2", "mystyle", 24, 300, color_white )
      end
    end
    
    SomeCondition = true
    timer.Simple( 50, function( ) SomeCondition = false end )
    

    计时器没有正确的上下文来使用渲染函数,它需要在每一帧而不是只绘制一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 2017-01-21
      • 2021-09-28
      相关资源
      最近更新 更多