我想在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有点新鲜,我很感激任何建议。
编辑:另外,我想让它在服务器上自动播放,所以当我登录时,我会在框中看到与其他播放器相同的文字。现在我把它放在autorun文件夹中,但每当我登录时它从头开始:/ 而且我也想让它永远重复,但是如果我使用while循环它会让我的游戏崩溃。
注意:我把计时器放到50秒只是为了测试它
答案 0 :(得分:0)
你不应该这样做。使用变量来决定是否要绘制它并在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 )
计时器没有正确的上下文来使用渲染功能,它需要绘制每一帧而不是一次。