1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-25 11:07:45 +00:00

Messy folder that is able to log in to 6.08. DO NOT merge this into any

other fork this is just a mess to be able to work with as a base. Thank
you.
This commit is contained in:
Rey 2022-02-08 10:11:52 -06:00
parent b46e7c2708
commit 109dc82ca0
12 changed files with 1415 additions and 688 deletions

View file

@ -23,7 +23,7 @@ namespace Sapphire::Common
const uint64_t INVALID_GAME_OBJECT_ID64 = 0xE0000000; const uint64_t INVALID_GAME_OBJECT_ID64 = 0xE0000000;
const uint16_t MAX_PLAYER_LEVEL = 80; const uint16_t MAX_PLAYER_LEVEL = 80;
const uint8_t CURRENT_EXPANSION_ID = 3; const uint8_t CURRENT_EXPANSION_ID = 4;
const uint8_t CLASSJOB_TOTAL = 38; const uint8_t CLASSJOB_TOTAL = 38;
const uint8_t CLASSJOB_SLOTS = 30; const uint8_t CLASSJOB_SLOTS = 30;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -43,67 +43,67 @@ namespace Sapphire::Network::Packets
*/ */
enum ServerZoneIpcType : uint16_t enum ServerZoneIpcType : uint16_t
{ {
Ping = 0x02CB, // updated 5.58 Ping = 0x02A8, // updated 5.58 hotfix
Init = 0x02A8, // updated 5.58 Init = 0x0182, // updated 5.58 hotfix
ActorFreeSpawn = 0x0210, // updated 5.58 ActorFreeSpawn = 0x0082, // updated 6.08
InitZone = 0x0100, // updated 5.58 InitZone = 0x01EB, // updated 6.08
EffectResult = 0x0151, // updated 5.58 EffectResult = 0x0387, // updated 5.58 hotfix
ActorControl = 0x0264, // updated 5.58 ActorControl = 0x022F, // updated 6.08
ActorControlSelf = 0x0314, // updated 5.58 ActorControlSelf = 0x006B, // updated 6.08
ActorControlTarget = 0x00FC, // updated 5.58 ActorControlTarget = 0x0191, // updated 6.08
/*! /*!
* @brief Used when resting * @brief Used when resting
*/ */
UpdateHpMpTp = 0x039B, // updated 5.58 UpdateHpMpTp = 0x02C9, // updated 6.08
/////////////////////////////////////////////////// ///////////////////////////////////////////////////
ChatBanned = 0xF06B, ChatBanned = 0xF06B,
Playtime = 0x02BE, // updated 5.58 Playtime = 0x00CE, // updated 6.08
Logout = 0x0297, // updated 5.58 Logout = 0x03B2, // updated 6.08
CFNotify = 0x01AC, // updated 5.58 CFNotify = 0x01C5, // updated 6.08
CFMemberStatus = 0x0079, CFMemberStatus = 0x0079,
CFDutyInfo = 0x0083, // updated 5.58 CFDutyInfo = 0x0188, // updated 6.08
CFPlayerInNeed = 0xF07F, CFPlayerInNeed = 0xF07F,
CFPreferredRole = 0x02FB, // updated 5.58 CFPreferredRole = 0x02DA, // updated 6.08
CFCancel = 0x0135, // updated 5.58 CFCancel = 0x00EB, // updated 6.08
SocialRequestError = 0xF0AD, SocialRequestError = 0xF0AD,
CFRegistered = 0x037E, // updated 5.58 CFRegistered = 0x00A9, // updated 6.08
SocialRequestResponse = 0x0254, // updated 5.58 SocialRequestResponse = 0x024D, // updated 6.08
SocialMessage = 0x02F2, // updated 5.58 SocialMessage = 0x02B4, // updated 6.08
SocialMessage2 = 0x017A, // updated 5.58 SocialMessage2 = 0x011C, // updated 6.08
CancelAllianceForming = 0xF0C6, // updated 4.2 CancelAllianceForming = 0xF0C6, // updated 4.2
LogMessage = 0x020F, // updated 5.58 LogMessage = 0x0142, // updated 6.08
Chat = 0x0220, // updated 5.58 Chat = 0x0148, // updated 56.08
PartyChat = 0x0065, PartyChat = 0x0065,
WorldVisitList = 0xF0FE, // added 4.5 WorldVisitList = 0xF0FE, // added 4.5
SocialList = 0x0396, // updated 5.58 SocialList = 0x039C, // updated 6.08
ExamineSearchInfo = 0x031F, // updated 5.58 ExamineSearchInfo = 0x0297, // updated 6.08
UpdateSearchInfo = 0x0219, // updated 5.58 UpdateSearchInfo = 0x03D1, // updated 6.08
InitSearchInfo = 0x01A0, // updated 5.58 InitSearchInfo = 0x01BB, // updated 6.08
ExamineSearchComment = 0x0315, // updated 5.58 ExamineSearchComment = 0x02AE, // updated 6.08
ServerNoticeShort = 0x0211, // updated 5.58 ServerNoticeShort = 0x01D7, // updated 6.08
ServerNotice = 0x03B9, // updated 5.58 ServerNotice = 0x036E, // updated 6.08
SetOnlineStatus = 0x0163, // updated 5.58 SetOnlineStatus = 0x0308, // updated 6.08
CountdownInitiate = 0x01F9, // updated 5.58 CountdownInitiate = 0x00E1, // updated 6.08
CountdownCancel = 0x0206, // updated 5.58 CountdownCancel = 0x0284, // updated 6.08
PlayerAddedToBlacklist = 0x01FE, // updated 5.58 PlayerAddedToBlacklist = 0x037D, // updated 6.08
PlayerRemovedFromBlacklist = 0x02D6, // updated 5.58 PlayerRemovedFromBlacklist = 0x0342, // updated 6.08
BlackList = 0x028A, // updated 5.58 BlackList = 0x0070, // updated 6.08
LinkshellList = 0x02DD, // updated 5.58 LinkshellList = 0x0304, // updated 6.08
MailDeleteRequest = 0xF12B, // updated 5.0 MailDeleteRequest = 0xF12B, // updated 5.0
@ -114,173 +114,183 @@ namespace Sapphire::Network::Packets
MarketTaxRates = 0x01F8, // updated 5.35 hotfix MarketTaxRates = 0x01F8, // updated 5.35 hotfix
MarketBoardSearchResult = 0x0355, // updated 5.58 MarketBoardSearchResult = 0x00B2, // updated 6.08
MarketBoardItemListingCount = 0x0275, // updated 5.58 MarketBoardItemListingCount = 0x026A, // updated 6.08
MarketBoardItemListingHistory = 0x0112, // updated 5.58 MarketBoardItemListingHistory = 0x013A, // updated 6.08
MarketBoardItemListing = 0x00F5, // updated 5.58 MarketBoardItemListing = 0x01E2, // updated 6.08
CharaFreeCompanyTag = 0x013B, // updated 4.5 CharaFreeCompanyTag = 0x013B, // updated 4.5
FreeCompanyBoardMsg = 0x028D, // updated 5.58 FreeCompanyBoardMsg = 0x02F1, // updated 6.08
FreeCompanyInfo = 0x0346, // updated 5.58 FreeCompanyInfo = 0x01A2, // updated 6.08
ExamineFreeCompanyInfo = 0x00B7, // updated 5.58 ExamineFreeCompanyInfo = 0x011E, // updated 6.08
FreeCompanyUpdateShortMessage = 0xF157, // added 5.0 FreeCompanyUpdateShortMessage = 0xF157, // added 5.0
StatusEffectList = 0x01C5, // updated 5.58 StatusEffectList = 0x00BC, // updated 6.08
EurekaStatusEffectList = 0x0167, // updated 5.18 EurekaStatusEffectList = 0x0167, // updated 5.18
BossStatusEffectList = 0x0312, // added 5.1 BossStatusEffectList = 0x0312, // added 5.1
Effect = 0x0102, // updated 5.58 Effect = 0x03C7, // updated 6.08
AoeEffect8 = 0x0345, // updated 5.58 AoeEffect8 = 0x0149, // updated 6.08
AoeEffect16 = 0x02B6, // updated 5.58 AoeEffect16 = 0x00C1, // updated 6.08
AoeEffect24 = 0x0298, // updated 5.58 AoeEffect24 = 0x0213, // updated 6.08
AoeEffect32 = 0x03A4, // updated 5.58 AoeEffect32 = 0x038B, // updated 6.08
PersistantEffect = 0x008D, // updated 5.58 PersistantEffect = 0x02AF, // updated 6.08
GCAffiliation = 0x02B1, // updated 5.58 GCAffiliation = 0x0264, // updated 6.08
PlayerSpawn = 0x0249, // updated 5.58 PlayerSpawn = 0x0226, // updated 6.08
NpcSpawn = 0x014B, // updated 5.58 NpcSpawn = 0x032C, // updated 6.08
NpcSpawn2 = 0x01CB, // ( Bigger statuseffectlist? ) updated 5.3 NpcSpawn2 = 0x01CB, // ( Bigger statuseffectlist? ) updated 5.3
ActorMove = 0x023D, // updated 5.58 ActorMove = 0x0370, // updated 6.08
ActorSetPos = 0x0280, // updated 5.58 ActorSetPos = 0x0395, // updated 6.08
ActorCast = 0x02A7, // updated 5.58 ActorCast = 0x0104, // updated 6.08
SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18 SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18
PartyList = 0x02BD, // updated 5.58 PartyList = 0x03AF, // updated 6.08
PartyMessage = 0x0318, // updated 5.58 PartyMessage = 0x0352, // updated 6.08
HateRank = 0x02C0, // updated 5.58 HateRank = 0x03C3, // updated 6.08
HateList = 0x01B4, // updated 5.58 HateList = 0x032B, // updated 6.08
ObjectSpawn = 0x0104, // updated 5.58 ObjectSpawn = 0x03A3, // updated 6.08
ObjectDespawn = 0x030D, // updated 5.58 ObjectDespawn = 0x0137, // updated 6.08
UpdateClassInfo = 0x0198, // updated 5.58 UpdateClassInfo = 0x00FE, // updated 6.08
SilentSetClassJob = 0xF18E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything SilentSetClassJob = 0xF18E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything
PlayerSetup = 0x0296, // updated 5.58 PlayerSetup = 0x02C7, // updated 6.08
PlayerStats = 0x00D5, // updated 5.58 PlayerStats = 0x0295, // updated 5.58 hotfix
ActorOwner = 0x00AE, // updated 5.58 ActorOwner = 0x0261, // updated 6.08
PlayerStateFlags = 0x022A, // updated 5.58 PlayerStateFlags = 0x03CF, // updated 6.08 (or 0x00CB)
PlayerClassInfo = 0x02DF, // updated 5.58 PlayerClassInfo = 0x025A, // updated 6.08
CharaVisualEffect = 0x0134, // updated 5.58 CharaVisualEffect = 0x01D1, // updated 6.08
ModelEquip = 0x0312, // updated 5.58 InstanceDecorAnimation = 0x0338, // updated 6.08
Examine = 0x00D3, // updated 5.58
CharaNameReq = 0x031C, // updated 5.58 ModelEquip = 0x00E4, // updated 6.08
Examine = 0x03E2, // updated 6.08
CharaNameReq = 0x0343, // updated 6.08
// nb: see #565 on github // nb: see #565 on github
UpdateRetainerItemSalePrice = 0xF19F, // updated 5.0 UpdateRetainerItemSalePrice = 0xF19F, // updated 5.0
RetainerSaleHistory = 0x01D3, // updated 5.58 RetainerSaleHistory = 0x0066, // updated 6.08
RetainerInformation = 0x0069, // updated 5.58 RetainerInformation = 0x022F, // updated 5.58 hotfix
SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore
ItemInfo = 0x00A7, // updated 5.58 ItemInfo = 0x01CC, // updated 5.58 hotfix
ContainerInfo = 0x0208, // updated 5.58 ContainerInfo = 0x025C, // updated 5.58 hotfix
InventoryTransactionFinish = 0x01A3, // updated 5.58 InventoryTransactionFinish = 0x0176, // updated 5.58 hotfix
InventoryTransaction = 0x03AC, // updated 5.58 InventoryTransaction = 0x027F, // updated 5.58 hotfix
CurrencyCrystalInfo = 0x0394, // updated 5.58 CurrencyCrystalInfo = 0x0345, // updated 5.58 hotfix
InventoryActionAck = 0x0305, // updated 5.58 InventoryActionAck = 0x008A, // updated 6.08
UpdateInventorySlot = 0x0200, // updated 5.58 UpdateInventorySlot = 0x0375, // updated 6.08
HuntingLogEntry = 0x00C5, // updated 5.58 HuntingLogEntry = 0x0187, // updated 6.08
EventPlay = 0x01EF, // updated 5.58 EventPlay = 0x0113, // updated for 6.08
EventPlay4 = 0x021C, // updated 5.58 EventPlay4 = 0x0302, // updated for 6.08
EventPlay8 = 0x0337, // updated 5.58 EventPlay8 = 0x0078, // updated for 6.08
EventPlay16 = 0x0319, // updated 5.58 EventPlay16 = 0x0223, // updated for 6.08
EventPlay32 = 0x01E2, // updated 5.58 EventPlay32 = 0x02F2, // updated for 6.08
EventPlay64 = 0x02FD, // updated 5.58 EventPlay64 = 0x03BC, // updated for 6.08
EventPlay128 = 0x026E, // updated 5.58 EventPlay128 = 0x033E, // updated for 6.08
EventPlay255 = 0x039E, // updated 5.58 EventPlay255 = 0x0079, // updated for 6.08
EventContinue = 0x0123, // updated 5.58 EventContinue = 0x00B6, // updated 5.58 hotfix
EventStart = 0x01CC, // updated 5.58 EventStart = 0x00AE, // updated 6.08
EventFinish = 0x0180, // updated 5.58 EventFinish = 0x0210, // updated 6.08
EventLinkshell = 0x1169, EventLinkshell = 0x1169,
QuestActiveList = 0x035D, // updated 5.58 QuestActiveList = 0x03E0, // updated 6.08
QuestUpdate = 0x029A, // updated 5.58 QuestUpdate = 0x029B, // updated 6.08
QuestCompleteList = 0x03C5, // updated 5.58 QuestCompleteList = 0x0118, // updated 6.08
QuestFinish = 0x0274, // updated 5.58 QuestFinish = 0x015A, // updated 6.08
MSQTrackerComplete = 0x01C1, // updated 5.58 MSQTrackerComplete = 0x00E5, // updated 6.08
MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474 MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474
QuestMessage = 0x0128, // updated 5.58 QuestMessage = 0x0220, // updated 5.58 hotfix
QuestTracker = 0x038E, // updated 5.58 QuestTracker = 0x01FB, // updated 6.08
Mount = 0x03C2, // updated 5.58 Mount = 0x0373, // updated 6.08
DirectorVars = 0x01ED, // updated 5.58 DirectorVars = 0x0138, // updated 6.08
SomeDirectorUnk1 = 0x0084, // updated 5.18 SomeDirectorUnk1 = 0x0084, // updated 5.18
SomeDirectorUnk2 = 0xF0C1, // updated 5.18 SomeDirectorUnk2 = 0xF0C1, // updated 5.18
SomeDirectorUnk4 = 0x01BD, // updated 5.58 SomeDirectorUnk4 = 0x03DD, // updated 5.58 hotfix
SomeDirectorUnk8 = 0x028A, // updated 5.18 SomeDirectorUnk8 = 0x028A, // updated 5.18
SomeDirectorUnk16 = 0x028C, // updated 5.18 SomeDirectorUnk16 = 0x028C, // updated 5.18
DirectorPopUp = 0x02E3, // updated 5.58 DirectorPopUp = 0x03DF, // updated 5.58 hotfix
DirectorPopUp4 = 0x01DC, // updated 5.58 DirectorPopUp4 = 0x019B, // updated 5.58 hotfix
DirectorPopUp8 = 0x011D, // updated 5.58 DirectorPopUp8 = 0x0271, // updated 5.58 hotfix
CFAvailableContents = 0xF1FD, // updated 4.2 CFAvailableContents = 0xF1FD, // updated 4.2
WeatherChange = 0x01B1, // updated 5.58 WeatherChange = 0x00ED, // updated 6.08
PlayerTitleList = 0x02B4, // updated 5.58 PlayerTitleList = 0x02C2, // updated 6.08
Discovery = 0x00B8, // updated 5.58 Discovery = 0x03A4, // updated 6.08
EorzeaTimeOffset = 0x03D9, // updated 5.58 EorzeaTimeOffset = 0x0074, // updated 6.08
EquipDisplayFlags = 0x0199, // updated 5.58 EquipDisplayFlags = 0x023A, // updated 6.08
MiniCactpotInit = 0x0286, // added 5.31 MiniCactpotInit = 0x0286, // added 5.31
ShopMessage = 0x00D0, // updated 5.58 ShopMessage = 0x0287, // updated 5.58 hotfix
LootMessage = 0x038C, // updated 5.58 LootMessage = 0x006C, // updated 6.08
ResultDialog = 0x00DF, // updated 5.58 ResultDialog = 0x0273, // updated 5.58 hotfix
DesynthResult = 0x038F, // updated 5.58 DesynthResult = 0x0238, // updated 5.58 hotfix
/// Housing ////////////////////////////////////// /// Housing //////////////////////////////////////
LandSetInitialize = 0x03E3, // updated 5.58 LandSetInitialize = 0x0280, // updated 6.08
LandUpdate = 0x029E, // updated 5.58 LandUpdate = 0x03C6, // updated 6.08
YardObjectSpawn = 0x0367, // updated 5.58 YardObjectSpawn = 0x01AC, // updated 6.08
HousingIndoorInitialize = 0x02A6, // updated 5.58 HousingIndoorInitialize = 0x00E6, // updated 6.08
LandPriceUpdate = 0x0143, // updated 5.58 LandPriceUpdate = 0x03CB, // updated 6.08
LandInfoSign = 0x0269, // updated 5.58 LandInfoSign = 0x0276, // updated 6.08
LandRename = 0x0107, // updated 5.58 LandRename = 0x0158, // updated 6.08
HousingEstateGreeting = 0x0340, // updated 5.58 HousingEstateGreeting = 0x029E, // updated 6.08
HousingUpdateLandFlagsSlot = 0x02D2, // updated 5.58 HousingUpdateLandFlagsSlot = 0x01B4, // updated 6.08
HousingLandFlags = 0x0156, // updated 5.58 HousingLandFlags = 0x03DD, // updated 6.08
HousingShowEstateGuestAccess = 0x015C, // updated 5.58 HousingShowEstateGuestAccess = 0x011B, // updated 6.08
HousingObjectInitialize = 0x0245, // updated 5.58 HousingObjectInitialize = 0x02DF, // updated 6.08
HousingInternalObjectSpawn = 0x0194, // updated 5.58 HousingInternalObjectSpawn = 0x01C2, // updated 6.08
HousingWardInfo = 0x00A4, // updated 5.58 HousingWardInfo = 0x0145, // updated 6.08
HousingObjectMove = 0x01AE, // updated 5.58 HousingObjectMove = 0x0242, // updated 6.08
SharedEstateSettingsResponse = 0x0378, // updated 5.58 SharedEstateSettingsResponse = 0x02F0, // updated 6.08
LandUpdateHouseName = 0x034B, // updated 5.58 LandUpdateHouseName = 0x0132, // updated 6.08
LandSetMap = 0x02F6, // updated 5.58 LandSetMap = 0x008B, // updated 6.08
CeremonySetActorAppearance = 0x00EB, // updated 5.58 CeremonySetActorAppearance = 0x0222, // updated 6.08
////////////////////////////////////////////////// //////////////////////////////////////////////////
DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui DuelChallenge = 0xF277, // 4.2; this is responsible for opening the ui
PerformNote = 0x00BE, // updated 5.58 PerformNote = 0x009B, // updated 6.08
PrepareZoning = 0x0171, // updated 5.58 PrepareZoning = 0x039A, // updated 6.08
ActorGauge = 0x0335, // updated 5.58 ActorGauge = 0x03B5, // updated 6.08
DutyGauge = 0x02F6, // updated 5.58 DutyGauge = 0x008B, // updated 6.08
// daily quest info -> without them sent, login will take longer... // daily quest info -> without them sent, login will take longer...
DailyQuests = 0x0331, // updated 5.58 DailyQuests = 0x0136, // updated 6.08
DailyQuestRepeatFlags = 0x01D1, // updated 5.58 DailyQuestRepeatFlags = 0x0348, // updated 6.08
MapUpdate = 0x0364, // updated 6.08
MapUpdate4 = 0x0128, // updated 6.08
MapUpdate8 = 0x0286, // updated 6.08
MapUpdate16 = 0x01AA, // updated 6.08
MapUpdate32 = 0x0151, // updated 6.08
MapUpdate64 = 0x00CD, // updated 6.08
MapUpdate128 = 0x017D, // updated 6.08
/// Doman Mahjong ////////////////////////////////////// /// Doman Mahjong //////////////////////////////////////
MahjongOpenGui = 0x02A4, // only available in mahjong instance MahjongOpenGui = 0x02A4, // only available in mahjong instance
@ -295,14 +305,14 @@ namespace Sapphire::Network::Packets
MahjongEndGame = 0x02C6, // finished oorasu(all-last) round; shows a result screen. MahjongEndGame = 0x02C6, // finished oorasu(all-last) round; shows a result screen.
/// Airship & Submarine ////////////////////////////////////// /// Airship & Submarine //////////////////////////////////////
AirshipExplorationResult = 0x036C, // updated 5.58 AirshipExplorationResult = 0x023E, // updated 6.08
AirshipStatus = 0x021F, // updated 5.58 AirshipStatus = 0x01F5, // updated 6.08
AirshipStatusList = 0x0073, // updated 5.58 AirshipStatusList = 0x0250, // updated 6.08
AirshipTimers = 0x0250, // updated 5.58 AirshipTimers = 0x0225, // updated 6.08
SubmarineExplorationResult = 0x01D0, // updated 5.58 SubmarineExplorationResult = 0x0092, // updated 6.08
SubmarineProgressionStatus = 0x0377, // updated 5.58 SubmarineProgressionStatus = 0x0357, // updated 5.58 hotfix
SubmarineStatusList = 0x0338, // updated 5.58 SubmarineStatusList = 0x0212, // updated 6.08
SubmarineTimers = 0x0292, // updated 5.58 SubmarineTimers = 0x0346, // updated 6.08
}; };
/** /**
@ -310,111 +320,110 @@ namespace Sapphire::Network::Packets
*/ */
enum ClientZoneIpcType : uint16_t enum ClientZoneIpcType : uint16_t
{ {
PingHandler = 0x03A3, // updated 5.58 PingHandler = 0x0315, // updated 6.08
InitHandler = 0x03B3, // updated 5.58 InitHandler = 0x0068, // updated 6.08
FinishLoadingHandler = 0x0217, // updated 5.58 FinishLoadingHandler = 0x0182, // updated 6.08
CFCommenceHandler = 0x0381, // updated 5.58 hotfix
CFCommenceHandler = 0x02A3, // updated 5.58 CFCancelHandler = 0x02B2, // updated 5.58 hotfix
CFRegisterDuty = 0x01BD, // updated 5.58 hotfix
CFCancelHandler = 0x00A9, // updated 5.58 CFRegisterRoulette = 0x037A, // updated 5.58 hotfix
CFRegisterDuty = 0x036A, // updated 5.58 PlayTimeHandler = 0x02B7, // updated 5.58 hotfix
CFRegisterRoulette = 0x038C, // updated 5.58 LogoutHandler = 0x00A0, // updated 5.58 hotfix
PlayTimeHandler = 0x01A8, // updated 5.58 CancelLogout = 0x01AC, // updated 5.58 hotfix
LogoutHandler = 0x02A5, // updated 5.58
CancelLogout = 0x03CC, // updated 5.58
CFDutyInfoHandler = 0xF078, // updated 4.2 CFDutyInfoHandler = 0xF078, // updated 4.2
SocialReqSendHandler = 0x0366, // updated 5.58 SocialReqSendHandler = 0x00D7, // updated 5.58 hotfix
SocialResponseHandler = 0x0311, // updated 5.58 SocialResponseHandler = 0x023B, // updated 5.58 hotfix
CreateCrossWorldLS = 0x0125, // updated 5.58 CreateCrossWorldLS = 0x035D, // updated 5.58 hotfix
ChatHandler = 0x02F4, // updated 5.58 ChatHandler = 0x01C8, // updated 6.08
PartyChatHandler = 0x0065, PartyChatHandler = 0x0065,
PartySetLeaderHandler = 0x03C2, // updated 5.58 PartySetLeaderHandler = 0x036C, // updated 5.58 hotfix
LeavePartyHandler = 0x028A, // updated 5.58 LeavePartyHandler = 0x019D, // updated 5.58 hotfix
KickPartyMemberHandler = 0x01D1, // updated 5.58 KickPartyMemberHandler = 0x0262, // updated 5.58 hotfix
DisbandPartyHandler = 0x032B, // updated 5.58 DisbandPartyHandler = 0x0276, // updated 5.58 hotfix
SocialListHandler = 0x006E, // updated 5.58 SocialListHandler = 0x012A, // updated 6.08
SetSearchInfoHandler = 0x010A, // updated 5.58 SetSearchInfoHandler = 0x01D4, // updated 5.58 hotfix
ReqSearchInfoHandler = 0x0255, // updated 5.58 ReqSearchInfoHandler = 0x014F, // updated 5.58 hotfix
ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0 ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0
ReqRemovePlayerFromBlacklist = 0x015A, // updated 5.58 ReqRemovePlayerFromBlacklist = 0x00B4, // updated 5.58 hotfix
BlackListHandler = 0x02C5, // updated 5.58 BlackListHandler = 0x019E, // updated 6.08
PlayerSearchHandler = 0x0259, // updated 5.58 PlayerSearchHandler = 0x037D, // updated 5.58 hotfix
LinkshellListHandler = 0x01F0, // updated 5.58 LinkshellListHandler = 0x010C, // updated 6.08
MarketBoardRequestItemListingInfo = 0x02D3, // updated 5.58 MarketBoardRequestItemListingInfo = 0x00F4, // updated 5.58 hotfix
MarketBoardRequestItemListings = 0x00AD, // updated 5.58 MarketBoardRequestItemListings = 0x0122, // updated 5.58 hotfix
MarketBoardSearch = 0x00D6, // updated 5.58 MarketBoardSearch = 0x0082, // updated 5.58 hotfix
ReqExamineFcInfo = 0x0359, // updated 5.58 ReqExamineFcInfo = 0x037B, // updated 5.58 hotfix
FcInfoReqHandler = 0x0078, // updated 5.58 FcInfoReqHandler = 0x03D4, // updated 5.58 hotfix
FreeCompanyUpdateShortMessageHandler = 0x0123, // added 5.0 FreeCompanyUpdateShortMessageHandler = 0x0123, // added 5.0
ReqMarketWishList = 0x0364, // updated 5.58 ReqMarketWishList = 0x00C3, // updated 5.58 hotfix
ReqJoinNoviceNetwork = 0x0129, // updated 4.2 ReqJoinNoviceNetwork = 0x0129, // updated 4.2
ReqCountdownInitiate = 0x020E, // updated 5.58 ReqCountdownInitiate = 0x02EC, // updated 5.58 hotfix
ReqCountdownCancel = 0x03BE, // updated 5.58 ReqCountdownCancel = 0x0068, // updated 5.58 hotfix
ZoneLineHandler = 0x00B0, // updated 5.58 ZoneLineHandler = 0x008D, // updated 5.58 hotfix
ClientTrigger = 0x008B, // updated 5.58 ClientTrigger = 0x02F1, // updated 6.08
DiscoveryHandler = 0x01B4, // updated 5.58 DiscoveryHandler = 0x038B, // updated 5.58 hotfix
PlaceFieldMarkerPreset = 0x03B0, // updated 5.58 PlaceFieldMarkerPreset = 0x026D, // updated 5.58 hotfix
PlaceFieldMarker = 0x011A, // updated 5.58 PlaceFieldMarker = 0x0371, // updated 5.58 hotfix
SkillHandler = 0x0175, // updated 5.58 SkillHandler = 0x008E, // updated 6.08
GMCommand1 = 0x0353, // updated 5.58 GMCommand1 = 0x0272, // updated 5.58 hotfix
GMCommand2 = 0x03E7, // updated 5.58 GMCommand2 = 0x00E9, // updated 5.58 hotfix
AoESkillHandler = 0x021D, // updated 5.58 AoESkillHandler = 0x0152, // updated 5.58 hotfix
UpdatePositionHandler = 0x0212, // updated 5.58 UpdatePositionHandler = 0x0147, // updated 6.08
InventoryModifyHandler = 0x014A, // updated 5.58 InventoryModifyHandler = 0x029E, // updated 5.58 hotfix
InventoryEquipRecommendedItems = 0x01D7, // updated 5.58 InventoryEquipRecommendedItems = 0x01C9, // updated 5.58 hotfix
ReqPlaceHousingItem = 0x0354, // updated 5.58 ReqPlaceHousingItem = 0x02D4, // updated 5.58 hotfix
BuildPresetHandler = 0x00DC, // updated 5.58 BuildPresetHandler = 0x0223, // updated 5.58 hotfix
TalkEventHandler = 0x012D, // updated 5.58 TalkEventHandler = 0x0387, // updated 5.58 hotfix
EmoteEventHandler = 0x039E, // updated 5.58 EmoteEventHandler = 0x00B0, // updated 5.58 hotfix
WithinRangeEventHandler = 0x022C, // updated 5.58 WithinRangeEventHandler = 0x02B6, // updated 5.58 hotfix
OutOfRangeEventHandler = 0x0294, // updated 5.58 OutOfRangeEventHandler = 0x03C5, // updated 5.58 hotfix
EnterTeriEventHandler = 0x00C1, // updated 5.58 EnterTeriEventHandler = 0x01A7, // updated 5.58 hotfix
ShopEventHandler = 0x02B8, // updated 5.58 ShopEventHandler = 0x0384, // updated 5.58 hotfix
EventYieldHandler = 0x03A2, // updated 5.58 ReturnEventHandler = 0x00FA, // updated 5.58 hotfix
ReturnEventHandler = 0x0333, // updated 5.58 TradeReturnEventHandler = 0x0339, // updated 5.58 hotfix
TradeReturnEventHandler = 0x0179, // updated 5.58 TradeReturnEventHandler2 = 0x023C, // updated 5.58 hotfix
TradeReturnEventHandler2 = 0x02E1, // updated 5.58 EventYield2Handler = 0x021D, // updated 5.58 hotfix
EventYield16Handler = 0x03D7, // updated 5.58 EventYield16Handler = 0x0207, // updated 5.58 hotfix
LinkshellEventHandler = 0x016B, // updated 4.5 LinkshellEventHandler = 0x016B, // updated 4.5
LinkshellEventHandler1 = 0x016C, // updated 4.5 LinkshellEventHandler1 = 0x016C, // updated 4.5
ReqEquipDisplayFlagsChange = 0x01AD, // updated 5.58 ReqEquipDisplayFlagsChange = 0x02A5, // updated 5.58 hotfix
LandRenameHandler = 0x0083, // updated 5.58 LandRenameHandler = 0x028E, // updated 5.58 hotfix
HousingUpdateHouseGreeting = 0x031A, // updated 5.58 HousingUpdateHouseGreeting = 0x0343, // updated 5.58 hotfix
HousingUpdateObjectPosition = 0x010E, // updated 5.58 HousingUpdateObjectPosition = 0x012C, // updated 5.58 hotfix
HousingEditExterior = 0x0324, // updated 5.58 HousingEditExterior = 0x027B, // updated 5.58 hotfix
HousingEditInterior = 0x02F7, // updated 5.58 HousingEditInterior = 0x02E3, // updated 5.58 hotfix
SetSharedEstateSettings = 0x0342, // updated 5.58 SetSharedEstateSettings = 0x00D2, // updated 5.58 hotfix
UpdatePositionInstance = 0x01A3, // updated 5.58 UpdatePositionInstance = 0x00F8, // updated 5.58 hotfix
PerformNoteHandler = 0x015E, // updated 5.58 PerformNoteHandler = 0x0243, // updated 5.58 hotfix
WorldInteractionHandler = 0x03CE, // updated 5.58 WorldInteractionHandler = 0x0274, // updated 5.58 hotfix
Dive = 0x034C, // updated 5.58 Dive = 0x0320, // updated 5.58 hotfix
}; };
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -443,4 +452,4 @@ namespace Sapphire::Network::Packets
} }
#endif /*_CORE_NETWORK_PACKETS_IPCS_H*/ #endif /*_CORE_NETWORK_PACKETS_IPCS_H*/

View file

@ -447,7 +447,7 @@ struct FFXIVIpcHousingEditInterior :
}; };
struct FFXIVIpcEventYieldHandler : struct FFXIVIpcEventYieldHandler :
FFXIVIpcBasePacket< EventYieldHandler > FFXIVIpcBasePacket< EventYield2Handler >
{ {
uint32_t eventId; uint32_t eventId;
uint16_t scene; uint16_t scene;

View file

@ -950,7 +950,7 @@ namespace Sapphire::Network::Packets::Server
// plain C types for a bit until the packet is actually fixed. // plain C types for a bit until the packet is actually fixed.
// makes conversion between different editors easier. // makes conversion between different editors easier.
uint64_t contentId; uint64_t contentId;
unsigned int unknown8; uint64_t unknown8;
unsigned int unknownC; unsigned int unknownC;
unsigned int charId; unsigned int charId;
unsigned int restedExp; unsigned int restedExp;
@ -960,7 +960,7 @@ namespace Sapphire::Network::Packets::Server
unsigned int useBaitCatalogId; unsigned int useBaitCatalogId;
unsigned int unknown28; unsigned int unknown28;
unsigned short unknownPvp2C; unsigned short unknownPvp2C;
unsigned short unknown3; unsigned short unknown2E;
unsigned int pvpFrontlineOverallCampaigns; unsigned int pvpFrontlineOverallCampaigns;
unsigned int unknownTimestamp34; unsigned int unknownTimestamp34;
unsigned int unknownTimestamp38; unsigned int unknownTimestamp38;
@ -985,7 +985,7 @@ namespace Sapphire::Network::Packets::Server
unsigned char expansion; unsigned char expansion;
unsigned char unknown76; unsigned char unknown76;
unsigned char unknown77; unsigned char unknown77;
unsigned char very_unknown; unsigned char unknown78;
unsigned char race; unsigned char race;
unsigned char tribe; unsigned char tribe;
unsigned char gender; unsigned char gender;
@ -996,7 +996,7 @@ namespace Sapphire::Network::Packets::Server
unsigned char namedayDay; unsigned char namedayDay;
unsigned char cityState; unsigned char cityState;
unsigned char homepoint; unsigned char homepoint;
unsigned char unknown82; unsigned char unknown83;
unsigned char petHotBar; unsigned char petHotBar;
unsigned char companionRank; unsigned char companionRank;
unsigned char companionStars; unsigned char companionStars;
@ -1004,117 +1004,97 @@ namespace Sapphire::Network::Packets::Server
unsigned char companionUnk86; unsigned char companionUnk86;
unsigned char companionColor; unsigned char companionColor;
unsigned char companionFavoFeed; unsigned char companionFavoFeed;
unsigned char unknown89; unsigned char favAetheryteCount;
unsigned char unknown8A[4]; unsigned char unknown8C[4];
unsigned char hasRelicBook; unsigned char hasRelicBook;
unsigned char relicBookId; unsigned char relicBookId;
unsigned char unknown90[4]; unsigned char sightseeing21to80Unlock;
unsigned char sightseeingHeavenswardUnlock;
unsigned char unknown94[2];
unsigned char craftingMasterMask; unsigned char craftingMasterMask;
unsigned char unknown95[9]; unsigned char unknown97[9];
unsigned char unknown9F[2]; unsigned char unknownA0[2];
unsigned char unknownA1[6]; unsigned char unknownA2[3];
unsigned char unknownA5[3];
unsigned int exp[Common::CLASSJOB_SLOTS]; unsigned int exp[Common::CLASSJOB_SLOTS];
unsigned int unknown108;
unsigned int pvpTotalExp; unsigned int pvpTotalExp;
unsigned int unknownPvp110; unsigned int unknownPvp124;
unsigned int pvpExp; unsigned int pvpExp;
unsigned int pvpFrontlineOverallRanks[3]; unsigned int pvpFrontlineOverallRanks[3];
unsigned short levels[Common::CLASSJOB_SLOTS]; unsigned short levels[Common::CLASSJOB_SLOTS];
/*
unsigned short unknown15C[9]; unsigned short unknown178[8];
unsigned short u1; unsigned short fishingRecordsFishId[30];
unsigned short u2; unsigned short fishingRecordsFishLength[30];
unsigned short unknown112[23]; unsigned short beastExp[14];
unsigned short fishingRecordsFish[26]; unsigned short unknown21C[5];
unsigned short beastExp[11];
unsigned short unknown1EA[5];
unsigned short pvpFrontlineWeeklyRanks[3]; unsigned short pvpFrontlineWeeklyRanks[3];
unsigned short unknownMask1FA[4]; unsigned short unknownMask22C[7];
unsigned char companionName[21];
unsigned char companionDefRank;
unsigned char companionAttRank;
unsigned char companionHealRank;
unsigned char u19[8];
unsigned char mountGuideMask[22];
unsigned char u19_2;
*/
unsigned char unknown5_55a[178];
unsigned char companionName[21]; unsigned char companionName[21];
unsigned char companionDefRank; unsigned char companionDefRank;
unsigned char companionAttRank; unsigned char companionAttRank;
unsigned char companionHealRank; unsigned char companionHealRank;
unsigned char mountGuideMask[29]; unsigned char mountGuideMask[29];
//== unsigned char unknown26F[4];
char name[32]; char name[32];
unsigned char unknownOword[16]; unsigned char unknown293[16];
unsigned char unknownOw; unsigned char unknown2A3;
unsigned char unlockBitmask[64]; unsigned char unlockBitmask[64];
unsigned char aetheryte[21]; unsigned char aetheryte[21];
unsigned char discovery[445]; unsigned char favoriteAetheryteIds[4];
unsigned char howto[34]; unsigned char freeAetheryteId;
unsigned char minions[55]; unsigned char discovery[464];
unsigned char howto[35];
unsigned char minions[56];
unsigned char chocoboTaxiMask[10]; unsigned char chocoboTaxiMask[10];
unsigned char watchedCutscenes[137]; unsigned char watchedCutscenes[144];
unsigned char companionBardingMask[11]; unsigned char companionBardingMask[11];
unsigned char companionEquippedHead; unsigned char companionEquippedHead;
unsigned char companionEquippedBody; unsigned char companionEquippedBody;
unsigned char companionEquippedLegs; unsigned char companionEquippedLegs;
/* unsigned char unknown5D1[4];
unsigned char unknown52A[4]; unsigned char unknownMask5D5[11];
unsigned char unknownMask52E[11]; unsigned char fishingGuideMask[142];
unsigned char fishingGuideMask[105]; unsigned char fishingSpotVisited[38];
unsigned char fishingSpotVisited[31]; unsigned char unknown694[34];
unsigned char unknown59A[27]; unsigned char unknown6B6[7];
unsigned char unknown5A9[7]; unsigned char unknownPvp6BD[3];
unsigned char beastRank[11]; unsigned char beastRank[14];
unsigned char unknownPvp5AB[11]; unsigned char unknownPvp6CE[12];
unsigned char unknown5B9[5];
*/
unsigned char unknown5_45b[236];
//==
unsigned char pose; unsigned char pose;
/* unsigned char pose2[4];
unsigned char unknown5B91; unsigned char unknown6DF[3];
unsigned char challengeLogComplete[9]; unsigned char challengeLogComplete[13];
unsigned char weaponPose; unsigned char unknownMask6EF[8];
unsigned char unknownMask673[10]; unsigned char unknownMask6F7[31];
unsigned char unknownMask5DD[28];
unsigned char relicCompletion[12]; unsigned char relicCompletion[12];
unsigned char sightseeingMask[26]; unsigned char sightseeingMask[37];
unsigned char huntingMarkMask[55]; unsigned char huntingMarkMask[101];
unsigned char tripleTriadCards[32]; unsigned char tripleTriadCards[43];
unsigned char u12[11]; unsigned char unknown7D7;
unsigned char u13; unsigned char unknown7D8[14];
unsigned char aetherCurrentMask[22]; unsigned char unknown7E6[36];
unsigned char u10[3]; unsigned char unknown80A[6];
*/ unsigned char orchestrionMask[64];
unsigned char unknown5_55b[295];
//==
unsigned char orchestrionMask[40]; // this field may already be extended, if it is, the beginning bytes are at the end of unknown5_55b
unsigned char hallOfNoviceCompletion[3]; unsigned char hallOfNoviceCompletion[3];
unsigned char animaCompletion[11]; unsigned char animaCompletion[11];
unsigned char unknown5_55c[35]; unsigned char unknown85E[16];
unsigned char unknown86E[4];
unsigned char unknown872[14];
unsigned char unknown880;
unsigned char unlockedRaids[28]; unsigned char unlockedRaids[28];
unsigned char unlockedDungeons[18]; unsigned char unlockedDungeons[18];
unsigned char unlockedGuildhests[10]; unsigned char unlockedGuildhests[10];
/* unsigned char unlockedTrials[11];
at least 8 bytes at most 10 bytes in unlockedTrials not confirmed, adjust unlockedPvp so they share a total of 15 bytes and sync with clearedTrials/clearedPvp. unsigned char unlockedPvp[5];
*/
unsigned char unlockedTrials[9];
unsigned char unlockedPvp[6];
//==
unsigned char clearedRaids[28]; unsigned char clearedRaids[28];
unsigned char clearedDungeons[18]; unsigned char clearedDungeons[18];
unsigned char clearedGuildhests[10]; unsigned char clearedGuildhests[10];
unsigned char clearedTrials[9]; unsigned char clearedTrials[11];
unsigned char clearedPvp[6]; unsigned char clearedPvp[5];
/* unsigned char unknown911[4];
unsigned short fishingRecordsFishWeight[26]; unsigned char unknown915[2];
unsigned int exploratoryMissionNextTimestamp; unsigned char unknown917[3];
unsigned char pvpLevel;
*/
unsigned char unknown5_55d[9];
//==
}; };

View file

@ -239,10 +239,12 @@ public:
packetData.actors[0].charId = p1->getId(); packetData.actors[0].charId = p1->getId();
packetData.actors[0].guardianDeity = p1->getGuardianDeity(); packetData.actors[0].guardianDeity = p1->getGuardianDeity();
packetData.actors[0].models[ Common::GearModelSlot::ModelHead ] = p1->getModelForSlot( Common::GearModelSlot::ModelHead ); packetData.actors[0].models[ Common::GearModelSlot::ModelHead ] = p1->getModelForSlot( Common::GearModelSlot::ModelHead );
player.sendUrgent("p1 Head Model: {}", p1->getModelForSlot(Common::GearModelSlot::ModelHead));
if ((p1->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFF) == 208) if ((p1->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFF) == 208)
{ {
player.sendUrgent("Replacing p1 Model"); instance.foreachPlayer( []( auto p )
{
p->sendUrgent("Replacing p1 Model");
});
uint32_t gear = p1->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFFFFFF00; uint32_t gear = p1->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFFFFFF00;
packetData.actors[0].models[Common::GearModelSlot::ModelHead] = gear | 0xC7; packetData.actors[0].models[Common::GearModelSlot::ModelHead] = gear | 0xC7;
} }
@ -256,7 +258,6 @@ public:
packetData.actors[0].models[ Common::GearModelSlot::ModelRing2 ] = p1->getModelForSlot( Common::GearModelSlot::ModelRing2 ); packetData.actors[0].models[ Common::GearModelSlot::ModelRing2 ] = p1->getModelForSlot( Common::GearModelSlot::ModelRing2 );
packetData.actors[0].models[ Common::GearModelSlot::ModelWrist ] = p1->getModelForSlot( Common::GearModelSlot::ModelWrist ); packetData.actors[0].models[ Common::GearModelSlot::ModelWrist ] = p1->getModelForSlot( Common::GearModelSlot::ModelWrist );
memcpy( packetData.actors[0].look, p1->getLookArray(), sizeof( packetData.actors[0].look ) ); memcpy( packetData.actors[0].look, p1->getLookArray(), sizeof( packetData.actors[0].look ) );
player.sendUrgent("p2 Head Model: {}", p2->getModelForSlot(Common::GearModelSlot::ModelHead));
if( !( p2->getEquipDisplayFlags() & Sapphire::Common::EquipDisplayFlags::HideWeapon ) ) if( !( p2->getEquipDisplayFlags() & Sapphire::Common::EquipDisplayFlags::HideWeapon ) )
{ {
packetData.actors[1].mainWeaponModel = p2->getModelMainWeapon(); packetData.actors[1].mainWeaponModel = p2->getModelMainWeapon();
@ -267,7 +268,10 @@ public:
packetData.actors[1].models[ Common::GearModelSlot::ModelHead ] = p2->getModelForSlot( Common::GearModelSlot::ModelHead ); packetData.actors[1].models[ Common::GearModelSlot::ModelHead ] = p2->getModelForSlot( Common::GearModelSlot::ModelHead );
if ((p2->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFF) == 208) if ((p2->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFF) == 208)
{ {
player.sendUrgent("Replacing p2 Model"); instance.foreachPlayer([](auto p)
{
p->sendUrgent("Replacing p2 Model");
});
uint32_t gear = p2->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFFFFFF00; uint32_t gear = p2->getModelForSlot(Common::GearModelSlot::ModelHead) & 0xFFFFFF00;
packetData.actors[1].models[Common::GearModelSlot::ModelHead] = gear | 0xC7; packetData.actors[1].models[Common::GearModelSlot::ModelHead] = gear | 0xC7;
} }

View file

@ -53,7 +53,7 @@ std::vector< std::string > reservedWords
}; };
//std::string datLocation( "/home/mordred/sqpack" ); //std::string datLocation( "/home/mordred/sqpack" );
std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" ); std::string datLocation( "D:\\Program Files (x86)\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" );
std::map< uint8_t, std::string > g_typeMap; std::map< uint8_t, std::string > g_typeMap;
@ -408,6 +408,8 @@ int main( int argc, char** argv )
auto name = path.stem().string(); auto name = path.stem().string();
Logger::info("Filename: " + name);
if( std::find( cats.begin(), cats.end(), name ) == cats.end() ) if( std::find( cats.begin(), cats.end(), name ) == cats.end() )
{ {
Logger::warn( "have definition for {} but the sheet doesn't exist", name ); Logger::warn( "have definition for {} but the sheet doesn't exist", name );
@ -441,7 +443,7 @@ int main( int argc, char** argv )
result = std::regex_replace( result, std::regex( "\\IDLISTGETTERS" ), idListGetters ); result = std::regex_replace( result, std::regex( "\\IDLISTGETTERS" ), idListGetters );
// g_log.info( result ); Logger::info( result );
std::ofstream outH( "ExdDataGenerated.h" ); std::ofstream outH( "ExdDataGenerated.h" );
outH << result; outH << result;
@ -455,7 +457,7 @@ int main( int argc, char** argv )
outC << result; outC << result;
outC.close(); outC.close();
// g_log.info( result ); Logger::info(result);
Logger::info( "done." ); Logger::info( "done." );

View file

@ -1052,8 +1052,8 @@ bool Sapphire::Entity::Player::giveQuestRewards( uint32_t questId, uint32_t opti
exp = questInfo->expFactor; exp = questInfo->expFactor;
auto rewardItemCount = questInfo->itemReward0.size(); auto rewardItemCount = questInfo->itemReward.size();
uint16_t optionalItemCount = static_cast< uint16_t >( questInfo->itemReward1.size() ); uint16_t optionalItemCount = static_cast< uint16_t >( questInfo->optionalItemReward.size() );
uint32_t gilReward = questInfo->gilReward; uint32_t gilReward = questInfo->gilReward;
@ -1065,10 +1065,10 @@ bool Sapphire::Entity::Player::giveQuestRewards( uint32_t questId, uint32_t opti
{ {
for( uint32_t i = 0; i < rewardItemCount; i++ ) for( uint32_t i = 0; i < rewardItemCount; i++ )
{ {
auto itemId = questInfo->itemReward0.at( i ); auto itemId = questInfo->itemReward.at( i );
if( itemId > 0 ) if( itemId > 0 )
{ {
addItem( itemId, questInfo->itemCountReward0.at( i ), false, false, true, true ); addItem( itemId, questInfo->itemCountReward.at( i ), false, false, true, true );
} }
} }
} }
@ -1077,10 +1077,10 @@ bool Sapphire::Entity::Player::giveQuestRewards( uint32_t questId, uint32_t opti
{ {
for( uint32_t i = 0; i < optionalItemCount; i++ ) for( uint32_t i = 0; i < optionalItemCount; i++ )
{ {
auto itemId = questInfo->itemReward1.at( i ); auto itemId = questInfo->optionalItemReward.at( i );
if( itemId > 0 && itemId == optionalChoice ) if( itemId > 0 && itemId == optionalChoice )
{ {
addItem( itemId, questInfo->itemCountReward1.at( i ), false, false, true, true ); addItem( itemId, questInfo->optionalItemReward.at( i ), false, false, true, true );
break; break;
} }
} }

View file

@ -304,6 +304,20 @@ void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player&
{ {
terriMgr.disableCurrentFestival(); terriMgr.disableCurrentFestival();
} }
else if(subCommand == "finishallquests")
{
for (int i = 65536; i < 69637; i++)
{
player.finishQuest(static_cast<uint16_t>(i));
}
}
else if (subCommand == "unfinishallquests")
{
for (int i = 65536; i < 69637; i++)
{
player.unfinishQuest(static_cast<uint16_t>(i));
}
}
else if( subCommand == "QuestVar" ) else if( subCommand == "QuestVar" )
{ {
uint16_t questId; uint16_t questId;

View file

@ -106,7 +106,7 @@ Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pH
setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler, "TradeReturnEventHandler", setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler, "TradeReturnEventHandler",
&GameConnection::eventHandlerReturn ); &GameConnection::eventHandlerReturn );
setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler2, "TradeReturnEventHandler2", &GameConnection::eventHandlerReturn ); setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler2, "TradeReturnEventHandler2", &GameConnection::eventHandlerReturn );
setZoneHandler( ClientZoneIpcType::EventYieldHandler, "EventYieldHandler", &GameConnection::eventYieldHandler ); setZoneHandler( ClientZoneIpcType::EventYield2Handler, "EventYieldHandler", &GameConnection::eventYieldHandler );
setZoneHandler( ClientZoneIpcType::EventYield16Handler, "EventYield16Handler", &GameConnection::eventYieldHandler ); setZoneHandler( ClientZoneIpcType::EventYield16Handler, "EventYield16Handler", &GameConnection::eventYieldHandler );
setZoneHandler( ClientZoneIpcType::ShopEventHandler, "ShopEventHandler", setZoneHandler( ClientZoneIpcType::ShopEventHandler, "ShopEventHandler",

View file

@ -62,6 +62,8 @@ bool Sapphire::HousingZone::init()
housingIndex = 2; housingIndex = 2;
else if( m_territoryTypeId == 641 ) else if( m_territoryTypeId == 641 )
housingIndex = 3; housingIndex = 3;
else if (m_territoryTypeId == 979)
housingIndex = 4;
auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); auto& exdData = Common::Service< Data::ExdDataGenerated >::ref();
auto info = exdData.get< Sapphire::Data::HousingLandSet >( housingIndex ); auto info = exdData.get< Sapphire::Data::HousingLandSet >( housingIndex );