Wanted Menu (для SUP)

Wanted Menu (для SUP) 2025-06-30

Нет прав для скачивания
  • 74
  • 1
  • 8
drugraсing добавил(а) новый ресурс:

Wanted Menu (для SUP) - Простенькая система wanted

Простенькое меню созданное для SUP.
Устанавливать в addons.

Полностью заменяет стандартную команду /wanted делая из нее меню Базы данных розыска.
Можно объявить игрока в розыска, выбрав игрока, и написав причину. Так-же удалить его из розыска, после того как удалите придет notify то что игрок удален из базы и розыск снимется.
Стоит обход, чтобы не объявлять копов в розыск, а так же и игроков у которых уже есть розыск.
Объявление игрока в розыск
[ATTACH...

Узнать больше об этом ресурсе...
 
  • 89
  • 19
Это все конечно спасибо что для SUP что то делают кроме сборок но зачем?
 
  • 89
  • 19
1751323904663.png


А зеленые комментарии это чтоб не заблудится?
 
  • 142
  • 3
  • 18
для чего нужно вызывать хук PlayerSay, если можно просто использовать rp.AddCommand?
hook.Add("PlayerSay", "OpenWantedMenuCmd", function(ply, txt)
txt = string.Trim(string.lower(txt))
if (txt == "!wanted" or txt == "/wanted") and IsValid(ply) and ply:IsCP() then
net.Start("WantedMenu_Open")
net.Send(ply)
return ""
end
end)

для чего создавать очередную ненужную функцию, когда прямо в ней уже прописана саповская проверка на полицию?
local function IsPolice(ply)
if ply.IsCP then return ply:IsCP() end -- собсна вотонавона
local job = ply.getJobTable and ply:getJobTable()
return job and job.category == "Полиция"
end

не лучше было бы, если функция Wanted была переписана в этом коде, ибо на разных сапах эта функция может сильно отличаться
net.Receive("WantedMenu_Add", function(len, ply)
if not IsValid(ply) or not ply:IsCP() then return end
local target = net.ReadEntity()
local reason = net.ReadString()
if not IsValid(target) or not target:IsPlayer() then return end
if target:GetNetVar("IsWanted") then return end
-- 🔒 Запрещаем выдачу розыска другим полицейским
if target:IsCP() then return end
target:Wanted(ply, reason)
end)

у UnWanted аналогично
а также "WantedReason" должен вызываться уже в код UnWanted, зачем в очередной раз это делать?
net.Receive("WantedMenu_Remove", function(len, ply)
if not IsPolice(ply) then return end
local steamid = net.ReadString()
for _, v in ipairs(player.GetAll()) do
if v:SteamID64() == steamid and v:GetNetVar("IsWanted") then
v:UnWanted(ply)
v:SetNetVar("WantedReason", nil) -- 🔧 очищаем причину
end
end
end)

в клиенте поужаснее ситуация
зачем везде вызывать SetSkin? не проще сразу юи сапа вызывать?

аналогично с св частью
local function IsCP(p)
return isfunction(p.IsCP) and p:IsCP()
end

а так, система прикольная, исправить бы недочеты и не использовать ИИшку то было бы хорошо
 
  • 74
  • 1
  • 8
для чего нужно вызывать хук PlayerSay, если можно просто использовать rp.AddCommand?
hook.Add("PlayerSay", "OpenWantedMenuCmd", function(ply, txt)
txt = string.Trim(string.lower(txt))
if (txt == "!wanted" or txt == "/wanted") and IsValid(ply) and ply:IsCP() then
net.Start("WantedMenu_Open")
net.Send(ply)
return ""
end
end)

для чего создавать очередную ненужную функцию, когда прямо в ней уже прописана саповская проверка на полицию?
local function IsPolice(ply)
if ply.IsCP then return ply:IsCP() end -- собсна вотонавона
local job = ply.getJobTable and ply:getJobTable()
return job and job.category == "Полиция"
end

не лучше было бы, если функция Wanted была переписана в этом коде, ибо на разных сапах эта функция может сильно отличаться
net.Receive("WantedMenu_Add", function(len, ply)
if not IsValid(ply) or not ply:IsCP() then return end
local target = net.ReadEntity()
local reason = net.ReadString()
if not IsValid(target) or not target:IsPlayer() then return end
if target:GetNetVar("IsWanted") then return end
-- 🔒 Запрещаем выдачу розыска другим полицейским
if target:IsCP() then return end
target:Wanted(ply, reason)
end)

у UnWanted аналогично
а также "WantedReason" должен вызываться уже в код UnWanted, зачем в очередной раз это делать?
net.Receive("WantedMenu_Remove", function(len, ply)
if not IsPolice(ply) then return end
local steamid = net.ReadString()
for _, v in ipairs(player.GetAll()) do
if v:SteamID64() == steamid and v:GetNetVar("IsWanted") then
v:UnWanted(ply)
v:SetNetVar("WantedReason", nil) -- 🔧 очищаем причину
end
end
end)

в клиенте поужаснее ситуация
зачем везде вызывать SetSkin? не проще сразу юи сапа вызывать?

аналогично с св частью
local function IsCP(p)
return isfunction(p.IsCP) and p:IsCP()
end

а так, система прикольная, исправить бы недочеты и не использовать ИИшку то было бы хорошо
Я в основе делал это для себя, не думал сливать. А так, подумал, мб кому понравится и сможет под себя адаптировать. Спасибо за советы, исправил у себя парочку строк
 
Назад
Сверху Снизу