быстрая выдача розыск fix Advance RP

travis batters.

Новичок
Автор темы
3
0
Короче у меня проблема, я не могу в связи в связи с новым обновлением на ARP пофиксить выдачу розыска, раньше была проверка по /wanted, сейчас сделали розыск на машины и на человека разделив на /wanted 1 и /wanted 2


Старое меню:
unknown.png



Новое меню: + при команде /wanted вылазеет проверка
image.png
image.png


Мой код:
всё что я смог исправить это добавить цифру один, в остальном я не понимаю как мне поменять код, хелп мужики
wanted, wanted_level = id, 0; sampSendChat('/wanted 1')

Полностью код "быстрой выдачи розыска", суть данного скрипта преодолевают расстояние до преступника, выдать ему розыск, а так же если у него 5 зв и вводишь кол-во звёзд снова 5, он повышает на +1. Без него трудно в данный момент
function suspect(param)
local id, level, reason = param:match('(%d+)%s+(%d+)%s+(.+)') -- получение введенных айди, уровня розыска, и причины
if not id then sampAddChatMessage('{00BFFF}[Helper] {FFFFFF}Чтобы объявить в розыск, используйте: /su {F47FFF}[ID игрока] [уровень розыска] [причина]', 0xFFCCCCCC); return end -- проверка на правильность ввода
if tonumber(level) < 1 then sampAddChatMessage('{00BFFF}[Helper] {FFFFFF}Уровень розыска должен быть положительным числом', 0xFFCCCCCC); return end -- проверка на правильный уровень розыска

local stream, vPed = sampGetCharHandleBySampPlayerId(id)
local _, myId = sampGetPlayerIdByCharHandle(playerPed)
if tonumber(id) == myId then sampSendChat('/su ' .. param); return end -- отключение дальнейший работы потока, если игрок ставит жучок на себя
if not stream then sampAddChatMessage('{00BFFF}[Helper] {FFFFFF}Преступник находиться вне зоны стрима, розыск выдать не возможно.', 0xFFCCCCCC); return else -- проверка на нахождение преступника в зоне стрима

-- <ОЖИДАНИЕ ПОКА ПОДЬЕДЕМ БЛИЖЕ К ПРЕСТУПНИКУ, ЕСЛИ ОН СЛИШКОМ ДАЛЕКО> --
local distance = getDistanceToChar(vPed)
if distance > 65 then
sampAddChatMessage('{00BFFF}[Helper] {FFFFFF}Преступник слишком далеко, розыск выдастся сразу же, как будет возможность.', 0xFFCCCCCC)
while distance > 65 do
wait(0)
local stream, vPed = sampGetCharHandleBySampPlayerId(id)
if not stream then sampAddChatMessage('{00BFFF}[Batters Helper] {FFFFFF}Преступник пропал из зоны видимости.', 0xFFCCCCCC); return else
distance = getDistanceToChar(vPed)
end
end
end
local old_distance = far_distance -- </>

-- <ПРОВЕРКА НАЛИЧИЯ ЗВЕЗД У ПРЕСТУПНИКА>
wanted, wanted_level = id, 0; sampSendChat('/wanted 1')
while wanted do wait(0) end -- </>

-- <ПОДСЧЕТ НУЖНОЙ ВЫДАЧИ ЗВЕЗД, ЕСЛИ У ПРЕСТУПНИКА ОНИ УЖЕ ЕСТЬ>
if (6 - wanted_level) < tonumber(level) then level = 6 - wanted_level end
sampSendChat('/su ' .. id .. ' ' .. level .. ' ' .. reason) -- </>

-- <КОСТЫЛЬ ИСПРАВЛЯЮЩИЙ МЕДЛЕННОЕ ОБНОВЛЕНИЕ ДИСТАНЦИИ МЕЖДУ ИГРОКАМИ НА АДВАНСЕ>
while far_distance == old_distance do wait(0) end
if far_distance ~= 0 then wait(2000); lua_thread.create(suspect, param) end -- </>
end
end

function hook.onShowDialog(id, style, title, button1, button2, text) -- функция проверки наличия звезд у преступника
if wanted then
if text:find('%(id ' .. wanted .. '%)') then
wanted_level = text:match('%(id ' .. wanted .. '%)%s+(%d+)')
end
if button2 == 'Закрыть' then wanted = false; return false else sampSendDialogResponse(id, 0, 0, 1); return false end
end
end

function getDistanceToChar(vPed) -- функция вычисления дистанции между игроками
local vX, vY, vZ = getCharCoordinates(vPed)
local myX, myY, myZ = getCharCoordinates(playerPed)
return getDistanceBetweenCoords3d(vX, vY, vZ, myX, myY, myZ)
end

function hook.onServerMessage(color, text)
if text:find("в розыск") and color == 865730559 then -- РП-отыгровка команды
far_distance = 0
math.randomseed(os.time())
local num = math.random(1, 3)

if num == 1 then lua_thread.create(function(t) wait(1000); sampSendChat(t) end, "/ME достал из кармана протативное КПК, затем сообщил диспетчеру о нарушении.")
elseif num == 2 then lua_thread.create(function(t) wait(1000); sampSendChat(t) end, "/ME достал из кармана протативное КПК, затем сообщил диспетчеру о нарушении.")
elseif num == 3 then lua_thread.create(function(t) wait(1000); sampSendChat(t) end, "/ME достал из кармана протативное КПК, затем сообщил диспетчеру о нарушении.")
end
elseif color == -825307393 and text == 'Игрок слишком далеко' and far_distance > 0 then -- костыль с медленным обновлением дистанции на АРП
far_distance = far_distance - 1
return false
end
end
 
Последнее редактирование:

tiktokpay

Участник
81
87
Если я тебя правильно понял, то держи, замени хук диалога у себя в скрипте
Lua:
function hook.onShowDialog(id, style, title, button1, button2, text) -- функция проверки наличия звезд у преступника
    if wanted then
        if text:find('%(id ' .. wanted .. '%)') then
        wanted_level = text:match('%(id ' .. wanted .. '%)%D+(%d+)')
        end
        if button2 == 'Закрыть' then wanted = false; return false else sampSendDialogResponse(id, 0, 0, 1); return false end
    end
end
 
Последнее редактирование:
  • Влюблен
Реакции: travis batters.

travis batters.

Новичок
Автор темы
3
0
Если я тебя правильно понял, то держи, замени хук диалога у себя в скрипте
Lua:
function hook.onShowDialog(id, style, title, button1, button2, text) -- функция проверки наличия звезд у преступника
    if wanted then
        if text:find('%(id ' .. wanted .. '%)') then
        wanted_level = text:match('%(id ' .. wanted .. '%)%D+(%d+)')
        end
        if button2 == 'Закрыть' then wanted = false; return false else sampSendDialogResponse(id, 0, 0, 1); return false end
    end
end
Завтра попробую и отпишу, да только меню надо было

Если я тебя правильно понял, то держи, замени хук диалога у себя в скрипте
Lua:
function hook.onShowDialog(id, style, title, button1, button2, text) -- функция проверки наличия звезд у преступника
    if wanted then
        if text:find('%(id ' .. wanted .. '%)') then
        wanted_level = text:match('%(id ' .. wanted .. '%)%D+(%d+)')
        end
        if button2 == 'Закрыть' then wanted = false; return false else sampSendDialogResponse(id, 0, 0, 1); return false end
    end
end
Всё , спасибо братан, лучший.
 
Последнее редактирование: