Lua AntiRvanka

Толкин

Активный
Автор темы
135
93
Обновил, в ближайшем времени изменю механизм палева рванки, чтобы исключить ложны срабатывания(резкий поворот на маверике, сильное столкновение машин) из-за которых перса удаляет система.
 

wD.D159

Известный
Друг
446
480
Обновил, в ближайшем времени изменю механизм палева рванки, чтобы исключить ложны срабатывания(резкий поворот на маверике, сильное столкновение машин) из-за которых перса удаляет система.
А так же когда персонаж падает, падает с парашютом, стантит на машине (прыжок используя какой либо объект, например скалу), стантит на байке, падает с высоты на машине или байке. Ну крч ты понял.

PS: Может все таки персонажа не удалять, а то в слежке админы могут забанить тебя с проверкой по коллизии))
 
  • Нравится
Реакции: Randy и Толкин

diphenyloxalate

Участник
19
10
А как же уноккуп? Юзаю это

Lua:
local SPEED_LIMIT    = 1    -- скорость, выше которой срабатывает антирванка, 1 примерно соответствует 160км/ч
local DIST_LIMIT    = 1    -- расстояние, меньше которого срабатывает антирванка
local NOP        = false -- если false, то просто заменит скорость на 0, если true - полный игнор игрока, будто он афк
local MSG_TIMEOUT    = 10    -- раз в сколько секунд выводить варнинги на рванку (индивидуально для каждого ID)

function getSpeedFromVector3D(vec)
    return math.sqrt(vec.x ^ 2 + vec.y ^ 2 + vec.z ^ 2)
end

function getDistanceFrom(vec)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    return math.sqrt((vec.x - x) ^ 2 + (vec.y - y) ^ 2 + (vec.z - z) ^ 2)
end

local messages = {}

function warning(id, speed, rtype)
    if messages[id] and os.clock() - messages[id] < MSG_TIMEOUT then
        return
    end
    messages[id] = os.clock()
    local nick = sampIsPlayerConnected(id) and sampGetPlayerNickname(id) or '[Disconnected]'
    sampAddChatMessage(string.format('Игрок %s [ID %d] возможно использует %s рванку (speed %0.3f)',
    nick, id, rtype, getSpeedFromVector3D(speed)), -1)
end

local events = require('lib.samp.events')

function events.onPlayerSync(id, data)
    if getSpeedFromVector3D(data.moveSpeed) > SPEED_LIMIT and getDistanceFrom(data.position) < DIST_LIMIT then
        warning(id, data.moveSpeed, 'onfoot')
        data.moveSpeed = {x = 0, y = 0, z = 0}
        if NOP then return false end
        return {id, data}
    end
end

function events.onVehicleSync(id, veh, data)
    if getSpeedFromVector3D(data.moveSpeed) > SPEED_LIMIT and getDistanceFrom(data.position) < DIST_LIMIT then
        warning(id, data.moveSpeed, 'incar')
        data.moveSpeed = {x = 0, y = 0, z = 0}
        if NOP then return false end
        return {id, veh, data}
    end
end

function events.onUnoccupiedSync(id, data)
    if getSpeedFromVector3D(data.moveSpeed) > SPEED_LIMIT and getDistanceFrom(data.position) < DIST_LIMIT then
        warning(id, data.moveSpeed, 'unoccupied')
        data.moveSpeed = {x = 0, y = 0, z = 0}
        if NOP then return false end
        return {id, data}
    end
end
 
У

Удалённый пользователь 257815

Гость
Бывает ошибочно удаляет людей например когда на аризонке чела инкаришь, то тн пропадает, сделай комманду что б можно было возвращать обратно человека или какой нить вайт лист
это и так есть уже, читай шапку
 

UA_GhosT

Известный
6
0
Кстати. Сделай так, чтобы скрипт чекал ЛВЛ чела, перед тем как убрать его. К примеру чтобы скрипт игнорировал игроков, с 2 или 3+лвл, дабы избежать ложных срабатываний.
 

aaa111bbb

Потрачен
301
132
Единственный минус.Когда ты пассажир водителя может кикнуть и сколько на insert не жми он не появиться.Выходишь из машины и кикает за тп.
 

zDave11

Новичок
3
0
В общем не знаю в курсе ты или нет, но команда return не работает, не возвращает игрока обратно. Надо анализировать какие битстримы вызывает сервер при появлении игрока на стриме и сделать те же действия, что и сервер. Либо у тебя в регистрации битстримов ошибка, либо в чем-то еще, нужно разбираться.