forked from sapphyrus/gamesense-lua
-
Notifications
You must be signed in to change notification settings - Fork 0
/
name_esp.lua
116 lines (97 loc) · 6.88 KB
/
name_esp.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
--local variables for API. Automatically generated by https://github.com/simpleavaster/gslua/blob/master/authors/sapphyrus/generate_api.lua
local client_latency, client_log, client_draw_rectangle, client_draw_circle_outline, client_userid_to_entindex, client_draw_indicator, client_draw_gradient, client_set_event_callback, client_screen_size, client_eye_position = client.latency, client.log, client.draw_rectangle, client.draw_circle_outline, client.userid_to_entindex, client.draw_indicator, client.draw_gradient, client.set_event_callback, client.screen_size, client.eye_position
local client_draw_circle, client_color_log, client_delay_call, client_draw_text, client_visible, client_exec, client_trace_line, client_set_cvar = client.draw_circle, client.color_log, client.delay_call, client.draw_text, client.visible, client.exec, client.trace_line, client.set_cvar
local client_world_to_screen, client_draw_hitboxes, client_get_cvar, client_draw_line, client_camera_angles, client_draw_debug_text, client_random_int, client_random_float = client.world_to_screen, client.draw_hitboxes, client.get_cvar, client.draw_line, client.camera_angles, client.draw_debug_text, client.random_int, client.random_float
local entity_get_local_player, entity_is_enemy, entity_get_player_name, entity_get_steam64, entity_get_bounding_box, entity_get_all, entity_set_prop, entity_get_player_weapon = entity.get_local_player, entity.is_enemy, entity.get_player_name, entity.get_steam64, entity.get_bounding_box, entity.get_all, entity.set_prop, entity.get_player_weapon
local entity_hitbox_position, entity_get_prop, entity_get_players, entity_get_classname = entity.hitbox_position, entity.get_prop, entity.get_players, entity.get_classname
local globals_realtime, globals_absoluteframetime, globals_tickcount, globals_curtime, globals_mapname, globals_tickinterval, globals_framecount, globals_frametime, globals_maxplayers = globals.realtime, globals.absoluteframetime, globals.tickcount, globals.curtime, globals.mapname, globals.tickinterval, globals.framecount, globals.frametime, globals.maxplayers
local ui_new_slider, ui_new_combobox, ui_reference, ui_set_visible, ui_is_menu_open, ui_new_color_picker, ui_set_callback, ui_set, ui_new_checkbox, ui_new_hotkey, ui_new_button, ui_new_multiselect, ui_get = ui.new_slider, ui.new_combobox, ui.reference, ui.set_visible, ui.is_menu_open, ui.new_color_picker, ui.set_callback, ui.set, ui.new_checkbox, ui.new_hotkey, ui.new_button, ui.new_multiselect, ui.get
local math_ceil, math_tan, math_log10, math_randomseed, math_cos, math_sinh, math_random, math_huge, math_pi, math_max, math_atan2, math_ldexp, math_floor, math_sqrt, math_deg, math_atan, math_fmod = math.ceil, math.tan, math.log10, math.randomseed, math.cos, math.sinh, math.random, math.huge, math.pi, math.max, math.atan2, math.ldexp, math.floor, math.sqrt, math.deg, math.atan, math.fmod
local math_acos, math_pow, math_abs, math_min, math_sin, math_frexp, math_log, math_tanh, math_exp, math_modf, math_cosh, math_asin, math_rad = math.acos, math.pow, math.abs, math.min, math.sin, math.frexp, math.log, math.tanh, math.exp, math.modf, math.cosh, math.asin, math.rad
local table_maxn, table_foreach, table_sort, table_remove, table_foreachi, table_move, table_getn, table_concat, table_insert = table.maxn, table.foreach, table.sort, table.remove, table.foreachi, table.move, table.getn, table.concat, table.insert
local string_find, string_format, string_rep, string_gsub, string_len, string_gmatch, string_dump, string_match, string_reverse, string_byte, string_char, string_upper, string_lower, string_sub = string.find, string.format, string.rep, string.gsub, string.len, string.gmatch, string.dump, string.match, string.reverse, string.byte, string.char, string.upper, string.lower, string.sub
--end of local variables
local enabled_reference = ui.new_combobox("VISUALS", "Player ESP", "Name", {"Off", "Normal", "Bold", "Small"})
local color_reference = ui.new_color_picker("VISUALS", "Player ESP", "Name ", 255, 255, 255, 200)
local default_name_reference, default_name_color_reference = ui.reference("VISUALS", "Player ESP", "Name")
local teammates_reference = ui.reference("VISUALS", "Player ESP", "Teammates")
local function get_dormant_players(enemy_only, alive_only)
local enemy_only = enemy_only ~= nil and enemy_only or false
local alive_only = alive_only ~= nil and alive_only or true
local result = {}
local player_resource = entity_get_all("CCSPlayerResource")[1]
for player=1, globals_maxplayers() do
if entity_get_prop(player_resource, "m_bConnected", player) == 1 then
local local_player_team
if enemy_only then
local_player_team = entity_get_prop(entity_get_local_player(), "m_iTeamNum")
end
local is_enemy = true
if enemy_only and entity_get_prop(player, "m_iTeamNum") == local_player_team then
is_enemy = false
end
if is_enemy then
local is_alive = true
if alive_only and entity_get_prop(player_resource, "m_bAlive", player) ~= 1 then
is_alive = false
end
if is_alive then
table_insert(result, player)
end
end
end
end
return result
end
local function on_enabled_change()
--hide default elements
ui_set_visible(default_name_reference, false)
ui_set_visible(default_name_color_reference, false)
local enabled = ui_get(enabled_reference)
ui_set(default_name_reference, enabled == "Normal")
end
ui.set_callback(enabled_reference, on_enabled_change)
on_enabled_change()
local function on_paint(ctx)
ui_set(default_name_color_reference, ui_get(color_reference))
local enabled = ui_get(enabled_reference)
if enabled == "Off" or enabled == "Normal" then
return
end
local r, g, b, a = ui_get(color_reference)
local players = get_dormant_players(not ui_get(teammates_reference))
local local_player = entity_get_local_player()
if local_player == nil then
return
end
local spectator_target = entity_get_prop(local_player, "m_iObserverMode") == 5 and entity_get_prop(local_player, "m_hObserverTarget") or nil
local y_extra = 0
local upcase = false
local flags = "c"
if enabled == "Bold" then flags = "cb" end
if enabled == "Small" then flags = "c-" end
if enabled == "Small + Bold" then flags = "cb-" end
if enabled == "Small" or enabled == "Small + Bold" then
y_extra = 2
upcase = true
end
local team_player =spectator_target or local_player
local team = entity_get_prop(team_player, "m_iTeamNum")
for i=1, #players do
local player = players[i]
if player ~= spectator_target and player ~= local_player and entity_get_prop(player, "m_iTeamNum") ~= team then
local name = entity_get_player_name(player)
if upcase then
name = string_upper(name)
end
local x1, y1, x2, y2, a_multiplier = entity_get_bounding_box(ctx, player)
if x1 ~= nil then
local x_center = x1 + (x2-x1)/2
if x_center ~= nil then
client_draw_text(ctx, x_center, y1-6+y_extra, r, g, b, a*a_multiplier, flags, 0, name)
end
end
end
end
end
client_set_event_callback("paint", on_paint)