Skip to content

Commit f21980e

Browse files
authored
Merge branch 'master' into reload-bind-fix
2 parents 834b86d + e63b332 commit f21980e

File tree

9 files changed

+82
-97
lines changed

9 files changed

+82
-97
lines changed

[gamemodes]/[assault]/assault/assault.lua

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -944,21 +944,6 @@ function createHelpText()
944944
return helpTable
945945
end
946946

947-
function onPlayerChat( message, theType )
948-
if theType == 0 then
949-
cancelEvent()
950-
message = string.gsub(message, "#%x%x%x%x%x%x", "")
951-
local team = getPlayerTeam( source )
952-
local playerName = getPlayerName( source )
953-
if (team) then
954-
local r,g,b = getTeamColor(team)
955-
outputChatBox( playerName..":#FFFFFF "..message,root,r,g,b, true )
956-
else
957-
outputChatBox( playerName..": "..message )
958-
end
959-
outputServerLog( "CHAT: " .. playerName .. ": " .. message )
960-
end
961-
end
962947

963948

964949
function onPlayerJoin ()
@@ -1524,7 +1509,6 @@ addEventHandler( "onPlayerSpawn", root, onPlayerSpawn )
15241509
addEventHandler( "onPlayerWasted", root, onPlayerWasted )
15251510
addEventHandler( "onPlayerJoin", root, onPlayerJoin )
15261511
addEventHandler( "onPlayerQuit", root, onPlayerQuit )
1527-
addEventHandler( "onPlayerChat", root, onPlayerChat )
15281512

15291513
-- Vehicle Events
15301514
addEventHandler ( "onVehicleEnter", root, onVehicleEnter )

[gamemodes]/[play]/play/meta.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<include resource="superman"/>
77
<include resource="hedit"/>
88
<include resource="mapfixes"/>
9+
<include resource="chatmanager" />
910

1011
<script src="play_config.lua" type="server"/>
1112
<script src="play_players.lua" type="server"/>

[gamemodes]/[tdm]/tdma/Main/tdma_core.lua

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -332,23 +332,6 @@ function xonPlayerWasted ( ammo, attacker, weapon, bodypart )
332332
end
333333
addEventHandler ( "onPlayerWasted", root, xonPlayerWasted )
334334

335-
function onChat ( message, theType )
336-
if theType == 0 then
337-
cancelEvent()
338-
message = string.gsub(message, "#%x%x%x%x%x%x", "")
339-
local team = getPlayerTeam ( source )
340-
local bastidName = getPlayerName ( source )
341-
if ( team ) then
342-
local r, g, b = getTeamColor ( team )
343-
outputChatBox ( bastidName..":#FFFFFF "..message, root, r, g, b, true )
344-
else
345-
outputChatBox ( bastidName..": "..message )
346-
end
347-
outputServerLog( "CHAT: " .. bastidName .. ": " .. message )
348-
end
349-
end
350-
addEventHandler ( "onPlayerChat", root, onChat )
351-
352335
function updateKills( idPlayer, idTeam )
353336
if ( tonumber(gameMaxKills) > 0 ) then
354337
if xDebug then outputDebugString ( "Kills for team before are: " .. idTeam.kills ) end

[gameplay]/freeroam/fr_client.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2328,6 +2328,7 @@ function toggleFRWindow()
23282328
showCursor(false)
23292329
hideAllWindows()
23302330
colorPicker.closeSelect()
2331+
closePositionWindow()
23312332
else
23322333
if guiGetInputMode() ~= "no_binds_when_editing" then
23332334
guiSetInputMode("no_binds_when_editing")

[gameplay]/freeroam/fr_server.lua

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
local g_PlayerData = {}
22
local g_VehicleData = {}
3-
local chatTime = {}
4-
local lastChatMessage = {}
53

64
g_ArmedVehicles = {
75
[425] = true,
@@ -447,34 +445,6 @@ function fadeVehiclePassengersCamera(toggle)
447445
end
448446
end
449447

450-
addEventHandler('onPlayerChat', root,
451-
function(msg, type)
452-
if type == 0 then
453-
cancelEvent()
454-
if not hasObjectPermissionTo(source, "command.kick") and not hasObjectPermissionTo(source, "command.mute") then
455-
if chatTime[source] and chatTime[source] + tonumber(get("*chat/mainChatDelay")) > getTickCount() then
456-
outputChatBox("Stop spamming main chat!", source, 255, 0, 0)
457-
return
458-
else
459-
chatTime[source] = getTickCount()
460-
end
461-
if get("*chat/blockRepeatMessages") == "true" and lastChatMessage[source] and lastChatMessage[source] == msg then
462-
outputChatBox("Stop repeating yourself!", source, 255, 0, 0)
463-
return
464-
else
465-
lastChatMessage[source] = msg
466-
end
467-
end
468-
if isElement(source) then
469-
local r, g, b = getPlayerNametagColor(source)
470-
outputChatBox(getPlayerName(source) .. ': #FFFFFF' .. stripHex(msg), root, r, g, b, true)
471-
outputServerLog( "CHAT: " .. getPlayerName(source) .. ": " .. msg )
472-
end
473-
end
474-
end
475-
)
476-
477-
478448
addEventHandler('onVehicleEnter', root,
479449
function(player, seat)
480450
if not g_VehicleData[source] then
@@ -599,8 +569,6 @@ function quitHandler(player)
599569
table.each(g_PlayerData[source].vehicles, unloadVehicle)
600570
removeEventHandler("onFreeroamLocalSettingChange",source,onLocalSettingChange)
601571
g_PlayerData[source] = nil
602-
chatTime[source] = nil
603-
lastChatMessage[source] = nil
604572
end
605573
addEventHandler('onPlayerQuit', root, quitHandler)
606574

[gameplay]/freeroam/meta.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,6 @@
9898
-->
9999
<setting name="*vehicles/disallowed_warp" value="[[425, 520, 476, 447, 464, 432]]" />
100100

101-
<setting name="*chat/mainChatDelay" value="1000" /> <!-- Miliseconds between each message a player can send through main chat -->
102-
<setting name="*chat/blockRepeatMessages" value="true" /> <!-- Prevent a player from saying the same thing twice in a row to spam -->
103101
<setting name="*gui/antiram" value="true" /> <!-- Allow player to use vehicle ghostmode (anti-ram) from F1? -->
104102
<setting name="*gui/disablewarp" value="true" /> <!-- Allow player to prevent others warping to them from F1? -->
105103
<setting name="*gui/disableknife" value="true" /> <!-- Allow player to prevent themselves from getting knifekilled and vice versa (instakilled from behind) from F1? -->
Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
local lowerBound, upperBound = unpack(get("color_range"))
22

3-
local freeroamRunning = false
4-
53
local function randomizePlayerColor(player)
64
player = player or source
75
local r, g, b = math.random(lowerBound, upperBound), math.random(lowerBound, upperBound), math.random(lowerBound, upperBound)
@@ -11,45 +9,18 @@ addEventHandler("onPlayerJoin", root, randomizePlayerColor)
119

1210
local function setAllPlayerColors()
1311
for _, player in ipairs(getElementsByType("player")) do
14-
if eventName == "onResourceStop" then
15-
setPlayerNametagColor(player, false)
16-
else
17-
randomizePlayerColor(player)
18-
end
12+
randomizePlayerColor(player)
1913
end
2014
end
2115
-- mapmanager resets player colors to white when the map ends
2216
addEventHandler("onGamemodeMapStart", root, setAllPlayerColors)
2317

2418
local function handleResourceStartStop(res)
2519
if res == resource then
26-
local freeroamResource = getResourceFromName("freeroam")
27-
if freeroamResource then
28-
freeroamRunning = getResourceState(freeroamResource) == "running"
29-
end
3020
setAllPlayerColors()
31-
elseif getResourceName(res) == "freeroam" then
32-
freeroamRunning = eventName == "onResourceStart"
3321
end
3422
end
3523
addEventHandler("onResourceStart", root, handleResourceStartStop)
3624
addEventHandler("onResourceStop", root, handleResourceStartStop)
3725

38-
addEventHandler('onPlayerChat', root,
39-
function(msg, type)
40-
if type == 0 then
41-
if freeroamRunning then
42-
return -- Let freeroam handle chat
43-
end
44-
cancelEvent()
45-
local r, g, b = getPlayerColor(source)
46-
local name = getPlayerName(source)
47-
msg = msg:gsub('#%x%x%x%x%x%x', '')
48-
outputChatBox( name.. ': #FFFFFF' .. msg, root, r, g, b, true)
49-
outputServerLog( "CHAT: " .. name .. ": " .. msg )
50-
end
51-
end
52-
)
5326

54-
getPlayerColor = getPlayerNametagColor
55-
getPlayerColour = getPlayerNametagColor
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
local chatTime = {}
2+
local lastChatMessage = {}
3+
local _getPlayerName = getPlayerName
4+
5+
function chatHandler(msg, type)
6+
if type == 0 then
7+
cancelEvent()
8+
if not hasObjectPermissionTo(source, "command.kick") and not hasObjectPermissionTo(source, "command.mute") then
9+
if chatTime[source] and chatTime[source] + tonumber(get("*mainChatDelay")) > getTickCount() then
10+
outputChatBox("Stop spamming main chat!", source, 255, 0, 0)
11+
return
12+
else
13+
chatTime[source] = getTickCount()
14+
end
15+
if get("*blockRepeatMessages") == "true" and lastChatMessage[source] and lastChatMessage[source] == msg then
16+
outputChatBox("Stop repeating yourself!", source, 255, 0, 0)
17+
return
18+
else
19+
lastChatMessage[source] = msg
20+
end
21+
end
22+
if isElement(source) then
23+
local r, g, b = 255, 255, 255
24+
if get("*nameColorMode") == "nametag" then
25+
r, g, b = getPlayerNametagColor(source)
26+
elseif get("*nameColorMode") == "team" then
27+
local team = getPlayerTeam(source)
28+
if (team) then
29+
r, g, b = getTeamColor(team)
30+
end
31+
end
32+
33+
local playerName = getPlayerName(source)
34+
outputChatBox(playerName .. ': #FFFFFF' .. stripHex(msg), root, r, g, b, true)
35+
outputServerLog( "CHAT: " .. playerName .. ": " .. msg )
36+
end
37+
end
38+
end
39+
addEventHandler('onPlayerChat', root, chatHandler)
40+
41+
function quitHandler()
42+
chatTime[source] = nil
43+
lastChatMessage[source] = nil
44+
end
45+
addEventHandler('onPlayerQuit', root, quitHandler)
46+
47+
function getPlayerName(player)
48+
return get("*removeHex") and _getPlayerName(player):gsub("#%x%x%x%x%x%x","") or _getPlayerName(player)
49+
end
50+
51+
function stripHex(str)
52+
local oldLen
53+
repeat
54+
oldLen = str:len()
55+
str = str:gsub('#%x%x%x%x%x%x', '')
56+
until str:len() == oldLen
57+
return str
58+
end

[managers]/chatmanager/meta.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<meta>
2+
<info author="omar-o22" version="1.0" name="Chat Manager" description="Chat manager with player/team colors and spam protection." type="script" />
3+
<script src="chatmanager_server.lua" type="server"/>
4+
5+
<settings>
6+
7+
8+
<setting name="*mainChatDelay" value="1000" /> <!-- Miliseconds between each message a player can send through main chat -->
9+
<setting name="*blockRepeatMessages" value="true" /> <!-- Prevent a player from saying the same thing twice in a row to spam -->
10+
<setting name="*removeHex" value="false"
11+
friendlyname="Remove HEX Codes"
12+
accept="true,false"
13+
desc="Setting this to true will remove all HEX codes from players in chat."
14+
/>
15+
<setting name="*nameColorMode" value="nametag"
16+
friendlyname="Name Color Mode"
17+
accept="nametag,team"
18+
desc="Sets the color source for player names in chat."
19+
/>
20+
</settings>
21+
</meta>

0 commit comments

Comments
 (0)