Added Pre-boat Lore narration (books) to the Boat Tutorial zone.
This commit is contained in:
parent
e486b1acc9
commit
c61588803c
5 changed files with 193 additions and 7 deletions
EQ2/source/WorldServer
server
|
@ -254,6 +254,8 @@ void MasterAAList::DisplayAA(Client* client,int8 newtemplate,int8 changemode) {
|
|||
vector<TreeNodeData*>::iterator itr_tree3;
|
||||
map <int8, vector<TreeNodeData*> > Nodes;
|
||||
vector<TreeNodeData*> TreeNodeList = master_tree_nodes.GetTreeNodes();
|
||||
if (TreeNodeList.size() == 0)
|
||||
return;
|
||||
vector<vector<vector<AAEntry> > > AAEntryList ;
|
||||
Query query;
|
||||
MYSQL_ROW row;
|
||||
|
|
|
@ -4925,6 +4925,113 @@ int16 ZoneServer::SetSpawnTargetable(int32 spawn_id){
|
|||
return ret_val;
|
||||
}
|
||||
|
||||
ZoneInfoSlideStruct* ZoneServer::GenerateSlideStruct(float unknown1a, float unknown1b, int32 unknown2a, int32 unknown2b, int32 unknown3, int32 unknown4, const char* slide, const char* voiceover, int32 key1, int32 key2) {
|
||||
ZoneInfoSlideStructInfo* info = new ZoneInfoSlideStructInfo();
|
||||
memset(info, 0, sizeof(ZoneInfoSlideStructInfo));
|
||||
info->unknown1[0] = unknown1a;
|
||||
info->unknown1[1] = unknown1b;
|
||||
info->unknown2[0] = unknown2a;
|
||||
info->unknown2[1] = unknown2b;
|
||||
info->unknown3 = unknown3;
|
||||
info->unknown4 = unknown4;
|
||||
int8 length = strlen(slide);
|
||||
if (length >= 128)
|
||||
length = 127;
|
||||
strncpy(info->slide, slide, length);
|
||||
length = strlen(voiceover);
|
||||
if (length >= 128)
|
||||
length = 127;
|
||||
strncpy(info->voiceover, voiceover, length);
|
||||
info->key1 = key1;
|
||||
info->key2 = key2;
|
||||
ZoneInfoSlideStruct* ret = new ZoneInfoSlideStruct();
|
||||
ret->info = info;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ZoneServer::AddZoneInfoSlideStructTransitionInfo(ZoneInfoSlideStruct* info, int32 x, int32 y, float zoom, float transition_time) {
|
||||
ZoneInfoSlideStructTransitionInfo* transition_info = new ZoneInfoSlideStructTransitionInfo();
|
||||
transition_info->transition_x = x;
|
||||
transition_info->transition_y = y;
|
||||
transition_info->transition_zoom = zoom;
|
||||
transition_info->transition_time = transition_time;
|
||||
info->slide_transition_info.push_back(transition_info);
|
||||
}
|
||||
|
||||
vector<ZoneInfoSlideStruct*>* ZoneServer::GenerateTutorialSlides() {
|
||||
vector<ZoneInfoSlideStruct*>* slides = new vector<ZoneInfoSlideStruct*>();
|
||||
ZoneInfoSlideStruct* slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt01_final001.dds", "voiceover/english/antonia_intro/antonia_intro_001_64.mp3", 2519553957, 1010319376);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 1, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 1.5, 16);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt02_final001.dds", "voiceover/english/antonia_intro/antonia_intro_002_64.mp3", 567178266, 3055063399);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 600, 365, 1.60000002384186, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 800, 370, 1.39999997615814, 9);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 420, 1.20000004768372, 8);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt03_final001.dds", "voiceover/english/antonia_intro/antonia_intro_003_64.mp3", 3171561318, 593374281);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 420, 1.20000004768372, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 750, 320, 1.60000002384186, 10);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 575, 265, 2.29999995231628, 10);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt04_final001.dds", "voiceover/english/antonia_intro/antonia_intro_004_64.mp3", 1959944485, 4285605574);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 420, 2.5, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 420, 1.70000004768372, 8);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 675, 390, 2.20000004768372, 11);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt05_final001.dds", "voiceover/english/antonia_intro/antonia_intro_005_64.mp3", 609693392, 260295215);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 750, 500, 2.79999995231628, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 720, 300, 2.5, 9);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 975, 270, 2.20000004768372, 9);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt06_final001.dds", "voiceover/english/antonia_intro/antonia_intro_006_64.mp3", 3056613203, 775201556);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 1.89999997615814, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 475, 1, 24);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt07_final001.dds", "voiceover/english/antonia_intro/antonia_intro_007_64.mp3", 3113327662, 1299367895);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 1400, 420, 2.40000009536743, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 1200, 375, 1.70000004768372, 7);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 800, 225, 2.29999995231628, 7);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt08_final001.dds", "voiceover/english/antonia_intro/antonia_intro_008_64.mp3", 2558791235, 2674773065);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 1, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 1.5, 27);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt09_final001.dds", "voiceover/english/antonia_intro/antonia_intro_009_64.mp3", 4029296401, 1369011033);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 715, 305, 2.40000009536743, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 730, 325, 1.79999995231628, 6);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 395, 1.5, 5);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 1360, 330, 1.79999995231628, 9);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt10_final001.dds", "voiceover/english/antonia_intro/antonia_intro_010_64.mp3", 3055524517, 3787058332);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 670, 675, 2.20000004768372, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 710, 390, 1.79999995231628, 7);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 415, 1.60000002384186, 5.5);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 1250, 675, 1.79999995231628, 8);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt11_final001.dds", "voiceover/english/antonia_intro/antonia_intro_011_64.mp3", 3525586740, 812068950);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 1, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 2, 19);
|
||||
slides->push_back(slide);
|
||||
|
||||
slide = GenerateSlideStruct(0.5, 0.5, 15, 15, 1842, 1012, "images/slideshows/boat_06p_tutorial02/lore_chapt12_final001.dds", "voiceover/english/antonia_intro/antonia_intro_012_64.mp3", 3493874350, 2037661816);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 2, 0);
|
||||
AddZoneInfoSlideStructTransitionInfo(slide, 920, 495, 1, 43);
|
||||
slides->push_back(slide);
|
||||
|
||||
return slides;
|
||||
}
|
||||
|
||||
EQ2Packet* ZoneServer::GetZoneInfoPacket(Client* client){
|
||||
client_spawn_map.Put(client->GetPlayer(), client);
|
||||
PacketStruct* packet = configReader.getStruct("WS_ZoneInfo", client->GetVersion());
|
||||
|
@ -4960,6 +5067,38 @@ EQ2Packet* ZoneServer::GetZoneInfoPacket(Client* client){
|
|||
packet->setDataByName("y", client->GetPlayer()->GetY());
|
||||
packet->setDataByName("z", client->GetPlayer()->GetZ());
|
||||
|
||||
if (client->GetVersion() == 546 && (GetZoneFile() && strcmp("boat_06p_tutorial02", GetZoneFile()) == 0) && client->GetPlayer()->GetX() == this->GetSafeX() && client->GetPlayer()->GetY() == this->GetSafeY() && client->GetPlayer()->GetZ() == this->GetSafeZ()) { //basically the only time the player will see this is if their zone in coords are the exact same as the safe coords (they haven't moved)
|
||||
vector<ZoneInfoSlideStruct*>* slides = GenerateTutorialSlides();
|
||||
if (slides) {
|
||||
packet->setArrayLengthByName("num_slides", slides->size());
|
||||
ZoneInfoSlideStruct* slide = 0;
|
||||
for (int8 i = 0; i < slides->size(); i++) {
|
||||
slide = slides->at(i);
|
||||
packet->setArrayDataByName("unknown1", slide->info->unknown1[0], i, 0);
|
||||
packet->setArrayDataByName("unknown1", slide->info->unknown1[1], i, 1);
|
||||
packet->setArrayDataByName("unknown2", slide->info->unknown2[0], i, 0);
|
||||
packet->setArrayDataByName("unknown2", slide->info->unknown2[1], i, 1);
|
||||
packet->setArrayDataByName("unknown3", slide->info->unknown3, i);
|
||||
packet->setArrayDataByName("unknown4", slide->info->unknown4, i);
|
||||
packet->setArrayDataByName("slide", slide->info->slide, i);
|
||||
packet->setArrayDataByName("voiceover", slide->info->voiceover, i);
|
||||
packet->setArrayDataByName("key1", slide->info->key1, i);
|
||||
packet->setArrayDataByName("key2", slide->info->key2, i);
|
||||
packet->setSubArrayLengthByName("num_transitions", slide->slide_transition_info.size(), i);
|
||||
for (int8 x = 0; x < slide->slide_transition_info.size(); x++) {
|
||||
packet->setSubArrayDataByName("transition_x", slide->slide_transition_info[x]->transition_x, i, x);
|
||||
packet->setSubArrayDataByName("transition_y", slide->slide_transition_info[x]->transition_y, i, x);
|
||||
packet->setSubArrayDataByName("transition_zoom", slide->slide_transition_info[x]->transition_zoom, i, x);
|
||||
packet->setSubArrayDataByName("transition_time", slide->slide_transition_info[x]->transition_time, i, x);
|
||||
safe_delete(slide->slide_transition_info[x]);
|
||||
}
|
||||
safe_delete(slide->info);
|
||||
safe_delete(slide);
|
||||
}
|
||||
}
|
||||
safe_delete(slides);
|
||||
}
|
||||
|
||||
packet->setDataByName("underworld", underworld);
|
||||
|
||||
// unknown3 can prevent screen shots from being taken if
|
||||
|
@ -5068,7 +5207,7 @@ EQ2Packet* ZoneServer::GetZoneInfoPacket(Client* client){
|
|||
packet->setArrayDataByName("adv_name", "nektulos_mini02", 7);
|
||||
packet->setArrayDataByName("adv_id", 1, 7);
|
||||
packet->setArrayDataByName("adv_name", "nektulos_mini03", 8);
|
||||
packet->setArrayDataByName("adv_id", 2, 8);
|
||||
packet->setArrayDataByName("adv_id", 2, 8);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -232,6 +232,27 @@ struct FlightPathLocation {
|
|||
float Z;
|
||||
};
|
||||
|
||||
struct ZoneInfoSlideStructInfo {
|
||||
float unknown1[2];
|
||||
int32 unknown2[2];
|
||||
int32 unknown3;
|
||||
int32 unknown4;
|
||||
char slide[128];
|
||||
char voiceover[128];
|
||||
int32 key1;
|
||||
int32 key2;
|
||||
};
|
||||
struct ZoneInfoSlideStructTransitionInfo {
|
||||
int32 transition_x;
|
||||
int32 transition_y;
|
||||
float transition_zoom;
|
||||
float transition_time;
|
||||
};
|
||||
struct ZoneInfoSlideStruct {
|
||||
ZoneInfoSlideStructInfo* info;
|
||||
vector<ZoneInfoSlideStructTransitionInfo*> slide_transition_info;
|
||||
};
|
||||
|
||||
class SPGrid;
|
||||
|
||||
// need to attempt to clean this up and add xml comments, remove unused code, find a logical way to sort the functions maybe by get/set/process/add etc...
|
||||
|
@ -243,6 +264,10 @@ public:
|
|||
void Init();
|
||||
bool Process();
|
||||
bool SpawnProcess();
|
||||
|
||||
ZoneInfoSlideStruct* GenerateSlideStruct(float unknown1a, float unknown1b, int32 unknown2a, int32 unknown2b, int32 unknown3, int32 unknown4, const char* slide, const char* voiceover, int32 key1, int32 key2);
|
||||
void AddZoneInfoSlideStructTransitionInfo(ZoneInfoSlideStruct* info, int32 x, int32 y, float zoom, float transition_time);
|
||||
vector<ZoneInfoSlideStruct*>* GenerateTutorialSlides();
|
||||
|
||||
void LoadRevivePoints(vector<RevivePoint*>* revive_points);
|
||||
vector<RevivePoint*>* GetRevivePoints(Client* client);
|
||||
|
|
Binary file not shown.
|
@ -594,10 +594,12 @@ to zero and treated like placeholders." />
|
|||
<Data ElementName="voiceover" Type="EQ2_8Bit_String" />
|
||||
<Data ElementName="key1" Type="int32" Size="1" />
|
||||
<Data ElementName="key2" Type="int32" Size="1" />
|
||||
<Data ElementName="num_unknown" Type="int8" Size="1" />
|
||||
<Data ElementName="unknown_array" Type="Array" ArraySizeVariable="num_unknown">
|
||||
<Data ElementName="unknown1" Type="int32" Size="2" />
|
||||
<Data ElementName="unknown2" Type="float" Size="2" />
|
||||
<Data ElementName="num_transitions" Type="int8" Size="1" />
|
||||
<Data ElementName="transitions_array" Type="Array" ArraySizeVariable="num_transitions">
|
||||
<Data ElementName="transition_x" Type="int32" Size="1" />
|
||||
<Data ElementName="transition_y" Type="int32" Size="1" />
|
||||
<Data ElementName="transition_zoom" Type="float" Size="1" />
|
||||
<Data ElementName="transition_time" Type="float" Size="1" />
|
||||
</Data>
|
||||
</Data>
|
||||
<Data ElementName="unknown3" Type="float" Size="2" />
|
||||
|
@ -629,8 +631,26 @@ to zero and treated like placeholders." />
|
|||
<Data ElementName="minute" Type="int8" Size="1" />
|
||||
<Data ElementName="seconds" Type="int8" Size="1" />
|
||||
<Data ElementName="unknown7" Type="float" Size="2" />
|
||||
<Data ElementName="unknown8" Type="int8" Size="1" />
|
||||
<Data ElementName="unknown9" Type="float" Size="3" />
|
||||
<Data ElementName="num_slides" Type="int8" Size="1" />
|
||||
<Data ElementName="slide_array" Type="Array" ArraySizeVariable="num_slides">
|
||||
<Data ElementName="unknown1" Type="float" Size="2" />
|
||||
<Data ElementName="unknown2" Type="int32" Size="2" />
|
||||
<Data ElementName="unknown3" Type="int32" Size="1" />
|
||||
<Data ElementName="unknown4" Type="int32" Size="1" />
|
||||
<Data ElementName="slide" Type="EQ2_8Bit_String" />
|
||||
<Data ElementName="voiceover" Type="EQ2_8Bit_String" />
|
||||
<Data ElementName="key1" Type="int32" Size="1" />
|
||||
<Data ElementName="key2" Type="int32" Size="1" />
|
||||
<Data ElementName="num_transitions" Type="int8" Size="1" />
|
||||
<Data ElementName="transitions_array" Type="Array" ArraySizeVariable="num_transitions">
|
||||
<Data ElementName="transition_x" Type="int32" Size="1" />
|
||||
<Data ElementName="transition_y" Type="int32" Size="1" />
|
||||
<Data ElementName="transition_zoom" Type="float" Size="1" />
|
||||
<Data ElementName="transition_time" Type="float" Size="1" />
|
||||
</Data>
|
||||
</Data>
|
||||
<Data ElementName="unknown9" Type="float" Size="2" />
|
||||
<Data ElementName="underworld" Type="float" Size="1" />
|
||||
<Data ElementName="zone_flags" Type="int32" Size="1" />
|
||||
<Data ElementName="num_adv" Type="int32" Size="1" />
|
||||
<Data ElementName="adv_array" Type="Array" ArraySizeVariable="num_adv">
|
||||
|
|
Loading…
Add table
Reference in a new issue