简单水印

这是一个简单的文本水印,显示了 ping、tickrate 和 windows 时间。在游戏中它看起来像这样:
简单水印
修改flags,margin和padding变量以更改外观。颜色在 2 个绘图函数调用中被硬编码,但也可以轻松修改。

-- 本地化经常使用的API变量以提高性能。 通常不这样做是可以的,但是lua每次都必须将它们作为全局变量来查找。  
local client_latency, client_screen_size, client_system_time, globals_tickinterval, math_floor, renderer_measure_text, renderer_rectangle, renderer_text, string_format = client.latency, client.screen_size, client.system_time, globals.tickinterval, math.floor, renderer.measure_text, renderer.rectangle, renderer.text, string.format

-- 每次CS:GO渲染一帧并让你在游戏场景上绘图时,这个函数都会被执行。  
local function on_paint()
	-- 获取动态信息。 延迟是以秒为单位的,所以我们将其转换为毫秒并四舍五入。 Tickrate的计算方法是1 / tickinterval  
	local screen_width, screen_height = client_screen_size()
	local latency = math_floor(client_latency()*1000+0.5)
	local tickrate = 1/globals_tickinterval()
	local hours, minutes, seconds = client_system_time()

	-- 创建文本
	local text = string_format("%dms", latency) .. " | " .. string_format("%dtick", tickrate) .. " | " .. string_format("%02d:%02d:%02d", hours, minutes, seconds)

	-- 修改这些以改变文本的显示方式。 边距是到右上角的距离,填充是背景矩形比文本大的大小  
	local margin, padding, flags = 18, 4, nil

	-- 如果是“小”的风格,请取消注释  
	-- flags, text = "-", (text:upper():gsub(" ", "   "))

	-- 测量文本大小,使文本从右上角适当偏移  
	local text_width, text_height = renderer_measure_text(flags, text)

	-- 绘制背景和文本
	renderer_rectangle(screen_width-text_width-margin-padding, margin-padding, text_width+padding*2, text_height+padding*2, 32, 32, 32, 200)
	renderer_text(screen_width-text_width-margin, margin, 235, 235, 235, 255, flags, 0, text)
end
client.set_event_callback("paint", on_paint)

Q.E.D.


一个多语言全栈工程师