На ваш бан.
-
Автор темы
- #1
RU:
Вот скрипт, позволяющий вычислить состояние игрока [in slow walking, in air, standing, running, crouching(standing), crouching(moving), crouching(in air)].
Постарался максимально возможно всё прокомментировать, что бы всем всё было понятно.
ENG:
Here is a script, than calculate the state of the player [in slow walking, in air, standing, running, crouching(standing), crouching(moving), crouching(in air)].
I tried to comment on everything as much as possible(in russian, use translator) so that everyone would understand everything.
В основном это написано для начинающих недо-пастерков как я, которые даже не знают что такое нетвары..
Вот скрипт, позволяющий вычислить состояние игрока [in slow walking, in air, standing, running, crouching(standing), crouching(moving), crouching(in air)].
Постарался максимально возможно всё прокомментировать, что бы всем всё было понятно.
ENG:
Here is a script, than calculate the state of the player [in slow walking, in air, standing, running, crouching(standing), crouching(moving), crouching(in air)].
I tried to comment on everything as much as possible(in russian, use translator) so that everyone would understand everything.
code_language.lua:
local slowWalkActive = ui.get_key_bind("antihit_extra_slowwalk_bind")
local fontLogo = renderer.setup_font("C:/windows/fonts/verdanab.ttf", 30, 0)
local positionDetected = "standing"
local screen = engine.get_screen_size()
local localPlayer = entitylist.get_local_player()
local function indicators()
if engine.is_connected() then -- Проверяем подключены ли мы к серверу, иначе смысла от выполнения кода не будет
m_vecVelocity = {
[0] = se.get_netvar("DT_BasePlayer", "m_vecVelocity[0]"),
[1] = se.get_netvar("DT_BasePlayer", "m_vecVelocity[1]")
}
velocity = math.sqrt(localPlayer:get_prop_float(m_vecVelocity[0]) ^ 2 + localPlayer:get_prop_float(m_vecVelocity[1]) ^ 2) -- Вычисляем скорость игрока
m_hGroundEntity = localPlayer:get_prop_int(se.get_netvar("DT_BasePlayer", "m_hGroundEntity")) -- Через нетвар "DT_BasePlayer", и его оффсет "m_hGroundEntity" вычисляем, на земле ли персонаж
m_bDucked = localPlayer:get_prop_int(se.get_netvar("DT_BasePlayer", "m_bDucked")) -- Через нетвар "DT_BasePlayer", и его оффсет "m_bDucked" вычисляем, находится ли персонаж в состоянии присяда. Важно заметить, что если персонаж будет находится не на земле, но с зажатым контролом, оффсет будет выдавать что персонаж не находится в состоянии присяда, эта информация нам позже пригодится
if slowWalkActive:is_active() and m_hGroundEntity ~= -1 and m_bDucked == 0 and math.floor(velocity) > 1 then -- Проверяем, идёт ли игрок на слоуволке
positionDetected = "in slow walking" -- Если да, то записываем это в переменную "positionDetected", в которой в конечном итоге будет храниться информация о состоянии игрока
else
if m_hGroundEntity == -1 then -- Если персонаж не на земле, то...
if client.is_key_pressed(162) then -- Тут происходит проверка на нахождение персонажа в воздухе в состоянии присяда, но как я говорил ранее, оффсет "m_bDucked" сделать такую проверку не позволит, так что воспользуемcя "кастылём" и делаем проверку на зажатую клавишу "ctrl"
positionDetected = "crouching(in air)" -- Если да - вписываем информацию об этом в переменную
else
positionDetected = "in air" -- А если контрол не нажат, значит персонаж просто находится в воздухе, записываем это в переменную
end
elseif m_bDucked == 0 and math.floor(velocity) > 1 and m_hGroundEntity ~= -1 and not slowWalkActive:is_active() then -- Тут происходит проверка на то, бежит ли игрок
positionDetected = "running" -- Если та - записываем в переменную
else
if m_bDucked == 1 and math.floor(velocity) <= 1 then -- Если нет, то остаётся три варианта: Персонаж находится в состоянии присяда и НЕ двигается[crouching(standing)], персонаж находится в состоянии приcяда и двигается[crouching(moving)] или персонаж просто стоит[standing]
positionDetected = "crouching(standing)"
elseif m_bDucked == 1 then
positionDetected = "crouching(moving)"
else
positionDetected = "standing"
end
end
end
end
renderer.text(positionDetected, fontLogo, vec2_t.new(screen.x / 2, screen.y / 2 + 20), 14, color_t.new(252, 199, 248, 255)) -- Выводим информацию о состоянии игрока на экран
end
client.register_callback("paint", indicators)