diff --git a/FFXIVClassic Map Server/Database.cs b/FFXIVClassic Map Server/Database.cs
index 9f9dffeb..c76c6452 100644
--- a/FFXIVClassic Map Server/Database.cs
+++ b/FFXIVClassic Map Server/Database.cs
@@ -158,7 +158,7 @@ namespace FFXIVClassic_Lobby_Server
}
}
- player.charaWork.parameterSave.state_mainSkillLevel = 1;
+ player.charaWork.parameterSave.state_mainSkillLevel = 49;
/*
//Get level of our classjob
@@ -457,9 +457,8 @@ namespace FFXIVClassic_Lobby_Server
}
}
- public static SubPacket getLatestAchievements(Player player)
+ public static void 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)))
{
try
@@ -469,8 +468,8 @@ namespace FFXIVClassic_Lobby_Server
//Load Last 5 Completed
string query = @"
SELECT
- achievementId
- FROM characters_achievements WHERE characterId = @charId ORDER BY timeDone DESC LIMIT 5";
+ achievementId
+ FROM characters_achievements WHERE characterId = @charId ORDER BY timeDone LIMIT 5";
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@charId", player.actorId);
@@ -478,7 +477,12 @@ namespace FFXIVClassic_Lobby_Server
{
int count = 0;
while (reader.Read())
- latestAchievements[count] = reader.GetUInt32(0);
+ {
+ player.latestAchievements[count++] = reader.GetUInt32(0);
+ }
+
+ for (; count < player.latestAchievements.Length; count++)
+ player.latestAchievements[count] = 0;
}
}
catch (MySqlException e)
@@ -489,7 +493,6 @@ namespace FFXIVClassic_Lobby_Server
}
}
- return SetLatestAchievementsPacket.buildPacket(player.actorId, latestAchievements);
}
public static SubPacket getAchievements(Player player)
diff --git a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
index b7c6ce90..300107f9 100644
--- a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
+++ b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
@@ -64,6 +64,8 @@
+
+
diff --git a/FFXIVClassic Map Server/PacketProcessor.cs b/FFXIVClassic Map Server/PacketProcessor.cs
index e21a863e..1aae6736 100644
--- a/FFXIVClassic Map Server/PacketProcessor.cs
+++ b/FFXIVClassic Map Server/PacketProcessor.cs
@@ -182,18 +182,12 @@ namespace FFXIVClassic_Lobby_Server
break;
//Unknown
case 0x0002:
- BasePacket packet196 = new BasePacket("./packets/196");
-
- BasePacket reply7 = new BasePacket("./packets/login/login7_data.bin");
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 keyitems = new BasePacket("./packets/login/keyitems.bin");
- // BasePacket currancy = new BasePacket("./packets/login/currancy.bin");
-
#region replaceid
//currancy.replaceActorID(player.actorID);
//keyitems.replaceActorID(player.actorID);
@@ -233,10 +227,10 @@ namespace FFXIVClassic_Lobby_Server
BasePacket partyListPacket = BasePacket.createPacket(ListUtils.createPartyList(player.actorID, 0xF4, 1, 0x8000000000696df2, partyListEntries), true, false);
client.queuePacket(partyListPacket);
+ #region itemsetup
////////ITEMS////////
client.queuePacket(InventoryBeginChangePacket.buildPacket(player.actorID), true, false);
- #region itemsetup
//TEST
List- items = new List
- ();
@@ -273,14 +267,14 @@ namespace FFXIVClassic_Lobby_Server
setinvPackets.Add(beginInventory);
setinvPackets.Add(setInventory);
setinvPackets.Add(endInventory);
- #endregion
-
- client.queuePacket(BasePacket.createPacket(setinvPackets, true, false));
//client.queuePacket(currancy);
//client.queuePacket(keyitems);
+ #endregion
+
#region equipsetup
+ client.queuePacket(BasePacket.createPacket(setinvPackets, true, false));
EquipmentSetupPacket initialEqupmentPacket = new EquipmentSetupPacket();
initialEqupmentPacket.setItem(EquipmentSetupPacket.SLOT_BODY, 5);
initialEqupmentPacket.setItem(EquipmentSetupPacket.SLOT_HEAD, 3);
@@ -288,7 +282,6 @@ namespace FFXIVClassic_Lobby_Server
initialEqupmentPacket.setItem(EquipmentSetupPacket.SLOT_UNDERGARMENT, 7);
initialEqupmentPacket.setItem(EquipmentSetupPacket.SLOT_MAINHAND, 2);
initialEqupmentPacket.setItem(EquipmentSetupPacket.SLOT_LEGS, 8);
- #endregion
//Equip Init
client.queuePacket(InventorySetBeginPacket.buildPacket(player.actorID, 0x23, InventorySetBeginPacket.CODE_EQUIPMENT), true, false);
@@ -296,55 +289,16 @@ namespace FFXIVClassic_Lobby_Server
client.queuePacket(InventorySetEndPacket.buildPacket(player.actorID), true, false);
client.queuePacket(InventoryEndChangePacket.buildPacket(player.actorID), true, false);
- ////////ITEMS////////
+ ////////ITEMS////////
- client.queuePacket(SetGrandCompanyPacket.buildPacket(player.actorID, player.actorID, 0x01, 0x1B, 0x1B, 0x1B), true, false);
- client.queuePacket(SetPlayerTitlePacket.buildPacket(player.actorID, player.actorID, 0x00), true, false);
- client.queuePacket(SetCurrentJobPacket.buildPacket(player.actorID, player.actorID, 0x13), true, false);
- //client.queuePacket(packet196);//client.queuePacket(_0x196Packet.buildPacket(player.actorID, player.actorID), true, false);
- client.queuePacket(SetChocoboNamePacket.buildPacket(player.actorID, player.actorID, "Boco"), true, false);
- client.queuePacket(SetHasChocoboPacket.buildPacket(player.actorID, true), true, false);
- client.queuePacket(SetHasGoobbuePacket.buildPacket(player.actorID, true), true, false);
-
- SetCompletedAchievementsPacket cheevos = new SetCompletedAchievementsPacket();
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_BATTLE] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_CHARACTER] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_CURRENCY] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_DUNGEONS] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_EXPLORATION] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_GATHERING] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_GRAND_COMPANY] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_ITEMS] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_MATERIA] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_QUESTS] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_SEASONAL_EVENTS] = true;
- cheevos.achievementFlags[SetCompletedAchievementsPacket.CATEGORY_SYNTHESIS] = true;
- client.queuePacket(cheevos.buildPacket(player.actorID), true, false);
-
- client.queuePacket(SetLatestAchievementsPacket.buildPacket(player.actorID, new uint[5]), true, false);
- client.queuePacket(SetAchievementPointsPacket.buildPacket(player.actorID, 0x00), true, false);
-
- SetCutsceneBookPacket book = new SetCutsceneBookPacket();
- for (int i = 0; i < book.cutsceneFlags.Length; i++)
- book.cutsceneFlags[i] = true;
- client.queuePacket(book.buildPacket(player.actorID), true, false);
-
- //client.queuePacket(SetPlayerDreamPacket.buildPacket(player.actorID, 11), true, false);
+ #endregion
BasePacket tpacket = player.getActor().getInitPackets(player.actorID);
tpacket.debugPrintPacket();
client.queuePacket(tpacket);
-
- //BasePacket packet1a5 = new BasePacket("./packets/1ax/1a5");
- //packet1a5.replaceActorID(player.actorID);
- //client.queuePacket(packet1a5);
-
- //loadTest(client, player);
- //return;
inn.addActorToZone(player.getActor());
- //client.queuePacket(reply7);
client.queuePacket(reply8);
client.queuePacket(reply9);
client.queuePacket(reply10);
diff --git a/FFXIVClassic Map Server/Server.cs b/FFXIVClassic Map Server/Server.cs
index 94c7880d..59add233 100644
--- a/FFXIVClassic Map Server/Server.cs
+++ b/FFXIVClassic Map Server/Server.cs
@@ -227,12 +227,15 @@ namespace FFXIVClassic_Lobby_Server
public void testCodePacket(uint id, uint value, string target)
{
SetActorPropetyPacket changeProperty = new SetActorPropetyPacket(target);
- changeProperty.addInt(id, value);
+
changeProperty.setTarget(target);
+ changeProperty.addInt(id, value);
+ changeProperty.addTarget();
foreach (KeyValuePair entry in mConnectedPlayerList)
{
SubPacket changePropertyPacket = changeProperty.buildPacket((entry.Value.actorID), (entry.Value.actorID));
+
BasePacket packet = BasePacket.createPacket(changePropertyPacket, true, false);
packet.debugPrintPacket();
if (entry.Value.getConnection1() != null)
diff --git a/FFXIVClassic Map Server/actors/chara/AetheryteWork.cs b/FFXIVClassic Map Server/actors/chara/AetheryteWork.cs
new file mode 100644
index 00000000..fd1f33b9
--- /dev/null
+++ b/FFXIVClassic Map Server/actors/chara/AetheryteWork.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FFXIVClassic_Map_Server.dataobjects.chara
+{
+ class AetheryteWork
+ {
+ public int iconGil;
+ public short guildleveId;
+ public short clearTime;
+ public int missionBonus;
+ public int difficultyBonus;
+
+ public byte factionNumber;
+ public int factionBonus;
+ public byte factionCredit;
+
+ public int glRewardItem;
+ public int glRewardNumber;
+ public int glRewardSubItem;
+ public int glRewardSubNumber;
+
+ public byte difficulty;
+ }
+}
diff --git a/FFXIVClassic Map Server/actors/chara/BattleSave.cs b/FFXIVClassic Map Server/actors/chara/BattleSave.cs
index 86819aab..da2c38ac 100644
--- a/FFXIVClassic Map Server/actors/chara/BattleSave.cs
+++ b/FFXIVClassic Map Server/actors/chara/BattleSave.cs
@@ -9,10 +9,11 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
class BattleSave
{
public float potencial = 6.6f;
- public int skillLevel;
- public int skillLevelCap;
- public int[] skillPoint;
+ public short[] skillLevel = new short[52];
+ public short[] skillLevelCap = new short[52];
+ public short[] skillPoint = new short[52];
+ public short physicalLevel;
public int physicalExp;
public bool[] negotiationFlag= new bool[2];
diff --git a/FFXIVClassic Map Server/actors/chara/BattleTemp.cs b/FFXIVClassic Map Server/actors/chara/BattleTemp.cs
index d3a45924..2c90f8f5 100644
--- a/FFXIVClassic Map Server/actors/chara/BattleTemp.cs
+++ b/FFXIVClassic Map Server/actors/chara/BattleTemp.cs
@@ -49,6 +49,6 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public float[] castGauge_speed = { 1.0f, 0.25f};
public bool[] timingCommandFlag = new bool[4];
- public ushort[] generalParameter = new ushort[32];
+ public ushort[] generalParameter = new ushort[35];
}
}
diff --git a/FFXIVClassic Map Server/actors/chara/CharaWork.cs b/FFXIVClassic Map Server/actors/chara/CharaWork.cs
index 7438b733..49b999aa 100644
--- a/FFXIVClassic Map Server/actors/chara/CharaWork.cs
+++ b/FFXIVClassic Map Server/actors/chara/CharaWork.cs
@@ -18,17 +18,21 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public EventSave eventSave = new EventSave();
public EventTemp eventTemp = new EventTemp();
+ public bool gameParameter = false;
+
+
public byte[] property = new byte[32];
public ushort[] status = new ushort[20];
public uint[] statusShownTime = new uint[20];
- public uint[] command = new uint[64];
+ public uint[] command = new uint[64]; //ACTORS
public byte[] commandCategory = new byte[64];
public byte commandBorder = 0x20;
- public bool commandAcquired = false;
- public bool[] additionalCommandAcquired = new bool[32];
+ public bool[] commandAcquired = new bool[4096];
+ public bool[] additionalCommandAcquired = new bool[36];
+ public uint currentContentGroup;
public uint depictionJudge = 0xa0f50911;
}
}
diff --git a/FFXIVClassic Map Server/actors/chara/EventSave.cs b/FFXIVClassic Map Server/actors/chara/EventSave.cs
index a0bf4328..7365aa11 100644
--- a/FFXIVClassic Map Server/actors/chara/EventSave.cs
+++ b/FFXIVClassic Map Server/actors/chara/EventSave.cs
@@ -10,6 +10,6 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
{
public bool bazaar;
public byte bazaarTax;
- public int repairType;
+ public byte repairType;
}
}
diff --git a/FFXIVClassic Map Server/actors/chara/ParameterSave.cs b/FFXIVClassic Map Server/actors/chara/ParameterSave.cs
index 523a4ff9..1a4dab00 100644
--- a/FFXIVClassic Map Server/actors/chara/ParameterSave.cs
+++ b/FFXIVClassic Map Server/actors/chara/ParameterSave.cs
@@ -8,19 +8,30 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class ParameterSave
{
- public short[] hp = new short[1];
- public short[] hpMax = new short[1];
+ public short[] hp = new short[8];
+ public short[] hpMax = new short[8];
public short mp;
public short mpMax;
public byte[] state_mainSkill = new byte[4];
public ushort state_mainSkillLevel;
- public int[] state_boostPointForSkill;
-
- public bool[] commandSlot_compatibility = new bool[40];
+ public byte[] state_boostPointForSkill = new byte[4];
+
public uint[] commandSlot_recastTime = new uint[40];
+ public bool[] commandSlot_compatibility = new bool[40];
- public int[] giftCommandSlot_commandId;
+ public ushort[] giftCommandSlot_commandId = new ushort[10];
+
+ public ushort[] constanceCommandSlot_commandId = new ushort[10];
+
+ public byte abilityCostPoint_used;
+ public byte abilityCostPoint_max;
+
+ public byte giftCostPoint_used;
+ public byte giftCostPoint_max;
+
+ public byte constanceCostPoint_used;
+ public byte constanceCostPoint_max;
}
}
diff --git a/FFXIVClassic Map Server/actors/chara/ParameterTemp.cs b/FFXIVClassic Map Server/actors/chara/ParameterTemp.cs
index 6357af91..d912aec8 100644
--- a/FFXIVClassic Map Server/actors/chara/ParameterTemp.cs
+++ b/FFXIVClassic Map Server/actors/chara/ParameterTemp.cs
@@ -12,12 +12,12 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public int targetInformation = 0;
- public int[] maxCommandRecastTime = new int[40];
+ public ushort[] maxCommandRecastTime = new ushort[40];
- public float[] forceControl_float_forClientSelf = { 1.0f, 1.0f};
+ public float[] forceControl_float_forClientSelf = { 1.0f, 1.0f, 0.0f, 0.0f};
public short[] forceControl_int16_forClientSelf = { -1, -1 };
- public int[] otherClassAbilityCount = new int[2];
- public int[] giftCount = new int[2];
+ public byte[] otherClassAbilityCount = new byte[2];
+ public byte[] giftCount = new byte[2];
}
}
diff --git a/FFXIVClassic Map Server/actors/chara/Work.cs b/FFXIVClassic Map Server/actors/chara/Work.cs
index 4cbfa626..4dd577b5 100644
--- a/FFXIVClassic Map Server/actors/chara/Work.cs
+++ b/FFXIVClassic Map Server/actors/chara/Work.cs
@@ -11,6 +11,9 @@ namespace FFXIVClassic_Map_Server.actors.chara
public ushort[] guildleveId = new ushort[16];
public bool[] guildleveDone = new bool[16];
public bool[] guildleveChecked = new bool[16];
+
public bool betacheck = false;
+
+ public bool[] event_achieve_aetheryte = new bool[512];
}
}
diff --git a/FFXIVClassic Map Server/actors/chara/npc/NpcWork.cs b/FFXIVClassic Map Server/actors/chara/npc/NpcWork.cs
new file mode 100644
index 00000000..c10b7047
--- /dev/null
+++ b/FFXIVClassic Map Server/actors/chara/npc/NpcWork.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FFXIVClassic_Map_Server.dataobjects.chara
+{
+ class NpcWork
+ {
+ public short pushCommand;
+ public int pushCommandSub;
+ public byte pushCommandPriority;
+ public byte hateType;
+ }
+}
diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs
index e8329275..44d47784 100644
--- a/FFXIVClassic Map Server/actors/chara/player/Player.cs
+++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs
@@ -3,6 +3,7 @@ using FFXIVClassic_Lobby_Server.common;
using FFXIVClassic_Lobby_Server.packets;
using FFXIVClassic_Map_Server.lua;
using FFXIVClassic_Map_Server.packets.send.actor;
+using FFXIVClassic_Map_Server.packets.send.player;
using FFXIVClassic_Map_Server.utils;
using MySql.Data.MySqlClient;
using System;
@@ -39,6 +40,8 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public uint[] timers = new uint[20];
+ public ushort currentJob;
+
public uint currentTitle;
public byte gcCurrent;
@@ -52,7 +55,7 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public string chocoboName;
public uint achievementPoints;
- public ushort[] latestAchievements = new ushort[5];
+ public uint[] latestAchievements = new uint[5];
public PlayerWork playerWork = new PlayerWork();
@@ -85,25 +88,19 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
charaWork.command[15] = 0xA0F00000 | 22015;
charaWork.command[32] = 0xA0F00000 | 27155;
- charaWork.command[33] = 0xA0F00000 | 27150;
+ //charaWork.command[33] = 0xA0F00000 | 27150;
charaWork.command[34] = 0xA0F00000 | 27300;
- charaWork.command[61] = 0xA0F00000 | 27300;
- charaWork.command[36] = 0xA0F00000 | 27300;
- //charaWork.command[35] = 0xA0F00000 | 27300;
- //charaWork.command[35] = 0xA0F00000 | 27300;
+ charaWork.commandAcquired[27150 - 26000] = true;
- /*
- charaWork.additionalCommandAcquired[0] = true;
- charaWork.additionalCommandAcquired[12] = true;
- charaWork.additionalCommandAcquired[22] = true;
- charaWork.additionalCommandAcquired[25] = true;
- charaWork.additionalCommandAcquired[28] = true;
- charaWork.additionalCommandAcquired[30] = true;
+ playerWork.questScenarioComplete[110001 - 110001] = true;
+ playerWork.questGuildleveComplete[120050 - 120001] = true;
- charaWork.commandCategory[0] = 1;
- charaWork.commandCategory[1] = 1;
- */
+ for (int i = 0; i < charaWork.additionalCommandAcquired.Length; i++ )
+ charaWork.additionalCommandAcquired[i] = true;
+
+ for (int i = 0; i < charaWork.commandCategory.Length; i++)
+ charaWork.commandCategory[i] = 1;
charaWork.battleTemp.generalParameter[3] = 1;
@@ -111,8 +108,10 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
charaWork.battleSave.potencial = 6.6f;
charaWork.commandBorder = 0x20;
-
+
Database.loadPlayerCharacter(this);
+
+ Database.getLatestAchievements(this);
}
public List create0x132Packets(uint playerActorId)
@@ -158,10 +157,62 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
subpackets.Add(createInitStatusPacket(playerActorId));
subpackets.Add(createSetActorIconPacket(playerActorId));
subpackets.Add(createIsZoneingPacket(playerActorId));
+ subpackets.AddRange(createPlayerRelatedPackets(playerActorId));
subpackets.Add(createScriptBindPacket(playerActorId));
return BasePacket.createPacket(subpackets, true, false);
}
+ public List createPlayerRelatedPackets(uint playerActorId)
+ {
+ List subpackets = new List();
+
+ if (gcCurrent != 0)
+ subpackets.Add(SetGrandCompanyPacket.buildPacket(actorId, playerActorId, gcCurrent, gcRankLimsa, gcRankGridania, gcRankUldah));
+
+ if (currentTitle != 0)
+ subpackets.Add(SetPlayerTitlePacket.buildPacket(actorId, playerActorId, currentTitle));
+
+ if (currentJob != 0)
+ subpackets.Add(SetCurrentJobPacket.buildPacket(actorId, playerActorId, currentJob));
+
+ if (isMyPlayer(playerActorId))
+ {
+ subpackets.Add(_0x196Packet.buildPacket(playerActorId, playerActorId));
+
+ if (hasChocobo && chocoboName != null && !chocoboName.Equals(""))
+ {
+ subpackets.Add(SetChocoboNamePacket.buildPacket(actorId, playerActorId, chocoboName));
+ subpackets.Add(SetHasChocoboPacket.buildPacket(playerActorId, hasChocobo));
+ }
+
+ if (hasGoobbue)
+ 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));
+
+ /*
+ if (isInn)
+ {
+ SetCutsceneBookPacket book = new SetCutsceneBookPacket();
+ for (int i = 0; i < book.cutsceneFlags.Length; i++)
+ book.cutsceneFlags[i] = true;
+ client.queuePacket(book.buildPacket(player.actorID), true, false);
+
+ //
+ //subpackets.Add(SetPlayerDreamPacket.buildPacket(playerActorId, );
+ }
+ */
+ }
+
+ return subpackets;
+ }
+
public override BasePacket getInitPackets(uint playerActorId)
{
ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("/_init", this, playerActorId);
@@ -191,13 +242,7 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
if (charaWork.statusShownTime[i] != 0xFFFFFFFF)
propPacketUtil.addProperty(String.Format("charaWork.statusShownTime[{0}]", i));
}
-
- for (int i = 0; i < charaWork.additionalCommandAcquired.Length; i++)
- {
- if (charaWork.additionalCommandAcquired[i] != false)
- propPacketUtil.addProperty(String.Format("charaWork.additionalCommandAcquired[{0}]", i));
- }
-
+
//General Parameters
for (int i = 3; i < charaWork.battleTemp.generalParameter.Length; i++)
{
@@ -213,32 +258,48 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
//Commands
propPacketUtil.addProperty("charaWork.commandBorder");
+
for (int i = 0; i < charaWork.command.Length; i++)
{
if (charaWork.command[i] != 0)
propPacketUtil.addProperty(String.Format("charaWork.command[{0}]", i));
}
+
/*
for (int i = 0; i < charaWork.commandCategory.Length; i++)
{
+ charaWork.commandCategory[i] = 1;
if (charaWork.commandCategory[i] != 0)
propPacketUtil.addProperty(String.Format("charaWork.commandCategory[{0}]", i));
}
-
-
+
+ for (int i = 0; i < charaWork.commandAcquired.Length; i++)
+ {
+ if (charaWork.commandAcquired[i] != false)
+ propPacketUtil.addProperty(String.Format("charaWork.commandAcquired[{0}]", i));
+ }
+ */
+
+ for (int i = 0; i < charaWork.additionalCommandAcquired.Length; i++)
+ {
+ if (charaWork.additionalCommandAcquired[i] != false)
+ propPacketUtil.addProperty(String.Format("charaWork.additionalCommandAcquired[{0}]", i));
+ }
for (int i = 0; i < charaWork.parameterSave.commandSlot_compatibility.Length; i++)
{
+ charaWork.parameterSave.commandSlot_compatibility[i] = true;
if (charaWork.parameterSave.commandSlot_compatibility[i])
propPacketUtil.addProperty(String.Format("charaWork.parameterSave.commandSlot_compatibility[{0}]", i));
}
- for (int i = 0; i < charaWork.parameterSave.commandSlot_recastTime.Length; i++)
- {
- if (charaWork.parameterSave.commandSlot_recastTime[i] != 0)
- propPacketUtil.addProperty(String.Format("charaWork.parameterSave.commandSlot_recastTime[{0}]", i));
- }
- */
+ /*
+ for (int i = 0; i < charaWork.parameterSave.commandSlot_recastTime.Length; i++)
+ {
+ if (charaWork.parameterSave.commandSlot_recastTime[i] != 0)
+ propPacketUtil.addProperty(String.Format("charaWork.parameterSave.commandSlot_recastTime[{0}]", i));
+ }
+ */
//System
propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_float_forClientSelf[0]");
diff --git a/FFXIVClassic Map Server/actors/chara/player/PlayerWork.cs b/FFXIVClassic Map Server/actors/chara/player/PlayerWork.cs
index 10e10a71..050ec57d 100644
--- a/FFXIVClassic Map Server/actors/chara/player/PlayerWork.cs
+++ b/FFXIVClassic Map Server/actors/chara/player/PlayerWork.cs
@@ -14,13 +14,13 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public byte birthdayDay;
public byte initialTown;
- public int restBonusExpRate;
+ public float restBonusExpRate = 1.5f;
public uint[] questScenario = new uint[16];
public uint[] questGuildleve = new uint[8];
- public int questScenarioComplete;
- public int questGuildleveComplete;
+ public bool[] questScenarioComplete = new bool[2048];
+ public bool[] questGuildleveComplete = new bool[2048];
public bool isContentsCommand;
@@ -28,7 +28,7 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public int castEndClient;
public int[] comboNextCommandId = new int[2];
- public int comboCostBonusRate;
+ public float comboCostBonusRate;
public bool isRemainBonusPoint;
@@ -36,15 +36,15 @@ namespace FFXIVClassic_Map_Server.dataobjects.chara
public bool[] npcLinkshellChatExtra = new bool[64];
public int variableCommandConfirmWarp;
- public int variableCommandConfirmWarpSender;
+ public string variableCommandConfirmWarpSender;
public int variableCommandConfirmWarpSenderByID;
- public int variableCommandConfirmWarpSenderSex;
+ public byte variableCommandConfirmWarpSenderSex;
public int variableCommandConfirmWarpPlace;
public int variableCommandConfirmRaise;
- public int variableCommandConfirmRaiseSender;
+ public string variableCommandConfirmRaiseSender;
public int variableCommandConfirmRaiseSenderByID;
- public int variableCommandConfirmRaiseSenderSex;
+ public byte variableCommandConfirmRaiseSenderSex;
public int variableCommandConfirmRaisePlace;
}
diff --git a/FFXIVClassic Map Server/packets/send/player/SetGrandCompanyPacket.cs b/FFXIVClassic Map Server/packets/send/player/SetGrandCompanyPacket.cs
index 1593fde6..5af08034 100644
--- a/FFXIVClassic Map Server/packets/send/player/SetGrandCompanyPacket.cs
+++ b/FFXIVClassic Map Server/packets/send/player/SetGrandCompanyPacket.cs
@@ -20,11 +20,11 @@ namespace FFXIVClassic_Map_Server.packets.send.actor
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
- {
- binWriter.Write((UInt16)currentAllegiance);
- binWriter.Write((UInt16)rankLimsa);
- binWriter.Write((UInt16)rankGridania);
- binWriter.Write((UInt16)rankUldah);
+ {
+ binWriter.Write((Byte)currentAllegiance);
+ binWriter.Write((Byte)rankLimsa);
+ binWriter.Write((Byte)rankGridania);
+ binWriter.Write((Byte)rankUldah);
}
}