The RoF2 client is now enabled by default. It is almost caught up to RoF Client compatibility.

This commit is contained in:
Trevius 2014-12-06 14:38:34 -06:00
parent 60563aead6
commit 97a34b5793
9 changed files with 61 additions and 42 deletions

View File

@ -17,8 +17,7 @@ void RegisterAllPatches(EQStreamIdentifier &into) {
SoD::Register(into);
Underfoot::Register(into);
RoF::Register(into);
// Uncomment the line below to enable RoF2 Client
//RoF2::Register(into);
RoF2::Register(into);
}
void ReloadAllPatches() {
@ -28,6 +27,5 @@ void ReloadAllPatches() {
SoD::Reload();
Underfoot::Reload();
RoF::Reload();
// Uncomment the line below to enable RoF2 Client
//RoF2::Reload();
RoF2::Reload();
}

View File

@ -2045,15 +2045,6 @@ namespace RoF2
outapp->WriteUInt32(emu->skills[r]);
}
// deprecated
// Write zeroes for the rest of the skills
/*
for(uint32 r = 0; r < structs::MAX_PP_SKILL - MAX_PP_SKILL; r++)
{
outapp->WriteUInt32(emu->skills[r]);
}
*/
outapp->WriteUInt32(25); // Unknown count
for (uint32 r = 0; r < 25; r++)
@ -2334,7 +2325,6 @@ namespace RoF2
outapp->WriteUInt8(emu->pvp);
outapp->WriteUInt8(0); // Unknown
outapp->WriteUInt8(emu->gm);
outapp->WriteUInt32(emu->guild_id);
outapp->WriteUInt8(0); // Unknown - observed 1 in a live packet.
outapp->WriteUInt32(0); // Unknown - observed 1 in a live packet.
@ -2349,6 +2339,7 @@ namespace RoF2
outapp->WriteUInt32(emu->silver_bank);
outapp->WriteUInt32(emu->copper_bank);
// Commenting out for RoF Test
outapp->WriteUInt32(0); // Unknown
outapp->WriteUInt32(0); // Unknown
outapp->WriteUInt32(0); // Unknown
@ -2396,6 +2387,13 @@ namespace RoF2
outapp->WriteUInt32(0); // Unknown
outapp->WriteUInt32(0); // Unknown
/*
// Begin RoF2 Test
for (uint32 r = 0; r < 1000; r++)
outapp->WriteUInt8(0); // Unknown
// End RoF2 Test
// Block of 121 unknown bytes
for (uint32 r = 0; r < 121; r++)
outapp->WriteUInt8(0); // Unknown
@ -2537,6 +2535,8 @@ namespace RoF2
outapp->WriteUInt32(0); // Unknown
outapp->WriteUInt32(0); // Unknown
*/
outapp->WriteUInt8(emu->groupAutoconsent);
outapp->WriteUInt8(emu->raidAutoconsent);
outapp->WriteUInt8(emu->guildAutoconsent);

View File

@ -1205,7 +1205,7 @@ union
/*00000*/ uint8 unknown_rof52[82]; //
/*00000*/ uint32 unknown_rof53; // Seen 50
uint8 unknown_rof54[1325]; // Unknown Section
/*00000*/ uint8 unknown_rof54[1325]; // Unknown Section
// Bottom of Struct:
/*00000*/ uint8 groupAutoconsent; // 0=off, 1=on
@ -2833,8 +2833,8 @@ struct Door_Struct
/*0085*/ uint8 unknown0085; // seen 1 or 0 or rarely 2C or 90 or ED or 2D or A1
/*0086*/ uint8 unknown0086; // seen 0 or rarely FF or FE or 10 or 5A or 82
/*0087*/ uint8 unknown0087; // seen 0 or rarely 02 or 7C
/*0088*/ uint8 unknown0088[8]; // mostly 0s, the last 3 bytes are something tho
/*0096*/
/*0088*/ uint8 unknown0088[12]; // mostly 0s, the last 3 bytes are something tho
/*0100*/
};
struct DoorSpawns_Struct {

View File

@ -297,7 +297,7 @@ OP_DelegateAbility=0x76b8
OP_SetGroupTarget=0x2814
OP_Charm=0x5d92
OP_Stun=0x36a4
OP_SendFindableNPCs=0x7e62
OP_SendFindableNPCs=0x4613
OP_FindPersonRequest=0x5cea
OP_FindPersonReply=0x7e58
OP_Sound=0x1a30
@ -308,7 +308,7 @@ OP_Sacrifice=0x1821
OP_PopupResponse=0x08a6
OP_OnLevelMessage=0x4d6e
OP_AugmentInfo=0x0afb
OP_Petition=0x3de3
OP_Petition=0x1901
OP_SomeItemPacketMaybe=0x747c
OP_PVPStats=0x4b15
OP_PVPLeaderBoardRequest=0x04aa
@ -334,13 +334,13 @@ OP_NPCMoveUpdate=0x5892
OP_CameraEffect=0x127f
OP_SpellEffect=0x5936
OP_RemoveNimbusEffect=0x7b1e
OP_AltCurrency=0x62ab
OP_AltCurrencyMerchantRequest=0x61cb
OP_AltCurrencyMerchantReply=0x5409
OP_AltCurrencyPurchase=0x0165
OP_AltCurrencySell=0x74ec
OP_AltCurrencySellSelection=0x3788
OP_AltCurrencyReclaim=0x3899
OP_AltCurrency=0x6b6d
OP_AltCurrencyMerchantRequest=0x5409
OP_AltCurrencyMerchantReply=0x27a2
OP_AltCurrencyPurchase=0x3788
OP_AltCurrencySell=0x40b6
OP_AltCurrencySellSelection=0x532a
OP_AltCurrencyReclaim=0x0339
OP_CrystalCountUpdate=0x467f
OP_CrystalCreate=0x7aee
OP_CrystalReclaim=0x2439
@ -368,7 +368,7 @@ OP_DzLeaderStatus=0x32f0
OP_DzExpeditionEndsWarning=0x7e94
OP_DzMemberList=0x3de9
OP_DzCompass=0x3e0e
OP_DzChooseZone=0x0000
OP_DzChooseZone=0x0b7d
# New Opcodes
OP_SpawnPositionUpdate=0x0000 # Actually OP_MobUpdate ?
@ -585,7 +585,7 @@ OP_LoginComplete=0x0000
# discovered opcodes not yet used:
OP_PickLockSuccess=0x0000
OP_PlayMP3=0x0000
OP_PlayMP3=0x5770
OP_ReclaimCrystals=0x0000
OP_DynamicWall=0x0000
OP_OpenDiscordMerchant=0x0000

View File

@ -1,3 +1,3 @@
# Input and Output txt and conf files.
# Input and Output txt and conf files
*.txt
*.conf

View File

@ -6,11 +6,12 @@
# Directions to use this script:
# 1. Copy the opcodes and opcode names columns from the opcode spreadsheet
# for the columns you want to create a new .conf file from into the file.
# 2. Remove the header row entries in the newly created text file and save it.
# 3. Paste the contents of the current patch file in the patch_OLD.conf file.
# 4. Run this script using "perl oplist_to_conf.pl"
# 5. This creates a new .conf file named patch_NEW.conf
# 6. Rename patch_NEW.conf to the desired name and you are all done
# 2. Remove the header row entries in the text file.
# 3. Find/Replace all Tabs " " with 2 spaces " " and save the file.
# 4. Paste the contents of the current patch file in the patch_OLD.conf file.
# 5. Run this script using "perl oplist_to_conf.pl"
# 6. This creates a new .conf file named patch_NEW.conf
# 7. Rename patch_NEW.conf to the desired name and you are all done
$stopmessage = "Failed to open file";

View File

@ -223,7 +223,7 @@ void Client::SendMembership() {
mc->entries[1] = 0xffffffff; // Max Level Restriction
mc->entries[2] = 0xffffffff; // Max Char Slots per Account (not used by client?)
mc->entries[3] = 0xffffffff; // 1 for Silver
mc->entries[4] = 8; // Main Inventory Size (0xffffffff on Live for Gold, but limitting to 8 until 10 is supported)
mc->entries[4] = 8; // Main Inventory Size (0xffffffff on Live for Gold, but limiting to 8 until 10 is supported)
mc->entries[5] = 0xffffffff; // Max Platinum per level
mc->entries[6] = 1; // 0 for Silver
mc->entries[7] = 1; // 0 for Silver

View File

@ -1032,7 +1032,25 @@ bool Client::MakeItemLink(char* &ret_link, const ItemInst *inst) {
uint8 evolvedlevel = 0;
int hash = 0;
//int hash = GetItemLinkHash(inst); //eventually this will work (currently crashes zone), but for now we'll skip the extra overhead
if (GetClientVersion() >= EQClientRoF)
if (GetClientVersion() >= EQClientRoF2)
{
MakeAnyLenString(&ret_link, "%1X" "%05X" "%05X" "%05X" "%05X" "%05X" "%05X" "%05X" "%01X" "%1X" "%04X" "%1X" "%05X" "%08X",
0,
item->ID,
inst->GetAugmentItemID(0),
inst->GetAugmentItemID(1),
inst->GetAugmentItemID(2),
inst->GetAugmentItemID(3),
inst->GetAugmentItemID(4),
inst->GetAugmentItemID(5),
evolving,
loregroup,
evolvedlevel,
0,
hash
);
}
else if (GetClientVersion() >= EQClientRoF)
{
MakeAnyLenString(&ret_link, "%1X" "%05X" "%05X" "%05X" "%05X" "%05X" "%05X" "%05X" "%1X" "%04X" "%1X" "%05X" "%08X",
0,

View File

@ -2658,14 +2658,16 @@ const char* QuestManager::saylink(char* Phrase, bool silent, const char* LinkNam
char linktext[250];
if (initiator) {
if (initiator->GetClientVersion() >= EQClientRoF)
sprintf(linktext,"%c%06X%s%s%c",0x12,sayid,"0000000000000000000000000000000000000000000000000",LinkName,0x12);
if (initiator->GetClientVersion() >= EQClientRoF2)
sprintf(linktext, "%c%06X%s%s%c", 0x12, sayid, "00000000000000000000000000000000000000000000000000", LinkName, 0x12);
else if (initiator->GetClientVersion() >= EQClientRoF)
sprintf(linktext, "%c%06X%s%s%c", 0x12, sayid, "0000000000000000000000000000000000000000000000000", LinkName, 0x12);
else if (initiator->GetClientVersion() >= EQClientSoF)
sprintf(linktext,"%c%06X%s%s%c",0x12,sayid,"00000000000000000000000000000000000000000000",LinkName,0x12);
sprintf(linktext, "%c%06X%s%s%c", 0x12, sayid, "00000000000000000000000000000000000000000000", LinkName, 0x12);
else
sprintf(linktext,"%c%06X%s%s%c",0x12,sayid,"000000000000000000000000000000000000000",LinkName,0x12);
} else { // If no initiator, create an RoF saylink, since older clients handle RoF ones better than RoF handles older ones.
sprintf(linktext,"%c%06X%s%s%c",0x12,sayid,"0000000000000000000000000000000000000000000000000",LinkName,0x12);
sprintf(linktext, "%c%06X%s%s%c", 0x12, sayid, "000000000000000000000000000000000000000", LinkName, 0x12);
} else { // If no initiator, create an RoF2 saylink, since older clients handle RoF2 ones better than RoF2 handles older ones.
sprintf(linktext, "%c%06X%s%s%c", 0x12, sayid, "00000000000000000000000000000000000000000000000000", LinkName, 0x12);
}
strcpy(Phrase,linktext);