Merge remote-tracking branch 'upstream/master'

Conflicts:
	changelog.txt
This commit is contained in:
Paul Coene 2015-02-23 19:11:35 -05:00
commit 180c4c3286
8 changed files with 20 additions and 16 deletions

View File

@ -8,6 +8,8 @@ every time a char enters a zone.
Also added rules to not ignore, but rather forrce sense heading packets to be Also added rules to not ignore, but rather forrce sense heading packets to be
used to train it instead of maxing it out like before. used to train it instead of maxing it out like before.
Uleat: Fix for RoF+ clients showing active 'Return Home' button when action is not available (swapped 'GoHome' and 'Enabled' fields in RoF-era CharacterSelectEntry structs)
== 02/21/2015 == == 02/21/2015 ==
Noudess: Starting erudites that were supposed to start in paineel were landing in erudin on Titanium. Fixed to be paineel. Noudess: Starting erudites that were supposed to start in paineel were landing in erudin on Titanium. Fixed to be paineel.

View File

@ -158,6 +158,7 @@ struct CharSelectEquip
Color_Struct Color; Color_Struct Color;
}; };
// RoF2-based hybrid struct
struct CharacterSelectEntry_Struct struct CharacterSelectEntry_Struct
{ {
char Name[64]; char Name[64];
@ -184,11 +185,11 @@ struct CharacterSelectEntry_Struct
uint8 EyeColor2; uint8 EyeColor2;
uint8 HairStyle; uint8 HairStyle;
uint8 Beard; uint8 Beard;
uint8 Enabled; uint8 GoHome; // Seen 0 for new char and 1 for existing
uint8 Tutorial; // Seen 1 for new char or 0 for existing uint8 Tutorial; // Seen 1 for new char or 0 for existing
uint32 DrakkinHeritage; uint32 DrakkinHeritage;
uint8 Unknown1; // Seen 0 uint8 Unknown1; // Seen 0
uint8 GoHome; // Seen 0 for new char and 1 for existing uint8 Enabled; // Originally labeled as 'CharEnabled' - unknown purpose and setting -U
uint32 LastLogin; uint32 LastLogin;
uint8 Unknown2; // Seen 0 uint8 Unknown2; // Seen 0
}; };

View File

@ -2982,11 +2982,11 @@ namespace RoF
eq_cse->EyeColor2 = emu_cse->EyeColor2; eq_cse->EyeColor2 = emu_cse->EyeColor2;
eq_cse->HairStyle = emu_cse->HairStyle; eq_cse->HairStyle = emu_cse->HairStyle;
eq_cse->Beard = emu_cse->Beard; eq_cse->Beard = emu_cse->Beard;
eq_cse->Enabled = emu_cse->Enabled; eq_cse->GoHome = emu_cse->GoHome;
eq_cse->Tutorial = emu_cse->Tutorial; eq_cse->Tutorial = emu_cse->Tutorial;
eq_cse->DrakkinHeritage = emu_cse->DrakkinHeritage; eq_cse->DrakkinHeritage = emu_cse->DrakkinHeritage;
eq_cse->Unknown1 = emu_cse->Unknown1; eq_cse->Unknown1 = emu_cse->Unknown1;
eq_cse->GoHome = emu_cse->GoHome; eq_cse->Enabled = emu_cse->Enabled;
eq_cse->LastLogin = emu_cse->LastLogin; eq_cse->LastLogin = emu_cse->LastLogin;
eq_cse->Unknown2 = emu_cse->Unknown2; eq_cse->Unknown2 = emu_cse->Unknown2;

View File

@ -3066,11 +3066,11 @@ namespace RoF2
eq_cse->EyeColor2 = emu_cse->EyeColor2; eq_cse->EyeColor2 = emu_cse->EyeColor2;
eq_cse->HairStyle = emu_cse->HairStyle; eq_cse->HairStyle = emu_cse->HairStyle;
eq_cse->Beard = emu_cse->Beard; eq_cse->Beard = emu_cse->Beard;
eq_cse->Enabled = emu_cse->Enabled; eq_cse->GoHome = emu_cse->GoHome;
eq_cse->Tutorial = emu_cse->Tutorial; eq_cse->Tutorial = emu_cse->Tutorial;
eq_cse->DrakkinHeritage = emu_cse->DrakkinHeritage; eq_cse->DrakkinHeritage = emu_cse->DrakkinHeritage;
eq_cse->Unknown1 = emu_cse->Unknown1; eq_cse->Unknown1 = emu_cse->Unknown1;
eq_cse->GoHome = emu_cse->GoHome; eq_cse->Enabled = emu_cse->Enabled;
eq_cse->LastLogin = emu_cse->LastLogin; eq_cse->LastLogin = emu_cse->LastLogin;
eq_cse->Unknown2 = emu_cse->Unknown2; eq_cse->Unknown2 = emu_cse->Unknown2;

View File

@ -189,11 +189,11 @@ struct CharacterSelectEntry_Struct
/*0000*/ uint8 EyeColor2; /*0000*/ uint8 EyeColor2;
/*0000*/ uint8 HairStyle; /*0000*/ uint8 HairStyle;
/*0000*/ uint8 Beard; /*0000*/ uint8 Beard;
/*0000*/ uint8 Enabled; /*0000*/ uint8 GoHome; // Seen 0 for new char and 1 for existing
/*0000*/ uint8 Tutorial; // Seen 1 for new char or 0 for existing /*0000*/ uint8 Tutorial; // Seen 1 for new char or 0 for existing
/*0000*/ uint32 DrakkinHeritage; /*0000*/ uint32 DrakkinHeritage;
/*0000*/ uint8 Unknown1; // Seen 0 /*0000*/ uint8 Unknown1; // Seen 0
/*0000*/ uint8 GoHome; // Seen 0 for new char and 1 for existing /*0000*/ uint8 Enabled; // Swapped position with 'GoHome' 02/23/2015 -U
/*0000*/ uint32 LastLogin; /*0000*/ uint32 LastLogin;
/*0000*/ uint8 Unknown2; // Seen 0 /*0000*/ uint8 Unknown2; // Seen 0
}; };

View File

@ -189,11 +189,11 @@ struct CharacterSelectEntry_Struct
/*0000*/ uint8 EyeColor2; /*0000*/ uint8 EyeColor2;
/*0000*/ uint8 HairStyle; /*0000*/ uint8 HairStyle;
/*0000*/ uint8 Beard; /*0000*/ uint8 Beard;
/*0000*/ uint8 Enabled; /*0000*/ uint8 GoHome; // Seen 0 for new char and 1 for existing
/*0000*/ uint8 Tutorial; // Seen 1 for new char or 0 for existing /*0000*/ uint8 Tutorial; // Seen 1 for new char or 0 for existing
/*0000*/ uint32 DrakkinHeritage; /*0000*/ uint32 DrakkinHeritage;
/*0000*/ uint8 Unknown1; // Seen 0 /*0000*/ uint8 Unknown1; // Seen 0
/*0000*/ uint8 GoHome; // Seen 0 for new char and 1 for existing /*0000*/ uint8 Enabled; // Swapped position with 'GoHome' 02/23/2015 -U
/*0000*/ uint32 LastLogin; /*0000*/ uint32 LastLogin;
/*0000*/ uint8 Unknown2; // Seen 0 /*0000*/ uint8 Unknown2; // Seen 0
}; };

View File

@ -720,6 +720,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
} }
// This can probably be moved outside and have another method return requested info (don't forget to remove the #include "../common/shareddb.h" above) // This can probably be moved outside and have another method return requested info (don't forget to remove the #include "../common/shareddb.h" above)
// (This is a literal translation of the original process..I don't see why it can't be changed to a single-target query over account iteration -U)
if (!pZoning) { if (!pZoning) {
size_t character_limit = EQLimits::CharacterCreationLimit(eqs->GetClientVersion()); size_t character_limit = EQLimits::CharacterCreationLimit(eqs->GetClientVersion());
if (character_limit > EmuConstants::CHARACTER_CREATION_LIMIT) { character_limit = EmuConstants::CHARACTER_CREATION_LIMIT; } if (character_limit > EmuConstants::CHARACTER_CREATION_LIMIT) { character_limit = EmuConstants::CHARACTER_CREATION_LIMIT; }

View File

@ -138,25 +138,25 @@ void WorldDatabase::GetCharSelectInfo(uint32 accountID, EQApplicationPacket **ou
cse->EyeColor2 = (uint8)atoi(row[12]); cse->EyeColor2 = (uint8)atoi(row[12]);
cse->HairStyle = (uint8)atoi(row[13]); cse->HairStyle = (uint8)atoi(row[13]);
cse->Beard = (uint8)atoi(row[14]); cse->Beard = (uint8)atoi(row[14]);
cse->Enabled = 1; cse->GoHome = 0; // Processed Below
cse->Tutorial = 0; // Processed Below cse->Tutorial = 0; // Processed Below
cse->DrakkinHeritage = (uint32)atoi(row[16]); cse->DrakkinHeritage = (uint32)atoi(row[16]);
cse->Unknown1 = 0; cse->Unknown1 = 0;
cse->GoHome = 0; // Processed Below cse->Enabled = 1;
cse->LastLogin = (uint32)atoi(row[7]); // RoF2 value: 1212696584 cse->LastLogin = (uint32)atoi(row[7]); // RoF2 value: 1212696584
cse->Unknown2 = 0; cse->Unknown2 = 0;
/* Fill End */ /* Fill End */
if (RuleB(World, EnableTutorialButton) && (cse->Level <= RuleI(World, MaxLevelForTutorial))) {
cse->Tutorial = 1;
}
if (RuleB(World, EnableReturnHomeButton)) { if (RuleB(World, EnableReturnHomeButton)) {
int now = time(nullptr); int now = time(nullptr);
if ((now - atoi(row[7])) >= RuleI(World, MinOfflineTimeToReturnHome)) if ((now - atoi(row[7])) >= RuleI(World, MinOfflineTimeToReturnHome))
cse->GoHome = 1; cse->GoHome = 1;
} }
if (RuleB(World, EnableTutorialButton) && (cse->Level <= RuleI(World, MaxLevelForTutorial))) {
cse->Tutorial = 1;
}
/* Set Bind Point Data for any character that may possibly be missing it for any reason */ /* Set Bind Point Data for any character that may possibly be missing it for any reason */
cquery = StringFormat("SELECT `zone_id`, `instance_id`, `x`, `y`, `z`, `heading`, `is_home` FROM `character_bind` WHERE `id` = %i LIMIT 2", character_id); cquery = StringFormat("SELECT `zone_id`, `instance_id`, `x`, `y`, `z`, `heading`, `is_home` FROM `character_bind` WHERE `id` = %i LIMIT 2", character_id);
auto results_bind = database.QueryDatabase(cquery); auto results_bind = database.QueryDatabase(cquery);