· 6 years ago · Oct 19, 2019, 06:36 PM
1//-----Clan-Stats System -----
2function GetTag( strPlayer )
3{
4 local
5 D_DELIM = regexp(@"([\[(=^<]+\w+[\])=^>]+)"),
6 S_DELIM = regexp(@"(\w.+[.*=]+)"),
7
8 D_DELIM_res = D_DELIM.capture(strPlayer),
9 S_DELIM_res = S_DELIM.capture(strPlayer);
10
11 if ( D_DELIM_res != null )
12 {
13 return strPlayer.slice( D_DELIM_res[ 0 ].begin + 1, D_DELIM_res[ 0 ].end - 1 );
14 }
15 else if ( S_DELIM_res != null )
16 {
17 return strPlayer.slice( S_DELIM_res[ 0 ].begin, S_DELIM_res[ 0 ].end - 1 );
18 }
19 else return null;
20}
21
22function IncClanKills( Clan )
23{
24 if ( Clan != null )
25 {
26 Clan = Clan;
27 local Kills = ClanKills( Clan );
28 if ( Kills != null )
29 {
30 local Calc = Kills.tointeger() + 1;
31 local query1 = format( "UPDATE ClanStats SET Kills=%i WHERE Clan='" + Clan + "'",
32 Calc );
33
34 ::QuerySQL( sDB, query1 );
35 }
36 else
37 {
38 local Calc = 0 + 1;
39 local query1 = format( "UPDATE ClanStats SET Kills=%i WHERE Clan='" + Clan + "'",
40 Calc );
41
42 ::QuerySQL( sDB, query1 );
43 }
44 }
45}
46
47function IncClanDeaths( Clan )
48{
49 if ( Clan != null )
50 {
51 Clan = Clan;
52 local Deaths = ClanDeaths( Clan );
53 if ( Deaths != null )
54 {
55 local Calc = Deaths.tointeger() + 1;
56 local query1 = format( "UPDATE ClanStats SET Deaths=%i WHERE Clan='" + Clan + "'",
57 Calc );
58
59 ::QuerySQL( sDB, query1 );
60 }
61 else
62 {
63 local Calc = 0 + 1;
64 local query1 = format( "UPDATE ClanStats SET Deaths=%i WHERE Clan='" + Clan + "'",
65 Calc );
66
67 ::QuerySQL( sDB, query1 );
68 }
69 }
70}
71
72function IncClanDeads( Clan )
73{
74 if ( Clan != null )
75 {
76 Clan = Clan;
77 local Deads = ClanDeads( Clan );
78 if ( Deads != null )
79 {
80 local Calc = Deads.tointeger() + 1;
81 local query1 = format( "UPDATE ClanStats SET Deads=%i WHERE Clan='" + Clan + "'",
82 Calc );
83
84 ::QuerySQL( sDB, query1 );
85 }
86 else
87 {
88 local Calc = 0 + 1;
89 local query1 = format( "UPDATE ClanStats SET Deads=%i WHERE Clan='" + Clan + "'",
90 Calc );
91
92 ::QuerySQL( sDB, query1 );
93 }
94 }
95}
96
97function ClanKills( Clan )
98{
99 if ( Clan != null )
100 {
101 Clan = Clan;
102 local Answer = ::QuerySQL( sDB, "SELECT Kills FROM ClanStats WHERE Clan='" + Clan + "' COLLATE NOCASE" );
103 local Kills = ::GetSQLColumnData( Answer, 0 );
104 if ( !Kills ) return null;
105 else return Kills.tointeger();
106 FreeSQLQuery( Answer );
107 }
108 else return null;
109}
110
111function ClanDeaths( Clan )
112{
113 if ( Clan != null )
114 {
115 Clan = Clan;
116 local Answer = ::QuerySQL( sDB, "SELECT Deaths FROM ClanStats WHERE Clan='" + Clan + "' COLLATE NOCASE" );
117 local Deaths = ::GetSQLColumnData( Answer, 0 );
118 if ( !Deaths ) return null;
119 else return Deaths.tointeger();
120 FreeSQLQuery( Answer );
121 }
122 else return null;
123}
124
125function ClanDeads( Clan )
126{
127 if ( Clan != null )
128 {
129 Clan = Clan;
130 local Answer = ::QuerySQL( sDB, "SELECT Deads FROM ClanStats WHERE Clan='" + Clan + "' COLLATE NOCASE" );
131 local Deads = ::GetSQLColumnData( Answer, 0 );
132 if ( !Deads ) return null;
133 else return Deads.tointeger();
134 }
135 else return null;
136}
137
138/////
139
140else if ( ( cmd == "cstat" ) || ( cmd == "cstats" ) || ( cmd == "clanstats" ) )
141 {
142 (text) ? text = text : text = GetTag( plr.Name );
143 if ( !text ) ::Client_Rojo( "Error, Absent ID/Name/Clan-Name", player );
144 else
145 {
146 local q = ::QuerySQL( sDB, "SELECT Clan, Kills, Deaths, Deads FROM ClanStats WHERE Clan='" + text + "' COLLATE NOCASE" );
147 if ( !::GetSQLColumnData( q, 0 ) ) ::Client_Rojo( "Error, " + text + "'s clan is not listed.", player );
148 else
149 {
150 local PKills = ::GetSQLColumnData( q, 1 ).tofloat(), PDeaths = ::GetSQLColumnData( q, 2 ).tofloat(), PDeads = ::GetSQLColumnData( q, 3 ).tofloat(), Ratio;
151
152 if ( ( PKills > 0 ) && ( PDeaths > 0 ) ) Ratio = PKills / PDeaths;
153 if ( Ratio ) Ratio = format ( "%.2f", Ratio );
154 if ( Ratio ) EMessage( "** " + text + "'s ClanStats - (Kills: " + PKills + ") (Deaths: " + PDeaths + ") (Deads: " + PDeads + ") (Ratio: " + Ratio + ")" );
155 else EMessage( "** " + text + "'s ClanStats - (Kills: " + PKills + ") (Deaths: " + PDeaths + ") (Deads: " + PDeads + ")" );
156 }
157 FreeSQLQuery( q );
158 }
159 }
160
161function onPlayerJoin( player )
162{
163 if ( GetTag( player.Name ) ) Client_RojoB( "** Clan: " + GetTag( player.Name ), player );
164}
165
166function onPlayerKill( killer, player, weapon, bodypart )
167}
168 local KTag = GetTag( killer.Name ), DTag = GetTag( player.Name );
169 if ( KTag ) IncClanKills( KTag );
170 if ( DTag ) IncClanDeaths( DTag );
171
172}
173
174function onPlayerDeath( player, reason )
175{
176 local Tag = GetTag( player.Name );
177 if ( Tag ) IncClanDeads( Tag );
178}
179
180::QuerySQL( sDB, "CREATE TABLE IF NOT EXISTS ClanStats ( Clan TEXT, Kills LONG DEFAULT 0, Deaths LONG DEFAULT 0, Deads LONG DEFAULT 0 )" );