/
package.cs
103 lines (96 loc) · 2.91 KB
/
package.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
function GameConnection::isMuted(%this) {
%row = %this.getMuteRow();
if(isObject(%row)) {
if(%row.expires !$= "never") {
if(strReplace(getTimestamp(getDateTime())," ","") >= %row.expires) {
%file = new FileObject();
%file.openForWrite($Mute::Core::SaveDir @ "/" @ %this.bl_id);
%file.writeLine("");
%file.close();
%file.delete();
} else {
return 1;
}
} else {
return 1;
}
}
return 0;
}
function GameConnection::getMuteRow(%this) {
for(%i=0;%i<MuteDB.getCount();%i++) {
%row = MuteDB.getObject(%i);
if(%row.clientID == %this.bl_id) {
return %row;
}
}
return 0;
}
function GameConnection::decreaseSpamMessageCount(%client) {
%client.spamMessageCount--;
if(%client.spamMessageCount < 0) {
%client.spamMessageCount = 0;
}
}
package MuteServerPackage {
function serverCmdMessageSent(%client,%msg) {
if(!%client.isMuted()) {
%client.last_msg = %msg;
return parent::serverCmdMessageSent(%client,%msg);
} else {
if(!$Mute::Server::Shadow) {
%client.play2D("errorSound");
%row = %client.getMuteRow();
if(%row.expires $= "never") {
messageClient(%client,'',"\c6You have been permanently muted.");
} else {
messageClient(%client,'',"\c6You have been muted. It expires on" SPC convertTimestamp(%client.getMuteRow().expires));
}
%client.last_msg = %msg;
return 0;
} else {
// essentially had to recode chat here, pls
if(%client.spamMessageCount < 5) {
%client.spamMessageCount++;
// seems like 5 seconds
%client.schedule(5000,decreaseSpamMessageCount);
}
if(%msg $= %client.last_msg || getSimTime() - %client.flooded_at < 5000 || %client.spamMessageCount > 4) {
if(getSimTime() - %client.flooded_at < 5000) {
%time = mCeil(((%client.flooded_at+5000) - getSimTime())/1000);
} else {
%time = 5;
%client.flooded_at = getSimTime();
}
commandToClient(%client,'serverMessage',58,"\c5Do not repeat yourself.");
// this doesn't have a tagged string?
commandToClient(%client,'serverMessage',"","\c3FLOOD PROTECTION: You must wait another" SPC %time SPC "seconds.");
return 0;
}
%all = '\c7%1\c3%2\c7%3\c6: %4';
%name = %client.getPlayerName();
%pre = %client.clanPrefix;
%suf = %client.clanSuffix;
commandToClient(%client,'chatMessage',%client,'','',%all,%pre,%name,%suf,%msg);
%client.last_msg = %msg;
}
}
}
function serverCmdStartTalking(%client) {
if(!%client.isMuted()) {
return parent::serverCmdStartTalking(%client);
} else {
if($Mute::Server::AllowIsTyping || $Mute::Server::Shadow) {
// it's assumed you want shadow mutes to work correctly with just $Mute::Server::Shadow set.
return parent::serverCmdStartTalking(%client);
}
}
return 0;
}
function onServerDestroyed() {
export("$Mute::Server::*",$Mute::Core::Config);
$Mute::Core::DBInit = 0;
return parent::onServerDestroyed();
}
};
activatePackage(MuteServerPackage);