2016-06-20 3 views
1

GMODにテキストが表示され、テキストが6分ごとに変わるボックスを作成したいとします。ここで私はこれまで持っているものです:テキストが表示されていないと私は何をするか分からないGMODサーバーのルア・テキスト・ループ

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で新しくて、私は助言を感謝したいと思います。

EDIT:また、サーバーで自動的に再生したいので、ログインすると他のプレーヤーと同じテキストが表示されます。今すぐ私はそれをオートランフォルダに入れていますが、ログインするたびに最初から始まります:/ また、永遠に繰り返すこともしたいのですが、whileループを使用するとゲームがクラッシュします。

注:私はちょうどそれ

答えて

0

あなたはそのように行うことになっていませんテストするために50秒にタイマーを置きます。変数を使用して描画するかどうかを決定し、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) 

タイマーには、レンダリング機能を使用するための適切なコンテキストがなく、1回ではなく各フレームの描画が必要です。