mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
Achievements are now loaded from the database. Cleaned up login packets.
This commit is contained in:
parent
f7702bca13
commit
724445a54a
@ -457,45 +457,7 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void getLatestAchievements(Player player)
|
public static SubPacket getLatestAchievements(Player player)
|
||||||
{
|
|
||||||
using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD)))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
conn.Open();
|
|
||||||
|
|
||||||
//Load Last 5 Completed
|
|
||||||
string query = @"
|
|
||||||
SELECT
|
|
||||||
achievementId
|
|
||||||
FROM characters_achievements WHERE characterId = @charId ORDER BY timeDone LIMIT 5";
|
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(query, conn);
|
|
||||||
cmd.Parameters.AddWithValue("@charId", player.actorId);
|
|
||||||
using (MySqlDataReader reader = cmd.ExecuteReader())
|
|
||||||
{
|
|
||||||
int count = 0;
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
player.latestAchievements[count++] = reader.GetUInt32(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (; count < player.latestAchievements.Length; count++)
|
|
||||||
player.latestAchievements[count] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (MySqlException e)
|
|
||||||
{ Console.WriteLine(e); }
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
conn.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SubPacket getAchievements(Player player)
|
|
||||||
{
|
{
|
||||||
uint[] latestAchievements = new uint[5];
|
uint[] latestAchievements = new uint[5];
|
||||||
using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD)))
|
using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD)))
|
||||||
@ -507,8 +469,9 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
//Load Last 5 Completed
|
//Load Last 5 Completed
|
||||||
string query = @"
|
string query = @"
|
||||||
SELECT
|
SELECT
|
||||||
achievementId
|
characters_achievements.achievementId FROM characters_achievements
|
||||||
FROM characters_achievements WHERE characterId = @charId AND timeDone NOT NULL";
|
INNER JOIN gamedata_achievements ON characters_achievements.achievementId = gamedata_achievements.achievementId
|
||||||
|
WHERE characterId = @charId AND rewardPoints <> 0 ORDER BY timeDone LIMIT 5";
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(query, conn);
|
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||||
cmd.Parameters.AddWithValue("@charId", player.actorId);
|
cmd.Parameters.AddWithValue("@charId", player.actorId);
|
||||||
@ -516,7 +479,10 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
latestAchievements[count] = reader.GetUInt32(0);
|
{
|
||||||
|
uint id = reader.GetUInt32(0);
|
||||||
|
latestAchievements[count++] = id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (MySqlException e)
|
catch (MySqlException e)
|
||||||
@ -527,9 +493,52 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return SetLatestAchievementsPacket.buildPacket(player.actorId, latestAchievements);
|
return SetLatestAchievementsPacket.buildPacket(player.actorId, latestAchievements);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SubPacket getAchievementsPacket(Player player)
|
||||||
|
{
|
||||||
|
SetCompletedAchievementsPacket cheevosPacket = new SetCompletedAchievementsPacket();
|
||||||
|
|
||||||
|
using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD)))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
string query = @"
|
||||||
|
SELECT packetOffsetId
|
||||||
|
FROM characters_achievements
|
||||||
|
INNER JOIN gamedata_achievements ON characters_achievements.achievementId = gamedata_achievements.achievementId
|
||||||
|
WHERE characterId = @charId AND timeDone IS NOT NULL";
|
||||||
|
|
||||||
|
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||||
|
cmd.Parameters.AddWithValue("@charId", player.actorId);
|
||||||
|
using (MySqlDataReader reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
uint offset = reader.GetUInt32(0);
|
||||||
|
|
||||||
|
if (offset < 0 || offset >= cheevosPacket.achievementFlags.Length)
|
||||||
|
{
|
||||||
|
Log.error("SQL Error; achievement flag offset id out of range: " + offset);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
cheevosPacket.achievementFlags[offset] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (MySqlException e)
|
||||||
|
{ Console.WriteLine(e); }
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cheevosPacket.buildPacket(player.actorId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -207,6 +207,7 @@
|
|||||||
<Compile Include="Server.cs" />
|
<Compile Include="Server.cs" />
|
||||||
<Compile Include="utils\ActorPropertyPacketUtil.cs" />
|
<Compile Include="utils\ActorPropertyPacketUtil.cs" />
|
||||||
<Compile Include="utils\CharacterUtils.cs" />
|
<Compile Include="utils\CharacterUtils.cs" />
|
||||||
|
<Compile Include="utils\SQLGeneration.cs" />
|
||||||
<Compile Include="Zone.cs" />
|
<Compile Include="Zone.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -182,23 +182,19 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
break;
|
break;
|
||||||
//Unknown
|
//Unknown
|
||||||
case 0x0002:
|
case 0x0002:
|
||||||
BasePacket reply8 = new BasePacket("./packets/login/login8_data.bin");
|
BasePacket reply8 = new BasePacket("./packets/login/login8_data.bin"); //Debug, World Master, Director created
|
||||||
BasePacket reply9 = new BasePacket("./packets/login/login9_zonesetup.bin");
|
BasePacket reply9 = new BasePacket("./packets/login/login9_zonesetup.bin"); //Area Master, Bed, Book created
|
||||||
BasePacket reply10 = new BasePacket("./packets/login/login10.bin");
|
BasePacket reply10 = new BasePacket("./packets/login/login10.bin"); //Item Storage, Inn Door created
|
||||||
BasePacket reply11 = new BasePacket("./packets/login/login11.bin");
|
BasePacket reply11 = new BasePacket("./packets/login/login11.bin"); //NPC Create ??? Final init
|
||||||
BasePacket reply12 = new BasePacket("./packets/login/login12.bin");
|
|
||||||
|
|
||||||
#region replaceid
|
#region replaceid
|
||||||
//currancy.replaceActorID(player.actorID);
|
//currancy.replaceActorID(player.actorID);
|
||||||
//keyitems.replaceActorID(player.actorID);
|
//keyitems.replaceActorID(player.actorID);
|
||||||
|
|
||||||
packet196.replaceActorID(player.actorID);
|
|
||||||
reply7.replaceActorID(player.actorID);
|
|
||||||
reply8.replaceActorID(player.actorID);
|
reply8.replaceActorID(player.actorID);
|
||||||
reply9.replaceActorID(player.actorID);
|
reply9.replaceActorID(player.actorID);
|
||||||
reply10.replaceActorID(player.actorID);
|
reply10.replaceActorID(player.actorID);
|
||||||
reply11.replaceActorID(player.actorID);
|
reply11.replaceActorID(player.actorID);
|
||||||
reply12.replaceActorID(player.actorID);
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
client.queuePacket(SetMapPacket.buildPacket(player.actorID, 0xD1, 0xF4), true, false);
|
client.queuePacket(SetMapPacket.buildPacket(player.actorID, 0xD1, 0xF4), true, false);
|
||||||
@ -302,9 +298,7 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
client.queuePacket(reply8);
|
client.queuePacket(reply8);
|
||||||
client.queuePacket(reply9);
|
client.queuePacket(reply9);
|
||||||
client.queuePacket(reply10);
|
client.queuePacket(reply10);
|
||||||
// client.queuePacket(reply11);
|
client.queuePacket(reply11);
|
||||||
client.queuePacket(reply12);
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
//Chat Received
|
//Chat Received
|
||||||
@ -554,8 +548,8 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
packet.replaceActorID(entry.Value.actorID);
|
packet.replaceActorID(entry.Value.actorID);
|
||||||
actorPacket.replaceActorID(entry.Value.actorID);
|
actorPacket.replaceActorID(entry.Value.actorID);
|
||||||
|
|
||||||
entry.Value.getConnection2().queuePacket(packet);
|
entry.Value.getConnection1().queuePacket(packet);
|
||||||
entry.Value.getConnection2().queuePacket(actorPacket);
|
entry.Value.getConnection1().queuePacket(actorPacket);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,6 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
|
|||||||
public string chocoboName;
|
public string chocoboName;
|
||||||
|
|
||||||
public uint achievementPoints;
|
public uint achievementPoints;
|
||||||
public uint[] latestAchievements = new uint[5];
|
|
||||||
|
|
||||||
public PlayerWork playerWork = new PlayerWork();
|
public PlayerWork playerWork = new PlayerWork();
|
||||||
|
|
||||||
@ -110,8 +109,6 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
|
|||||||
charaWork.commandBorder = 0x20;
|
charaWork.commandBorder = 0x20;
|
||||||
|
|
||||||
Database.loadPlayerCharacter(this);
|
Database.loadPlayerCharacter(this);
|
||||||
|
|
||||||
Database.getLatestAchievements(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SubPacket> create0x132Packets(uint playerActorId)
|
public List<SubPacket> create0x132Packets(uint playerActorId)
|
||||||
@ -189,12 +186,8 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
|
|||||||
subpackets.Add(SetHasGoobbuePacket.buildPacket(playerActorId, hasGoobbue));
|
subpackets.Add(SetHasGoobbuePacket.buildPacket(playerActorId, hasGoobbue));
|
||||||
|
|
||||||
subpackets.Add(SetAchievementPointsPacket.buildPacket(playerActorId, achievementPoints));
|
subpackets.Add(SetAchievementPointsPacket.buildPacket(playerActorId, achievementPoints));
|
||||||
subpackets.Add(SetLatestAchievementsPacket.buildPacket(playerActorId, latestAchievements));
|
subpackets.Add(Database.getLatestAchievements(this));
|
||||||
|
subpackets.Add(Database.getAchievementsPacket(this));
|
||||||
SetCompletedAchievementsPacket cheevos = new SetCompletedAchievementsPacket();
|
|
||||||
for (int i = 0; i < cheevos.achievementFlags.Length; i++)
|
|
||||||
cheevos.achievementFlags[i] = true;
|
|
||||||
subpackets.Add(cheevos.buildPacket(playerActorId));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (isInn)
|
if (isInn)
|
||||||
|
Loading…
Reference in New Issue
Block a user