diff --git a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
index ef44b3a0..d1ea6b6c 100644
--- a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
+++ b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
@@ -116,6 +116,12 @@
+
+
+
+
+
+
@@ -135,7 +141,8 @@
-
+
+
diff --git a/FFXIVClassic Map Server/PacketProcessor.cs b/FFXIVClassic Map Server/PacketProcessor.cs
index 31dc42a3..1bd53a78 100644
--- a/FFXIVClassic Map Server/PacketProcessor.cs
+++ b/FFXIVClassic Map Server/PacketProcessor.cs
@@ -147,6 +147,7 @@ namespace FFXIVClassic_Lobby_Server
break;
//Unknown
case 0x0002:
+
subpacket.debugPrintSubPacket();
BasePacket reply5 = new BasePacket("./packets/login/login5.bin");
@@ -175,8 +176,9 @@ namespace FFXIVClassic_Lobby_Server
reply12.replaceActorID(player.actorID);
#endregion
- client.queuePacket(BasePacket.createPacket(SetMapPacket.buildPacket(player.actorID, 0xD1), true, false));
- client.queuePacket(BasePacket.createPacket(_0x2Packet.buildPacket(player.actorID), true, false));
+ client.queuePacket(BasePacket.createPacket(_0x2Packet.buildPacket(player.actorID), true, false));
+ // return;
+ client.queuePacket(BasePacket.createPacket(SetMapPacket.buildPacket(player.actorID, 0xD1, 0xF4), true, false));
client.queuePacket(BasePacket.createPacket(SetMusicPacket.buildPacket(player.actorID, 0x3D, 0x01), true, false));
client.queuePacket(reply5);
@@ -184,7 +186,7 @@ namespace FFXIVClassic_Lobby_Server
client.queuePacket(BasePacket.createPacket(AddActorPacket.buildPacket(player.actorID, player.actorID, 0), true, false));
BasePacket actorPacket = player.getActor().createActorSpawnPackets(player.actorID);
- actorPacket.debugPrintPacket();
+ //actorPacket.debugPrintPacket();
client.queuePacket(actorPacket);
client.queuePacket(reply6);
client.queuePacket(BasePacket.createPacket(new SubPacket(0xCC, player.actorID, player.actorID, File.ReadAllBytes("./packets/playerscript")),true, false));
@@ -265,15 +267,18 @@ namespace FFXIVClassic_Lobby_Server
////////ITEMS////////
//The rest of hardcode
- //client.queuePacket(BasePacket.createPacket(SetGCInfoPacket.buildPacket(player.actorID), true, false));
- //client.queuePacket(BasePacket.createPacket(SetGCInfoPacket.buildPacket(player.actorID), true, false));
+ client.queuePacket(BasePacket.createPacket(SetGrandCompanyPacket.buildPacket(player.actorID, player.actorID, 0x01, 0x1B, 0x1B, 0x1B), true, false));
client.queuePacket(BasePacket.createPacket(SetPlayerTitlePacket.buildPacket(player.actorID, player.actorID, 0x00), true, false));
+ client.queuePacket(BasePacket.createPacket(SetHasChocoboPacket.buildPacket(player.actorID, true), true, false));
+ client.queuePacket(BasePacket.createPacket(SetChocoboNamePacket.buildPacket(player.actorID, player.actorID, "Boco"), true, false));
client.queuePacket(BasePacket.createPacket(SetPlayerTitlePacket.buildPacket(player.actorID, player.actorID, 0x00), true, false));
- //client.queuePacket(BasePacket.createPacket(SetCurrentJobPacket.buildPacket(player.actorID, player.actorID, 0x00), true, false)); //196
- client.queuePacket(BasePacket.createPacket(SetChocoboNamePacket.buildPacket(player.actorID, player.actorID, "Boco"), true, false));
- //client.queuePacket(BasePacket.createPacket(SetPlayerTitlePacket.buildPacket(player.actorID, player.actorID, 0x00), true, false)); //199
- client.queuePacket(BasePacket.createPacket(SetPlayerTitlePacket.buildPacket(player.actorID, player.actorID, 0x00), true, false));
- client.queuePacket(BasePacket.createPacket(new SetCompletedAchievementsPacket().buildPacket(player.actorID), true, false));
+
+ SetCompletedAchievementsPacket cheevos = new SetCompletedAchievementsPacket();
+
+ for (int i = 0; i < cheevos.achievementFlags.Length; i++)
+ cheevos.achievementFlags[i] = true;
+
+ client.queuePacket(BasePacket.createPacket(cheevos.buildPacket(player.actorID), true, false));
client.queuePacket(BasePacket.createPacket(SetLatestAchievementsPacket.buildPacket(player.actorID, new uint[5]), true, false));
client.queuePacket(BasePacket.createPacket(SetAchievementPointsPacket.buildPacket(player.actorID, 0x00), true, false));
SetCutsceneBookPacket book = new SetCutsceneBookPacket();
@@ -384,6 +389,10 @@ namespace FFXIVClassic_Lobby_Server
AddRemoveSocialPacket removeBlackList = new AddRemoveSocialPacket(subpacket.data);
client.queuePacket(BasePacket.createPacket(BlacklistRemovedPacket.buildPacket(player.actorID, true, removeBlackList.name), true, false));
break;
+ case 0x01CB:
+ int offset1 = 0;
+ client.queuePacket(BasePacket.createPacket(SendBlacklistPacket.buildPacket(player.actorID, new String[] { "Test" }, ref offset1), true, false));
+ break;
case 0x01CC:
AddRemoveSocialPacket addFriendList = new AddRemoveSocialPacket(subpacket.data);
client.queuePacket(BasePacket.createPacket(FriendlistAddedPacket.buildPacket(player.actorID, true, (uint)addFriendList.name.GetHashCode(), true, addFriendList.name), true, false));
@@ -392,6 +401,10 @@ namespace FFXIVClassic_Lobby_Server
AddRemoveSocialPacket removeFriendList = new AddRemoveSocialPacket(subpacket.data);
client.queuePacket(BasePacket.createPacket(FriendlistRemovedPacket.buildPacket(player.actorID, true, removeFriendList.name), true, false));
break;
+ case 0x01CE:
+ int offset2 = 0;
+ client.queuePacket(BasePacket.createPacket(SendFriendlistPacket.buildPacket(player.actorID, new Tuple[] { new Tuple(01, "Test2") }, ref offset2), true, false));
+ break;
case 0x01CF:
client.queuePacket(BasePacket.createPacket(FriendStatusPacket.buildPacket(player.actorID, null), true, false));
break;
@@ -411,6 +424,10 @@ namespace FFXIVClassic_Lobby_Server
GMTicketIssuesRequestPacket issuesRequest = new GMTicketIssuesRequestPacket(subpacket.data);
client.queuePacket(BasePacket.createPacket(IssueListResponsePacket.buildPacket(player.actorID, new string[] { "Test1", "Test2", "Test3", "Test4", "Test5"}), true, false));
break;
+ //Request if GM ticket exists
+ case 0x01D3:
+ client.queuePacket(BasePacket.createPacket(StartGMTicketPacket.buildPacket(player.actorID, false), true, false));
+ break;
//Request for GM response message
case 0x01D4:
client.queuePacket(BasePacket.createPacket(GMTicketPacket.buildPacket(player.actorID, "This is a GM Ticket Title", "This is a GM Ticket Body."), true, false));
@@ -433,7 +450,7 @@ namespace FFXIVClassic_Lobby_Server
BasePacket packet = new BasePacket(path);
foreach (KeyValuePair entry in mPlayers)
- {
+ {
packet.replaceActorID(entry.Value.actorID);
if (conn == 1 || conn == 3)
entry.Value.getConnection1().queuePacket(packet);
diff --git a/FFXIVClassic Map Server/Server.cs b/FFXIVClassic Map Server/Server.cs
index 1fbc77cc..bc3ff19b 100644
--- a/FFXIVClassic Map Server/Server.cs
+++ b/FFXIVClassic Map Server/Server.cs
@@ -235,8 +235,14 @@ namespace FFXIVClassic_Lobby_Server
SubPacket changePropertyPacket = changeProperty.buildPacket((entry.Value.actorID), (entry.Value.actorID));
BasePacket packet = BasePacket.createPacket(changePropertyPacket, true, false);
packet.debugPrintPacket();
- entry.Value.getConnection1().queuePacket(packet);
- entry.Value.getConnection2().queuePacket(packet);
+ if (entry.Value.getConnection1() != null)
+ entry.Value.getConnection1().queuePacket(packet);
+ else
+ Log.error("Connection was null");
+ if (entry.Value.getConnection2() != null)
+ entry.Value.getConnection2().queuePacket(packet);
+ else
+ Log.error("Connection was null");
}
}