关于:
脚本作者:Squidoodle
原帖链接:点击右侧更多信息
作者主页:点击右侧获取帮助
搬运汉化:An
详细注释:ChatGPT Plus
脚本说明:
此脚本用于绘制线条显示AA的角度,可以在屏幕上绘制也可以在脚底绘制。
功能位置:
Visuals -> Other -> Extra(原Lua位置失效 已修复)
截图预览:
源代码(如不能正常下载,可复制保存):
脚本作者:Squidoodle
原帖链接:点击右侧更多信息
作者主页:点击右侧获取帮助
搬运汉化:An
详细注释:ChatGPT Plus
脚本说明:
此脚本用于绘制线条显示AA的角度,可以在屏幕上绘制也可以在脚底绘制。
功能位置:
Visuals -> Other -> Extra(原Lua位置失效 已修复)
截图预览:
源代码(如不能正常下载,可复制保存):
反自瞄指示线:
--[[
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
_ ___ __ __ __ __ _ ____ _____ --
/ \ |_ _|| \/ |\ \ / // \ | _ \ | ____| ___ _ __ --
/ _ \ | | | |\/| | \ \ /\ / // _ \ | |_) || _| / __|| '_ \ --
/ ___ \ | | | | | | \ 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)