|
|
|
@ -1,6 +1,6 @@ |
|
|
|
|
script_name('mafia-tools') |
|
|
|
|
script_author("Serhiy_Rubin") |
|
|
|
|
script_version("20.07.2023") |
|
|
|
|
script_version("14.06.2025") |
|
|
|
|
|
|
|
|
|
sampev = require 'samp.events' |
|
|
|
|
inicfg = require "inicfg" |
|
|
|
@ -195,7 +195,7 @@ menu.update = function() |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Клавиша отправки таймингов |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Отправить тайминги в рацию\t"..convertKeysToText(config.data.chat_timing.key), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -204,7 +204,7 @@ menu.update = function() |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Отправлять тайминги при получении |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Отправлять тайминги в рацию при проверке\t"..(config.data.chat_timing.auto and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -272,14 +272,14 @@ menu.update = function() |
|
|
|
|
ammo_timer.setpos = true |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Разделитель |
|
|
|
|
title = " \t ", |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Mafia Checker |
|
|
|
|
title = "{"..config.data.font.color1.."}".."Счетчик мафий на сервере и в стриме\t", |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -305,21 +305,21 @@ menu.update = function() |
|
|
|
|
mafia_checker.setpos = true |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Разделитель |
|
|
|
|
title = " \t ", |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Invite Helper |
|
|
|
|
title = "{"..config.data.font.color1.."}".."Инвайт хелпер\t", |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Минимальный лвл |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Минимальный уровень\t"..config.data.invite_helper.lvl, |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -334,7 +334,7 @@ menu.update = function() |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end, config.data.invite_helper.lvl, "Введите минимальный уровень для инвайта!"} |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Авто ранг вкл выкл |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Устанавливать ранг автоматически\t"..(config.data.invite_helper.auto_rank and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -343,7 +343,7 @@ menu.update = function() |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Ранг по умолчанию |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Установить ранг\t"..config.data.invite_helper.rank, |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -358,7 +358,7 @@ menu.update = function() |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end, config.data.invite_helper.rank, "Введите какой ранг давать после инвайта!"} |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Сообщение в чат после инвайта |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Сообщение в рацию\t"..config.data.invite_helper.message, |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -371,7 +371,7 @@ menu.update = function() |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end, config.data.invite_helper.message, "{name} - Заменится на никнейм игрока которого приняли\nЧтобы не отправлять сообщение оставьте поле пустым!"} |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Клавиша инвайта |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Инвайт по кнопке\tПрицел + "..convertKeysToText(config.data.invite_helper.key), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -387,14 +387,14 @@ menu.update = function() |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Склад |
|
|
|
|
title = "{"..config.data.font.color1.."}".."Склад\t", |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Открывать склад по запросу в рацию |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Открывать склад по запросу\t"..(config.data.get_guns.warelock_auto and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -420,7 +420,7 @@ menu.update = function() |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end, config.data.get_guns.warelock_time, "Введите сколько секунд склад держать открытым"} |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Брать оружие сразу как откроют склад |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Брать оружие сразу как откроют склад\t"..(config.data.get_guns.auto_get_guns and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -452,14 +452,14 @@ menu.update = function() |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Mafiawar |
|
|
|
|
title = "{"..config.data.font.color1.."}".."Забив\t", |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Mafiawar auto |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Флудер\t"..(config.data.mafiawar.auto and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -509,14 +509,14 @@ menu.update = function() |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Mhcars |
|
|
|
|
title = "{"..config.data.font.color1.."}".."Перегон\t", |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Mhcars auto |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Флудер перегона\t"..(config.data.mhcars.auto and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -584,7 +584,7 @@ menu.update = function() |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Отправить по команде |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Отправить по команде\t/"..config.data.stream_checker, |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
@ -622,17 +622,17 @@ menu.update = function() |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Авто healme |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Использовать аптечку\t"..(config.data.healme and "вкл" or "выкл"), |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} Использовать аптечку\t"..(config.data.healme and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
config.data.healme = not config.data.healme |
|
|
|
|
config.save(config.data) |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> armoff |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} armoff на ID стрел\t"..armoff_list, |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} armoff на ID стрел\t"..armoff_list, |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
menu.show = { true, "edit", function(button, list, input, outs) |
|
|
|
@ -650,16 +650,16 @@ menu.update = function() |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end, armoff_list, "Введите ID стрел на которых нужно оффать броню\nВведите ID через пробел\nПример: 0 1 3"} |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> clistoff |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} clist off при спавне/после стрелы\t"..(config.data.clistoff and "вкл" or "выкл"), |
|
|
|
|
title = "{"..config.data.font.color1.."}"..">{ffffff} clist off при спавне/после стрелы\t"..(config.data.clistoff and "вкл" or "выкл"), |
|
|
|
|
click = function(button, list, input , outs) |
|
|
|
|
if button ~= 1 then return end |
|
|
|
|
config.data.clistoff = not config.data.clistoff |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
["edit"] = { |
|
|
|
@ -698,93 +698,93 @@ menu.update = function() |
|
|
|
|
{ -->> Desert Eagle |
|
|
|
|
title = "Desert Eagle\t"..config.data.get_guns.list[1][2], |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
config.data.get_guns.list[1][2] = config.data.get_guns.list[1][2] + 1 |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Shotgun |
|
|
|
|
title = "Shotgun\t"..config.data.get_guns.list[2][2], |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
config.data.get_guns.list[2][2] = config.data.get_guns.list[2][2] + 1 |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> SMG |
|
|
|
|
title = "SMG\t"..config.data.get_guns.list[3][2], |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
config.data.get_guns.list[3][2] = config.data.get_guns.list[3][2] + 1 |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> AK47 |
|
|
|
|
title = "AK47\t"..config.data.get_guns.list[4][2], |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
config.data.get_guns.list[4][2] = config.data.get_guns.list[4][2] + 1 |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> M4A1 |
|
|
|
|
title = "M4A1\t"..config.data.get_guns.list[5][2], |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
config.data.get_guns.list[5][2] = config.data.get_guns.list[5][2] + 1 |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Rifle |
|
|
|
|
title = "Rifle\t"..config.data.get_guns.list[6][2], |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
config.data.get_guns.list[6][2] = config.data.get_guns.list[6][2] + 1 |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Броня |
|
|
|
|
title = "Броня\t"..config.data.get_guns.list[7][2], |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
config.data.get_guns.list[7][2] = config.data.get_guns.list[7][2] + 1 |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ -->> Сброс |
|
|
|
|
title = "Сброс\t", |
|
|
|
|
click = function(button, list, input, outs) |
|
|
|
|
if button ~= 1 then |
|
|
|
|
if button ~= 1 then |
|
|
|
|
menu.show = { true, "main" } |
|
|
|
|
return |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
for i = 1, #config.data.get_guns.list do |
|
|
|
|
config.data.get_guns.list[i][2] = 0 |
|
|
|
@ -792,7 +792,7 @@ menu.update = function() |
|
|
|
|
config.save(config.data) |
|
|
|
|
menu.show[1] = true |
|
|
|
|
end |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
@ -835,7 +835,7 @@ stream_checker = {} |
|
|
|
|
stream_checker.hide = 0 |
|
|
|
|
stream_checker.members = {} |
|
|
|
|
stream_checker.sender = {} |
|
|
|
|
stream_checker.textfuncs = { |
|
|
|
|
stream_checker.textfuncs = { |
|
|
|
|
['%[ID%]Имя {C0C0C0}Ранг%[Номер%] {6495ED}%[AFK секунд%] {C0C0C0}Бан чата'] = function(message) |
|
|
|
|
stream_checker.members = {} |
|
|
|
|
return true |
|
|
|
@ -1016,8 +1016,8 @@ end |
|
|
|
|
|
|
|
|
|
healme.onSetPlayerPos = function(position) |
|
|
|
|
local coords = { |
|
|
|
|
{ 246.2885, -0.1631, 1501.0837 }, |
|
|
|
|
{ -189.5952, -69.3178, 1497.3289 }, |
|
|
|
|
{ 246.2885, -0.1631, 1501.0837 }, |
|
|
|
|
{ -189.5952, -69.3178, 1497.3289 }, |
|
|
|
|
{ 1389.1643, -22.6256, 1000.9240 } |
|
|
|
|
} |
|
|
|
|
local result = false |
|
|
|
@ -1078,7 +1078,7 @@ end |
|
|
|
|
mhcars = {} |
|
|
|
|
mhcars.time = 0 |
|
|
|
|
mhcars.onServerMessage = function(color, message) |
|
|
|
|
if message == " Вы не являетесь лидером/замом мафии" or |
|
|
|
|
if message == " Вы не являетесь лидером/замом мафии" or |
|
|
|
|
message == " Ожидайте принятия задания" or |
|
|
|
|
message == " Задание уже начато" then |
|
|
|
|
mhcars.time = os.time() + 1800 |
|
|
|
@ -1150,7 +1150,7 @@ mafiawar.onServerMessage = function(color, message) |
|
|
|
|
msg.add("Если не каптит - нужно отойти от 3D текста бизнеса и подойти снова") |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
if message:find("^ Война за бизнес %{6AB1FF%}.+ %{FFFFFF%}пройдет в %{6AB1FF%}.+ %{FFFFFF%}| ID: {6AB1FF}%d+$") or |
|
|
|
|
if message:find("^ Война за бизнес %{6AB1FF%}.+ %{FFFFFF%}пройдет в %{6AB1FF%}.+ %{FFFFFF%}| ID: {6AB1FF}%d+$") or |
|
|
|
|
message == " Ваша мафия уже участвует в войне" or |
|
|
|
|
message == " Эта мафия уже начала войну за бизнес" or |
|
|
|
|
message == " Этот бизнес под контролем вашей мафии" or |
|
|
|
@ -1167,7 +1167,7 @@ mafiawar.set_time = function(hour) |
|
|
|
|
if tonumber(hour) < tonumber(os.date("%H")) then |
|
|
|
|
time = time + 10000 |
|
|
|
|
end |
|
|
|
|
datetime = { |
|
|
|
|
datetime = { |
|
|
|
|
year = tonumber(os.date("%Y", time)), |
|
|
|
|
month = tonumber(os.date("%m", time)), |
|
|
|
|
day = tonumber(os.date("%d", time)), |
|
|
|
@ -1178,7 +1178,7 @@ mafiawar.set_time = function(hour) |
|
|
|
|
mafiawar.time = os.time(datetime) |
|
|
|
|
end |
|
|
|
|
mafiawar.onCreate3DText = function(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- msg.add(string.format("%d", color)) |
|
|
|
|
-- msg.add(string.format("%s", text)) |
|
|
|
|
if color == 10289407 and text:find("Владелец") then |
|
|
|
@ -1322,11 +1322,11 @@ get_guns.onShowDialog = function(id, style, title, button1, button2, text) |
|
|
|
|
get_guns.check_stats = true |
|
|
|
|
get_guns.antiflood = os.time() - 28 |
|
|
|
|
return false |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
if title == "Склад оружия" then |
|
|
|
|
if get_guns.getgun then |
|
|
|
|
if #get_guns.list > 0 then |
|
|
|
|
if #get_guns.list > 0 then |
|
|
|
|
sampSendDialogResponse(id,1,get_guns.list[1],"") |
|
|
|
|
table.remove(get_guns.list, 1) |
|
|
|
|
else |
|
|
|
@ -2111,7 +2111,7 @@ end |
|
|
|
|
function getSampRpServerName() |
|
|
|
|
local result = "" |
|
|
|
|
local server = sampGetCurrentServerName():gsub("|", "") |
|
|
|
|
local server_find = { "02", "Two", "Revo", "Legacy", "Classic", "Under" } |
|
|
|
|
local server_find = { "02", "Two", "Revo", "Legacy", "Classic", "Renaissance" } |
|
|
|
|
for i = 1, #server_find do |
|
|
|
|
if server:find(server_find[i]) then |
|
|
|
|
result = server_find[i] |
|
|
|
@ -2222,7 +2222,7 @@ function isKeyCanBePressed() |
|
|
|
|
if sampIsDialogActive() or sampIsChatInputActive() or sampIsCursorActive() or isSampfuncsConsoleActive() then |
|
|
|
|
return false |
|
|
|
|
end |
|
|
|
|
return true |
|
|
|
|
return true |
|
|
|
|
end |
|
|
|
|
function split(str, delim, plain) |
|
|
|
|
local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]] |
|
|
|
|