add sborka
This commit is contained in:
158
garrysmod/gamemodes/militaryrp/plugins/chatcontrol/sh_plugin.lua
Normal file
158
garrysmod/gamemodes/militaryrp/plugins/chatcontrol/sh_plugin.lua
Normal file
@@ -0,0 +1,158 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user