mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-31 00:46:46 +00:00
Merge pull request #5057 from dannuic/tob_charactercreate
Implemented through character creation packets
This commit is contained in:
@@ -93,8 +93,8 @@ set(common_sources
|
|||||||
patches/sod_limits.cpp
|
patches/sod_limits.cpp
|
||||||
patches/sof.cpp
|
patches/sof.cpp
|
||||||
patches/sof_limits.cpp
|
patches/sof_limits.cpp
|
||||||
patches/steam_latest.cpp
|
patches/tob.cpp
|
||||||
patches/steam_latest_limits.cpp
|
patches/tob_limits.cpp
|
||||||
patches/titanium.cpp
|
patches/titanium.cpp
|
||||||
patches/titanium_limits.cpp
|
patches/titanium_limits.cpp
|
||||||
patches/uf.cpp
|
patches/uf.cpp
|
||||||
@@ -676,10 +676,10 @@ set(common_headers
|
|||||||
patches/sof_limits.h
|
patches/sof_limits.h
|
||||||
patches/sof_ops.h
|
patches/sof_ops.h
|
||||||
patches/sof_structs.h
|
patches/sof_structs.h
|
||||||
patches/steam_latest.h
|
patches/tob.h
|
||||||
patches/steam_latest_limits.h
|
patches/tob_limits.h
|
||||||
patches/steam_latest_ops.h
|
patches/tob_ops.h
|
||||||
patches/steam_latest_structs.h
|
patches/tob_structs.h
|
||||||
patches/ss_declare.h
|
patches/ss_declare.h
|
||||||
patches/ss_define.h
|
patches/ss_define.h
|
||||||
patches/ss_register.h
|
patches/ss_register.h
|
||||||
|
|||||||
+21
-21
@@ -54,8 +54,8 @@ const char* EQ::versions::ClientVersionName(ClientVersion client_version)
|
|||||||
return "RoF";
|
return "RoF";
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return "RoF2";
|
return "RoF2";
|
||||||
case ClientVersion::SteamLatest:
|
case ClientVersion::TOB:
|
||||||
return "SteamLatest";
|
return "TOB";
|
||||||
default:
|
default:
|
||||||
return "Invalid Version";
|
return "Invalid Version";
|
||||||
};
|
};
|
||||||
@@ -76,8 +76,8 @@ uint32 EQ::versions::ConvertClientVersionToClientVersionBit(ClientVersion client
|
|||||||
return bitRoF;
|
return bitRoF;
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return bitRoF2;
|
return bitRoF2;
|
||||||
case ClientVersion::SteamLatest:
|
case ClientVersion::TOB:
|
||||||
return bitSteamLatest;
|
return bitTOB;
|
||||||
default:
|
default:
|
||||||
return bitUnknown;
|
return bitUnknown;
|
||||||
}
|
}
|
||||||
@@ -98,8 +98,8 @@ EQ::versions::ClientVersion EQ::versions::ConvertClientVersionBitToClientVersion
|
|||||||
return ClientVersion::RoF;
|
return ClientVersion::RoF;
|
||||||
case ((uint32)1 << (static_cast<unsigned int>(ClientVersion::RoF2) - 1)) :
|
case ((uint32)1 << (static_cast<unsigned int>(ClientVersion::RoF2) - 1)) :
|
||||||
return ClientVersion::RoF2;
|
return ClientVersion::RoF2;
|
||||||
case ((uint32)1 << (static_cast<unsigned int>(ClientVersion::SteamLatest) - 1)) :
|
case ((uint32)1 << (static_cast<unsigned int>(ClientVersion::TOB) - 1)) :
|
||||||
return ClientVersion::SteamLatest;
|
return ClientVersion::TOB;
|
||||||
default:
|
default:
|
||||||
return ClientVersion::Unknown;
|
return ClientVersion::Unknown;
|
||||||
}
|
}
|
||||||
@@ -188,8 +188,8 @@ const char* EQ::versions::MobVersionName(MobVersion mob_version)
|
|||||||
return "RoF";
|
return "RoF";
|
||||||
case MobVersion::RoF2:
|
case MobVersion::RoF2:
|
||||||
return "RoF2";
|
return "RoF2";
|
||||||
case MobVersion::SteamLatest:
|
case MobVersion::TOB:
|
||||||
return "SteamLatest";
|
return "TOB";
|
||||||
case MobVersion::NPC:
|
case MobVersion::NPC:
|
||||||
return "NPC";
|
return "NPC";
|
||||||
case MobVersion::NPCMerchant:
|
case MobVersion::NPCMerchant:
|
||||||
@@ -218,7 +218,7 @@ const char* EQ::versions::MobVersionName(MobVersion mob_version)
|
|||||||
return "Offline RoF";
|
return "Offline RoF";
|
||||||
case MobVersion::OfflineRoF2:
|
case MobVersion::OfflineRoF2:
|
||||||
return "Offline RoF2";
|
return "Offline RoF2";
|
||||||
case MobVersion::OfflineSteamLatest:
|
case MobVersion::OfflineTOB:
|
||||||
return "Offline Steam Latest";
|
return "Offline Steam Latest";
|
||||||
default:
|
default:
|
||||||
return "Invalid Version";
|
return "Invalid Version";
|
||||||
@@ -243,8 +243,8 @@ EQ::versions::ClientVersion EQ::versions::ConvertMobVersionToClientVersion(MobVe
|
|||||||
return ClientVersion::RoF;
|
return ClientVersion::RoF;
|
||||||
case MobVersion::RoF2:
|
case MobVersion::RoF2:
|
||||||
return ClientVersion::RoF2;
|
return ClientVersion::RoF2;
|
||||||
case MobVersion::SteamLatest:
|
case MobVersion::TOB:
|
||||||
return ClientVersion::SteamLatest;
|
return ClientVersion::TOB;
|
||||||
default:
|
default:
|
||||||
return ClientVersion::Unknown;
|
return ClientVersion::Unknown;
|
||||||
}
|
}
|
||||||
@@ -268,8 +268,8 @@ EQ::versions::MobVersion EQ::versions::ConvertClientVersionToMobVersion(ClientVe
|
|||||||
return MobVersion::RoF;
|
return MobVersion::RoF;
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return MobVersion::RoF2;
|
return MobVersion::RoF2;
|
||||||
case ClientVersion::SteamLatest:
|
case ClientVersion::TOB:
|
||||||
return MobVersion::SteamLatest;
|
return MobVersion::TOB;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
@@ -290,8 +290,8 @@ EQ::versions::MobVersion EQ::versions::ConvertPCMobVersionToOfflinePCMobVersion(
|
|||||||
return MobVersion::OfflineRoF;
|
return MobVersion::OfflineRoF;
|
||||||
case MobVersion::RoF2:
|
case MobVersion::RoF2:
|
||||||
return MobVersion::OfflineRoF2;
|
return MobVersion::OfflineRoF2;
|
||||||
case MobVersion::SteamLatest:
|
case MobVersion::TOB:
|
||||||
return MobVersion::OfflineSteamLatest;
|
return MobVersion::OfflineTOB;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
@@ -312,8 +312,8 @@ EQ::versions::MobVersion EQ::versions::ConvertOfflinePCMobVersionToPCMobVersion(
|
|||||||
return MobVersion::RoF;
|
return MobVersion::RoF;
|
||||||
case MobVersion::OfflineRoF2:
|
case MobVersion::OfflineRoF2:
|
||||||
return MobVersion::RoF2;
|
return MobVersion::RoF2;
|
||||||
case MobVersion::OfflineSteamLatest:
|
case MobVersion::OfflineTOB:
|
||||||
return MobVersion::SteamLatest;
|
return MobVersion::TOB;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
@@ -334,8 +334,8 @@ EQ::versions::ClientVersion EQ::versions::ConvertOfflinePCMobVersionToClientVers
|
|||||||
return ClientVersion::RoF;
|
return ClientVersion::RoF;
|
||||||
case MobVersion::OfflineRoF2:
|
case MobVersion::OfflineRoF2:
|
||||||
return ClientVersion::RoF2;
|
return ClientVersion::RoF2;
|
||||||
case MobVersion::OfflineSteamLatest:
|
case MobVersion::OfflineTOB:
|
||||||
return ClientVersion::SteamLatest;
|
return ClientVersion::TOB;
|
||||||
default:
|
default:
|
||||||
return ClientVersion::Unknown;
|
return ClientVersion::Unknown;
|
||||||
}
|
}
|
||||||
@@ -356,8 +356,8 @@ EQ::versions::MobVersion EQ::versions::ConvertClientVersionToOfflinePCMobVersion
|
|||||||
return MobVersion::OfflineRoF;
|
return MobVersion::OfflineRoF;
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return MobVersion::OfflineRoF2;
|
return MobVersion::OfflineRoF2;
|
||||||
case ClientVersion::SteamLatest:
|
case ClientVersion::TOB:
|
||||||
return MobVersion::OfflineSteamLatest;
|
return MobVersion::OfflineTOB;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-10
@@ -33,7 +33,7 @@ namespace EQ
|
|||||||
UF, // Build: 'Jun 8 2010 16:44:32'
|
UF, // Build: 'Jun 8 2010 16:44:32'
|
||||||
RoF, // Build: 'Dec 10 2012 17:35:44'
|
RoF, // Build: 'Dec 10 2012 17:35:44'
|
||||||
RoF2, // Build: 'May 10 2013 23:30:08'
|
RoF2, // Build: 'May 10 2013 23:30:08'
|
||||||
SteamLatest // Build: 'Sep 11 2025 11:54:10'
|
TOB // Build: 'Sep 11 2025 11:54:10'
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ClientVersionBitmask : uint32 {
|
enum ClientVersionBitmask : uint32 {
|
||||||
@@ -45,7 +45,7 @@ namespace EQ
|
|||||||
bitUF = 0x00000010,
|
bitUF = 0x00000010,
|
||||||
bitRoF = 0x00000020,
|
bitRoF = 0x00000020,
|
||||||
bitRoF2 = 0x00000040,
|
bitRoF2 = 0x00000040,
|
||||||
bitSteamLatest = 0x00000080,
|
bitTOB = 0x00000080,
|
||||||
maskUnknown = 0x00000000,
|
maskUnknown = 0x00000000,
|
||||||
maskTitaniumAndEarlier = 0x00000003,
|
maskTitaniumAndEarlier = 0x00000003,
|
||||||
maskSoFAndEarlier = 0x00000007,
|
maskSoFAndEarlier = 0x00000007,
|
||||||
@@ -57,11 +57,11 @@ namespace EQ
|
|||||||
maskUFAndLater = 0xFFFFFFF0,
|
maskUFAndLater = 0xFFFFFFF0,
|
||||||
maskRoFAndLater = 0xFFFFFFE0,
|
maskRoFAndLater = 0xFFFFFFE0,
|
||||||
maskRoF2AndLater = 0xFFFFFFC0,
|
maskRoF2AndLater = 0xFFFFFFC0,
|
||||||
maskSteamLatestAndLater = 0xFFFFFF80,
|
maskTOBAndLater = 0xFFFFFF80,
|
||||||
maskAllClients = 0xFFFFFFFF
|
maskAllClients = 0xFFFFFFFF
|
||||||
};
|
};
|
||||||
|
|
||||||
const ClientVersion LastClientVersion = ClientVersion::SteamLatest;
|
const ClientVersion LastClientVersion = ClientVersion::TOB;
|
||||||
const size_t ClientVersionCount = (static_cast<size_t>(LastClientVersion) + 1);
|
const size_t ClientVersionCount = (static_cast<size_t>(LastClientVersion) + 1);
|
||||||
|
|
||||||
bool IsValidClientVersion(ClientVersion client_version);
|
bool IsValidClientVersion(ClientVersion client_version);
|
||||||
@@ -79,7 +79,7 @@ namespace EQ
|
|||||||
UF,
|
UF,
|
||||||
RoF,
|
RoF,
|
||||||
RoF2,
|
RoF2,
|
||||||
SteamLatest,
|
TOB,
|
||||||
NPC,
|
NPC,
|
||||||
NPCMerchant,
|
NPCMerchant,
|
||||||
Merc,
|
Merc,
|
||||||
@@ -94,13 +94,13 @@ namespace EQ
|
|||||||
OfflineUF,
|
OfflineUF,
|
||||||
OfflineRoF,
|
OfflineRoF,
|
||||||
OfflineRoF2,
|
OfflineRoF2,
|
||||||
OfflineSteamLatest
|
OfflineTOB
|
||||||
};
|
};
|
||||||
|
|
||||||
const MobVersion LastMobVersion = MobVersion::OfflineSteamLatest;
|
const MobVersion LastMobVersion = MobVersion::OfflineTOB;
|
||||||
const MobVersion LastPCMobVersion = MobVersion::SteamLatest;
|
const MobVersion LastPCMobVersion = MobVersion::TOB;
|
||||||
const MobVersion LastNonPCMobVersion = MobVersion::BotPet;
|
const MobVersion LastNonPCMobVersion = MobVersion::BotPet;
|
||||||
const MobVersion LastOfflinePCMobVersion = MobVersion::OfflineSteamLatest;
|
const MobVersion LastOfflinePCMobVersion = MobVersion::OfflineTOB;
|
||||||
const size_t MobVersionCount = (static_cast<size_t>(LastMobVersion) + 1);
|
const size_t MobVersionCount = (static_cast<size_t>(LastMobVersion) + 1);
|
||||||
|
|
||||||
bool IsValidMobVersion(MobVersion mob_version);
|
bool IsValidMobVersion(MobVersion mob_version);
|
||||||
@@ -133,7 +133,7 @@ namespace EQ
|
|||||||
ucsUFCombined = 'E',
|
ucsUFCombined = 'E',
|
||||||
ucsRoFCombined = 'F',
|
ucsRoFCombined = 'F',
|
||||||
ucsRoF2Combined = 'G',
|
ucsRoF2Combined = 'G',
|
||||||
ucsSteamLatestCombined = 'H'
|
ucsTOBCombined = 'H'
|
||||||
};
|
};
|
||||||
|
|
||||||
} /*versions*/
|
} /*versions*/
|
||||||
|
|||||||
+25
-25
@@ -111,14 +111,14 @@ static const EQ::constants::LookupEntry constants_static_lookup_entries[EQ::vers
|
|||||||
RoF2::constants::SAY_LINK_BODY_SIZE,
|
RoF2::constants::SAY_LINK_BODY_SIZE,
|
||||||
RoF2::constants::MAX_BAZAAR_TRADERS
|
RoF2::constants::MAX_BAZAAR_TRADERS
|
||||||
),
|
),
|
||||||
/*[ClientVersion::SteamLatest] =*/
|
/*[ClientVersion::TOB] =*/
|
||||||
EQ::constants::LookupEntry(
|
EQ::constants::LookupEntry(
|
||||||
SteamLatest::constants::EXPANSION,
|
TOB::constants::EXPANSION,
|
||||||
SteamLatest::constants::EXPANSION_BIT,
|
TOB::constants::EXPANSION_BIT,
|
||||||
SteamLatest::constants::EXPANSIONS_MASK,
|
TOB::constants::EXPANSIONS_MASK,
|
||||||
SteamLatest::constants::CHARACTER_CREATION_LIMIT,
|
TOB::constants::CHARACTER_CREATION_LIMIT,
|
||||||
SteamLatest::constants::SAY_LINK_BODY_SIZE,
|
TOB::constants::SAY_LINK_BODY_SIZE,
|
||||||
SteamLatest::constants::MAX_BAZAAR_TRADERS
|
TOB::constants::MAX_BAZAAR_TRADERS
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -385,8 +385,8 @@ static const EQ::inventory::LookupEntry inventory_static_lookup_entries[EQ::vers
|
|||||||
RoF2::inventory::ConcatenateInvTypeLimbo,
|
RoF2::inventory::ConcatenateInvTypeLimbo,
|
||||||
RoF2::inventory::AllowOverLevelEquipment
|
RoF2::inventory::AllowOverLevelEquipment
|
||||||
),
|
),
|
||||||
/*[MobVersion::SteamLatest] =*/
|
/*[MobVersion::TOB] =*/
|
||||||
//SteamLatestTodo: These need to be set to the latest values not just use RoF2
|
//TOBTodo: These need to be set to the latest values not just use RoF2
|
||||||
EQ::inventory::LookupEntry(
|
EQ::inventory::LookupEntry(
|
||||||
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
||||||
EQ::invtype::POSSESSIONS_SIZE, RoF2::invtype::BANK_SIZE, RoF2::invtype::SHARED_BANK_SIZE,
|
EQ::invtype::POSSESSIONS_SIZE, RoF2::invtype::BANK_SIZE, RoF2::invtype::SHARED_BANK_SIZE,
|
||||||
@@ -791,8 +791,8 @@ static const EQ::inventory::LookupEntry inventory_static_lookup_entries[EQ::vers
|
|||||||
false,
|
false,
|
||||||
false
|
false
|
||||||
),
|
),
|
||||||
/*[MobVersion::OfflineSteamLatest] =*/
|
/*[MobVersion::OfflineTOB] =*/
|
||||||
//SteamLatestTodo: Need to use their own values instead of RoF2
|
//TOBTodo: Need to use their own values instead of RoF2
|
||||||
EQ::inventory::LookupEntry(
|
EQ::inventory::LookupEntry(
|
||||||
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
||||||
RoF2::INULL, RoF2::INULL, RoF2::INULL,
|
RoF2::INULL, RoF2::INULL, RoF2::INULL,
|
||||||
@@ -1066,8 +1066,8 @@ static const EQ::behavior::LookupEntry behavior_static_lookup_entries[EQ::versio
|
|||||||
EQ::behavior::LookupEntry(
|
EQ::behavior::LookupEntry(
|
||||||
RoF2::behavior::CoinHasWeight
|
RoF2::behavior::CoinHasWeight
|
||||||
),
|
),
|
||||||
/*[MobVersion::SteamLatest] =*/
|
/*[MobVersion::TOB] =*/
|
||||||
//SteamLatestTodo: We need this value set properly
|
//TOBTodo: We need this value set properly
|
||||||
EQ::behavior::LookupEntry(
|
EQ::behavior::LookupEntry(
|
||||||
RoF2::behavior::CoinHasWeight
|
RoF2::behavior::CoinHasWeight
|
||||||
),
|
),
|
||||||
@@ -1127,8 +1127,8 @@ static const EQ::behavior::LookupEntry behavior_static_lookup_entries[EQ::versio
|
|||||||
EQ::behavior::LookupEntry(
|
EQ::behavior::LookupEntry(
|
||||||
RoF2::behavior::CoinHasWeight
|
RoF2::behavior::CoinHasWeight
|
||||||
),
|
),
|
||||||
/*[MobVersion::OfflineSteamLatest] =*/
|
/*[MobVersion::OfflineTOB] =*/
|
||||||
//SteamLatestTodo: We need this value set properly
|
//TOBTodo: We need this value set properly
|
||||||
EQ::behavior::LookupEntry(
|
EQ::behavior::LookupEntry(
|
||||||
RoF2::behavior::CoinHasWeight
|
RoF2::behavior::CoinHasWeight
|
||||||
)
|
)
|
||||||
@@ -1285,18 +1285,18 @@ static const EQ::spells::LookupEntry spells_static_lookup_entries[EQ::versions::
|
|||||||
RoF2::spells::PET_BUFFS,
|
RoF2::spells::PET_BUFFS,
|
||||||
RoF2::spells::MERC_BUFFS
|
RoF2::spells::MERC_BUFFS
|
||||||
),
|
),
|
||||||
/*[ClientVersion::SteamLatest] =*/
|
/*[ClientVersion::TOB] =*/
|
||||||
EQ::spells::LookupEntry(
|
EQ::spells::LookupEntry(
|
||||||
SteamLatest::spells::SPELL_ID_MAX,
|
TOB::spells::SPELL_ID_MAX,
|
||||||
SteamLatest::spells::SPELLBOOK_SIZE,
|
TOB::spells::SPELLBOOK_SIZE,
|
||||||
UF::spells::SPELL_GEM_COUNT, // client translators are setup to allow the max value a client supports..however, the top 4 indices are not valid in this case
|
UF::spells::SPELL_GEM_COUNT, // client translators are setup to allow the max value a client supports..however, the top 4 indices are not valid in this case
|
||||||
SteamLatest::spells::LONG_BUFFS,
|
TOB::spells::LONG_BUFFS,
|
||||||
SteamLatest::spells::SHORT_BUFFS,
|
TOB::spells::SHORT_BUFFS,
|
||||||
SteamLatest::spells::DISC_BUFFS,
|
TOB::spells::DISC_BUFFS,
|
||||||
SteamLatest::spells::TOTAL_BUFFS,
|
TOB::spells::TOTAL_BUFFS,
|
||||||
SteamLatest::spells::NPC_BUFFS,
|
TOB::spells::NPC_BUFFS,
|
||||||
SteamLatest::spells::PET_BUFFS,
|
TOB::spells::PET_BUFFS,
|
||||||
SteamLatest::spells::MERC_BUFFS
|
TOB::spells::MERC_BUFFS
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@
|
|||||||
#include "common/patches/rof2_limits.h"
|
#include "common/patches/rof2_limits.h"
|
||||||
#include "common/patches/sod_limits.h"
|
#include "common/patches/sod_limits.h"
|
||||||
#include "common/patches/sof_limits.h"
|
#include "common/patches/sof_limits.h"
|
||||||
#include "common/patches/steam_latest_limits.h"
|
#include "common/patches/tob_limits.h"
|
||||||
#include "common/patches/titanium_limits.h"
|
#include "common/patches/titanium_limits.h"
|
||||||
#include "common/patches/uf_limits.h"
|
#include "common/patches/uf_limits.h"
|
||||||
#include "common/types.h"
|
#include "common/types.h"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
#include "common/patches/rof2.h"
|
#include "common/patches/rof2.h"
|
||||||
#include "common/patches/sod.h"
|
#include "common/patches/sod.h"
|
||||||
#include "common/patches/sof.h"
|
#include "common/patches/sof.h"
|
||||||
#include "common/patches/steam_latest.h"
|
#include "common/patches/tob.h"
|
||||||
#include "common/patches/titanium.h"
|
#include "common/patches/titanium.h"
|
||||||
#include "common/patches/uf.h"
|
#include "common/patches/uf.h"
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ void RegisterAllPatches(EQStreamIdentifier &into)
|
|||||||
UF::Register(into);
|
UF::Register(into);
|
||||||
RoF::Register(into);
|
RoF::Register(into);
|
||||||
RoF2::Register(into);
|
RoF2::Register(into);
|
||||||
SteamLatest::Register(into);
|
TOB::Register(into);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReloadAllPatches()
|
void ReloadAllPatches()
|
||||||
@@ -45,5 +45,5 @@ void ReloadAllPatches()
|
|||||||
UF::Reload();
|
UF::Reload();
|
||||||
RoF::Reload();
|
RoF::Reload();
|
||||||
RoF2::Reload();
|
RoF2::Reload();
|
||||||
SteamLatest::Reload();
|
TOB::Reload();
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
class EQStreamIdentifier;
|
class EQStreamIdentifier;
|
||||||
|
|
||||||
namespace SteamLatest
|
namespace TOB
|
||||||
{
|
{
|
||||||
|
|
||||||
//these are the only public member of this namespace.
|
//these are the only public member of this namespace.
|
||||||
@@ -28,9 +28,10 @@ namespace SteamLatest
|
|||||||
|
|
||||||
//magic macro to declare our opcode processors
|
//magic macro to declare our opcode processors
|
||||||
#include "ss_declare.h"
|
#include "ss_declare.h"
|
||||||
#include "steam_latest_ops.h"
|
#include "tob_ops.h"
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}; /*SteamLatest*/
|
}; /*TOB*/
|
||||||
|
|
||||||
#endif /*COMMON_LAURION_H*/
|
#endif /*COMMON_LAURION_H*/
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
#include "steam_latest_limits.h"
|
#include "tob_limits.h"
|
||||||
|
|
||||||
#include "../strings.h"
|
#include "../strings.h"
|
||||||
|
|
||||||
|
|
||||||
int16 SteamLatest::invtype::GetInvTypeSize(int16 inv_type)
|
int16 TOB::invtype::GetInvTypeSize(int16 inv_type)
|
||||||
{
|
{
|
||||||
switch (inv_type) {
|
switch (inv_type) {
|
||||||
case invtype::typePossessions:
|
case invtype::typePossessions:
|
||||||
@@ -61,7 +61,7 @@ int16 SteamLatest::invtype::GetInvTypeSize(int16 inv_type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* SteamLatest::invtype::GetInvTypeName(int16 inv_type)
|
const char* TOB::invtype::GetInvTypeName(int16 inv_type)
|
||||||
{
|
{
|
||||||
switch (inv_type) {
|
switch (inv_type) {
|
||||||
case invtype::TYPE_INVALID:
|
case invtype::TYPE_INVALID:
|
||||||
@@ -121,7 +121,7 @@ const char* SteamLatest::invtype::GetInvTypeName(int16 inv_type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SteamLatest::invtype::IsInvTypePersistent(int16 inv_type)
|
bool TOB::invtype::IsInvTypePersistent(int16 inv_type)
|
||||||
{
|
{
|
||||||
switch (inv_type) {
|
switch (inv_type) {
|
||||||
case invtype::typePossessions:
|
case invtype::typePossessions:
|
||||||
@@ -139,7 +139,7 @@ bool SteamLatest::invtype::IsInvTypePersistent(int16 inv_type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* SteamLatest::invslot::GetInvPossessionsSlotName(int16 inv_slot)
|
const char* TOB::invslot::GetInvPossessionsSlotName(int16 inv_slot)
|
||||||
{
|
{
|
||||||
switch (inv_slot) {
|
switch (inv_slot) {
|
||||||
case invslot::SLOT_INVALID:
|
case invslot::SLOT_INVALID:
|
||||||
@@ -217,7 +217,7 @@ const char* SteamLatest::invslot::GetInvPossessionsSlotName(int16 inv_slot)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* SteamLatest::invslot::GetInvSlotName(int16 inv_type, int16 inv_slot)
|
const char* TOB::invslot::GetInvSlotName(int16 inv_type, int16 inv_slot)
|
||||||
{
|
{
|
||||||
if (inv_type == invtype::typePossessions)
|
if (inv_type == invtype::typePossessions)
|
||||||
return invslot::GetInvPossessionsSlotName(inv_slot);
|
return invslot::GetInvPossessionsSlotName(inv_slot);
|
||||||
@@ -236,7 +236,7 @@ const char* SteamLatest::invslot::GetInvSlotName(int16 inv_type, int16 inv_slot)
|
|||||||
return ret_str.c_str();
|
return ret_str.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* SteamLatest::invbag::GetInvBagIndexName(int16 bag_index)
|
const char* TOB::invbag::GetInvBagIndexName(int16 bag_index)
|
||||||
{
|
{
|
||||||
if (bag_index == invbag::SLOT_INVALID)
|
if (bag_index == invbag::SLOT_INVALID)
|
||||||
return "Invalid Bag";
|
return "Invalid Bag";
|
||||||
@@ -250,7 +250,7 @@ const char* SteamLatest::invbag::GetInvBagIndexName(int16 bag_index)
|
|||||||
return ret_str.c_str();
|
return ret_str.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* SteamLatest::invaug::GetInvAugIndexName(int16 aug_index)
|
const char* TOB::invaug::GetInvAugIndexName(int16 aug_index)
|
||||||
{
|
{
|
||||||
if (aug_index == invaug::SOCKET_INVALID)
|
if (aug_index == invaug::SOCKET_INVALID)
|
||||||
return "Invalid Augment";
|
return "Invalid Augment";
|
||||||
@@ -5,13 +5,13 @@
|
|||||||
#include "../emu_versions.h"
|
#include "../emu_versions.h"
|
||||||
#include "../skills.h"
|
#include "../skills.h"
|
||||||
|
|
||||||
namespace SteamLatest
|
namespace TOB
|
||||||
{
|
{
|
||||||
const int16 IINVALID = -1;
|
const int16 IINVALID = -1;
|
||||||
const int16 INULL = 0;
|
const int16 INULL = 0;
|
||||||
|
|
||||||
namespace inventory {
|
namespace inventory {
|
||||||
inline EQ::versions::ClientVersion GetInventoryRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetInventoryRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
const bool ConcatenateInvTypeLimbo = false;
|
const bool ConcatenateInvTypeLimbo = false;
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ namespace SteamLatest
|
|||||||
} /*inventory*/
|
} /*inventory*/
|
||||||
|
|
||||||
namespace invtype {
|
namespace invtype {
|
||||||
inline EQ::versions::ClientVersion GetInvTypeRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetInvTypeRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
namespace enum_ {
|
namespace enum_ {
|
||||||
enum InventoryTypes : int16 {
|
enum InventoryTypes : int16 {
|
||||||
@@ -114,7 +114,7 @@ namespace SteamLatest
|
|||||||
} /*invtype*/
|
} /*invtype*/
|
||||||
|
|
||||||
namespace invslot {
|
namespace invslot {
|
||||||
inline EQ::versions::ClientVersion GetInvSlotRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetInvSlotRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
namespace enum_ {
|
namespace enum_ {
|
||||||
enum InventorySlots : int16 {
|
enum InventorySlots : int16 {
|
||||||
@@ -186,8 +186,8 @@ namespace SteamLatest
|
|||||||
const uint64 EQUIPMENT_BITMASK = 0x00000000007FFFFF;
|
const uint64 EQUIPMENT_BITMASK = 0x00000000007FFFFF;
|
||||||
const uint64 GENERAL_BITMASK = 0x00000007FF800000;
|
const uint64 GENERAL_BITMASK = 0x00000007FF800000;
|
||||||
const uint64 CURSOR_BITMASK = 0x0000000800000000;
|
const uint64 CURSOR_BITMASK = 0x0000000800000000;
|
||||||
const uint64 POSSESSIONS_BITMASK = (EQUIPMENT_BITMASK | GENERAL_BITMASK | CURSOR_BITMASK); // based on 36-slot count (SteamLatest+)
|
const uint64 POSSESSIONS_BITMASK = (EQUIPMENT_BITMASK | GENERAL_BITMASK | CURSOR_BITMASK); // based on 36-slot count (TOB+)
|
||||||
const uint64 CORPSE_BITMASK = (GENERAL_BITMASK | CURSOR_BITMASK | (EQUIPMENT_BITMASK << 36)); // based on 36-slot count (SteamLatest+)
|
const uint64 CORPSE_BITMASK = (GENERAL_BITMASK | CURSOR_BITMASK | (EQUIPMENT_BITMASK << 36)); // based on 36-slot count (TOB+)
|
||||||
|
|
||||||
|
|
||||||
const char* GetInvPossessionsSlotName(int16 inv_slot);
|
const char* GetInvPossessionsSlotName(int16 inv_slot);
|
||||||
@@ -196,7 +196,7 @@ namespace SteamLatest
|
|||||||
} /*invslot*/
|
} /*invslot*/
|
||||||
|
|
||||||
namespace invbag {
|
namespace invbag {
|
||||||
inline EQ::versions::ClientVersion GetInvBagRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetInvBagRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
const int16 SLOT_INVALID = IINVALID;
|
const int16 SLOT_INVALID = IINVALID;
|
||||||
const int16 SLOT_BEGIN = INULL;
|
const int16 SLOT_BEGIN = INULL;
|
||||||
@@ -208,7 +208,7 @@ namespace SteamLatest
|
|||||||
} /*invbag*/
|
} /*invbag*/
|
||||||
|
|
||||||
namespace invaug {
|
namespace invaug {
|
||||||
inline EQ::versions::ClientVersion GetInvAugRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetInvAugRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
const int16 SOCKET_INVALID = IINVALID;
|
const int16 SOCKET_INVALID = IINVALID;
|
||||||
const int16 SOCKET_BEGIN = INULL;
|
const int16 SOCKET_BEGIN = INULL;
|
||||||
@@ -220,7 +220,7 @@ namespace SteamLatest
|
|||||||
} /*invaug*/
|
} /*invaug*/
|
||||||
|
|
||||||
namespace item {
|
namespace item {
|
||||||
inline EQ::versions::ClientVersion GetItemRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetItemRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
//enum Unknown : int { // looks like item class..but, RoF has it too - nothing in UF-
|
//enum Unknown : int { // looks like item class..but, RoF has it too - nothing in UF-
|
||||||
// Unknown1 = 0,
|
// Unknown1 = 0,
|
||||||
@@ -255,7 +255,7 @@ namespace SteamLatest
|
|||||||
} /*item*/
|
} /*item*/
|
||||||
|
|
||||||
namespace profile {
|
namespace profile {
|
||||||
inline EQ::versions::ClientVersion GetProfileRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetProfileRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
const int16 BANDOLIERS_SIZE = 20; // number of bandolier instances
|
const int16 BANDOLIERS_SIZE = 20; // number of bandolier instances
|
||||||
const int16 BANDOLIER_ITEM_COUNT = 4; // number of equipment slots in bandolier instance
|
const int16 BANDOLIER_ITEM_COUNT = 4; // number of equipment slots in bandolier instance
|
||||||
@@ -267,7 +267,7 @@ namespace SteamLatest
|
|||||||
} /*profile*/
|
} /*profile*/
|
||||||
|
|
||||||
namespace constants {
|
namespace constants {
|
||||||
inline EQ::versions::ClientVersion GetConstantsRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetConstantsRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
const EQ::expansions::Expansion EXPANSION = EQ::expansions::Expansion::LS;
|
const EQ::expansions::Expansion EXPANSION = EQ::expansions::Expansion::LS;
|
||||||
const uint32 EXPANSION_BIT = EQ::expansions::bitLS;
|
const uint32 EXPANSION_BIT = EQ::expansions::bitLS;
|
||||||
@@ -282,21 +282,21 @@ namespace SteamLatest
|
|||||||
} /*constants*/
|
} /*constants*/
|
||||||
|
|
||||||
namespace behavior {
|
namespace behavior {
|
||||||
inline EQ::versions::ClientVersion GetBehaviorRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetBehaviorRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
const bool CoinHasWeight = false;
|
const bool CoinHasWeight = false;
|
||||||
|
|
||||||
} /*behavior*/
|
} /*behavior*/
|
||||||
|
|
||||||
namespace skills {
|
namespace skills {
|
||||||
inline EQ::versions::ClientVersion GetSkillsRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetSkillsRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
const size_t LastUsableSkill = EQ::skills::Skill2HPiercing;
|
const size_t LastUsableSkill = EQ::skills::Skill2HPiercing;
|
||||||
|
|
||||||
} /*skills*/
|
} /*skills*/
|
||||||
|
|
||||||
namespace spells {
|
namespace spells {
|
||||||
inline EQ::versions::ClientVersion GetSkillsRef() { return EQ::versions::ClientVersion::SteamLatest; }
|
inline EQ::versions::ClientVersion GetSkillsRef() { return EQ::versions::ClientVersion::TOB; }
|
||||||
|
|
||||||
enum class CastingSlot : uint32 {
|
enum class CastingSlot : uint32 {
|
||||||
Gem1 = 0,
|
Gem1 = 0,
|
||||||
@@ -332,6 +332,6 @@ namespace SteamLatest
|
|||||||
|
|
||||||
} /*spells*/
|
} /*spells*/
|
||||||
|
|
||||||
}; /* SteamLatest */
|
}; /* TOB */
|
||||||
|
|
||||||
#endif /*COMMON_LAURION_LIMITS_H*/
|
#endif /*COMMON_LAURION_LIMITS_H*/
|
||||||
@@ -10,6 +10,7 @@ E(OP_BuffCreate)
|
|||||||
E(OP_CancelTrade)
|
E(OP_CancelTrade)
|
||||||
E(OP_CastSpell)
|
E(OP_CastSpell)
|
||||||
E(OP_ChannelMessage)
|
E(OP_ChannelMessage)
|
||||||
|
E(OP_CharacterCreateRequest)
|
||||||
E(OP_CharInventory)
|
E(OP_CharInventory)
|
||||||
E(OP_ClickObjectAction)
|
E(OP_ClickObjectAction)
|
||||||
E(OP_ClientUpdate)
|
E(OP_ClientUpdate)
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef STEAM_LATEST_STRUCTS_H_
|
#ifndef STEAM_LATEST_STRUCTS_H_
|
||||||
#define STEAM_LATEST_STRUCTS_H_
|
#define STEAM_LATEST_STRUCTS_H_
|
||||||
|
|
||||||
namespace SteamLatest {
|
namespace TOB {
|
||||||
namespace structs {
|
namespace structs {
|
||||||
// constants
|
// constants
|
||||||
static const uint32 MAX_PP_AA_ARRAY = 300;
|
static const uint32 MAX_PP_AA_ARRAY = 300;
|
||||||
@@ -94,7 +94,7 @@ namespace SteamLatest {
|
|||||||
|
|
||||||
struct ExpansionInfo_Struct {
|
struct ExpansionInfo_Struct {
|
||||||
/*000*/ char Unknown000[64];
|
/*000*/ char Unknown000[64];
|
||||||
/*064*/ uint32 Expansions;
|
/*064*/ uint64 Expansions;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -181,7 +181,7 @@ namespace SteamLatest {
|
|||||||
/*000*/ uint32 CharCount; //number of chars in this packet
|
/*000*/ uint32 CharCount; //number of chars in this packet
|
||||||
};
|
};
|
||||||
|
|
||||||
enum SteamLatestAppearance : uint32
|
enum TOBAppearance : uint32
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
WhoLevel,
|
WhoLevel,
|
||||||
@@ -399,7 +399,7 @@ namespace SteamLatest {
|
|||||||
struct EnterWorld_Struct {
|
struct EnterWorld_Struct {
|
||||||
/*000*/ char name[64];
|
/*000*/ char name[64];
|
||||||
/*064*/ int32 unknown1;
|
/*064*/ int32 unknown1;
|
||||||
/*068*/ int32 unknown2; //steam_latest handles these differently so for now im just going to ignore them till i figure it out
|
/*068*/ int32 unknown2; //tob handles these differently so for now im just going to ignore them till i figure it out
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ZoneChange_Struct {
|
struct ZoneChange_Struct {
|
||||||
@@ -1011,9 +1011,28 @@ namespace SteamLatest {
|
|||||||
/*007*/ uint8 unknown007; // seen 0
|
/*007*/ uint8 unknown007; // seen 0
|
||||||
/*008*/
|
/*008*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Structs used in OP_CharacterCreateRequest
|
||||||
|
*/
|
||||||
|
struct RaceClassAllocation {
|
||||||
|
uint32 Index;
|
||||||
|
uint32 BaseStats[7];
|
||||||
|
uint32 DefaultPointAllocation[7];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RaceClassCombos {
|
||||||
|
uint64 ExpansionRequired;
|
||||||
|
uint32 Race;
|
||||||
|
uint32 Class;
|
||||||
|
uint32 Deity;
|
||||||
|
uint32 AllocationIndex;
|
||||||
|
uint32 Zone;
|
||||||
|
};
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
}; //end namespace structs
|
}; //end namespace structs
|
||||||
}; //end namespace steam_latest
|
}; //end namespace tob
|
||||||
|
|
||||||
#endif /*LAURION_STRUCTS_H_*/
|
#endif /*LAURION_STRUCTS_H_*/
|
||||||
@@ -362,14 +362,14 @@ void Client::SendFailedLogin()
|
|||||||
m_stored_username.clear();
|
m_stored_username.clear();
|
||||||
m_stored_password.clear();
|
m_stored_password.clear();
|
||||||
|
|
||||||
if (m_client_version == cv_steam_latest) {
|
if (m_client_version == cv_tob) {
|
||||||
// unencrypted
|
// unencrypted
|
||||||
LoginBaseMessage h{};
|
LoginBaseMessage h{};
|
||||||
h.sequence = m_login_base_message.sequence; // login (3)
|
h.sequence = m_login_base_message.sequence; // login (3)
|
||||||
h.encrypt_type = m_login_base_message.encrypt_type;
|
h.encrypt_type = m_login_base_message.encrypt_type;
|
||||||
|
|
||||||
// encrypted
|
// encrypted
|
||||||
PlayerLoginReplySteamLatest r{};
|
PlayerLoginReplyTOB r{};
|
||||||
r.base_reply.success = false;
|
r.base_reply.success = false;
|
||||||
r.base_reply.error_str_id = 105; // Error - The username and/or password were not valid
|
r.base_reply.error_str_id = 105; // Error - The username and/or password were not valid
|
||||||
|
|
||||||
@@ -496,7 +496,7 @@ void Client::DoSuccessfulLogin(LoginAccountsRepository::LoginAccounts &a)
|
|||||||
m_account_name = a.account_name;
|
m_account_name = a.account_name;
|
||||||
m_loginserver_name = a.source_loginserver;
|
m_loginserver_name = a.source_loginserver;
|
||||||
|
|
||||||
if (m_client_version == cv_steam_latest) {
|
if (m_client_version == cv_tob) {
|
||||||
// unencrypted
|
// unencrypted
|
||||||
LoginBaseMessage h{};
|
LoginBaseMessage h{};
|
||||||
h.sequence = m_login_base_message.sequence;
|
h.sequence = m_login_base_message.sequence;
|
||||||
@@ -505,7 +505,7 @@ void Client::DoSuccessfulLogin(LoginAccountsRepository::LoginAccounts &a)
|
|||||||
h.unk3 = m_login_base_message.unk3;
|
h.unk3 = m_login_base_message.unk3;
|
||||||
|
|
||||||
// not serializing any of the variable length strings so just use struct directly
|
// not serializing any of the variable length strings so just use struct directly
|
||||||
PlayerLoginReplySteamLatest r{};
|
PlayerLoginReplyTOB r{};
|
||||||
r.base_reply.success = true;
|
r.base_reply.success = true;
|
||||||
r.base_reply.error_str_id = 101; // No Error
|
r.base_reply.error_str_id = 101; // No Error
|
||||||
r.unk1 = 0;
|
r.unk1 = 0;
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ void CheckSoDOpcodeFile(const std::string &path)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckSteamLatestOpcodeFile(const std::string &path)
|
void CheckTOBOpcodeFile(const std::string &path)
|
||||||
{
|
{
|
||||||
if (File::Exists(path)) {
|
if (File::Exists(path)) {
|
||||||
return;
|
return;
|
||||||
@@ -177,31 +177,31 @@ ClientManager::ClientManager()
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
int steam_latest_port = server.config.GetVariableInt("client_configuration", "steam_latest_port", 15900);
|
int tob_port = server.config.GetVariableInt("client_configuration", "tob_port", 15900);
|
||||||
|
|
||||||
EQStreamManagerInterfaceOptions steam_latest_opts(steam_latest_port, false, false);
|
EQStreamManagerInterfaceOptions tob_opts(tob_port, false, false);
|
||||||
|
|
||||||
m_steam_latest_stream = new EQ::Net::EQStreamManager(steam_latest_opts);
|
m_tob_stream = new EQ::Net::EQStreamManager(tob_opts);
|
||||||
m_steam_latest_ops = new RegularOpcodeManager;
|
m_tob_ops = new RegularOpcodeManager;
|
||||||
|
|
||||||
opcodes_path = fmt::format(
|
opcodes_path = fmt::format(
|
||||||
"{}/{}",
|
"{}/{}",
|
||||||
PathManager::Instance()->GetOpcodePath(),
|
PathManager::Instance()->GetOpcodePath(),
|
||||||
"login_opcodes_steam_latest.conf"
|
"login_opcodes_tob.conf"
|
||||||
);
|
);
|
||||||
|
|
||||||
CheckSteamLatestOpcodeFile(opcodes_path);
|
CheckTOBOpcodeFile(opcodes_path);
|
||||||
|
|
||||||
if (!m_steam_latest_ops->LoadOpcodes(opcodes_path.c_str())) {
|
if (!m_tob_ops->LoadOpcodes(opcodes_path.c_str())) {
|
||||||
LogError(
|
LogError(
|
||||||
"ClientManager fatal error: couldn't load opcodes for Steam Latest file [{}]",
|
"ClientManager fatal error: couldn't load opcodes for Steam Latest file [{}]",
|
||||||
server.config.GetVariableString("client_configuration", "steam_latest_opcodes", "login_opcodes.conf")
|
server.config.GetVariableString("client_configuration", "tob_opcodes", "login_opcodes.conf")
|
||||||
);
|
);
|
||||||
|
|
||||||
run_server = false;
|
run_server = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_steam_latest_stream->OnNewConnection(
|
m_tob_stream->OnNewConnection(
|
||||||
[this](std::shared_ptr<EQ::Net::EQStream> stream) {
|
[this](std::shared_ptr<EQ::Net::EQStream> stream) {
|
||||||
LogInfo(
|
LogInfo(
|
||||||
"New Steam Latest client connection from [{}:{}]",
|
"New Steam Latest client connection from [{}:{}]",
|
||||||
@@ -209,8 +209,8 @@ ClientManager::ClientManager()
|
|||||||
stream->GetRemotePort()
|
stream->GetRemotePort()
|
||||||
);
|
);
|
||||||
|
|
||||||
stream->SetOpcodeManager(&m_steam_latest_ops);
|
stream->SetOpcodeManager(&m_tob_ops);
|
||||||
Client *c = new Client(stream, cv_steam_latest);
|
Client *c = new Client(stream, cv_tob);
|
||||||
m_clients.push_back(c);
|
m_clients.push_back(c);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -37,6 +37,6 @@ private:
|
|||||||
EQ::Net::EQStreamManager *m_titanium_stream;
|
EQ::Net::EQStreamManager *m_titanium_stream;
|
||||||
OpcodeManager *m_sod_ops;
|
OpcodeManager *m_sod_ops;
|
||||||
EQ::Net::EQStreamManager *m_sod_stream;
|
EQ::Net::EQStreamManager *m_sod_stream;
|
||||||
OpcodeManager *m_steam_latest_ops;
|
OpcodeManager *m_tob_ops;
|
||||||
EQ::Net::EQStreamManager *m_steam_latest_stream;
|
EQ::Net::EQStreamManager *m_tob_stream;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ struct PlayerLoginReply {
|
|||||||
char unknown[1]; // variable length, password unlikely? client doesn't send this on re-login from char select
|
char unknown[1]; // variable length, password unlikely? client doesn't send this on re-login from char select
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PlayerLoginReplySteamLatest
|
struct PlayerLoginReplyTOB
|
||||||
{
|
{
|
||||||
LoginBaseReplyMessage base_reply;
|
LoginBaseReplyMessage base_reply;
|
||||||
int8_t unk1; // (default: 0)
|
int8_t unk1; // (default: 0)
|
||||||
@@ -126,7 +126,7 @@ struct SystemFingerprint {
|
|||||||
enum LSClientVersion {
|
enum LSClientVersion {
|
||||||
cv_titanium,
|
cv_titanium,
|
||||||
cv_sod,
|
cv_sod,
|
||||||
cv_steam_latest
|
cv_tob
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LSClientStatus {
|
enum LSClientStatus {
|
||||||
|
|||||||
@@ -706,7 +706,7 @@ bool WorldServer::ValidateWorldServerAdminLogin(
|
|||||||
|
|
||||||
void WorldServer::SerializeForClientServerList(SerializeBuffer &out, bool use_local_ip, LSClientVersion version) const
|
void WorldServer::SerializeForClientServerList(SerializeBuffer &out, bool use_local_ip, LSClientVersion version) const
|
||||||
{
|
{
|
||||||
if (version == cv_steam_latest) {
|
if (version == cv_tob) {
|
||||||
if (use_local_ip) {
|
if (use_local_ip) {
|
||||||
out.WriteString(GetLocalIP());
|
out.WriteString(GetLocalIP());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,5 +24,5 @@ if __name__ == "__main__":
|
|||||||
patch_template(
|
patch_template(
|
||||||
template_path='opcode.template',
|
template_path='opcode.template',
|
||||||
opcodes_path='opcodes.csv',
|
opcodes_path='opcodes.csv',
|
||||||
output_path='patch_SteamLatest.conf'
|
output_path='patch_TOB.conf'
|
||||||
)
|
)
|
||||||
+1
-1
@@ -1223,7 +1223,7 @@ bool Client::Process() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(connect.Check()){
|
if(connect.Check()){
|
||||||
if (!(m_ClientVersionBit & EQ::versions::maskSteamLatestAndLater)) {
|
if (!(m_ClientVersionBit & EQ::versions::maskTOBAndLater)) {
|
||||||
SendGuildList();// Send OPCode: OP_GuildsList
|
SendGuildList();// Send OPCode: OP_GuildsList
|
||||||
SendApproveWorld();
|
SendApproveWorld();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -9159,7 +9159,7 @@ void Client::SendHPUpdateMarquee(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Client::SendMembership() {
|
void Client::SendMembership() {
|
||||||
if (m_ClientVersion >= EQ::versions::ClientVersion::SteamLatest) {
|
if (m_ClientVersion >= EQ::versions::ClientVersion::TOB) {
|
||||||
auto outapp = new EQApplicationPacket(OP_SendMembership, sizeof(Membership_Struct));
|
auto outapp = new EQApplicationPacket(OP_SendMembership, sizeof(Membership_Struct));
|
||||||
Membership_Struct* mc = (Membership_Struct*)outapp->pBuffer;
|
Membership_Struct* mc = (Membership_Struct*)outapp->pBuffer;
|
||||||
|
|
||||||
|
|||||||
@@ -4261,7 +4261,7 @@ void Client::Handle_OP_Camp(const EQApplicationPacket *app)
|
|||||||
if (IsLFP())
|
if (IsLFP())
|
||||||
worldserver.StopLFP(CharacterID());
|
worldserver.StopLFP(CharacterID());
|
||||||
|
|
||||||
if (ClientVersion() >= EQ::versions::ClientVersion::SteamLatest) {
|
if (ClientVersion() >= EQ::versions::ClientVersion::TOB) {
|
||||||
if (!GetGM()) {
|
if (!GetGM()) {
|
||||||
camp_timer.Start(29000, true);
|
camp_timer.Start(29000, true);
|
||||||
}
|
}
|
||||||
@@ -14561,7 +14561,7 @@ void Client::Handle_OP_ShopRequest(const EQApplicationPacket *app)
|
|||||||
mco->rate = 1 / buy_cost_mod;
|
mco->rate = 1 / buy_cost_mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_ClientVersion >= EQ::versions::ClientVersion::SteamLatest) {
|
if (m_ClientVersion >= EQ::versions::ClientVersion::TOB) {
|
||||||
mco->player_id = GetID();
|
mco->player_id = GetID();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user