- Статус
- Оффлайн
- Регистрация
- 21 Дек 2018
- Сообщения
- 678
- Реакции
- 294
s:
[/SPOIler
Код:
local entity_list = csgo.interface_handler:get_entity_list()
local global_vars = csgo.interface_handler:get_global_vars()
local engine_client = csgo.interface_handler:get_engine_client()
local events = csgo.interface_handler:get_events()
local render = fatality.render
local menu = fatality.menu
local font = render:create_font("Tahoma", 14, 400, false)
local icons = render:create_font("undefeated", 16, 400, true)
local show_window = false
local colors =
{
white = csgo.color(255, 255, 255, 180),
dark_purple = csgo.color(61 ,61 ,61 , 255),
darker_purple = csgo.color(11, 11, 11, 255),
border_purple = csgo.color(100, 100, 100, 255),
gr = csgo.color(100, 255, 100, 180),
}
local weapons =
{
["ssg08"] = "sgg08 " ,
["xm1014"] = "xm1014 ",
["sawedoff"] = "sawed off ",
["mag7"] = "mag 7 ",
["nova"] = "nova ",
["negev"] = "negev ",
["m249"] = "m249 ",
["taser"] = "zeus ",
["flashbang"] = "flash ",
["hegrenade"] = "he ",
["smokegrenade"] = "smoke ",
["molotov"] = "moly ",
["decoy"] = "fake ",
["incgrenade"] = "moly ",
["kevlar"] = "kelvar ",
["assaultsuit"] = "helmet ",
["defuser"] = "defuser ",
["deagle"] = "deagle ",
["elite"] = "duals ",
["fiveseven"] = "57 ",
["glock"] = "glock ",
["p250"] = "p250 ",
["usp_silencer"] = "usps ",
["tec9"] = "t9 ",
["cz75a"] = "cz ",
["revolver"] = "r8 ",
["mac10"] = "mac10 ",
["ump45"] = "ump45 ",
["bizon"] = "bizon ",
["mp7"] = "mp7 ",
["mp9"] = "mp9 ",
["p90"] = "p90 ",
["famas"] = "fem ",
["m4a1"] = "m4 ",
["m4a1_silencer"] = "m4-s ",
["galilar"] = "galilar ",
["aug"] = "aug ",
["sg556"] = "ssg556 ",
["ak47"] = "ak ",
["g3sg1"] = "scar ",
["scar20"] = "scar " ,
["awp"] = "awp ",
["unknown"] = "- "
}
local players = {}
function get_alpha()
return math.floor(math.abs(math.sin(global_vars.realtime / 2) * 128) + 127)
end
function get_longest_text()
local size = 0
for k, v in pairs(players) do
local weapons_string = ""
for k, v in pairs(v["weapons"]) do
weapons_string = weapons_string .. weapons[v]
end
local namesize = render:text_size(font, v["name"]).x + render:text_size(icons, weapons_string).x
if(namesize > size) then
size = namesize
end
end
return size
end
function get_table_size(tbl)
local ctr = 0
for k, v in pairs(tbl) do
ctr = ctr + 1
end
return ctr
end
function draw_window(x, y, w, h)
-- main window border
render:rect(x - 1, y - 1, w + 2, h + 2, colors.border_purple)
-- window top
render:rect_filled(x, y, w, 12, colors.dark_purple)
render:rect_filled(x, y + 12, w, h - 12, colors.darker_purple)
render:rect_fade(x, y + 10, w, 2, csgo.color(0, 162, 232, get_alpha()), csgo.color(255, 174, 201, get_alpha()),csgo.color(181, 230, 29, get_alpha()) , true)
--menu content box
render:rect(x + 14, y + 29, w - 28, h - 14 * 3, colors.border_purple)
render:rect_filled(x + 15, y + 30, w - 28 - 2, h - 14 * 3 - 2, colors.dark_purple)
local counter = 0
for k, v in pairs(players) do
local weapons_string = ""
for k, v in pairs(v["weapons"]) do
weapons_string = weapons_string .. weapons[v]
end
render:text(font, x + 24, y + 35 + counter * 15, v["name"], colors.white)
render:text(icons, x + 30 + render:text_size(font, v["name"]).x, y + 35 + counter * 15, weapons_string, colors.gr)
counter = counter + 1
end
for i = 0, 15 do
render:rect(x, y + 12 + i, w, 1, csgo.color(0, 0, 0, (15 - i) * 16))
end
end
events:add_event("item_purchase")
events:add_event("round_start")
fatality.callbacks:add("events", function(e)
local local_player = entity_list:get_localplayer()
if(e:get_name() == "item_purchase") then
if e:get_int("team") ~= local_player:get_var_int("CBaseEntity->m_iTeamNum") then
local purchased_weapon = e:get_string("weapon")
purchased_weapon = string.gsub(purchased_weapon, "weapon_", "")
purchased_weapon = string.gsub(purchased_weapon, "item_", "")
local buyer = entity_list:get_player_from_id(e:get_int("userid"))
if(players[buyer:get_index()] == nil) then
players[buyer:get_index()] =
{
["name"] = buyer:get_name(),
["weapons"] = { purchased_weapon }
}
else
table.insert(players[buyer:get_index()]["weapons"], purchased_weapon)
end
end
end
if(e:get_name() == "round_freeze_end") then
show_window = true
end
if(e:get_name() == "round_start") then
players = {}
show_window = true
end
show_window = true
end)
fatality.callbacks:add("paint", function()
if(show_window and engine_client:is_in_game()) then
draw_window(1500, 500, get_longest_text() + 50, 70 + get_table_size(players) * 15 - 15)
end
end)