diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json
index eea7c10..94ea8b5 100644
--- a/DataCollection/gamedata.json
+++ b/DataCollection/gamedata.json
@@ -76,6 +76,25 @@
"end_of_meta":"^Z",
"back_to_map":"^M",
"long_full_line":"^L",
+ "stats_page":{
+ "stats_bar_format":"^ATPlayer %USERNAME%'s Details^H",
+ "stats_area_format":"Currently in %AREA%",
+ "stats_money_format":"
Money: $%MONEY%",
+ "stats_freetime_format":"
Today's Free Time Remaining: %FREEMINUTES% minutes.",
+ "stats_description_format":"
Description: %PLAYERDESC%",
+ "stats_experience":"
^HExperience: %EXPERIENCE%",
+ "stats_questpoints":"
Quest Points: %QUESTPOINTS%",
+ "stats_hunger":"
Hunger: %HUNGER%",
+ "stats_thisrt":"
Thirst: %THIRST%",
+ "stats_tiredness":"
Tiredness: %TIRED%",
+ "stats_gender":"
Gender: %GENDER%",
+ "stats_equipped":"
%JEWELFORMAT%",
+ "stats_competion_gear":"
%GEARFORMAT%"
+ "msg":{
+ "no_jewelry_equipped":"You have no Jewelry on.",
+ "no_competition_gear":"^LYou have nothing interesting for special competition gear.",
+ }
+ },
"shop":{
"selling":"^LThings I am selling:",
"sell_me":"^LThings you can SELL to me:",
diff --git a/Horse Isle Server/Horse Isle Server/Player/User.cs b/Horse Isle Server/Horse Isle Server/Player/User.cs
index 242aadc..6acdcc7 100644
--- a/Horse Isle Server/Horse Isle Server/Player/User.cs
+++ b/Horse Isle Server/Horse Isle Server/Player/User.cs
@@ -35,6 +35,25 @@ namespace HISP.Player
public Npc.NpcEntry LastTalkedToNpc;
public Shop LastShoppedAt;
public PlayerQuests Quests;
+ public bool Subscribed
+ {
+ get
+ {
+ int Timestamp = Convert.ToInt32(new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds());
+ if(Timestamp > subscribedUntil) // sub expired.
+ {
+ Logger.InfoPrint(Username + "'s Subscription expired. (timestamp now: " + Timestamp + " exp date: " + subscribedUntil+" )");
+ Database.SetUserSubscriptionStatus(this.Id, false);
+ subscribed = false;
+ }
+
+ return subscribed;
+ }
+ set
+ {
+ Database.SetUserSubscriptionStatus(this.Id, value);
+ }
+ }
public bool Stealth
{
get
@@ -46,7 +65,7 @@ namespace HISP.Player
if (value)
Database.RemoveOnlineUser(this.Id);
else
- Database.AddOnlineUser(this.Id, this.Administrator, this.Moderator);
+ Database.AddOnlineUser(this.Id, this.Administrator, this.Moderator, this.Subscribed);
stealth = value;
}
@@ -156,6 +175,8 @@ namespace HISP.Player
private int chatViolations;
private int charId;
+ private int subscribedUntil;
+ private bool subscribed;
private string profilePage;
private int x;
private bool stealth = false;
@@ -225,7 +246,8 @@ namespace HISP.Player
money = Database.GetPlayerMoney(UserId);
bankMoney = Database.GetPlayerBankMoney(UserId);
questPoints = Database.GetPlayerQuestPoints(UserId);
-
+ subscribed = Database.IsUserSubscribed(UserId);
+ subscribedUntil = Database.GetUserSubscriptionExpireDate(UserId);
profilePage = Database.GetPlayerProfile(UserId);
MailBox = new Mailbox(this);
diff --git a/Horse Isle Server/Horse Isle Server/Server/Database.cs b/Horse Isle Server/Horse Isle Server/Server/Database.cs
index 48ce5d5..f65e3e4 100644
--- a/Horse Isle Server/Horse Isle Server/Server/Database.cs
+++ b/Horse Isle Server/Horse Isle Server/Server/Database.cs
@@ -16,7 +16,7 @@ namespace HISP.Server
{
db.Open();
string UserTable = "CREATE TABLE Users(Id INT, Username TEXT(16),Email TEXT(128),Country TEXT(128),SecurityQuestion Text(128),SecurityAnswerHash TEXT(128),Age INT,PassHash TEXT(128), Salt TEXT(128),Gender TEXT(16), Admin TEXT(3), Moderator TEXT(3))";
- string ExtTable = "CREATE TABLE UserExt(Id INT, X INT, Y INT, Money INT, QuestPoints INT, BankBalance BIGINT,ProfilePage Text(1028), CharId INT, ChatViolations INT)";
+ string ExtTable = "CREATE TABLE UserExt(Id INT, X INT, Y INT, Money INT, QuestPoints INT, BankBalance BIGINT,ProfilePage Text(1028), CharId INT, ChatViolations INT,Subscriber TEXT(3), SubscribedUntil INT, Experience INT, Tiredness INT, Hunger INT, Thirst INT, FreeMinutes INT)";
string MailTable = "CREATE TABLE Mailbox(IdTo INT, PlayerFrom TEXT(16),Subject TEXT(128), Message Text(1028), TimeSent INT)";
string BuddyTable = "CREATE TABLE BuddyList(Id INT, IdFriend INT, Pending BOOL)";
string WorldTable = "CREATE TABLE World(Time INT,Day INT, Year INT, Weather TEXT(64))";
@@ -24,7 +24,7 @@ namespace HISP.Server
string ShopInventory = "CREATE TABLE ShopInventory(ShopID INT, RandomID INT, ItemID INT)";
string DroppedItems = "CREATE TABLE DroppedItems(X INT, Y INT, RandomID INT, ItemID INT, DespawnTimer INT)";
string TrackedQuest = "CREATE TABLE TrackedQuest(playerId INT, questId INT, timesCompleted INT)";
- string OnlineUsers = "CREATE TABLE OnlineUsers(playerId INT, Admin TEXT(3), Moderator TEXT(3))";
+ string OnlineUsers = "CREATE TABLE OnlineUsers(playerId INT, Admin TEXT(3), Moderator TEXT(3), Subscribed TEXT(3))";
string DeleteOnlineUsers = "DELETE FROM OnlineUsers";
@@ -389,6 +389,56 @@ namespace HISP.Server
}
}
+ public static bool SetUserSubscriptionStatus(int playerId, bool subscribed)
+ {
+ using (MySqlConnection db = new MySqlConnection(ConnectionString))
+ {
+ db.Open();
+ MySqlCommand sqlCommand = db.CreateCommand();
+
+ sqlCommand.CommandText = "UPDATE userExt SET Subscriber=@subscribed WHERE Id=@playerId";
+ sqlCommand.Parameters.AddWithValue("@subscribed", subscribed ? "YES" : "NO");
+ sqlCommand.Parameters.AddWithValue("@playerId", playerId);
+ sqlCommand.Prepare();
+ sqlCommand.ExecuteNonQuery();
+
+ sqlCommand.Dispose();
+
+ return subscribed;
+ }
+ }
+ public static int GetUserSubscriptionExpireDate(int playerId)
+ {
+ using (MySqlConnection db = new MySqlConnection(ConnectionString))
+ {
+ db.Open();
+ MySqlCommand sqlCommand = db.CreateCommand();
+
+ sqlCommand.CommandText = "SELECT SubscribedUntil FROM userExt WHERE Id=@playerId";
+ sqlCommand.Parameters.AddWithValue("@playerId", playerId);
+ sqlCommand.Prepare();
+ int subscribedUntil = Convert.ToInt32(sqlCommand.ExecuteScalar());
+ sqlCommand.Dispose();
+
+ return subscribedUntil;
+ }
+ }
+ public static bool IsUserSubscribed(int playerId)
+ {
+ using (MySqlConnection db = new MySqlConnection(ConnectionString))
+ {
+ db.Open();
+ MySqlCommand sqlCommand = db.CreateCommand();
+
+ sqlCommand.CommandText = "SELECT Subscriber FROM userExt WHERE Id=@playerId";
+ sqlCommand.Parameters.AddWithValue("@playerId", playerId);
+ sqlCommand.Prepare();
+ bool subscribed = (string)(sqlCommand.ExecuteScalar()) == "YES";
+ sqlCommand.Dispose();
+
+ return subscribed;
+ }
+ }
public static void AddNewTrackedQuest(int playerId, int questId, int timesCompleted)
{
using (MySqlConnection db = new MySqlConnection(ConnectionString))
@@ -405,17 +455,18 @@ namespace HISP.Server
sqlCommand.Dispose();
}
}
- public static void AddOnlineUser(int playerId, bool Admin, bool Moderator)
+ public static void AddOnlineUser(int playerId, bool Admin, bool Moderator, bool Subscribed)
{
using (MySqlConnection db = new MySqlConnection(ConnectionString))
{
db.Open();
MySqlCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "INSERT INTO OnlineUsers VALUES(@playerId, @admin, @moderator)";
+ sqlCommand.CommandText = "INSERT INTO OnlineUsers VALUES(@playerId, @admin, @moderator, @subscribed)";
sqlCommand.Parameters.AddWithValue("@playerId", playerId);
sqlCommand.Parameters.AddWithValue("@admin", Admin ? "YES" : "NO");
sqlCommand.Parameters.AddWithValue("@moderator", Moderator ? "YES" : "NO");
+ sqlCommand.Parameters.AddWithValue("@subscribed", Subscribed ? "YES" : "NO");
sqlCommand.Prepare();
sqlCommand.ExecuteNonQuery();
sqlCommand.Dispose();
@@ -842,7 +893,7 @@ namespace HISP.Server
throw new Exception("Userid " + id + " Allready in userext.");
MySqlCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "INSERT INTO UserExt VALUES(@id,@x,@y,0,0,0,'',0,0)";
+ sqlCommand.CommandText = "INSERT INTO UserExt VALUES(@id,@x,@y,0,0,0,'',0,0,'NO',0,0,1000,1000,1000, 360)";
sqlCommand.Parameters.AddWithValue("@id", id);
sqlCommand.Parameters.AddWithValue("@x", Map.NewUserStartX);
sqlCommand.Parameters.AddWithValue("@y", Map.NewUserStartY);
diff --git a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs
index b5015b8..767f439 100644
--- a/Horse Isle Server/Horse Isle Server/Server/GameServer.cs
+++ b/Horse Isle Server/Horse Isle Server/Server/GameServer.cs
@@ -65,7 +65,8 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Requested user information when not logged in.");
return;
}
- Database.AddOnlineUser(sender.LoggedinUser.Id, sender.LoggedinUser.Administrator, sender.LoggedinUser.Moderator);
+ Database.AddOnlineUser(sender.LoggedinUser.Id, sender.LoggedinUser.Administrator, sender.LoggedinUser.Moderator, sender.LoggedinUser.Subscribed);
+
Logger.DebugPrint(sender.LoggedinUser.Username + " Requested user information.");
User user = sender.LoggedinUser;