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)
|
||||
{
|
||||
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)
|
||||
public static SubPacket getLatestAchievements(Player player)
|
||||
{
|
||||
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)))
|
||||
@ -506,9 +468,10 @@ namespace FFXIVClassic_Lobby_Server
|
||||
|
||||
//Load Last 5 Completed
|
||||
string query = @"
|
||||
SELECT
|
||||
achievementId
|
||||
FROM characters_achievements WHERE characterId = @charId AND timeDone NOT NULL";
|
||||
SELECT
|
||||
characters_achievements.achievementId FROM characters_achievements
|
||||
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);
|
||||
cmd.Parameters.AddWithValue("@charId", player.actorId);
|
||||
@ -516,7 +479,10 @@ namespace FFXIVClassic_Lobby_Server
|
||||
{
|
||||
int count = 0;
|
||||
while (reader.Read())
|
||||
latestAchievements[count] = reader.GetUInt32(0);
|
||||
{
|
||||
uint id = reader.GetUInt32(0);
|
||||
latestAchievements[count++] = id;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (MySqlException e)
|
||||
@ -527,8 +493,51 @@ 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="utils\ActorPropertyPacketUtil.cs" />
|
||||
<Compile Include="utils\CharacterUtils.cs" />
|
||||
<Compile Include="utils\SQLGeneration.cs" />
|
||||
<Compile Include="Zone.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -182,23 +182,19 @@ namespace FFXIVClassic_Lobby_Server
|
||||
break;
|
||||
//Unknown
|
||||
case 0x0002:
|
||||
BasePacket reply8 = new BasePacket("./packets/login/login8_data.bin");
|
||||
BasePacket reply9 = new BasePacket("./packets/login/login9_zonesetup.bin");
|
||||
BasePacket reply10 = new BasePacket("./packets/login/login10.bin");
|
||||
BasePacket reply11 = new BasePacket("./packets/login/login11.bin");
|
||||
BasePacket reply12 = new BasePacket("./packets/login/login12.bin");
|
||||
BasePacket reply8 = new BasePacket("./packets/login/login8_data.bin"); //Debug, World Master, Director created
|
||||
BasePacket reply9 = new BasePacket("./packets/login/login9_zonesetup.bin"); //Area Master, Bed, Book created
|
||||
BasePacket reply10 = new BasePacket("./packets/login/login10.bin"); //Item Storage, Inn Door created
|
||||
BasePacket reply11 = new BasePacket("./packets/login/login11.bin"); //NPC Create ??? Final init
|
||||
|
||||
#region replaceid
|
||||
//currancy.replaceActorID(player.actorID);
|
||||
//keyitems.replaceActorID(player.actorID);
|
||||
|
||||
packet196.replaceActorID(player.actorID);
|
||||
reply7.replaceActorID(player.actorID);
|
||||
reply8.replaceActorID(player.actorID);
|
||||
reply9.replaceActorID(player.actorID);
|
||||
reply10.replaceActorID(player.actorID);
|
||||
reply11.replaceActorID(player.actorID);
|
||||
reply12.replaceActorID(player.actorID);
|
||||
#endregion
|
||||
|
||||
client.queuePacket(SetMapPacket.buildPacket(player.actorID, 0xD1, 0xF4), true, false);
|
||||
@ -302,9 +298,7 @@ namespace FFXIVClassic_Lobby_Server
|
||||
client.queuePacket(reply8);
|
||||
client.queuePacket(reply9);
|
||||
client.queuePacket(reply10);
|
||||
// client.queuePacket(reply11);
|
||||
client.queuePacket(reply12);
|
||||
|
||||
client.queuePacket(reply11);
|
||||
|
||||
break;
|
||||
//Chat Received
|
||||
@ -554,8 +548,8 @@ namespace FFXIVClassic_Lobby_Server
|
||||
packet.replaceActorID(entry.Value.actorID);
|
||||
actorPacket.replaceActorID(entry.Value.actorID);
|
||||
|
||||
entry.Value.getConnection2().queuePacket(packet);
|
||||
entry.Value.getConnection2().queuePacket(actorPacket);
|
||||
entry.Value.getConnection1().queuePacket(packet);
|
||||
entry.Value.getConnection1().queuePacket(actorPacket);
|
||||
|
||||
|
||||
}
|
||||
|
@ -55,7 +55,6 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
|
||||
public string chocoboName;
|
||||
|
||||
public uint achievementPoints;
|
||||
public uint[] latestAchievements = new uint[5];
|
||||
|
||||
public PlayerWork playerWork = new PlayerWork();
|
||||
|
||||
@ -110,8 +109,6 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
|
||||
charaWork.commandBorder = 0x20;
|
||||
|
||||
Database.loadPlayerCharacter(this);
|
||||
|
||||
Database.getLatestAchievements(this);
|
||||
}
|
||||
|
||||
public List<SubPacket> create0x132Packets(uint playerActorId)
|
||||
@ -189,12 +186,8 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
|
||||
subpackets.Add(SetHasGoobbuePacket.buildPacket(playerActorId, hasGoobbue));
|
||||
|
||||
subpackets.Add(SetAchievementPointsPacket.buildPacket(playerActorId, achievementPoints));
|
||||
subpackets.Add(SetLatestAchievementsPacket.buildPacket(playerActorId, latestAchievements));
|
||||
|
||||
SetCompletedAchievementsPacket cheevos = new SetCompletedAchievementsPacket();
|
||||
for (int i = 0; i < cheevos.achievementFlags.Length; i++)
|
||||
cheevos.achievementFlags[i] = true;
|
||||
subpackets.Add(cheevos.buildPacket(playerActorId));
|
||||
subpackets.Add(Database.getLatestAchievements(this));
|
||||
subpackets.Add(Database.getAchievementsPacket(this));
|
||||
|
||||
/*
|
||||
if (isInn)
|
||||
|
@ -24,7 +24,7 @@ namespace FFXIVClassic_Map_Server.packets.send.player
|
||||
public const int CATEGORY_DUNGEONS = 750;
|
||||
public const int CATEGORY_EXPLORATION = 800;
|
||||
public const int CATEGORY_GRAND_COMPANY = 820;
|
||||
|
||||
|
||||
public const ushort OPCODE = 0x019A;
|
||||
public const uint PACKET_SIZE = 0xA0;
|
||||
|
||||
@ -48,6 +48,6 @@ namespace FFXIVClassic_Map_Server.packets.send.player
|
||||
|
||||
return new SubPacket(OPCODE, playerActorID, playerActorID, data);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user