Skip to content

Commit 04838c0

Browse files
Merge pull request #1 from Eatric/master
Added something new
2 parents 76d4ae0 + 1d44455 commit 04838c0

File tree

3 files changed

+131
-26
lines changed

3 files changed

+131
-26
lines changed

ZLDatabaseManager.cs

Lines changed: 100 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
42
using I18N.West;
53
using MySql.Data.MySqlClient;
6-
74
using Rocket.Core.Logging;
85
using Steamworks;
9-
using System.Text;
10-
using System.Threading.Tasks;
116

127
namespace ZaupLeaderboard
138
{
@@ -22,7 +17,7 @@ internal void CheckSchema()
2217
{
2318
try
2419
{
25-
MySqlConnection mySqlConnection = this.createConnection();
20+
MySqlConnection mySqlConnection = this.CreateConnection();
2621
MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
2722
mySqlCommand.CommandText = "show tables like '"
2823
+ ZaupLeaderboard.Instance.Configuration.Instance.DatabaseTableName + "'";
@@ -80,7 +75,7 @@ internal void CheckSchema()
8075
Logger.LogException(ex);
8176
}
8277
}
83-
private MySqlConnection createConnection()
78+
private MySqlConnection CreateConnection()
8479
{
8580
MySqlConnection result = null;
8681
try
@@ -104,11 +99,11 @@ private MySqlConnection createConnection()
10499
}
105100
return result;
106101
}
107-
public byte onPlayerConnected(CSteamID id, string name)
102+
public byte OnPlayerConnected(CSteamID id, string name)
108103
{
109104
try
110105
{
111-
MySqlConnection mySqlConnection = this.createConnection();
106+
MySqlConnection mySqlConnection = this.CreateConnection();
112107
MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
113108
mySqlCommand.CommandText = "insert into `"
114109
+ ZaupLeaderboard.Instance.Configuration.Instance.DatabaseTableName
@@ -127,11 +122,105 @@ public byte onPlayerConnected(CSteamID id, string name)
127122
return 0;
128123
}
129124
}
125+
126+
public int GetPlayerKills(string id)
127+
{
128+
int result = 0;
129+
try
130+
{
131+
MySqlConnection mySqlConnection = this.CreateConnection();
132+
MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
133+
string databaseTableName = ZaupLeaderboard.Instance.Configuration.Instance.DatabaseTableName;
134+
mySqlCommand.CommandText = string.Concat(new string[]
135+
{
136+
"select `playerkills` from `",
137+
databaseTableName,
138+
"` where `steamId` = '",
139+
id,
140+
"'"
141+
});
142+
mySqlConnection.Open();
143+
object obj = mySqlCommand.ExecuteScalar();
144+
if (obj != null)
145+
{
146+
int.TryParse(obj.ToString(), out result);
147+
}
148+
mySqlConnection.Close();
149+
}
150+
catch (Exception ex)
151+
{
152+
Logger.LogException(ex, null);
153+
}
154+
return result;
155+
}
156+
157+
public int GetZombieKills(string id)
158+
{
159+
int result = 0;
160+
try
161+
{
162+
MySqlConnection mySqlConnection = this.CreateConnection();
163+
MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
164+
string databaseTableName = ZaupLeaderboard.Instance.Configuration.Instance.DatabaseTableName;
165+
mySqlCommand.CommandText = string.Concat(new string[]
166+
{
167+
"select `zombiekills` from `",
168+
databaseTableName,
169+
"` where `steamId` = '",
170+
id,
171+
"'"
172+
});
173+
mySqlConnection.Open();
174+
object obj = mySqlCommand.ExecuteScalar();
175+
if (obj != null)
176+
{
177+
int.TryParse(obj.ToString(), out result);
178+
}
179+
mySqlConnection.Close();
180+
}
181+
catch (Exception ex)
182+
{
183+
Logger.LogException(ex, null);
184+
}
185+
return result;
186+
}
187+
188+
public int GetZombieMegaKills(string id)
189+
{
190+
int result = 0;
191+
try
192+
{
193+
MySqlConnection mySqlConnection = this.CreateConnection();
194+
MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
195+
string databaseTableName = ZaupLeaderboard.Instance.Configuration.Instance.DatabaseTableName;
196+
mySqlCommand.CommandText = string.Concat(new string[]
197+
{
198+
"select `zombiekillsmega` from `",
199+
databaseTableName,
200+
"` where `steamId` = '",
201+
id,
202+
"'"
203+
});
204+
mySqlConnection.Open();
205+
object obj = mySqlCommand.ExecuteScalar();
206+
if (obj != null)
207+
{
208+
int.TryParse(obj.ToString(), out result);
209+
}
210+
mySqlConnection.Close();
211+
}
212+
catch (Exception ex)
213+
{
214+
Logger.LogException(ex, null);
215+
}
216+
return result;
217+
}
218+
130219
public byte UpdateTable(CSteamID id, string sql)
131220
{
132221
try
133222
{
134-
MySqlConnection mySqlConnection = this.createConnection();
223+
MySqlConnection mySqlConnection = this.CreateConnection();
135224
MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
136225
mySqlCommand.CommandText = sql;
137226
mySqlConnection.Open();
@@ -149,7 +238,7 @@ public uint GetPvpStreak(CSteamID id)
149238
{
150239
try
151240
{
152-
MySqlConnection mySqlConnection = this.createConnection();
241+
MySqlConnection mySqlConnection = this.CreateConnection();
153242
MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
154243
mySqlCommand.CommandText = "select `toppvpstreak` from `"
155244
+ ZaupLeaderboard.Instance.Configuration.Instance.DatabaseTableName

ZLPlayer.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace ZaupLeaderboard
1515
public class ZLPlayer : UnturnedPlayerComponent
1616
{
1717
private UnturnedPlayerEvents rpe;
18-
private Dictionary<string, uint> stats;
18+
public Dictionary<string, uint> stats;
1919
private Dictionary<string, decimal> money;
2020
private Dictionary<string, uint> serversvotedon = new Dictionary<string, uint>();
2121
private uint lastexperience;
@@ -62,15 +62,15 @@ public void Start() {
6262
{"totalmoneyspent", 0.00m},
6363
{"totalmoneylost", 0.00m}
6464
};
65-
U.Events.OnPlayerDisconnected += this.onPlayerDisconnected;
66-
U.Events.OnShutdown += this.onServerShutdown;
67-
this.rpe.OnDeath += this.onPlayerDeath;
68-
this.rpe.OnUpdateStat += this.onUpdateStat;
69-
this.rpe.OnUpdateExperience += this.onUpdateExperience;
65+
U.Events.OnPlayerDisconnected += this.OnPlayerDisconnected;
66+
U.Events.OnShutdown += this.OnServerShutdown;
67+
this.rpe.OnDeath += this.OnPlayerDeath;
68+
this.rpe.OnUpdateStat += this.OnUpdateStat;
69+
this.rpe.OnUpdateExperience += this.OnUpdateExperience;
7070
this.stats["toppvpstreak"] = ZaupLeaderboard.Instance.DatabaseMgr.GetPvpStreak(this.playerid);
7171
this.lastexperience = this.Player.Experience;
7272
}
73-
private void onPlayerDisconnected(UnturnedPlayer player)
73+
private void OnPlayerDisconnected(UnturnedPlayer player)
7474
{
7575
if (player.CSteamID != this.playerid) return;
7676
string sql = ZaupLeaderboard.Instance.UpdatePlayedTimeSql;
@@ -102,13 +102,13 @@ private void onPlayerDisconnected(UnturnedPlayer player)
102102
Rocket.Core.Logging.Logger.Log("There was problem saving the leaderboard info for " + player.CharacterName + ".");
103103
}
104104
}
105-
private void onServerShutdown()
105+
private void OnServerShutdown()
106106
{
107107
if (this.disconnecteddone) return;
108108
UnturnedPlayer player = this.Player;
109-
this.onPlayerDisconnected(player);
109+
this.OnPlayerDisconnected(player);
110110
}
111-
private void onPlayerDeath(UnturnedPlayer player, EDeathCause cause, ELimb limb, CSteamID murderer)
111+
private void OnPlayerDeath(UnturnedPlayer player, EDeathCause cause, ELimb limb, CSteamID murderer)
112112
{
113113
if (player.CSteamID != this.playerid) return;
114114
uint pvpstreak = this.stats["pvpstreak"];
@@ -179,8 +179,9 @@ private void onPlayerDeath(UnturnedPlayer player, EDeathCause cause, ELimb limb,
179179
this.stats["killedbyshred"]++;
180180
break;
181181
}
182+
ZaupLeaderboard.Instance.OnUpdateStats(Player.CSteamID, cause.ToString());
182183
}
183-
private void onUpdateStat(UnturnedPlayer player, EPlayerStat stat)
184+
private void OnUpdateStat(UnturnedPlayer player, EPlayerStat stat)
184185
{
185186
if (player.CSteamID != this.playerid) return;
186187
switch(stat) {
@@ -201,8 +202,9 @@ private void onUpdateStat(UnturnedPlayer player, EPlayerStat stat)
201202
this.stats["foundresources"]++;
202203
break;
203204
}
205+
ZaupLeaderboard.Instance.OnUpdateStats(Player.CSteamID, stat.ToString());
204206
}
205-
private void onUpdateExperience(UnturnedPlayer player, uint experience)
207+
private void OnUpdateExperience(UnturnedPlayer player, uint experience)
206208
{
207209
if (player.CSteamID != this.playerid) return;
208210
if (experience > this.lastexperience)
@@ -211,6 +213,7 @@ private void onUpdateExperience(UnturnedPlayer player, uint experience)
211213
this.stats["foundexperience"] += gainedexperience;
212214
}
213215
this.lastexperience = experience;
216+
ZaupLeaderboard.Instance.OnUpdateStats(Player.CSteamID, "experience");
214217
}
215218
public void UEOnPlayerExchange(object[] vars) {
216219
if (vars.Length != 3) return; // This is an invalid send so ignore it.

ZaupLeaderboard.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
using Rocket.Unturned.Events;
99
using Rocket.Unturned.Player;
1010
using Rocket.Unturned.Plugins;
11+
using Steamworks;
12+
using SDG.Unturned;
1113

1214
namespace ZaupLeaderboard
1315
{
@@ -16,6 +18,8 @@ public class ZaupLeaderboard : RocketPlugin<ZLConfiguration>
1618
public static ZaupLeaderboard Instance;
1719
public ZLDatabaseManager DatabaseMgr;
1820
public string UpdatePlayedTimeSql;
21+
public delegate void OnChangeStats(CSteamID steamID, string WhichStat);
22+
public event OnChangeStats OnChangeStatsEvent;
1923

2024
protected override void Load()
2125
{
@@ -26,11 +30,20 @@ protected override void Load()
2630
+ "` set `lastdisconn`=current_timestamp, `timeplayed`=`timeplayed`+ TIMESTAMPDIFF(SECOND,`"
2731
+ ZaupLeaderboard.Instance.Configuration.Instance.DatabaseTableName
2832
+ "`.`lastconn`,CURRENT_TIMESTAMP())";
29-
U.Events.OnPlayerConnected += this.onPlayerConnected;
33+
U.Events.OnPlayerConnected += this.OnPlayerConnected;
3034
}
31-
private void onPlayerConnected(UnturnedPlayer player)
35+
36+
internal void OnUpdateStats(CSteamID steamID, string WhichStat)
37+
{
38+
if(OnChangeStatsEvent != null)
39+
{
40+
OnChangeStatsEvent(steamID, WhichStat);
41+
}
42+
}
43+
44+
private void OnPlayerConnected(UnturnedPlayer player)
3245
{
33-
byte success = ZaupLeaderboard.Instance.DatabaseMgr.onPlayerConnected(player.CSteamID, player.CharacterName);
46+
byte success = ZaupLeaderboard.Instance.DatabaseMgr.OnPlayerConnected(player.CSteamID, player.CharacterName);
3447
if (success <= 0)
3548
{
3649
Logger.Log("Could not add or update the leaderboard for " + player.CharacterName + ".");

0 commit comments

Comments
 (0)