mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-26 22:57:45 +00:00
Merged in dude22072/ffxiv-classic-server-1 (pull request #57)
Achievement Progress Request (0x0135) implementation
This commit is contained in:
commit
2195b0b7dc
3 changed files with 75 additions and 0 deletions
|
@ -2134,6 +2134,43 @@ namespace FFXIVClassic_Map_Server
|
||||||
|
|
||||||
return cheevosPacket.BuildPacket(player.actorId);
|
return cheevosPacket.BuildPacket(player.actorId);
|
||||||
}
|
}
|
||||||
|
public static SubPacket GetAchievementProgress(Player player, uint AchievementID)
|
||||||
|
{
|
||||||
|
uint progress = 0, progressFlags = 0;
|
||||||
|
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 progress, progressFlags
|
||||||
|
FROM characters_achievements
|
||||||
|
WHERE characterId = @charId AND achievementId = @cheevoId";
|
||||||
|
|
||||||
|
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||||
|
cmd.Parameters.AddWithValue("@charId", player.actorId);
|
||||||
|
cmd.Parameters.AddWithValue("@cheevoId", AchievementID);
|
||||||
|
using (MySqlDataReader reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
progress = reader.GetUInt32(0);
|
||||||
|
progressFlags = reader.GetUInt32(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (MySqlException e)
|
||||||
|
{
|
||||||
|
Program.Log.Error(e.ToString());
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SendAchievementRatePacket.BuildPacket(player.actorId, AchievementID, progress, progressFlags);
|
||||||
|
}
|
||||||
public static bool CreateLinkshell(Player player, string lsName, ushort lsCrest)
|
public static bool CreateLinkshell(Player player, string lsName, ushort lsCrest)
|
||||||
{
|
{
|
||||||
bool success = false;
|
bool success = false;
|
||||||
|
|
|
@ -259,6 +259,11 @@ namespace FFXIVClassic_Map_Server
|
||||||
GroupCreatedPacket groupCreated = new GroupCreatedPacket(subpacket.data);
|
GroupCreatedPacket groupCreated = new GroupCreatedPacket(subpacket.data);
|
||||||
Server.GetWorldManager().SendGroupInit(session, groupCreated.groupId);
|
Server.GetWorldManager().SendGroupInit(session, groupCreated.groupId);
|
||||||
break;
|
break;
|
||||||
|
//Achievement Progress Request
|
||||||
|
case 0x0135:
|
||||||
|
AchievementProgressRequestPacket progressRequest = new AchievementProgressRequestPacket(subpacket.data);
|
||||||
|
session.QueuePacket(Database.GetAchievementProgress(session.GetActor(), progressRequest.achievementID));
|
||||||
|
break;
|
||||||
/* RECRUITMENT */
|
/* RECRUITMENT */
|
||||||
//Start Recruiting
|
//Start Recruiting
|
||||||
case 0x01C3:
|
case 0x01C3:
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace FFXIVClassic_Map_Server.packets.receive
|
||||||
|
{
|
||||||
|
class AchievementProgressRequestPacket
|
||||||
|
{
|
||||||
|
public bool invalidPacket = false;
|
||||||
|
|
||||||
|
public uint achievementID;
|
||||||
|
public uint responseType;
|
||||||
|
|
||||||
|
public AchievementProgressRequestPacket(byte[] data)
|
||||||
|
{
|
||||||
|
using (MemoryStream mem = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
using (BinaryReader binReader = new BinaryReader(mem))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
achievementID = binReader.ReadUInt32();
|
||||||
|
responseType = binReader.ReadUInt32();
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
invalidPacket = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue