159 lines
5.2 KiB
Lua
159 lines
5.2 KiB
Lua
PLUGIN.name = "Chat Control"
|
||
PLUGIN.author = "RefoselDev"
|
||
PLUGIN.description = "Удаление ненужных типов чатов"
|
||
|
||
|
||
hook.Add("InitializedChatClasses", "ixChatControl.RemoveChats", function()
|
||
ix.chat.classes.it = nil
|
||
ix.chat.classes.connect = nil
|
||
ix.chat.classes.disconnect = nil
|
||
ix.chat.classes.event = nil
|
||
|
||
ix.chat.Register("rp", {
|
||
OnChatAdd = function(self, speaker, text)
|
||
local name = IsValid(speaker) and speaker:Name() or "Console"
|
||
chat.AddText(Color(26, 221, 0), "[RP] ", name, ": ", text)
|
||
end,
|
||
prefix = {"/rp", "/RP"},
|
||
description = "Чат РП отыгровок",
|
||
color = Color(150, 200, 255),
|
||
CanHear = function(self, speaker, listener)
|
||
return listener:GetCharacter() != nil
|
||
end,
|
||
deadCanChat = false
|
||
})
|
||
|
||
-- Чат между фракциями
|
||
ix.chat.Register("adgl", {
|
||
OnChatAdd = function(self, speaker, text)
|
||
local name = IsValid(speaker) and speaker:Name() or "Console"
|
||
local prefix = "[ФРАКЦИЯ] "
|
||
local prefixColor = Color(255, 200, 100)
|
||
|
||
if (IsValid(speaker) and speaker:GetCharacter()) then
|
||
local faction = speaker:GetCharacter():GetFaction()
|
||
|
||
if (faction == FACTION_RUSSIAN) then
|
||
prefix = "[ВС РФ → ВСУ] "
|
||
prefixColor = Color(255, 196, 0)
|
||
elseif (faction == FACTION_UKRAINE) then
|
||
prefix = "[ВСУ → ВС РФ] "
|
||
prefixColor = Color(255, 196, 0)
|
||
end
|
||
end
|
||
|
||
chat.AddText(prefixColor, prefix, Color(255, 255, 255), name, ": ", text)
|
||
end,
|
||
prefix = {"/adgl"},
|
||
description = "Чат между фракциями",
|
||
color = Color(255, 200, 100),
|
||
CanHear = function(self, speaker, listener)
|
||
-- Слышат только игроки с персонажем и определенной фракцией
|
||
if (!listener:GetCharacter()) then
|
||
return false
|
||
end
|
||
|
||
local listenerFaction = listener:GetCharacter():GetFaction()
|
||
return listenerFaction == FACTION_RUSSIAN or listenerFaction == FACTION_UKRAINE
|
||
end,
|
||
deadCanChat = false
|
||
})
|
||
|
||
-- Объявления стороны
|
||
ix.chat.Register("ad", {
|
||
OnChatAdd = function(self, speaker, text)
|
||
local name = IsValid(speaker) and speaker:Name() or "Console"
|
||
local prefix = "[ОБЪЯВЛЕНИЕ] "
|
||
local prefixColor = Color(200, 200, 200)
|
||
|
||
if (IsValid(speaker) and speaker:GetCharacter()) then
|
||
local faction = speaker:GetCharacter():GetFaction()
|
||
|
||
if (faction == FACTION_RUSSIAN) then
|
||
prefix = "[ВС РФ] "
|
||
prefixColor = Color(255, 100, 100)
|
||
elseif (faction == FACTION_UKRAINE) then
|
||
prefix = "[ВСУ] "
|
||
prefixColor = Color(255, 196, 0)
|
||
end
|
||
end
|
||
|
||
chat.AddText(prefixColor, prefix, Color(255, 255, 255), name, ": ", text)
|
||
end,
|
||
prefix = {"/ad"},
|
||
description = "Объявления стороны",
|
||
color = Color(200, 200, 200),
|
||
CanHear = function(self, speaker, listener)
|
||
-- Слышат только игроки той же фракции
|
||
if (!listener:GetCharacter() or !speaker:GetCharacter()) then
|
||
return false
|
||
end
|
||
|
||
local speakerFaction = speaker:GetCharacter():GetFaction()
|
||
local listenerFaction = listener:GetCharacter():GetFaction()
|
||
|
||
return speakerFaction == listenerFaction
|
||
end,
|
||
deadCanChat = false
|
||
})
|
||
|
||
-- Чат подразделения
|
||
ix.chat.Register("podr", {
|
||
OnChatAdd = function(self, speaker, text)
|
||
local name = IsValid(speaker) and speaker:Name() or "Console"
|
||
local prefix = "[ПОДРАЗДЕЛЕНИЕ] "
|
||
local prefixColor = Color(100, 150, 255)
|
||
|
||
if (IsValid(speaker) and speaker:GetCharacter()) then
|
||
local character = speaker:GetCharacter()
|
||
local faction = character:GetFaction()
|
||
local podrID = (character.GetPodr and character:GetPodr()) or 1
|
||
local factionTable = ix.faction.indices[faction]
|
||
|
||
if (factionTable and factionTable.Podr and factionTable.Podr[podrID]) then
|
||
local podrName = factionTable.Podr[podrID].name or "Неизвестно"
|
||
prefix = "["..podrName.."] "
|
||
|
||
if (faction == FACTION_RUSSIAN) then
|
||
prefixColor = Color(255, 196, 0)
|
||
elseif (faction == FACTION_UKRAINE) then
|
||
prefixColor = Color(255, 196, 0)
|
||
end
|
||
end
|
||
end
|
||
|
||
chat.AddText(prefixColor, prefix, Color(255, 255, 255), name, ": ", text)
|
||
end,
|
||
prefix = {"/podr", "/p"},
|
||
description = "Чат подразделения",
|
||
color = Color(100, 150, 255),
|
||
CanHear = function(self, speaker, listener)
|
||
-- Слышат только игроки той же фракции и того же подразделения
|
||
if (!listener:GetCharacter() or !speaker:GetCharacter()) then
|
||
return false
|
||
end
|
||
|
||
local speakerChar = speaker:GetCharacter()
|
||
local listenerChar = listener:GetCharacter()
|
||
|
||
local speakerFaction = speakerChar:GetFaction()
|
||
local listenerFaction = listenerChar:GetFaction()
|
||
|
||
if (speakerFaction != listenerFaction) then
|
||
return false
|
||
end
|
||
|
||
local speakerPodr = (speakerChar.GetPodr and speakerChar:GetPodr()) or 1
|
||
local listenerPodr = (listenerChar.GetPodr and listenerChar:GetPodr()) or 1
|
||
|
||
return speakerPodr == listenerPodr
|
||
end,
|
||
deadCanChat = false
|
||
})
|
||
|
||
if (SERVER) then
|
||
print("[Chat Control] Удалены чаты: it, connect, disconnect, event")
|
||
print("[Chat Control] Добавлены чаты: /rp, /adgl, /ad, /podr")
|
||
end
|
||
end)
|