key = require("vkeys")
local radius = 150 -- радиус прицела, можно менять на своё усмотрение, как удобно.
KEY = key.VK_J -- кнопка активации
active = true -- активен ли функционал скрипта по умолчанию. true - активен, false - неактивен
trailer = nil -- хендл трейлера. Изменять не нужно.
function main()
while not isSampAvailable() do wait(100) end
sampAddChatMessage("attachTrailer загружен! Активация/деактивация: /atr", -1)
sampAddChatMessage("Разработчик: Yuriy Code", -1)
sampRegisterChatCommand("atr", function()
active = not active
printString("AttachTrailer: "..(active and "ON" or "OFF"), 500)
end)
while true do
wait(0)
if isKeyDown(KEY) and not sampIsCursorActive() and isCharInAnyCar(1) and getDriverOfCar(getCarCharIsUsing(1)) == 1 and active then -- рендер прицела и поиска машин
local x, y = getScreenResolution()
x = x / 2 - radius / 2
y = y / 3.3 - radius / 2
renderDrawLine(x, y, x + radius, y, 3, -1)
renderDrawLine(x, y, x, y + radius + 3, 3, -1)
renderDrawLine(x, y + radius, x + radius, y + radius, 3, -1)
renderDrawLine(x + radius, y, x + radius, y + radius, 3, -1)
local vehs = getAllVehicles()
local clear = true
if #vehs > 0 then
for i = 1, #vehs do
if vehs[i] ~= getCarCharIsUsing(1) then
local xx, yy, zz = getCarCoordinates(vehs[i])
local xxx, yyy = convert3DCoordsToScreen(xx, yy, zz)
local px, py, pz = getCharCoordinates(1)
if xxx >= x and xxx <= x + radius and yyy >= y and yyy <= y + radius and isCarOnScreen(vehs[i]) and getDistanceBetweenCoords3d(px, py, pz, xx, yy, zz) <= 20 then
renderDrawLine(xxx, yyy, x + radius / 2, y + radius / 2, 3, -1)
trailer = vehs[i]
clear = false
break
end
end
end
end
if clear then
trailer = nil
end
end
if not isKeyDown(KEY) and trailer ~= nil then
if isCharInAnyCar(1) and doesVehicleExist(trailer) then
if isTrailerAttachedToCab(trailer, getCarCharIsUsing(1)) then
detachTrailerFromCab(trailer, getCarCharIsUsing(1))
printString("Прицеп успешно откреплен", 1000)
trailer = nil
else
attachTrailerToCab(trailer, getCarCharIsUsing(1))
printString("Прицеп успешно прикреплен", 1000)
end
end
trailer = nil
end
end
end
function printString(str, time)
sampAddChatMessage(str, -1)
if time then wait(time) end
end