mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-25 22:17:45 +00:00
First batch of fixes for 4.1, still quite a few hickups
This commit is contained in:
parent
280bd3081b
commit
1cbb8d3577
4 changed files with 112 additions and 112 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 376501b8f441bd6b6e75b1960b118aabd72fca9d
|
Subproject commit c71860d79596a93e5668169ac3f0309397c7218c
|
|
@ -85,7 +85,7 @@ bool Core::Data::ExdData::loadZoneInfo()
|
||||||
int16_t map_index = getField< int16_t >( mapDataFields, 12 );
|
int16_t map_index = getField< int16_t >( mapDataFields, 12 );
|
||||||
bool is_two_bytes = getField< bool >( mapDataFields, 15 );
|
bool is_two_bytes = getField< bool >( mapDataFields, 15 );
|
||||||
|
|
||||||
uint8_t weather_rate = getField< uint8_t >( fields, 10 ) > 75 ? 0 : getField< uint8_t >( fields, 10 );
|
uint16_t weather_rate = getField< uint16_t >( fields, 10 ) > 75 ? 0 : getField< uint16_t >( fields, 10 );
|
||||||
auto weatherRateFields = weatherRate.get_row( weather_rate );
|
auto weatherRateFields = weatherRate.get_row( weather_rate );
|
||||||
|
|
||||||
int32_t aetheryte_index = getField< int32_t >( fields, 20 );
|
int32_t aetheryte_index = getField< int32_t >( fields, 20 );
|
||||||
|
@ -520,26 +520,26 @@ boost::shared_ptr< Core::Data::QuestInfo >
|
||||||
|
|
||||||
info->quest_level = getField< uint16_t >( row, 4 );
|
info->quest_level = getField< uint16_t >( row, 4 );
|
||||||
|
|
||||||
info->enpc_resident_start = getField< uint32_t >( row, 38 );
|
info->enpc_resident_start = getField< uint32_t >( row, 40 );
|
||||||
info->enpc_resident_end = getField< uint32_t >( row, 40 );
|
info->enpc_resident_end = getField< uint32_t >( row, 42 );
|
||||||
|
|
||||||
info->reward_exp_factor = getField< uint16_t >( row, 1437 );
|
info->reward_exp_factor = getField< uint16_t >( row, 1439 );
|
||||||
info->reward_gil = getField< uint32_t >( row, 1438 );
|
info->reward_gil = getField< uint32_t >( row, 1440 );
|
||||||
info->reward_gc_seals = getField< uint16_t >( row, 1440 );
|
info->reward_gc_seals = getField< uint16_t >( row, 1442 );
|
||||||
|
|
||||||
info->reward_item_type = getField< uint8_t >( row, 1447 );
|
info->reward_item_type = getField< uint8_t >( row, 1449 );
|
||||||
|
|
||||||
for( uint32_t i = 0; i < 6; i++ )
|
for( uint32_t i = 0; i < 6; i++ )
|
||||||
{
|
{
|
||||||
uint32_t entry = getField< uint32_t >( row, i + 1448 );
|
uint32_t entry = getField< uint32_t >( row, i + 1450 );
|
||||||
if( entry > 0 )
|
if( entry > 0 )
|
||||||
info->reward_item.push_back( entry );
|
info->reward_item.push_back( entry );
|
||||||
|
|
||||||
uint8_t entry1 = getField< uint8_t >( row, i + 1455 );
|
uint8_t entry1 = getField< uint8_t >( row, i + 1457 );
|
||||||
if( entry1 > 0 )
|
if( entry1 > 0 )
|
||||||
info->reward_item_count.push_back( entry1 );
|
info->reward_item_count.push_back( entry1 );
|
||||||
|
|
||||||
uint8_t entry2 = getField< uint8_t >( row, i + 1462 );
|
uint8_t entry2 = getField< uint8_t >( row, i + 1464 );
|
||||||
if( entry2 > 0 )
|
if( entry2 > 0 )
|
||||||
info->reward_item_stain.push_back( entry2 );
|
info->reward_item_stain.push_back( entry2 );
|
||||||
|
|
||||||
|
@ -547,39 +547,39 @@ boost::shared_ptr< Core::Data::QuestInfo >
|
||||||
|
|
||||||
for( uint32_t i = 0; i < 5; i++ )
|
for( uint32_t i = 0; i < 5; i++ )
|
||||||
{
|
{
|
||||||
uint32_t entry = getField< uint32_t >( row, i + 1469 );
|
uint32_t entry = getField< uint32_t >( row, i + 1471 );
|
||||||
if( entry > 0 )
|
if( entry > 0 )
|
||||||
info->reward_item_optional.push_back( entry );
|
info->reward_item_optional.push_back( entry );
|
||||||
|
|
||||||
uint8_t entry1 = getField< uint8_t >( row, i + 1474 );
|
uint8_t entry1 = getField< uint8_t >( row, i + 1476 );
|
||||||
if( entry1 > 0 )
|
if( entry1 > 0 )
|
||||||
info->reward_item_optional_count.push_back( entry1 );
|
info->reward_item_optional_count.push_back( entry1 );
|
||||||
|
|
||||||
uint8_t entry2 = getField< uint8_t >( row, i + 1484 );
|
uint8_t entry2 = getField< uint8_t >( row, i + 1486 );
|
||||||
if( entry2 > 0 )
|
if( entry2 > 0 )
|
||||||
info->reward_item_optional_stain.push_back( entry2 );
|
info->reward_item_optional_stain.push_back( entry2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
info->reward_emote = getField< uint8_t >( row, 1489 );
|
info->reward_emote = getField< uint8_t >( row, 1491 );
|
||||||
info->reward_action = getField< uint16_t >( row, 1490 );
|
info->reward_action = getField< uint16_t >( row, 1492 );
|
||||||
info->reward_action_general1 = getField< uint8_t >( row, 1491 );
|
info->reward_action_general1 = getField< uint8_t >( row, 1493 );
|
||||||
info->reward_action_general2 = getField< uint8_t >( row, 1492 );
|
info->reward_action_general2 = getField< uint8_t >( row, 1494 );
|
||||||
info->reward_other = getField< uint8_t >( row, 1494 );
|
info->reward_other = getField< uint8_t >( row, 1496 );
|
||||||
|
|
||||||
info->instanced_content_unlock = getField< uint32_t >( row, 1497 );
|
info->instanced_content_unlock = getField< uint32_t >( row, 1499 );
|
||||||
|
|
||||||
info->reward_tome_type = getField< uint8_t >( row, 1499 );
|
info->reward_tome_type = getField< uint8_t >( row, 1501 );
|
||||||
info->reward_tome_count = getField< uint8_t >( row, 1500 );
|
info->reward_tome_count = getField< uint8_t >( row, 1502 );
|
||||||
|
|
||||||
info->reward_reputation = getField< uint8_t >( row, 1501 );
|
info->reward_reputation = getField< uint8_t >( row, 1503 );
|
||||||
|
|
||||||
for( uint32_t i = 0; i < 50; i++ )
|
for( uint32_t i = 0; i < 50; i++ )
|
||||||
{
|
{
|
||||||
std::string entry = getField< std::string >( row, i + 47 );
|
std::string entry = getField< std::string >( row, i + 49 );
|
||||||
if( entry.size() > 0 )
|
if( entry.size() > 0 )
|
||||||
{
|
{
|
||||||
info->script_entity.push_back( entry );
|
info->script_entity.push_back( entry );
|
||||||
uint32_t entry1 = getField< uint32_t >( row, i + 97 );
|
uint32_t entry1 = getField< uint32_t >( row, i + 99 );
|
||||||
info->script_value.push_back( entry1 );
|
info->script_value.push_back( entry1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace Core {
|
||||||
uint16_t map_id;
|
uint16_t map_id;
|
||||||
int16_t discovery_index;
|
int16_t discovery_index;
|
||||||
bool is_two_byte;
|
bool is_two_byte;
|
||||||
uint8_t weather_rate;
|
uint16_t weather_rate;
|
||||||
std::map< uint8_t, int32_t> weather_rate_map;
|
std::map< uint8_t, int32_t> weather_rate_map;
|
||||||
|
|
||||||
int32_t aetheryte_index;
|
int32_t aetheryte_index;
|
||||||
|
|
|
@ -44,88 +44,88 @@ namespace Packets {
|
||||||
*/
|
*/
|
||||||
enum ServerZoneIpcType : uint16_t
|
enum ServerZoneIpcType : uint16_t
|
||||||
{
|
{
|
||||||
Ping = 0x0065, // updated for sb
|
Ping = 0x0065,
|
||||||
Init = 0x0066, // updated for sb
|
Init = 0x0066,
|
||||||
Chat = 0x0067, // updated for sb
|
Chat = 0x0067,
|
||||||
ChatBanned = 0x006B,
|
ChatBanned = 0x006B,
|
||||||
Logout = 0x0077, // updated for sb
|
Logout = 0x0077,
|
||||||
CFNotify = 0x0078,
|
CFNotify = 0x0078,
|
||||||
CFMemberStatus = 0x0079,
|
CFMemberStatus = 0x0079,
|
||||||
CFDutyInfo = 0x007A,
|
CFDutyInfo = 0x007A,
|
||||||
CFPlayerInNeed = 0x007F,
|
CFPlayerInNeed = 0x007F,
|
||||||
|
|
||||||
Playtime = 0x00AF, // updated for sb
|
Playtime = 0x00B9, // test update
|
||||||
SocialRequestError = 0x00AD,
|
SocialRequestError = 0x00AD,
|
||||||
SocialRequestResponse = 0x11AF,
|
SocialRequestResponse = 0x00BB, // updated 4.1
|
||||||
CFRegistered = 0x00B0,
|
CFRegistered = 0x00B8, // updated 4.1
|
||||||
SocialList = 0x00B4, // updated for sb
|
SocialList = 0x00BE, // updated 4.1
|
||||||
UpdateSearchInfo = 0x00B6, // updated for sb
|
UpdateSearchInfo = 0x10BB,
|
||||||
InitSearchInfo = 0x00B7, // updated for sb
|
InitSearchInfo = 0x00BC, // updated 4.1
|
||||||
ServerNotice = 0x00BC, // updated for sb
|
ServerNotice = 0x00C6, // updated 4.1
|
||||||
SetOnlineStatus = 0x00BD, // updated for sb
|
SetOnlineStatus = 0x00C7, // test update
|
||||||
BlackList = 0x00CA, // updated for sb
|
BlackList = 0x00D4, // updated 4.1
|
||||||
LogMessage = 0x00D0, // updated for sb
|
LogMessage = 0x00D0,
|
||||||
LinkshellList = 0x00D1, // updated for sb
|
LinkshellList = 0x00D1,
|
||||||
StatusEffectList = 0x00F0, // updated for sb
|
StatusEffectList = 0x00F0,
|
||||||
Effect = 0x00F1, // updated for sb
|
Effect = 0x00F1,
|
||||||
GCAffiliation = 0x00FC,
|
GCAffiliation = 0x00FC,
|
||||||
|
|
||||||
ActorSetPos = 0x0114, // updated for sb
|
ActorSetPos = 0x0114,
|
||||||
ActorCast = 0x0116, // updated for sb
|
ActorCast = 0x0116,
|
||||||
PlayerSpawn = 0x0110, // updated for sb
|
PlayerSpawn = 0x011C, // updated 4.1
|
||||||
NpcSpawn = 0x0111, // updated for sb
|
NpcSpawn = 0x011D, // updated 4.1
|
||||||
ActorMove = 0x0112, // updated for sb
|
ActorMove = 0x011E, // updated 4.1
|
||||||
HateList = 0x011A, // updated for sb borked
|
HateList = 0x011A,
|
||||||
UpdateClassInfo = 0x011D, // updated for sb
|
UpdateClassInfo = 0x011D,
|
||||||
InitUI = 0x011E, // updated for sb
|
InitUI = 0x012B, // updated 4.1
|
||||||
PlayerStats = 0x011F, // updated for sb
|
PlayerStats = 0x012C, // updated 4.1
|
||||||
ActorOwner = 0x0120, // updated for sb
|
ActorOwner = 0x012D, // updated 4.1
|
||||||
PlayerStateFlags = 0x0121, // updated for sb
|
PlayerStateFlags = 0x013A, // updated 4.1
|
||||||
PlayerClassInfo = 0x0123, // updated for sb
|
PlayerClassInfo = 0x013B, // updated 4.1
|
||||||
ModelEquip = 0x0124, // updated for sb
|
ModelEquip = 0x013C, // updated 4.1
|
||||||
ItemInfo = 0x0139, // updated for sb
|
ItemInfo = 0x014C, // updated 4.1
|
||||||
ContainerInfo = 0x013A, // updated for sb
|
ContainerInfo = 0x014D, // updated 4.1
|
||||||
InventoryTransactionFinish = 0x013B, // updated for sb
|
InventoryTransactionFinish = 0x014E, // updated 4.1
|
||||||
InventoryTransaction = 0x013C, // updated for sb
|
InventoryTransaction = 0x014F, // updated 4.1
|
||||||
CurrencyCrystalInfo = 0x013D,
|
CurrencyCrystalInfo = 0x0150, // updated 4.1
|
||||||
InventoryActionAck = 0x1139,
|
InventoryActionAck = 0x1139,
|
||||||
UpdateInventorySlot = 0x0140, // updated for sb
|
UpdateInventorySlot = 0x0153, // updated 4.1
|
||||||
AddStatusEffect = 0x0141,
|
AddStatusEffect = 0x0141,
|
||||||
ActorControl142 = 0x0142, // unchanged for sb
|
ActorControl142 = 0x0142,
|
||||||
ActorControl143 = 0x0143, // unchanged for sb
|
ActorControl143 = 0x0143,
|
||||||
ActorControl144 = 0x0144, // unchanged for sb
|
ActorControl144 = 0x0144,
|
||||||
UpdateHpMpTp = 0x0145, // unchanged for sb
|
UpdateHpMpTp = 0x0145,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EventPlay = 0x0154, // updated for sb
|
EventPlay = 0x0160, // updated 4.1
|
||||||
EventStart = 0x015D, // updated for sb
|
EventStart = 0x0169, // updated 4.1
|
||||||
EventFinish = 0x015E, // updated for sb
|
EventFinish = 0x016A, // updated 4.1
|
||||||
|
|
||||||
EventLinkshell = 0x0169,
|
EventLinkshell = 0x0169,
|
||||||
|
|
||||||
QuestActiveList = 0x0171, // updated for sb
|
QuestActiveList = 0x017D, // updated 4.1
|
||||||
QuestUpdate = 0x0172, // updated for sb
|
QuestUpdate = 0x017E, // updated 4.1
|
||||||
QuestCompleteList = 0x0173, // updated for sb
|
QuestCompleteList = 0x017F, // updated 4.1
|
||||||
QuestFinish = 0x0174, // updated for sb
|
QuestFinish = 0x0180, // updated 4.1
|
||||||
QuestMessage = 0x0179,
|
QuestMessage = 0x0179,
|
||||||
QuestTracker = 0x0181, // updated for sb
|
QuestTracker = 0x0181,
|
||||||
ActorSpawn = 0x0190, // todo: split into playerspawn/actorspawn and use opcode 0x110/0x111
|
ActorSpawn = 0x0190,
|
||||||
ActorFreeSpawn = 0x0191, // unchanged for sb
|
ActorFreeSpawn = 0x0191,
|
||||||
InitZone = 0x019A, // unchanged for sb
|
InitZone = 0x019A,
|
||||||
WeatherChange = 0x01AF, // updated for sb
|
WeatherChange = 0x01AF,
|
||||||
Discovery = 0x01B2, // updated for sb
|
Discovery = 0x01B2,
|
||||||
|
|
||||||
EorzeaTimeOffset = 0x01B4,
|
EorzeaTimeOffset = 0x01B4,
|
||||||
|
|
||||||
CFAvailableContents = 0x01CF,
|
CFAvailableContents = 0x01CF,
|
||||||
|
|
||||||
PrepareZoning = 0x0239, // updated for sb
|
PrepareZoning = 0x0248, // updated 4.1
|
||||||
|
|
||||||
// Unknown IPC types that still need to be sent
|
// Unknown IPC types that still need to be sent
|
||||||
// TODO: figure all these out properly
|
// TODO: figure all these out properly
|
||||||
IPCTYPE_UNK_320 = 0x1FB,
|
IPCTYPE_UNK_320 = 0x0207, // updated 4.1
|
||||||
IPCTYPE_UNK_322 = 0x1FD,
|
IPCTYPE_UNK_322 = 0x0209, // updated 4.1
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -138,53 +138,53 @@ namespace Packets {
|
||||||
{
|
{
|
||||||
|
|
||||||
PingHandler = 0x0065, // updated for sb
|
PingHandler = 0x0065, // updated for sb
|
||||||
InitHandler = 0x0066, // updated for sb
|
InitHandler = 0x0066, // updated 4.1
|
||||||
ChatHandler = 0x0067, // updated for sb
|
ChatHandler = 0x00AD, // updated 4.1
|
||||||
|
|
||||||
FinishLoadingHandler = 0x0069, // updated for sb
|
FinishLoadingHandler = 0x0069, // updated 4.1
|
||||||
|
|
||||||
CFCommenceHandler = 0x006F,
|
CFCommenceHandler = 0x006F,
|
||||||
CFRegisterDuty = 0x0071,
|
CFRegisterDuty = 0x0071,
|
||||||
CFRegisterRoulette = 0x0072,
|
CFRegisterRoulette = 0x0072,
|
||||||
PlayTimeHandler = 0x0073, // updated for sb
|
PlayTimeHandler = 0x0073, // updated 4.1
|
||||||
LogoutHandler = 0x0074, // updated for sb
|
LogoutHandler = 0x0074, // updated 4.1
|
||||||
|
|
||||||
CFDutyInfoHandler = 0x0078,
|
CFDutyInfoHandler = 0x0078, // updated 4.1 ??
|
||||||
|
|
||||||
SocialReqSendHandler = 0x00A5,
|
SocialReqSendHandler = 0x00AE, // updated 4.1
|
||||||
SocialListHandler = 0x00AA, // updated for sb
|
SocialListHandler = 0x00B3, // updated 4.1
|
||||||
SetSearchInfoHandler = 0x00AC, // updated for sb
|
SetSearchInfoHandler = 0x00B5, // updated 4.1
|
||||||
|
|
||||||
ReqSearchInfoHandler = 0x00AD,
|
ReqSearchInfoHandler = 0x00B6, // updated 4.1
|
||||||
|
|
||||||
BlackListHandler = 0x00B7, // updated for sb
|
BlackListHandler = 0x00C0, // updated 4.1
|
||||||
|
|
||||||
LinkshellListHandler = 0x00BF, // updated for sb
|
LinkshellListHandler = 0x00C8, // updated 4.1
|
||||||
|
|
||||||
FcInfoReqHandler = 0x0100, // updated for sb
|
FcInfoReqHandler = 0x0109, // updated 4.1
|
||||||
|
|
||||||
ZoneLineHandler = 0x0107, // updated for sb
|
ZoneLineHandler = 0x0110, // updated 4.1
|
||||||
ActionHandler = 0x0108, // updated for sb
|
ActionHandler = 0x0111, // updated 4.1
|
||||||
DiscoveryHandler = 0x0109, // updated for sb
|
DiscoveryHandler = 0x0112, // updated 4.1
|
||||||
|
|
||||||
SkillHandler = 0x010B, // updated for sb
|
SkillHandler = 0x0114, // updated 4.1
|
||||||
GMCommand1 = 0x010C, // updated for sb
|
GMCommand1 = 0x0115, // updated 4.1 ??
|
||||||
GMCommand2 = 0x010D, // updated for sb
|
GMCommand2 = 0x0116, // updated 4.1 ??
|
||||||
UpdatePositionHandler = 0x010F, // updated for sb
|
UpdatePositionHandler = 0x0118, // updated 4.1
|
||||||
|
|
||||||
InventoryModifyHandler = 0x0116, // updated for sb
|
InventoryModifyHandler = 0x011F, // updated 4.1
|
||||||
|
|
||||||
TalkEventHandler = 0x011F, // updated for sb
|
TalkEventHandler = 0x0128, // updated 4.1
|
||||||
EmoteEventHandler = 0x0120, // updated for sb
|
EmoteEventHandler = 0x0129, // updated 4.1
|
||||||
WithinRangeEventHandler = 0x0121, // updated for sb
|
WithinRangeEventHandler = 0x012A, // updated 4.1
|
||||||
OutOfRangeEventHandler = 0x0122, // updated for sb
|
OutOfRangeEventHandler = 0x012B, // updated 4.1
|
||||||
EnterTeriEventHandler = 0x0123, // updated for sb
|
EnterTeriEventHandler = 0x012C, // updated 4.1
|
||||||
|
|
||||||
ReturnEventHandler = 0x0128,
|
ReturnEventHandler = 0x0131, // updated 4.1
|
||||||
TradeReturnEventHandler = 0x0129,
|
TradeReturnEventHandler = 0x0132, // updated 4.1
|
||||||
|
|
||||||
LinkshellEventHandler = 0x013B,
|
LinkshellEventHandler = 0x0144, // updated 4.1 ??
|
||||||
LinkshellEventHandler1 = 0x013C,
|
LinkshellEventHandler1 = 0x0145, // updated 4.1 ??
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Add table
Reference in a new issue