最新消息

欢迎来到 AIMWARE中文网

立即加入我们以访问我们的所有功能。 注册并登录后,您将能够创建主题、发布对现有主题的回复、为您的其他成员提供声誉、获得您自己的私人信使等等。 快捷而且完全免费,你还在等什么?

最新帖子

反自瞄指示线

[Visuals] 视觉Lua 反自瞄指示线 中文版

没有下载权限
关于:
脚本作者:Squidoodle
原帖链接:点击右侧更多信息
作者主页:点击右侧获取帮助
搬运汉化:An
详细注释:ChatGPT Plus

脚本说明:
此脚本用于绘制线条显示AA的角度,可以在屏幕上绘制也可以在脚底绘制。

功能位置:
Visuals -> Other -> Extra(原Lua位置失效 已修复)

截图预览:
反自瞄指示线.png


源代码(如不能正常下载,可复制保存):

反自瞄指示线:
--[[
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
      _     ___  __  __ __        __ _     ____   _____                         --
     / \   |_ _||  \/  |\ \      / // \   |  _ \ | ____|    ___  _ __           --
    / _ \   | | | |\/| | \ \ /\ / // _ \  | |_) ||  _|     / __|| '_ \          --
   / ___ \  | | | |  | |  \ V  V // ___ \ |  _ < | |___  _| (__ | | | |         --
  /_/   \_\|___||_|  |_|   \_/\_//_/   \_\|_| \_\|_____|(_)\___||_| |_|         --
                                                                                --
   ____                                      _   ____              _            --
  |  _ \  ___ __      __ ___  _ __  ___   __| | | __ )  _   _     / \    _ __   --
  | |_) |/ _ \\ \ /\ / // _ \| '__|/ _ \ / _` | |  _ \ | | | |   / _ \  | '_ \  --
  |  __/| (_) |\ V  V /|  __/| |  |  __/| (_| | | |_) || |_| |  / ___ \ | | | | --
  |_|    \___/  \_/\_/  \___||_|   \___| \__,_| |____/  \__, | /_/   \_\|_| |_| --
                                                        |___/                   --
----------------------------------------------------------------------------------
------------------------本脚本为AIMWARE.cn论坛免费汉化搬运--------------------------
----------------------------------------------------------------------------------
--]]

--[[
--反自瞄指示线(Anti-Aim Angle Lines) 原帖链接https://aimware.net/forum/thread/176173
--原作者:Squidoodle 主页链接https://aimware.net/forum/user/305824
--搬运汉化:An
--详细注释:ChatGPT Plus
--]]


--- GUI相关
--local POS = gui.Reference("Visuals", "Local", "Helper") 原Lua位置不可用 已修复
local POS = gui.Reference("Visuals", "Other", "Extra") -- 获取GUI的位置引用
local MULTI = gui.Multibox(POS, "反自瞄线条") -- 创建一个多选框
local NETWORKED = gui.Checkbox(MULTI, "vis.local.aalines.networked", "网络角度", true) -- 创建一个复选框来显示网络角度
local LOCALANG = gui.Checkbox(MULTI, "vis.local.aalines.local", "本地角度", true) -- 创建一个复选框来显示本地角度
local CAMERAANG = gui.Checkbox(MULTI, "vis.local.aalines.camera", "摄像头角度", true) -- 创建一个复选框来显示摄像头角度
local LENGTH = gui.Slider(POS, "vis.local.aalines.length", "长度", 50, 10, 100, 1) -- 创建一个滑动条用于设置线条长度

local screenX, screenY = draw.GetScreenSize() -- 获取屏幕尺寸

local X_OFFSET = gui.Slider(POS, "vis.local.aalines.xoffset", "X偏移", 0, -screenX/2, screenX/2, 1) -- 创建一个X偏移量的滑动条
local Y_OFFSET = gui.Slider(POS, "vis.local.aalines.yoffset", "Y偏移", 0, -screenY/2, screenY/2, 1) -- 创建一个Y偏移量的滑动条

local ONSCEREN = gui.Checkbox(POS, "vis.local.aalines.onscreen", "屏幕显示", true) -- 创建一个复选框用于控制线条是否显示在屏幕上

local dragging = false -- 是否正在拖动标志
local dragXOffset = 0 -- X轴拖动偏移量
local dragYOffset = 0 -- Y轴拖动偏移量

--- 变量
local fake = nil; -- 伪造的角度
local localAngle = nil; -- 本地角度
local pLocal = entities.GetLocalPlayer(); -- 获取本地玩家实例
local choking; -- 是否被窒息
local lastChoke; -- 上一次窒息时间

--- 数学函数
local function AngleVectors(angles)
    local sp, sy, cp, cy;
    local forward = { }

    sy = math.sin(math.rad(angles[2]));
    cy = math.cos(math.rad(angles[2]));

    sp = math.sin(math.rad(angles[1]));
    cp = math.cos(math.rad(angles[1]));

    forward[1] = cp*cy;
    forward[2] = cp*sy;
    forward[3] = -sp;
    return forward;
end

local function doShit(t1, t2, m)
    local t3 ={};
    for i,v in ipairs(t1) do
        t3[i] = v + (t2[i] * m);
    end
    return t3;
end

local function iHateMyself(value, color, text)
    local forward = {};
    local origin = pLocal:GetAbsOrigin();
    forward = AngleVectors({0, value, 0});
    local end3D = doShit({origin.x, origin.y, origin.z}, forward, 25);
    local w2sX1, w2sY1 = client.WorldToScreen(origin);
    local w2sX2, w2sY2 = client.WorldToScreen(Vector3(end3D[1], end3D[2], end3D[3]));
    draw.Color(color[1], color[2], color[3], color[4])

    if w2sX1 and w2sY1 and w2sX2 and w2sY2 then
        draw.Line(w2sX1, w2sY1, w2sX2, w2sY2)
        local textW, textH = draw.GetTextSize(text);
        draw.TextShadow( w2sX2-(textW/2), w2sY2-(textH/2), text)
    end
end

local function drawAnglesOnScreen(angle, color, text)
    if not ONSCEREN:GetValue() then return end
    local radius = LENGTH:GetValue()
    local centerX, centerY = draw.GetScreenSize()
    centerX = centerX / 2 + X_OFFSET:GetValue()
    centerY = centerY / 2 + Y_OFFSET:GetValue()

    local angleRad = math.rad((cameraAngle.y - angle + 270) % 360)
    local posX = centerX + radius * math.cos(angleRad)
    local posY = centerY + radius * math.sin(angleRad)

    draw.Color(color[1], color[2], color[3], color[4])
    draw.Line(centerX, centerY, posX, posY)

    -- 根据线条角度计算标签位置
    local textW, textH = draw.GetTextSize(text)
    local textOffset = 0
    draw.TextShadow(posX - textW / 2, posY - textH / 2 + textOffset, text)
end

callbacks.Register("Draw", function()
    pLocal = entities.GetLocalPlayer()
    fake = pLocal:GetPropVector("m_angEyeAngles")
    cameraAngle = engine.GetViewAngles()

    if lastChoke and lastChoke <= globals.CurTime() - 1 then
        choking = false
    end

    -- 获取当前鼠标位置
    local mouseX, mouseY = input.GetMousePos()

    -- 基于当前指示器位置计算屏幕中心
    local screenX, screenY = draw.GetScreenSize()
    local centerX = screenX / 2 + X_OFFSET:GetValue()
    local centerY = screenY / 2 + Y_OFFSET:GetValue()

    -- 计算鼠标位置与屏幕中心的距离
    local distanceX = math.abs(mouseX - centerX)
    local distanceY = math.abs(mouseY - centerY)

    -- 检查鼠标左键是否按下,并且鼠标是否在指示器周围的正方形区域内
    local draggingWithinArea = distanceX <= 50 and distanceY <= 50
    if input.IsButtonDown(1) and draggingWithinArea then
        if not dragging then
            -- 开始拖动
            dragging = true

            -- 存储鼠标位置和屏幕中心之间的偏移量
            dragXOffset = mouseX - X_OFFSET:GetValue()
            dragYOffset = mouseY - Y_OFFSET:GetValue()
        else
            -- 拖动时更新偏移值
            X_OFFSET:SetValue(mouseX - dragXOffset)
            Y_OFFSET:SetValue(mouseY - dragYOffset)
        end
    elseif dragging and input.IsButtonDown(1) then
        -- 即使鼠标移出区域,也要在拖动时更新偏移值
        X_OFFSET:SetValue(mouseX - dragXOffset)
        Y_OFFSET:SetValue(mouseY - dragYOffset)
    else
        -- 停止拖动
        dragging = false
    end

    if pLocal and pLocal:IsAlive() then
        if ONSCEREN:GetValue() then
            local lineLength = LENGTH:GetValue()

            -- 计算矩形的大小
            local rectSize = lineLength + lineLength * 0.4 + 75 -- 每边增加10像素以确保线条包含在矩形内
  
            -- 绘制矩形
            draw.Color(255, 255, 255, 255)
            draw.OutlinedRect(centerX - rectSize / 2, centerY - rectSize / 2, centerX + rectSize / 2, centerY + rectSize / 2)
        end
        if fake and NETWORKED:GetValue() then
            iHateMyself(fake.y, {255, 25, 25, 255}, "网络角度")
            drawAnglesOnScreen(fake.y, {255, 25, 25, 255}, "网络角度")
        end
        if localAngle and LOCALANG:GetValue() then
            iHateMyself(localAngle.y, {25, 25, 255, 255}, "本地角度")
            drawAnglesOnScreen(localAngle.y, {25, 25, 255, 255}, "本地角度")
        end
        if cameraAngle and CAMERAANG:GetValue() then
            iHateMyself(cameraAngle.y, {255, 255, 25, 255}, "摄像头角度")
            drawAnglesOnScreen(cameraAngle.y, {255, 255, 25, 255}, "摄像头角度")
        end
    end
end)

callbacks.Register("CreateMove", function(pCmd)
    if pLocal and pLocal:IsAlive() then
        localAngle = pCmd:GetViewAngles()
    end
end)
  • 支持
反馈: 3647131955
作者
An
下载
14
查看
502
首次发布
最后更新
评分
0.00 星 0 星

来自An的更多资源

顶部 底部