SA:MP Lua Advance [ARP] Мощная рванка\кикер с машины (InCar)

Lokapon

Новичок
Автор темы
26
12
Версия SA-MP
  1. 0.3.7 (R1)
Описание
Мощная рванка которая позволяет убивать или кикать игроков с сервера.
/arvset - открыть меню | /arv - включить рванку
После включения рванки нажмите R чтоб начать непосредственно рванить


Функции
1. Игнорировать мёртвых\афк игроков
Рванка не будет действовать на игроков которые мертвы или находятся в афк.
Работает только при включённом 3 пункте.

2. Информация о кике\убийстве жертвы
В чат будет выводится строка если вы убили или кикнули жертву.

3. Телепорт за спину жертвы
Рванка будет телепортироваться к игроку который ближе всего к центру экрана.
Также будет рисоваться линия от вас до игрока чтоб вы понимали кого рваните.
Если этот пункт выключен то вы будете сносить все что находится перед вами.

4. Включать невидимку когда жертвы нету
Вы будете телепортироваться под землю если игроков в центре экрана нету.
Работает только при включённом 3 пункте.

5. Настройка мощности рванки
Вы можете ввести желаемую мощность рванки от 0.1 до 5.0
Число должно быть с плавающей точкой (2 - Неправильно, 2.0 - Правильно)

6. Настройка максимальной дистанции до жертвы
Вы можете ввести желаемую максимальную дистанцию до жертвы от 1 до 100
Число должно быть целым без плавающей точки (50.0 - Неправильно, 50 - Правильно)
Работает только при включённом 3 пункте.


Скриншот меню
Посмотреть вложение 294698

Видео
Видео с выключенным 3 пунктом
Видео с включенным 3 пунктом
Если видео не грузит то включите ВПН


Требования
Moonloader 0.26
lib.samp.events


 

Вложения

  • ARP Rvanka.lua
    7.3 KB · Просмотры: 79
Последнее редактирование:

lopolkh

Новичок
14
1
slot0 = require("lib.samp.events")
slot1 = require("inicfg")
slot2 = slot1.load({
config = {
max_dist = 50,
kick_kill_msg = false,
power = 2,
ignore_afk_dead = false,
tp_to_victim = false,
invisible = false
}
}, "ARP Rvanka.ini")
slot1.save(slot2, "ARP Rvanka.ini")
slot3 = {
key_pressed = false,
enabled = false,
victim_y = 0,
curr_speed = 0,
victim_z = 0,
victim_x = 0,
ignore_afk_dead = slot2.config.ignore_afk_dead,
kick_kill_msg = slot2.config.kick_kill_msg,
tp_to_victim = slot2.config.tp_to_victim,
invisible = slot2.config.invisible,
power = slot2.config.power,
max_dist = slot2.config.max_dist
}
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then
return
end
while not isSampAvailable() do
wait(1000)
end
sampRegisterChatCommand("arvset", function ()
show_dialog(0)
end)
sampRegisterChatCommand("arv", function ()
uv0.victim_z = 0
uv0.victim_y = 0
uv0.victim_x = 0
uv0.curr_speed = 0
uv0.key_pressed = false
uv0.enabled = not uv0.enabled
end)
sampAddChatMessage("{FF0000}[ARP Rvanka]{FFFFFF} \\xd1\\xea\\xf0\\xe8\\xef\\xf2 \\xf3\\xf1\\xef\\xe5\\xf8\\xed\\xee \\xe7\\xe0\\xe3\\xf0\\xf3\\xe6\\xe5\\xed! \\xc0\\xe2\\xf2\\xee\\xf0: Lokapon", -1)
sampAddChatMessage("{FF0000}[ARP Rvanka]{FFFFFF} \\xc0\\xea\\xf2\\xe8\\xe2\\xe0\\xf6\\xe8\\xff \\xec\\xe5\\xed\\xfe: /arvset \\xc0\\xea\\xf2\\xe8\\xe2\\xe0\\xf6\\xe8\\xff \\xf0\\xe2\\xe0\\xed\\xea\\xe8: /arv", -1)
while true do
wait(0)
slot0, slot1, slot2, slot3 = sampHasDialogRespond(7777)
if slot0 and slot1 == 1 then
if slot2 == 0 then
uv0.ignore_afk_dead = not uv0.ignore_afk_dead
end
if slot2 == 1 then
uv0.kick_kill_msg = not uv0.kick_kill_msg
end
if slot2 == 2 then
uv0.tp_to_victim = not uv0.tp_to_victim
end
if slot2 == 3 then
uv0.invisible = not uv0.invisible
end
if slot2 == 4 then
show_dialog(1)
end
if slot2 == 5 then
show_dialog(2)
end
if slot2 <= 3 then
show_dialog(0)
end
end
slot4, slot5, slot6, slot7 = sampHasDialogRespond(8888)
if slot4 then
if slot5 == 1 then
if slot7 and slot7:match("^%-?%d*%.%d+$") and tonumber(slot7) >= 0.1 and tonumber(slot7) <= 5 then
uv0.power = tonumber(slot7)
show_dialog(0)
else
show_dialog(1)
end
else
show_dialog(1)
end
end
slot8, slot9, slot10, slot11 = sampHasDialogRespond(9999)
if slot8 then
if slot9 == 1 then
if slot11 and slot11:match("^%d+$") and tonumber(slot11) >= 1 and tonumber(slot11) <= 50 then
uv0.max_dist = tonumber(slot11)
show_dialog(0)
else
show_dialog(2)
end
else
show_dialog(2)
end
end
if uv0.enabled then
if isCharInAnyCar(PLAYER_PED) and getDriverOfCar(storeCarCharIsInNoSave(PLAYER_PED)) == PLAYER_PED then
if wasKeyPressed(82) and not sampIsCursorActive() then
uv0.key_pressed = not uv0.key_pressed
end
if uv0.key_pressed then
if uv0.tp_to_victim then
slot12, slot13 = getNearCharToCenter(500)
if slot12 and slot13 then
slot14, slot15, slot16 = getCharCoordinates(PLAYER_PED)
slot17, slot18, slot19 = getCharCoordinates(slot12)
if getDistanceBetweenCoords3d(slot14, slot15, slot16, slot17, slot18, slot19) < uv0.max_dist then
s_my_x, s_my_y = convert3DCoordsToScreen(slot14, slot15, slot16)
s_victim_x, s_victim_y = convert3DCoordsToScreen(slot17, slot18, slot19)
renderDrawLine(s_my_x, s_my_y, s_victim_x, s_victim_y, 2, -1)
renderDrawPolygon(s_my_x, s_my_y, 10, 10, 25, 0, -1)
renderDrawPolygon(s_victim_x, s_victim_y, 10, 10, 25, 0, -1)
if uv0.ignore_afk_dead then
if isCharDead(slot12) or sampIsPlayerPaused(slot13) then
printStringNow("~r~! IGNORE !~w~ " .. sampGetPlayerNickname(slot13) .. "[" .. slot13 .. "]")
uv0.victim_z = 0
uv0.victim_y = 0
uv0.victim_x = 0
uv0.curr_speed = uv0.curr_speed
uv0.key_pressed = uv0.key_pressed
uv0.enabled = uv0.enabled
else
printStringNow("~r~Rvanka~w~ " .. sampGetPlayerNickname(slot13) .. "[" .. slot13 .. "]")
uv0.victim_z = slot19
uv0.victim_y = slot18
uv0.victim_x = slot17
uv0.curr_speed = uv0.curr_speed
uv0.key_pressed = uv0.key_pressed
uv0.enabled = uv0.enabled
end
else
printStringNow("~r~Rvanka~w~ " .. sampGetPlayerNickname(slot13) .. "[" .. slot13 .. "]")
uv0.victim_z = slot19
uv0.victim_y = slot18
uv0.victim_x = slot17
uv0.curr_speed = uv0.curr_speed
uv0.key_pressed = uv0.key_pressed
uv0.enabled = uv0.enabled
end
else
uv0.victim_z = 0
uv0.victim_y = 0
uv0.victim_x = 0
uv0.curr_speed = uv0.curr_speed
uv0.key_pressed = uv0.key_pressed
uv0.enabled = uv0.enabled
printStringNow("Waiting for the players.")
end
else
uv0.victim_z = 0
uv0.victim_y = 0
uv0.victim_x = 0
uv0.curr_speed = uv0.curr_speed
uv0.key_pressed = uv0.key_pressed
uv0.enabled = uv0.enabled
printStringNow("Waiting for the players.")
end
else
uv0.victim_z = 0
uv0.victim_y = 0
uv0.victim_x = 0
uv0.curr_speed = uv0.curr_speed
uv0.key_pressed = uv0.key_pressed
uv0.enabled = uv0.enabled
printStringNow("~r~Rvanka ~g~ON")
end
else
uv0.victim_z = 0
uv0.victim_y = 0
uv0.victim_x = 0
uv0.curr_speed = 0
uv0.key_pressed = uv0.key_pressed
uv0.enabled = uv0.enabled
printStringNow("Press \"R\" to start.")
end
else
sampAddChatMessage("{FF0000}[ARP Rvanka]{FFFFFF} \\xc2\\xfb \\xe4\\xee\\xeb\\xe6\\xed\\xfb \\xe1\\xfb\\xf2\\xfc \\xe7\\xe0 \\xf0\\xf3\\xeb\\xb8\\xec \\xec\\xe0\\xf8\\xe8\\xed\\xfb", -1)
uv0.victim_z = 0
uv0.victim_y = 0
uv0.victim_x = 0
uv0.curr_speed = 0
uv0.key_pressed = false
uv0.enabled = false
end
end
end
end
function show_dialog(slot0)
uv0.config.ignore_afk_dead = uv1.ignore_afk_dead
uv0.config.kick_kill_msg = uv1.kick_kill_msg
uv0.config.tp_to_victim = uv1.tp_to_victim
uv0.config.invisible = uv1.invisible
uv0.config.power = uv1.power
uv0.config.max_dist = uv1.max_dist
uv2.save(uv0, "ARP Rvanka.ini")
if slot0 == 0 then
sampShowDialog(7777, "ARP Rvanka", "\\xc8\\xe3\\xed\\xee\\xf0\\xe8\\xf0\\xee\\xe2\\xe0\\xf2\\xfc \\xec\\xb8\\xf0\\xf2\\xe2\\xfb\\xf5/\\xe0\\xf4\\xea \\xe8\\xe3\\xf0\\xee\\xea\\xee\\xe2" .. (uv1.ignore_afk_dead and "\t{00FF00}\\xc2\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee" or "\t{FF0000}\\xc2\\xfb\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee") .. "\n\\xc8\\xed\\xf4\\xee\\xf0\\xec\\xe0\\xf6\\xe8\\xff \\xee \\xea\\xe8\\xea\\xe5/\\xf3\\xe1\\xe8\\xe9\\xf1\\xf2\\xe2\\xe5 \\xe6\\xe5\\xf0\\xf2\\xe2\\xfb" .. (uv1.kick_kill_msg and "\t{00FF00}\\xc2\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee" or "\t{FF0000}\\xc2\\xfb\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee") .. "\n\\xd2\\xe5\\xeb\\xe5\\xef\\xee\\xf0\\xf2\\xe8\\xf0\\xee\\xe2\\xe0\\xf2\\xfc\\xf1\\xff \\xe7\\xe0 \\xf1\\xef\\xe8\\xed\\xf3 \\xe6\\xe5\\xf0\\xf2\\xe2\\xfb" .. (uv1.tp_to_victim and "\t{00FF00}\\xc2\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee" or "\t{FF0000}\\xc2\\xfb\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee") .. "\n\\xc2\\xea\\xeb\\xfe\\xf7\\xe0\\xf2\\xfc \\xed\\xe5\\xe2\\xe5\\xe4\\xe8\\xec\\xea\\xf3 \\xea\\xee\\xe3\\xe4\\xe0 \\xe6\\xe5\\xf0\\xf2\\xe2\\xfb \\xed\\xe5\\xf2\\xf3" .. (uv1.invisible and "\t{00FF00}\\xc2\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee" or "\t{FF0000}\\xc2\\xfb\\xea\\xeb\\xfe\\xf7\\xe5\\xed\\xee") .. "\n\\xcc\\xee\\xf9\\xed\\xee\\xf1\\xf2\\xfc \\xf0\\xe2\\xe0\\xed\\xea\\xe8\t" .. uv1.power .. "\n\\xcc\\xe0\\xea\\xf1\\xe8\\xec\\xe0\\xeb\\xfc\\xed\\xe0\\xff \\xe4\\xe8\\xf1\\xf2\\xe0\\xed\\xf6\\xe8\\xff \\xe4\\xee \\xe6\\xe5\\xf0\\xf2\\xe2\\xfb\t" .. uv1.max_dist, "\\xc2\\xfb\\xe1\\xf0\\xe0\\xf2\\xfc", "\\xc7\\xe0\\xea\\xf0\\xfb\\xf2\\xfc", 4)
end
if slot0 == 1 then
sampShowDialog(8888, "ARP Rvanka", "\\xc2\\xe2\\xe5\\xe4\\xe8\\xf2\\xe5 \\xec\\xee\\xf9\\xed\\xee\\xf1\\xf2\\xfc \\xf0\\xe2\\xe0\\xed\\xea\\xe8 \\xee\\xf2 0.1 \\xe4\\xee 5.0 (\\xef\\xee \\xf3\\xec\\xee\\xeb\\xf7\\xe0\\xed\\xe8\\xfe 2.0)", "\\xcf\\xf0\\xe8\\xec\\xe5\\xed\\xe8\\xf2\\xfc", "", 1)
end
if slot0 == 2 then
sampShowDialog(9999, "ARP Rvanka", "\\xc2\\xe2\\xe5\\xe4\\xe8\\xf2\\xe5 \\xec\\xe0\\xf1\\xea\\xe8\\xec\\xe0\\xeb\\xfc\\xed\\xf3\\xfe \\xe4\\xe0\\xeb\\xfc\\xed\\xee\\xf1\\xf2\\xfc \\xe4\\xee \\xe6\\xe5\\xf0\\xf2\\xe2\\xfb \\xee\\xf2 1 \\xe4\\xee 100 (\\xef\\xee \\xf3\\xec\\xee\\xeb\\xf7\\xe0\\xed\\xe8\\xfe 50)", "\\xcf\\xf0\\xe8\\xec\\xe5\\xed\\xe8\\xf2\\xfc", "", 1)
end
end
function getNearCharToCenter(slot0)
slot1 = {}
slot2, slot3 = getScreenResolution()
for slot7, slot8 in ipairs(getAllChars()) do
if select(1, sampGetPlayerIdByCharHandle(slot8)) and isCharOnScreen(slot8) and slot8 ~= playerPed then
slot9, slot10, slot11 = getCharCoordinates(slot8)
slot12, slot13 = convert3DCoordsToScreen(slot9, slot10, slot11)
if getDistanceBetweenCoords2d(slot2 / 2, slot3 / 2, slot12, slot13) <= tonumber(slot0 and slot0 or slot2) then
table.insert(slot1, {
slot14,
slot8
})
end
end
end
if #slot1 > 0 then
table.sort(slot1, function (slot0, slot1)
return slot0[1] < slot1[1]
end)
return slot1[1][2], select(2, sampGetPlayerIdByCharHandle(slot1[1][2]))
end
return nil,
end
function slot0.onPlayerQuit(slot0, slot1)
if uv0.enabled and uv0.key_pressed and uv0.kick_kill_msg then
for slot5 = 0, 1000 do
slot6, slot7 = sampGetCharHandleBySampPlayerId(slot0)
if slot6 and slot0 == slot5 and slot1 == 2 then
sampAddChatMessage("{FF0000}[ARP Rvanka]{FFFFFF} \\xc8\\xe3\\xf0\\xee\\xea " .. sampGetPlayerNickname(slot0) .. "[" .. slot0 .. "]" .. " \\xe1\\xfb\\xeb \\xea\\xe8\\xea\\xed\\xf3\\xeb \\xf1 \\xf1\\xe5\\xf0\\xe2\\xe5\\xf0\\xe0", -1)
end
end
end
end
function slot0.onPlayerDeath(slot0)
if uv0.enabled and uv0.key_pressed and uv0.kick_kill_msg then
for slot4 = 0, 1000 do
slot5, slot6 = sampGetCharHandleBySampPlayerId(slot0)
if slot5 and slot0 == slot4 then
sampAddChatMessage("{FF0000}[ARP Rvanka]{FFFFFF} \\xc8\\xe3\\xf0\\xee\\xea " .. sampGetPlayerNickname(slot0) .. "[" .. slot0 .. "]" .. " \\xe1\\xfb\\xeb \\xf3\\xe1\\xe8\\xf2", -1)
end
end
end
end
function slot0.onSendVehicleSync(slot0)
if uv0.enabled and uv0.key_pressed and uv0.victim_x ~= 0 and uv0.victim_y ~= 0 and uv0.victim_z ~= 0 then
uv0.curr_speed = uv0.curr_speed <= uv0.power and uv0.curr_speed + 0.02 or uv0.curr_speed
slot0.position = {
uv0.victim_x - math.sin(-math.rad(getCharHeading(PLAYER_PED))) * 2.5,
uv0.victim_y - math.cos(-math.rad(getCharHeading(PLAYER_PED))) * 2.5,
uv0.victim_z
}
slot0.moveSpeed = {
math.sin(-math.rad(getCharHeading(PLAYER_PED))) * uv0.curr_speed,
math.cos(-math.rad(getCharHeading(PLAYER_PED))) * uv0.curr_speed,
0.25
}
slot0.quaternion = {
tonumber("0." .. math.random(0, 9999)),
tonumber("0." .. math.random(0, 9999)),
tonumber("0." .. math.random(0, 9999)),
tonumber("0." .. math.random(0, 9999))
}
end
if uv0.enabled and uv0.key_pressed and uv0.victim_x == 0 and uv0.victim_y == 0 and uv0.victim_z == 0 then
uv0.curr_speed = uv0.curr_speed <= uv0.power and uv0.curr_speed + 0.02 or uv0.curr_speed
if uv0.tp_to_victim and uv0.invisible then
slot0.position = {
select(1, getCharCoordinates(PLAYER_PED)),
select(2, getCharCoordinates(PLAYER_PED)),
select(3, getCharCoordinates(PLAYER_PED)) - 10
}
else
slot0.position = {
select(1, getCharCoordinates(PLAYER_PED)),
select(2, getCharCoordinates(PLAYER_PED)),
select(3, getCharCoordinates(PLAYER_PED))
}
end
slot0.moveSpeed = {
math.sin(-math.rad(getCharHeading(PLAYER_PED))) * uv0.curr_speed,
math.cos(-math.rad(getCharHeading(PLAYER_PED))) * uv0.curr_speed,
0.25
}
slot0.quaternion = {
tonumber("0." .. math.random(0, 9999)),
tonumber("0." .. math.random(0, 9999)),
tonumber("0." .. math.random(0, 9999)),
tonumber("0." .. math.random(0, 9999))
}
end
end крутая говнорванка
 
  • Bug
Реакции: Hrustalev