123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707 |
- /*
- EQ2Emulator: Everquest II Server Emulator
- Copyright (C) 2007 EQ2EMulator Development Team (http://www.eq2emulator.net)
- This file is part of EQ2Emulator.
- EQ2Emulator is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- EQ2Emulator is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with EQ2Emulator. If not, see <http://www.gnu.org/licenses/>.
- */
- #include "AltAdvancement.h"
- #include "../../common/ConfigReader.h"
- #include "../../common/Log.h"
- #include "../Spells.h"
- #include "../classes.h"
- #include "../Rules/Rules.h"
- #include <map>
- #include <assert.h>
- #include <mysql.h>
- #include "../../common/DatabaseNew.h"
- #include "../WorldDatabase.h"
- extern ConfigReader configReader;
- extern MasterSpellList master_spell_list;
- extern Classes classes;
- extern RuleManager rule_manager;
- extern MasterAANodeList master_tree_nodes;
- MasterAAList::MasterAAList()
- {
- MMasterAAList.SetName("MasterAAList::AAList");
- }
- MasterAAList::~MasterAAList()
- {
- DestroyAltAdvancements();
- }
- void MasterAAList::AddAltAdvancement(AltAdvanceData* data) {
- MMasterAAList.writelock(__FUNCTION__, __LINE__);
- AAList.push_back(data);
- MMasterAAList.releasewritelock(__FUNCTION__, __LINE__);
- }
- int MasterAAList::Size() {
- return AAList.size();
- }
- // Jabantiz: Probably a better way to do this but can't think of it right now
- AltAdvanceData* MasterAAList::GetAltAdvancement(int32 spellID) {
- vector<AltAdvanceData*>::iterator itr;
- AltAdvanceData* data = NULL;
- MMasterAAList.readlock(__FUNCTION__, __LINE__);
- for (itr = AAList.begin(); itr != AAList.end(); itr++) {
- if ((*itr)->spellID == spellID) {
- data = (*itr);
- break;
- }
- }
- MMasterAAList.releasereadlock(__FUNCTION__, __LINE__);
- return data;
- }
- void MasterAAList::DestroyAltAdvancements() {
- MMasterAAList.writelock(__FUNCTION__, __LINE__);
- vector<AltAdvanceData*>::iterator itr;
- for (itr = AAList.begin(); itr != AAList.end(); itr++)
- safe_delete(*itr);
- AAList.clear();
- MMasterAAList.releasewritelock(__FUNCTION__, __LINE__);
- }
- MasterAANodeList::MasterAANodeList() {
- }
- MasterAANodeList::~MasterAANodeList() {
- DestroyTreeNodes();
- }
- void MasterAANodeList::AddTreeNode(TreeNodeData* data) {
- TreeNodeList.push_back(data);
- }
- void MasterAANodeList::DestroyTreeNodes() {
- vector<TreeNodeData*>::iterator itr;
- for (itr = TreeNodeList.begin(); itr != TreeNodeList.end(); itr++)
- safe_delete(*itr);
- TreeNodeList.clear();
- }
- int MasterAANodeList::Size() {
- return TreeNodeList.size();
- }
- vector<TreeNodeData*> MasterAANodeList::GetTreeNodes() {
- return TreeNodeList;
- }
- EQ2Packet* MasterAAList::GetAAListPacket(Client* client)
- {
- /*
- -- OP_DispatchESMsg --
- 5/24/2011 20:54:15
- 199.108.12.165 -> 192.168.0.197
- 0000: 00 38 3B 00 00 00 FF A3 02 FF FF FF FF 00 00 00 .8;.............
- 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- 0030: 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 ................
- 0040 00 .
- */
- uchar blah[] = {0xFF,0xE8,0x01,
- 0x00, //unknown
- 0x07,0x00,0x00,0x00, //unknown2
- 0x07,0x00,0x57,0x61,0x72,0x72,0x69,0x6F,0x72, //class_title_tab
- 0x0C,0x00, //unknown3
- 0x64,0x00,0x00,0x00, //max_class_aa
- 0xFD,0x74,0xB6,0x73, //class_id
- 0x00, //kos_req
- 0x00,0x00,0x00,0x00, //num_class_items
- 0x0B,0x00,0x00,0x00, //unknown10
- 0x11,0x00,0x00,0x00, //class_points_spent
- 0x00,0x00,0x3B,0x81,0x01,0x00, //unknown11
- 0x00,0x00, //unknown12
- 0x00,0x00, //unknown13
- 0x00,0x00,0x00,0x00, //unknown14
- 0x00,0x00, //unknown15
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00, //unknown16
- 0x09,0x00,0x42,0x65,0x72,0x73,0x65,0x72,0x6B,0x65,0x72, //subclass_title_tab
- 0x0E,0x00, //unknown17
- 0x64,0x00,0x00,0x00, //max_subclass_aa
- 0x5F,0xD6,0xAF,0x50, //subclass_id
- 0x00, //eof_req
- 0x00,0x00,0x00,0x00, //num_subclass_items
- 0x0C,0x00,0x00,0x00, //unknown20
- 0x08,0x00,0x00,0x00, //subclass_points_spent
- 0x00,0x00,0x3B,0x81,0x03,0x14, //unknown21
- 0x00,0x00,0x00, //unknown22
- 0x1D,0x00,0x3A,0x63,0x65,0x31,0x38,0x36,0x34,0x63,0x37,0x66,0x35,0x33,0x66,0x65,0x62,0x37,0x62,0x5F,0x31,0x3A,0x42,0x65,0x72,0x73,0x65,0x72,0x6B,0x65,0x72, //unknown23
- 0x01,0x00,0x00,0x00, //unknown24
- 0x1D,0x00,0x3A,0x63,0x65,0x31,0x38,0x36,0x34,0x63,0x37,0x35,0x66,0x39,0x34,0x61,0x32,0x64,0x37,0x5F,0x31,0x3A,0x45,0x78,0x70,0x65,0x72,0x74,0x69,0x73,0x65, //unknown25
- 0x00,0x00,0x00,0x00,0x00,0x00, //unknown26
- 0x07,0x00,0x53,0x68,0x61,0x64,0x6F,0x77,0x73, //shadows_tab_title
- 0x2C,0x00, //unknown27
- 0x46,0x00,0x00,0x00, //max_shadows_aa
- 0x53,0x88,0x59,0x62, //shadows_id
- 0x00, //rok_req
- 0x00,0x00,0x00,0x00, //num_shadow_items
- 0x0E,0x00,0x00,0x00, //unknown30
- 0x00,0x00,0x00,0x00, //shadows_points_spent
- 0x00,0x00,0x3B,0x81,0x03,0x00, //unknown31
- 0x00,0x00,0x00, //unknown32
- 0x00,0x00, //uknown33
- 0x00,0x00,0x00,0x00, //unknown34
- 0x00,0x00, //unknown35
- 0x00,0x00,0x00,0x00,0x00,0x00, //unknown36
- 0x06,0x00,0x48,0x65,0x72,0x6F,0x69,0x63, //heroic_tab_title
- 0x48,0x00, //unknown37
- 0x32,0x00,0x00,0x00, //max_heroic_aa
- 0xC0,0x6B,0xFC,0x3C, //heroic_id
- 0x01, //heroic_dov_req
- 0x00,0x00,0x00,0x00, //num_heroic_items
- 0x10,0x00,0x00,0x00, //unknown40
- 0x00,0x00,0x00,0x00, //heroic_points_spent
- 0x00,0x00,0x3B,0x81,0x03,0x00, //unknown41
- 0x00,0x00,0x00, //unknown42
- 0x00,0x00, //unknown43
- 0x00,0x00,0x00,0x00, //unknown44
- 0x00,0x00, //unknown45
- 0x00,0x00,0x00,0x00,0x00,0x00, //unknown46
- 0x0A,0x00,0x54,0x72,0x61,0x64,0x65,0x73,0x6B,0x69,0x6C,0x6C, //tradeskill_tab_title
- 0x49,0x00, //unknown47
- 0x28,0x00,0x00,0x00, //max_tradeskill_aa
- 0x1E,0xDB,0x41,0x2F, //tradeskill_id
- 0x00, //exp_req
- 0x00,0x00,0x00,0x00, //num_tradeskill_items
- 0x00,0x00,0x00,0x00, //unknown50
- 0x00,0x00,0x00,0x00, //tradeskill_points_spent
- 0x00,0x00,0x3B,0x81,0x03,0x00, //unknown51
- 0x00,0x00,0x00, //unknown52
- 0x00,0x00, //unknown53
- 0x00,0x00,0x00,0x00, //unknown54
- 0x00,0x00, //unknown55
- 0x03,0x00,0x00,0x00,0x00,0x00, //unknown56
- 0x08,0x00,0x50,0x72,0x65,0x73,0x74,0x69,0x67,0x65, //prestige_tab_title
- 0x67,0x00, //unknown57
- 0x19,0x00,0x00,0x00, //max_prestige_aa
- 0xC6,0xA8,0x83,0xBD, //prestige_id
- 0x01, //prestige_dov_req
- 0x00,0x00,0x00,0x00, //num_prestige_items
- 0x10,0x00,0x00,0x00, //unknown60
- 0x00,0x00,0x00,0x00, //prestige_points_spent
- 0x00,0x00,0x3B,0x81,0x03,0x06, //unknown61
- 0x00,0x00,0x00, //unknown62
- 0x1D,0x00,0x3A,0x34,0x39,0x33,0x64,0x65,0x62,0x62,0x33,0x65,0x36,0x37,0x38,0x62,0x39,0x37,0x37,0x5F,0x35,0x35,0x3A,0x50,0x72,0x65,0x73,0x74,0x69,0x67,0x65, //unknown63
- 0x01,0x00,0x00,0x00, //unknown64
- 0x27,0x00,0x3A,0x34,0x39,0x33,0x64,0x65,0x62,0x62,0x33,0x65,0x36,0x61,0x38,0x62,0x62,0x37,0x39,0x5F,0x31,0x32,0x3A,0x50,0x72,0x65,0x73,0x74,0x69,0x67,0x65,0x20,0x45,0x78,0x70,0x65,0x72,0x74,0x69,0x73,0x65, //unknown65
- 0x02,0x00,0x00,0x00,0x00,0x00, //unknown66
- 0x13,0x00,0x54,0x72,0x61,0x64,0x65,0x73,0x6B,0x69,0x6C,0x6C,0x20,0x50,0x72,0x65,0x73,0x74,0x69,0x67,0x65, //tradeskill_prestige_tab_title
- 0x79,0x00, //unknown67
- 0x19,0x00,0x00,0x00, //max_tradeskill_prestige_aa
- 0x18,0x2C,0x0B,0x74, //tradeskill_prestige_id
- 0x01, //coe_req
- 0x00,0x00,0x00,0x00, //num_tradeskill_prestige_items
- 0x12,0x00,0x00,0x00, //unknown70
- 0x00,0x00,0x00,0x00, //tradeskill_prestige_points_spent
- 0x00,0x00,0x3B,0x81,0x03,0x00, //unknown71
- 0x00,0x00,0x00, //unknown72
- 0x00,0x00, //unknown73
- 0x00,0x00,0x00,0x00, //unknown74
- 0x00,0x00, //unknown75
- 0x04,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, //unknown76
- 0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //unknown77
- 0x01, //num_templates
- 0x64, //template_unknown1
- 0x03,0x00,0x4E,0x65,0x77, //template_name
- 0x00, //template_unknown2
- 0x00,0x00}; //num_tabs
- return (new EQ2Packet(OP_AdventureList, blah, sizeof(blah)));
- }
- struct AAEntry {
- int8 template_id;
- int8 tab_id;
- int32 aa_id;
- int16 order;
- int8 treeid;
- };
- void MasterAAList::DisplayAA(Client* client,int8 newtemplate,int8 changemode) {
- map <int8, int32> AAtree_id;
- map <int8, vector<TreeNodeData*> >::iterator itr_tree2;
- 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, query2;
- MYSQL_ROW row;
- int32 Pid = client->GetCharacterID();
- AAEntryList.resize(8); // max number of templates
- for (int i = 0; i < 8; i++) {
- AAEntryList[i].resize(5); // max number of tabs
- }
- // load templates 1-3 Personal
-
- MYSQL_RES* result = query.RunQuery2(Q_SELECT, "SELECT `template_id`,`tab_id`,`aa_id`,`order`,treeid FROM character_aa_defaults where class = %i order by `order`", client->GetPlayer()->GetAdventureClass());
- while (result && (row = mysql_fetch_row(result))) {
- AAEntry newentry;
- newentry.template_id = strtoul(row[0], NULL, 0);
- newentry.tab_id = strtoul(row[1], NULL, 0);
- newentry.aa_id = strtoul(row[2], NULL, 0);
- newentry.order = strtoul(row[3], NULL, 0);
- newentry.treeid = strtoul(row[4], NULL, 0);
- AAEntryList[newentry.template_id][newentry.tab_id].push_back(newentry);
- }
- LogWrite(SPELL__INFO, 0, "AA", "Loaded %u AA Tree Nodes", AAEntryList.size());
- // load tmplates 4-6 Server
- MYSQL_RES* result2 = query2.RunQuery2(Q_SELECT, "SELECT `template_id`,`tab_id`,`aa_id`,`order`,treeid FROM character_aa where char_id = %i order by `order`", client->GetCharacterID());
- while (result2 && (row = mysql_fetch_row(result2))) {
- AAEntry newentry;
- newentry.template_id = strtoul(row[0], NULL, 0);
- newentry.tab_id = strtoul(row[1], NULL, 0);
- newentry.aa_id = strtoul(row[2], NULL, 0);
- newentry.order = strtoul(row[3], NULL, 0);
- newentry.treeid = strtoul(row[4], NULL, 0);
- AAEntryList[newentry.template_id][newentry.tab_id].push_back(newentry);
- }
- LogWrite(SPELL__INFO, 0, "AA", "Loaded %u AA Tree Nodes", AAEntryList.size());
- for (int x = 0; x < TreeNodeList.size(); x++)
- {
- int8 class_id = client->GetPlayer()->GetInfoStruct()->get_class3();
-
- if (TreeNodeList[x]->classID == class_id)
- {
- itr_tree2 = Nodes.lower_bound(TreeNodeList[x]->classID);
- if (itr_tree2 != Nodes.end() && !(Nodes.key_comp()(TreeNodeList[x]->classID, itr_tree2->first)))
- {
- (itr_tree2->second).push_back(TreeNodeList[x]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added AA Tree node ID: %u", TreeNodeList[x]->treeID);
- }
- else
- {
- vector<TreeNodeData*> tmpVec;
- tmpVec.push_back(TreeNodeList[x]);
- Nodes.insert(make_pair(TreeNodeList[x]->classID, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added AA Tree node ID: %u", TreeNodeList[x]->treeID);
- }
- }
- }
- map <int8, vector<AltAdvanceData*> >::iterator itr2;
- vector<AltAdvanceData*>::iterator itr3;
- map <int8, vector<AltAdvanceData*> > ClassTab;
- map <int8, vector<AltAdvanceData*> > SubclassTab;
- map <int8, vector<AltAdvanceData*> > ShadowsTab;
- map <int8, vector<AltAdvanceData*> > HeroicTab;
- map <int8, vector<AltAdvanceData*> > TradeskillTab;
- map <int8, vector<AltAdvanceData*> > PrestigeTab;
- map <int8, vector<AltAdvanceData*> > TradeskillPrestigeTab;
- map <int8, vector<AltAdvanceData*> > DragonTab;
- map <int8, vector<AltAdvanceData*> > DragonclassTab;
- map <int8, vector<AltAdvanceData*> > FarseasTab;
- MMasterAAList.readlock(__FUNCTION__, __LINE__);
- // Get Tree Node ID's
- map <int8, int8> node_id;
- map <int8, int32> classid;
-
-
- for (itr_tree2 = Nodes.begin(); itr_tree2 != Nodes.end(); itr_tree2++) {
- int8 x = 0;
- for (itr_tree3 = itr_tree2->second.begin(); itr_tree3 != itr_tree2->second.end(); itr_tree3++, x++ ) {
- node_id[x] = (*itr_tree3)->treeID;
- classid[(*itr_tree3)->treeID] = (*itr_tree3)->AAtreeID;
- }
- }
- int rrr = 0;
- for (int i =0; i < Size(); i++) {
- if (AAList[i]->group == node_id[AA_CLASS]) {
- itr2 = ClassTab.lower_bound(AAList[i]->group);
- if (itr2 != ClassTab.end() && !(ClassTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- ClassTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Subclass Tab
- if (AAList[i]->group == node_id[AA_SUBCLASS]) {
- itr2 = SubclassTab.lower_bound(AAList[i]->group);
- if (itr2 != SubclassTab.end() && !(SubclassTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- SubclassTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Shadows Tab
- if (AAList[i]->group == node_id[AA_SHADOW]) {
- itr2 = ShadowsTab.lower_bound(AAList[i]->group);
- if (itr2 != ShadowsTab.end() && !(ShadowsTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- ShadowsTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Heroic Tab
- if (AAList[i]->group == node_id[AA_HEROIC]) {
- itr2 = HeroicTab.lower_bound(AAList[i]->group);
- if (itr2 != HeroicTab.end() && !(HeroicTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- HeroicTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Tradeskill Tab
- if (AAList[i]->group == node_id[AA_TRADESKILL]) {
- itr2 = TradeskillTab.lower_bound(AAList[i]->group);
- if (itr2 != TradeskillTab.end() && !(TradeskillTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- TradeskillTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Prestige Tab
- if (AAList[i]->group == node_id[AA_PRESTIGE]) {
- itr2 = PrestigeTab.lower_bound(AAList[i]->group);
- if (itr2 != PrestigeTab.end() && !(PrestigeTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- PrestigeTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for TradeskillPrestige Tab
- if (AAList[i]->group == node_id[AA_TRADESKILL_PRESTIGE]) {
- itr2 = TradeskillPrestigeTab.lower_bound(AAList[i]->group);
- if (itr2 != TradeskillPrestigeTab.end() && !(TradeskillPrestigeTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- TradeskillPrestigeTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Dragon Tab
- if (AAList[i]->group == node_id[AA_DRAGON]) {
- itr2 = DragonTab.lower_bound(AAList[i]->group);
- if (itr2 != DragonTab.end() && !(DragonTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- DragonTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Dragon Class Tab
- if (AAList[i]->group == node_id[AA_DRAGONCLASS]) {
- itr2 = DragonclassTab.lower_bound(AAList[i]->group);
- if (itr2 != DragonclassTab.end() && !(DragonclassTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- DragonclassTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- // Sort for Farseas Tab
- if (AAList[i]->group == node_id[AA_FARSEAS]) {
- itr2 = FarseasTab.lower_bound(AAList[i]->group);
- if (itr2 != FarseasTab.end() && !(FarseasTab.key_comp()(AAList[i]->group, itr2->first))) {
- (itr2->second).push_back(AAList[i]);
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- else {
- vector<AltAdvanceData*> tmpVec;
- tmpVec.push_back(AAList[i]);
- FarseasTab.insert(make_pair(AAList[i]->group, tmpVec));
- LogWrite(SPELL__TRACE, 0, "AA", "Added...%u ", AAList[i]->spellID);
- }
- }
- }
- MMasterAAList.releasereadlock(__FUNCTION__, __LINE__);
- int16 version = 0;
- int8 class_num_items = 0;
- int8 subclass_num_items = 0;
- int8 shadows_num_items = 0;
- int8 heroic_num_items = 0;
- int8 tradeskill_num_items = 0;
- int8 prestige_num_items = 0;
- int8 tradeskillprestige_num_items = 0;
- int8 dragon_num_items = 0;
- int8 dragonclass_num_items = 0;
- int8 farseas_num_items = 0;
- int8 index = 0;
- Spell* spell = 0;
- int8 current_rank = 0;
- int32 class_node_id = 0;
- if (client)
- version = client->GetVersion();
-
-
- PacketStruct* packet = configReader.getStruct("WS_AdventureList", version);
- if (version >= 58617) {
- packet->setDataByName("num_aa_trees", 10);// number of AA tabs
- }
- else if (version >= 1193) {
- packet->setDataByName("num_aa_trees", 7);// number of AA tabs
- }
- else if (version >= 1096) {
- packet->setDataByName("num_aa_trees", 4);// number of AA tabs
- }
- // since we do not have a proper way of supporting 3 levels of nested arrays the first array is manual here and not looped
- //__________________________________________________________START OF CLASS TREE____________________________________________________________________________________
- // Get the value for num_class_items based on size of ClassTab vector
- for (itr2 = ClassTab.begin(); itr2 != ClassTab.end(); itr2++) {
- class_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "ClassTab Size...%i ", class_num_items);
- index = 0;
- packet->setDataByName("class_tab_title", classes.GetClassNameCase(classes.GetSecondaryBaseClass(client->GetPlayer()->GetAdventureClass())).c_str());
- packet->setDataByName("class_tree_node_id", node_id[AA_CLASS]);
- packet->setDataByName("class_max_aa", rule_manager.GetGlobalRule(R_Player, MaxClassAA)->GetInt32());
- int32 class_id = TreeNodeList[node_id[AA_CLASS]]->AAtreeID;
- class_id = classid[node_id[AA_CLASS]];
- packet->setDataByName("class_id", classid[node_id[AA_CLASS]]);
- packet->setDataByName("class_kos_req", 0);
- packet->setArrayLengthByName("class_num_items", class_num_items,0);
- for (itr2 = ClassTab.begin(); itr2 != ClassTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("class_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("class_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("class_spell_id", (*itr3)->spellID, index);
- int myrank = (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1);
- packet->setArrayDataByName("class_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index); //1= have tier >= 1; 3 = not available for selection; 0 available for selection
- packet->setArrayDataByName("class_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("class_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("class_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("class_icon2",(*itr3)->icon2, index);
- packet->setArrayDataByName("class_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("class_max_rank", (*itr3)->maxRank , index);
- packet->setArrayDataByName("class_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("class_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("class_unknown5_numitems", 0,index, 0);
- //packet->setSubArrayDataByName("class_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("class_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("class_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("class_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("class_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("class_unknown6", 4294967295, index);
- packet->setArrayDataByName("class_unknown7", 1, index);
- packet->setArrayDataByName("class_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("class_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("class_unknown8", 0, index);
- packet->setArrayDataByName("class_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("class_col", (*itr3)->col, index);
- packet->setArrayDataByName("class_row", (*itr3)->row, index);
- packet->setArrayDataByName("class_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("class_unknown9", ((*itr3)->title_level > 0 ? 258 : 0 ), index);
- packet->setArrayDataByName("class_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("class_unknown9b", current_rank, index);// aom
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("class_points_spent", 11);
- if (version >= 58617) {
- packet->setDataByName("class_unknown10", 11);
- packet->setDataByName("class_unknown11a", 0);
- packet->setDataByName("class_unknown11b", 0);
- packet->setDataByName("class_unknown11c", 1);
- }
- else if (version >= 1193) {
- packet->setDataByName("class_unknown10", 11);
- packet->setDataByName("class_unknown11", 0, 0);
- packet->setDataByName("class_unknown11", 1, 1);
- packet->setDataByName("class_unknown11", 1, 2);
- }
- else if (version >= 1096) {
- packet->setDataByName("class_unknown10", 11);
- packet->setDataByName("class_unknown11", 0, 0);
- packet->setDataByName("class_unknown11", 0, 1);
- packet->setDataByName("class_unknown11", 1, 2);
- packet->setDataByName("class_unknown11", 0, 3);
- packet->setDataByName("class_unknown11", 1, 4);
- }
- else { // this will change if there is ever a lower client supported
- packet->setDataByName("class_unknown10", 11);
- packet->setDataByName("class_unknown11", 0, 0);
- packet->setDataByName("class_unknown11", 0, 1);
- packet->setDataByName("class_unknown11", 1, 2);
- packet->setDataByName("class_unknown11", 0, 3);
- packet->setDataByName("class_unknown11", 1, 4);
- }
- //__________________________________________________________START OF SUBCLASS TREE____________________________________________________________________________________
- // Get the value for num_class_items based on size of SubclassTab vector
- for (itr2 = SubclassTab.begin(); itr2 != SubclassTab.end(); itr2++) {
- subclass_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "SubclassTab Size...%i ", subclass_num_items);
- index = 0;
- packet->setDataByName("subclass_tab_title", classes.GetClassNameCase(client->GetPlayer()->GetAdventureClass()).c_str());
- packet->setDataByName("subclass_tree_node_id", node_id[AA_SUBCLASS]);
- packet->setDataByName("subclass_max_aa", rule_manager.GetGlobalRule(R_Player, MaxSubclassAA)->GetInt32());
- int32 unknown3 = TreeNodeList[node_id[AA_SUBCLASS]]->AAtreeID;
-
- packet->setDataByName("subclass_id", classid[node_id[AA_SUBCLASS]]);
- packet->setDataByName("subclass_eof_req", 0);
- packet->setArrayLengthByName("subclass_num_items", subclass_num_items, 0);
- for (itr2 = SubclassTab.begin(); itr2 != SubclassTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("subclass_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("subclass_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("subclass_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("subclass_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("subclass_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("subclass_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("subclass_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("subclass_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("subclass_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("subclass_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("subclass_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("subclass_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("subclass_unknown5_numitems", 0,index,0);
- //packet->setSubArrayDataByName("subclass_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("subclass_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("subclass_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("subclass_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("subclass_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("subclass_unknown6", 4294967295, index);
- packet->setArrayDataByName("subclass_unknown7", 1, index);
- packet->setArrayDataByName("subclass_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("subclass_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("subclass_unknown8", 0, index);
- packet->setArrayDataByName("subclass_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("subclass_col", (*itr3)->col, index);
- packet->setArrayDataByName("subclass_row", (*itr3)->row, index);
- packet->setArrayDataByName("subclass_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("subclass_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("subclass_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("subclass_unknown9b", 0, index); //added with 68617 AOM something to do with points
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("subclass_points_spent", 12); // to change the 34 to a track value
-
-
- if (version >= 58617) {
- packet->setDataByName("subclass_unknown10", 12);
- packet->setDataByName("subclass_unknown11a", 0);
- packet->setDataByName("subclass_unknown11b", 50386);
- packet->setDataByName("subclass_unknown11c", 5123);
- packet->setDataByName("subclass_unknown12", 0, 0);
- packet->setDataByName("subclass_unknown12", 0, 1);
- packet->setDataByName("subclass_unknown12", 0, 2);
- packet->setDataByName("subclass_unknown13",":493debb3e678b977_91:test_unknown13");// this is based on class
- packet->setDataByName("subclass_unknown14", 1);
- packet->setDataByName("subclass_unknown15", ":ce1864c75f94a2d7_14:Expertise");
- packet->setDataByName("subclass_unknown16", 0, 0);
- packet->setDataByName("subclass_unknown16", 0, 1);
- packet->setDataByName("subclass_unknown16", 0, 2);
- packet->setDataByName("subclass_unknown16", 0, 3);
- packet->setDataByName("subclass_unknown16", 0, 4);
- packet->setDataByName("subclass_unknown16", 0, 5);
- }
- else if (version >= 1193) {
- packet->setDataByName("subclass_unknown10", 12);
- packet->setDataByName("subclass_unknown11", 0, 0);
- packet->setDataByName("subclass_unknown11", 1, 1);
- packet->setDataByName("subclass_unknown11", 5123, 2);
- packet->setDataByName("subclass_unknown12", 0, 0);
- packet->setDataByName("subclass_unknown12", 0, 1);
- packet->setDataByName("subclass_unknown12", 0, 2);
- packet->setDataByName("subclass_unknown13", ":493debb3e678b977_91:test_unknown13");// this is based on class
- packet->setDataByName("subclass_unknown14", 1);
- packet->setDataByName("subclass_unknown15", ":ce1864c75f94a2d7_14:Expertise");
- packet->setDataByName("subclass_unknown16", 111, 0);
- packet->setDataByName("subclass_unknown16", 108, 1);
- packet->setDataByName("subclass_unknown16", 108, 2);
- packet->setDataByName("subclass_unknown16", 1101, 3);
- packet->setDataByName("subclass_unknown16", 121, 4);
- packet->setDataByName("subclass_unknown16", 129, 5);
- }
- else if (version >= 1096) {
- packet->setDataByName("subclass_unknown10", 12);
- packet->setDataByName("subclass_unknown11", 0, 0);
- packet->setDataByName("subclass_unknown11", 0, 1);
- packet->setDataByName("subclass_unknown11", 1, 2);
- packet->setDataByName("subclass_unknown11", 0, 3);
- packet->setDataByName("subclass_unknown11", 3, 4);
- }
- else { // this will change if there is ever a lower client supported
- packet->setDataByName("subclass_unknown10", 12);
- packet->setDataByName("subclass_unknown11", 0, 0);
- packet->setDataByName("subclass_unknown11", 0, 1);
- packet->setDataByName("subclass_unknown11", 1, 2);
- packet->setDataByName("subclass_unknown11", 0, 3);
- packet->setDataByName("subclass_unknown11", 3, 4);
- }
- //__________________________________________________________START OF SHADOWS TREE____________________________________________________________________________________
-
- for (itr2 = ShadowsTab.begin(); itr2 != ShadowsTab.end(); itr2++) {
- shadows_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "ShadowsTab Size...%i ", shadows_num_items);
- index = 0;
- packet->setDataByName("shadows_tab_title", "Shadows");
- packet->setDataByName("shadows_tree_node_id", node_id[AA_SHADOW]);
- packet->setDataByName("shadows_max_aa", rule_manager.GetGlobalRule(R_Player, MaxShadowsAA)->GetInt32());
- packet->setDataByName("shadows_id", classid[node_id[AA_SHADOW]]);
- packet->setDataByName("shadows_eof_req", 0);
- packet->setArrayLengthByName("shadows_num_items", shadows_num_items, 0);
- //packet->PrintPacket();
- for (itr2 = ShadowsTab.begin(); itr2 != ShadowsTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("shadows_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("shadows_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("shadows_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("shadows_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("shadows_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("shadows_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("shadows_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("shadows_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("shadows_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("shadows_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("shadows_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("shadows_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("shadows_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("shadows_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("shadows_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("shadows_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("shadows_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("shadows_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("shadows_unknown6", 4294967295, index);
- packet->setArrayDataByName("shadows_unknown7", 1, index);
- packet->setArrayDataByName("shadows_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("shadows_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("shadows_unknown8", 0, index);
- packet->setArrayDataByName("shadows_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("shadows_col", (*itr3)->col, index);
- packet->setArrayDataByName("shadows_row", (*itr3)->row, index);
- packet->setArrayDataByName("shadows_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("shadows_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("shadows_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("shadows_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("shadows_points_spent", 14);
- if (version >= 58617) {
- packet->setDataByName("shadows_unknown10", 14);
- packet->setDataByName("shadows_unknown11a", 0);
- packet->setDataByName("shadows_unknown11b", 50386);
- packet->setDataByName("shadows_unknown11c", 3);
- packet->setDataByName("shadows_unknown12", 0, 0);
- packet->setDataByName("shadows_unknown12", 0, 1);
- packet->setDataByName("shadows_unknown12", 0, 2);
- }
- else if (version >= 1193) {
- packet->setDataByName("shadows_unknown10", 14);
- packet->setDataByName("shadows_unknown11", 0, 0);
- packet->setDataByName("shadows_unknown11", 1, 1);
- packet->setDataByName("shadows_unknown11", 3, 2);
- packet->setDataByName("shadows_unknown12", 0, 0);
- packet->setDataByName("shadows_unknown12", 0, 1);
- packet->setDataByName("shadows_unknown12", 0, 2);
- }
- else if (version >= 1096) {
- packet->setDataByName("shadows_unknown11", 0, 0);
- packet->setDataByName("shadows_unknown11", 0, 1);
- packet->setDataByName("shadows_unknown11", 1, 2);
- packet->setDataByName("shadows_unknown11", 0, 3);
- packet->setDataByName("shadows_unknown11", 3, 4);
- }
- else { // this will change if there is ever a lower client supported
- packet->setDataByName("shadows_unknown11", 0, 0);
- packet->setDataByName("shadows_unknown11", 0, 1);
- packet->setDataByName("shadows_unknown11", 1, 2);
- packet->setDataByName("shadows_unknown11", 0, 3);
- packet->setDataByName("shadows_unknown11", 3, 4);
- packet->setDataByName("shadows_unknown12", 103, 0);
- packet->setDataByName("shadows_unknown12", 101, 1);
- packet->setDataByName("shadows_unknown12", 114, 2);
- packet->setDataByName("shadows_unknown14", 1835365408);
- packet->setDataByName("shadows_unknown16", 114, 0);
- packet->setDataByName("shadows_unknown16", 97, 1);
- packet->setDataByName("shadows_unknown16", 114, 2);
- packet->setDataByName("shadows_unknown16", 121, 3);
- packet->setDataByName("shadows_unknown16", 32, 4);
- packet->setDataByName("shadows_unknown16", 98, 5);
- }
- //__________________________________________________________START OF HEROIC TREE____________________________________________________________________________________
- for (itr2 = HeroicTab.begin(); itr2 != HeroicTab.end(); itr2++) {
- heroic_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "HeroicTab Size...%i ", heroic_num_items);
- index = 0;
- packet->setDataByName("heroic_tab_title", "Heroic");
- packet->setDataByName("heroic_tree_node_id", node_id[AA_HEROIC]);
- packet->setDataByName("heroic_max_aa", rule_manager.GetGlobalRule(R_Player, MaxHeroicAA)->GetInt32());
- packet->setDataByName("heroic_id", classid[node_id[AA_HEROIC]]);
- packet->setDataByName("heroic_eof_req", 0);
- packet->setArrayLengthByName("heroic_num_items", heroic_num_items, 0);
- for (itr2 = HeroicTab.begin(); itr2 != HeroicTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("heroic_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("heroic_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("heroic_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("heroic_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("heroic_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("heroic_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("heroic_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("heroic_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("heroic_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("heroic_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("heroic_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("heroic_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("heroic_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("heroic_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("heroic_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("heroic_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("heroic_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("heroic_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("heroic_unknown6", 4294967295, index);
- packet->setArrayDataByName("heroic_unknown7", 1, index);
- packet->setArrayDataByName("heroic_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("heroic_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("heroic_unknown8", 0, index);
- packet->setArrayDataByName("heroic_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("heroic_col", (*itr3)->col, index);
- packet->setArrayDataByName("heroic_row", (*itr3)->row, index);
- packet->setArrayDataByName("heroic_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("heroic_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("heroic_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("heroic_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("heroic_points_spent", 16);
- if (version >= 58617) {
- packet->setDataByName("heroic_unknown10", 16);
- packet->setDataByName("heroic_unknown11a", 0);
- packet->setDataByName("heroic_unknown11b", 50386);
- packet->setDataByName("heroic_unknown11c", 3);
- packet->setDataByName("heroic_unknown12", 0, 0);
- packet->setDataByName("heroic_unknown12", 0, 1);
- packet->setDataByName("heroic_unknown12", 0, 2);
- packet->setDataByName("heroic_unknown14", 0);
- packet->setDataByName("heroic_unknown16", 39, 0);
- packet->setDataByName("heroic_unknown16", 115, 1);
- packet->setDataByName("heroic_unknown16", 32, 2);
- packet->setDataByName("heroic_unknown16", 115, 3);
- packet->setDataByName("heroic_unknown16", 101, 4);
- packet->setDataByName("heroic_unknown16", 108, 5);
- }
- else if (version >= 1193) {
- packet->setDataByName("heroic_unknown10", 16);
- packet->setDataByName("heroic_unknown11", 0, 0);
- packet->setDataByName("heroic_unknown11", 1, 1);
- packet->setDataByName("heroic_unknown11", 3, 2);
- packet->setDataByName("heroic_unknown12", 0, 0);
- packet->setDataByName("heroic_unknown12", 0, 1);
- packet->setDataByName("heroic_unknown12", 0, 2);
- packet->setDataByName("heroic_unknown14", 0);
- packet->setDataByName("heroic_unknown16", 0, 0);
- packet->setDataByName("heroic_unknown16", 0, 1);
- packet->setDataByName("heroic_unknown16", 0, 2);
- packet->setDataByName("heroic_unknown16", 0, 3);
- packet->setDataByName("heroic_unknown16", 0, 4);
- packet->setDataByName("heroic_unknown16", 0, 5);
- }
- else if (version >= 1096) {
- packet->setDataByName("heroic_unknown11", 0, 0);
- packet->setDataByName("heroic_unknown11", 0, 1);
- packet->setDataByName("heroic_unknown11", 1, 2);
- packet->setDataByName("heroic_unknown11", 0, 3);
- packet->setDataByName("heroic_unknown11", 3, 4);
- }
- else { // this will change if there is ever a lower client supported
- packet->setDataByName("heroic_unknown11", 0, 0);
- packet->setDataByName("heroic_unknown11", 0, 1);
- packet->setDataByName("heroic_unknown11", 1, 2);
- packet->setDataByName("heroic_unknown11", 0, 3);
- packet->setDataByName("heroic_unknown11", 3, 4);
- }
- if (version >= 1193) {
- //__________________________________________________________START OF TRADESKILL TREE____________________________________________________________________________________
- for (itr2 = TradeskillTab.begin(); itr2 != TradeskillTab.end(); itr2++) {
- tradeskill_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "TradeskillTab Size...%i ", tradeskill_num_items);
- index = 0;
- packet->setDataByName("tradeskill_tab_title", "Tradeskill");
- packet->setDataByName("tradeskill_tree_node_id", node_id[AA_TRADESKILL]);
- packet->setDataByName("tradeskill_max_aa", rule_manager.GetGlobalRule(R_Player, MaxTradeskillAA)->GetInt32());
- packet->setDataByName("tradeskill_id", classid[node_id[AA_TRADESKILL]]);
- packet->setDataByName("tradeskill_eof_req", 0);
- packet->setArrayLengthByName("tradeskill_num_items", tradeskill_num_items, 0);
- for (itr2 = TradeskillTab.begin(); itr2 != TradeskillTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("tradeskill_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("tradeskill_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("tradeskill_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("tradeskill_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("tradeskill_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("tradeskill_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("tradeskill_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("tradeskill_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("tradeskill_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("tradeskill_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("tradeskill_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("tradeskill_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("tradeskill_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("tradeskill_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("tradeskill_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("tradeskill_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("tradeskill_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("tradeskill_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("tradeskill_unknown6", 4294967295, index);
- packet->setArrayDataByName("tradeskill_unknown7", 0, index);
- packet->setArrayDataByName("tradeskill_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("tradeskill_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("tradeskill_unknown8", 0, index);
- packet->setArrayDataByName("tradeskill_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("tradeskill_col", (*itr3)->col, index);
- packet->setArrayDataByName("tradeskill_row", (*itr3)->row, index);
- packet->setArrayDataByName("tradeskill_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("tradeskill_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("tradeskill_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("tradeskill_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
- packet->setDataByName("tradeskill_unknown10", 0);
- packet->setDataByName("tradeskill_points_spent", 22);
- if (version >= 58617) {
- packet->setDataByName("tradeskill_unknown10", 11);
- packet->setDataByName("tradeskill_unknown11a", 0);
- packet->setDataByName("tradeskill_unknown11b", 50386);
- packet->setDataByName("tradeskill_unknown11c", 3);
- packet->setDataByName("tradeskill_unknown12", 0, 0);
- packet->setDataByName("tradeskill_unknown12", 0, 1);
- packet->setDataByName("tradeskill_unknown12", 0, 2);
- packet->setDataByName("tradeskill_unknown14", 0);
- packet->setDataByName("tradeskill_unknown16", 3, 0);
- packet->setDataByName("tradeskill_unknown16", 0, 1);
- packet->setDataByName("tradeskill_unknown16", 0, 2);
- packet->setDataByName("tradeskill_unknown16", 0, 3);
- packet->setDataByName("tradeskill_unknown16", 0, 4);
- packet->setDataByName("tradeskill_unknown16", 0, 5);
- }
- else if (version >= 1193) {
- packet->setDataByName("tradeskill_unknown10", 0);
- packet->setDataByName("tradeskill_unknown11", 0, 0);
- packet->setDataByName("tradeskill_unknown11", 1, 1);
- packet->setDataByName("tradeskill_unknown11", 3, 2);
- packet->setDataByName("tradeskill_unknown12", 0, 0);
- packet->setDataByName("tradeskill_unknown12", 0, 1);
- packet->setDataByName("tradeskill_unknown12", 0, 2);
- packet->setDataByName("tradeskill_unknown14", 0);
- packet->setDataByName("tradeskill_unknown16", 3, 0);
- packet->setDataByName("tradeskill_unknown16", 0, 1);
- packet->setDataByName("tradeskill_unknown16", 0, 2);
- packet->setDataByName("tradeskill_unknown16", 0, 3);
- packet->setDataByName("tradeskill_unknown16", 0, 4);
- packet->setDataByName("tradeskill_unknown16", 0, 5);
- }
-
- //__________________________________________________________START OF PRESTIGE TREE____________________________________________________________________________________
- for (itr2 = PrestigeTab.begin(); itr2 != PrestigeTab.end(); itr2++) {
- prestige_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "PrestigeTab Size...%i ", prestige_num_items);
- index = 0;
- packet->setDataByName("prestige_tab_title", "Prestige");
- packet->setDataByName("prestige_tree_node_id", node_id[AA_PRESTIGE]);
- packet->setDataByName("prestige_max_aa", rule_manager.GetGlobalRule(R_Player, MaxPrestigeAA)->GetInt32());
- packet->setDataByName("prestige_id", classid[node_id[AA_PRESTIGE]]);
- packet->setDataByName("prestige_eof_req", 0);
- packet->setArrayLengthByName("prestige_num_items", prestige_num_items, 0);
- for (itr2 = PrestigeTab.begin(); itr2 != PrestigeTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("prestige_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("prestige_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("prestige_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("prestige_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("prestige_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("prestige_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("prestige_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("prestige_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("prestige_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("prestige_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("prestige_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("prestige_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("prestige_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("prestige_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("prestige_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("prestige_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("prestige_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("prestige_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("prestige_unknown6", 4294967295, index);
- packet->setArrayDataByName("prestige_unknown7", 1, index);
- packet->setArrayDataByName("prestige_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("prestige_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("prestige_unknown8", 0, index);
- packet->setArrayDataByName("prestige_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("prestige_col", (*itr3)->col, index);
- packet->setArrayDataByName("prestige_row", (*itr3)->row, index);
- packet->setArrayDataByName("prestige_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("prestige_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("prestige_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("prestige_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("prestige_points_spent", 34);
- if (version >= 58617) {
- packet->setDataByName("prestige_unknown10", 16);
- packet->setDataByName("prestige_unknown11a", 0);
- packet->setDataByName("prestige_unknown11b", 50386);
- packet->setDataByName("prestige_unknown11c", 1539);
- packet->setDataByName("prestige_unknown12", 0, 0);
- packet->setDataByName("prestige_unknown12", 0, 1);
- packet->setDataByName("prestige_unknown12", 0, 2);
- packet->setDataByName("prestige_unknown13", ":493debb3e678b977_91:Prestige");
- packet->setDataByName("prestige_unknown14", 1);
- packet->setDataByName("prestige_unknown15", ":493debb3e6a8bb79_20:Prestige Expertise");
- packet->setDataByName("prestige_unknown16", 2, 0);
- packet->setDataByName("prestige_unknown16", 0, 1);
- packet->setDataByName("prestige_unknown16", 0, 2);
- packet->setDataByName("prestige_unknown16", 0, 3);
- packet->setDataByName("prestige_unknown16", 0, 4);
- packet->setDataByName("prestige_unknown16", 0, 5);
- }
- else if (version >= 1193) {
- packet->setDataByName("prestige_unknown10", 16);
- packet->setDataByName("prestige_unknown11", 0, 0);
- packet->setDataByName("prestige_unknown11", 1, 1);
- packet->setDataByName("prestige_unknown11", 1539, 2);
- packet->setDataByName("prestige_unknown12", 0, 0);
- packet->setDataByName("prestige_unknown12", 0, 1);
- packet->setDataByName("prestige_unknown12", 0, 2);
- packet->setDataByName("prestige_unknown13", ":493debb3e678b977_91:Prestige");
- packet->setDataByName("prestige_unknown14", 1);
- packet->setDataByName("prestige_unknown15", ":493debb3e6a8bb79_20:Prestige Expertise");
- packet->setDataByName("prestige_unknown16", 2, 0);
- packet->setDataByName("prestige_unknown16", 0, 1);
- packet->setDataByName("prestige_unknown16", 0, 2);
- packet->setDataByName("prestige_unknown16", 0, 3);
- packet->setDataByName("prestige_unknown16", 0, 4);
- packet->setDataByName("prestige_unknown16", 0, 5);
- }
-
- //__________________________________________________________START OF TRADESKILL PRESTIGE TREE____________________________________________________________________________________
- for (itr2 = TradeskillPrestigeTab.begin(); itr2 != TradeskillPrestigeTab.end(); itr2++) {
- tradeskillprestige_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "TradeskillPrestigeTab Size...%i ", tradeskillprestige_num_items);
- index = 0;
- if (version >= 58617) {
- packet->setDataByName("tradeskillprestige_tab_title", "General");
- }
- else {
- packet->setDataByName("tradeskillprestige_tab_title", "Tradeskill Prestige");
- }
- packet->setDataByName("tradeskillprestige_tree_node_id", node_id[AA_TRADESKILL_PRESTIGE]);
- packet->setDataByName("tradeskillprestige_max_aa", rule_manager.GetGlobalRule(R_Player, MaxPrestigeAA)->GetInt32());
- packet->setDataByName("tradeskillprestige_id", classid[node_id[AA_TRADESKILL_PRESTIGE]]);
- packet->setDataByName("tradeskillprestige_eof_req", 0);
- packet->setArrayLengthByName("tradeskillprestige_num_items", tradeskillprestige_num_items, 0);
- for (itr2 = PrestigeTab.begin(); itr2 != PrestigeTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("tradeskillprestige_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("tradeskillprestige_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("tradeskillprestige_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("tradeskillprestige_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("tradeskillprestige_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("tradeskillprestige_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("tradeskillprestige_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("tradeskillprestige_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("tradeskillprestige_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("tradeskillprestige_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("tradeskillprestige_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("tradeskillprestige_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("tradeskillprestige_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("tradeskillprestige_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("tradeskillprestige_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("tradeskillprestige_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("tradeskillprestige_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("tradeskillprestige_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("tradeskillprestige_unknown6", 4294967295, index);
- packet->setArrayDataByName("tradeskillprestige_unknown7", 1, index);
- packet->setArrayDataByName("tradeskillprestige_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("tradeskillprestige_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("tradeskillprestige_unknown8", 0, index);
- packet->setArrayDataByName("tradeskillprestige_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("tradeskillprestige_col", (*itr3)->col, index);
- packet->setArrayDataByName("tradeskillprestige_row", (*itr3)->row, index);
- packet->setArrayDataByName("tradeskillprestige_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("tradeskillprestige_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("tradeskillprestige_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("tradeskillprestige_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("tradeskillprestige_points_spent", 18);
- if (version >= 58617) {
- packet->setDataByName("tradeskillprestige_unknown10", 18);
- packet->setDataByName("tradeskillprestige_unknown11a", 0);
- packet->setDataByName("tradeskillprestige_unknown11b", 50386);
- packet->setDataByName("tradeskillprestige_unknown11c", 3);
- packet->setDataByName("tradeskillprestige_unknown12", 0, 0);
- packet->setDataByName("tradeskillprestige_unknown12", 0, 1);
- packet->setDataByName("tradeskillprestige_unknown12", 0, 2);
- packet->setDataByName("tradeskillprestige_unknown14", 0);
- packet->setDataByName("tradeskillprestige_unknown16", 4, 0);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 1);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 2);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 3);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 4);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 5);
- }
- else if (version >= 1193) {
- packet->setDataByName("tradeskillprestige_unknown10", 16);
- packet->setDataByName("tradeskillprestige_unknown11", 0, 0);
- packet->setDataByName("tradeskillprestige_unknown11", 1, 1);
- packet->setDataByName("tradeskillprestige_unknown11", 3, 2);
- packet->setDataByName("tradeskillprestige_unknown12", 0, 0);
- packet->setDataByName("tradeskillprestige_unknown12", 0, 1);
- packet->setDataByName("tradeskillprestige_unknown12", 0, 2);
-
- packet->setDataByName("tradeskillprestige_unknown16", 4, 0);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 1);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 2);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 3);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 4);
- packet->setDataByName("tradeskillprestige_unknown16", 0, 5);
- }
- }
- if (version >= 58617) {
- //__________________________________________________________START OF DRAGON TREE____________________________________________________________________________________
- for (itr2 = DragonTab.begin(); itr2 != DragonTab.end(); itr2++) {
- dragon_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "DragonTab Size...%i ", dragon_num_items);
- index = 0;
- packet->setDataByName("dragon_tab_title", "Dragon");
- packet->setDataByName("dragon_tree_node_id", node_id[AA_DRAGON]);
- packet->setDataByName("dragon_max_aa", rule_manager.GetGlobalRule(R_Player, MaxDragonAA)->GetInt32());
- packet->setDataByName("dragon_id", classid[node_id[AA_DRAGON]]);
- packet->setDataByName("dragon_eof_req", 0);
- packet->setArrayLengthByName("dragon_num_items", dragon_num_items, 0);
- for (itr2 = DragonTab.begin(); itr2 != DragonTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
-
-
- //if (spell) {
- packet->setArrayDataByName("dragon_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("dragon_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("dragon_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("dragon_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("dragon_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("dragon_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("dragon_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("dragon_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("dragon_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("dragon_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("dragon_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("dragon_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("dragon_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("dragon_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("dragon_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("dragon_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("dragon_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("dragon_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("dragon_unknown6", 4294967295, index);
- packet->setArrayDataByName("dragon_unknown7", 1, index);
- packet->setArrayDataByName("dragon_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("dragon_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("dragon_unknown8", 0, index);
- packet->setArrayDataByName("dragon_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("dragon_col", (*itr3)->col, index);
- packet->setArrayDataByName("dragon_row", (*itr3)->row, index);
- packet->setArrayDataByName("dragon_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("dragon_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("dragon_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("dragon_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("dragon_points_spent", 19);
- if (version >= 58617) {
- packet->setDataByName("dragon_unknown10", 19);
- packet->setDataByName("dragon_unknown11a", 0);
- packet->setDataByName("dragon_unknown11b", 50386);
- packet->setDataByName("dragon_unknown11c", 1);
- packet->setDataByName("dragon_unknown12", 0, 0);
- packet->setDataByName("dragon_unknown12", 0, 1);
- packet->setDataByName("dragon_unknown12", 0, 2);
- packet->setDataByName("dragon_unknown14", 0);
- packet->setDataByName("dragon_unknown16", 0, 0);
- packet->setDataByName("dragon_unknown16", 0, 1);
- packet->setDataByName("dragon_unknown16", 0, 2);
- packet->setDataByName("dragon_unknown16", 0, 3);
- packet->setDataByName("dragon_unknown16", 0, 4);
- packet->setDataByName("dragon_unknown16", 0, 5);
- }
- //__________________________________________________________START OF DRAGON CLASS TREE____________________________________________________________________________________
- for (itr2 = DragonclassTab.begin(); itr2 != DragonclassTab.end(); itr2++) {
- dragonclass_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "DragonclassTab Size...%i ", dragonclass_num_items);
- index = 0;
- packet->setDataByName("dragonclass_tab_title", classes.GetClassNameCase(client->GetPlayer()->GetAdventureClass()).c_str());
- packet->setDataByName("dragonclass_tree_node_id", node_id[AA_DRAGONCLASS]);
- packet->setDataByName("dragonclass_max_aa", rule_manager.GetGlobalRule(R_Player, MaxDragonAA)->GetInt32());
- packet->setDataByName("dragonclass_id", classid[node_id[AA_DRAGONCLASS]]);
- packet->setDataByName("dragonclass_eof_req", 0);
- packet->setArrayLengthByName("dragonclass_num_items", dragonclass_num_items, 0);
- for (itr2 = DragonclassTab.begin(); itr2 != DragonclassTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("dragonclass_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("dragonclass_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("dragonclass_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("dragonclass_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("dragonclass_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("dragonclass_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("dragonclass_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("dragonclass_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("dragonclass_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("dragonclass_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("dragonclass_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("dragonclass_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("dragonclass_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("dragonclass_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("dragonclass_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("dragonclass_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("dragonclass_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("dragonclass_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("dragonclass_unknown6", 4294967295, index);
- packet->setArrayDataByName("dragonclass_unknown7", 1, index);
- packet->setArrayDataByName("dragonclass_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("dragonclass_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("dragonclass_unknown8", 0, index);
- packet->setArrayDataByName("dragonclass_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("dragonclass_col", (*itr3)->col, index);
- packet->setArrayDataByName("dragonclass_row", (*itr3)->row, index);
- packet->setArrayDataByName("dragonclass_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("dragonclass_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("dragonclass_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("dragonclass_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("dragonclass_points_spent",20);
- if (version >= 58617) {
- packet->setDataByName("dragonclass_unknown10", 20);
- packet->setDataByName("dragonclass_unknown11a", 0);
- packet->setDataByName("dragonclass_unknown11b", 50386);
- packet->setDataByName("dragonclass_unknown11c", 3);
- packet->setDataByName("dragonclass_unknown12", 0, 0);
- packet->setDataByName("dragonclass_unknown12", 0, 1);
- packet->setDataByName("dragonclass_unknown12", 0, 2);
- packet->setDataByName("dragonclass_unknown14", 0);
- packet->setDataByName("dragonclass_unknown16", 2, 0);
- packet->setDataByName("dragonclass_unknown16", 0, 1);
- packet->setDataByName("dragonclass_unknown16", 0, 2);
- packet->setDataByName("dragonclass_unknown16", 0, 3);
- packet->setDataByName("dragonclass_unknown16", 0, 4);
- packet->setDataByName("dragonclass_unknown16", 0, 5);
- }
- //__________________________________________________________START OF FARSEAS TREE____________________________________________________________________________________
- for (itr2 = FarseasTab.begin(); itr2 != FarseasTab.end(); itr2++) {
- farseas_num_items += (itr2->second).size();
- }
- LogWrite(SPELL__DEBUG, 0, "AA", "FarseasTab Size...%i ", farseas_num_items);
- index = 0;
- packet->setDataByName("farseas_tab_title", "Farseas");
- packet->setDataByName("farseas_tree_node_id", node_id[AA_FARSEAS]);
- packet->setDataByName("farseas_max_aa", rule_manager.GetGlobalRule(R_Player, MaxDragonAA)->GetInt32());
- packet->setDataByName("farseas_id", classid[node_id[AA_FARSEAS]]);
- packet->setDataByName("farseas_eof_req", 0);
- packet->setArrayLengthByName("farseas_num_items", farseas_num_items, 0);
- for (itr2 = FarseasTab.begin(); itr2 != FarseasTab.end(); itr2++) {
- for (itr3 = itr2->second.begin(); itr3 != itr2->second.end(); itr3++, index++) {
- //spell = master_spell_list.GetSpell((*itr3)->spellID, (*itr3)->tier);
- //current_rank = client->GetPlayer()->GetSpellTier((*itr3)->spellID);
- if (index == 0)
- class_node_id = (*itr3)->spellID;
- //if (spell) {
- packet->setArrayDataByName("farseas_parent_id", (*itr3)->rankPrereqID, index);
- packet->setArrayDataByName("farseas_req_tier", (*itr3)->rankPrereq, index);
- packet->setArrayDataByName("farseas_spell_id", (*itr3)->spellID, index);
- packet->setArrayDataByName("farseas_active", (current_rank == 0 ? 0 : (current_rank >= (*itr3)->maxRank) ? 2 : 1), index);
- packet->setArrayDataByName("farseas_spell_name", (*itr3)->name.c_str(), index);
- packet->setArrayDataByName("farseas_spell_description", (*itr3)->description.c_str(), index);
- packet->setArrayDataByName("farseas_icon", (*itr3)->icon, index);
- packet->setArrayDataByName("farseas_icon2", (*itr3)->icon2, index);
- packet->setArrayDataByName("farseas_current_rank", current_rank, index); // TODO: need to get this value from the DB
- packet->setArrayDataByName("farseas_max_rank", (*itr3)->maxRank, index);
- packet->setArrayDataByName("farseas_rank_cost", (*itr3)->rankCost, index);
- packet->setArrayDataByName("farseas_min_lev", (*itr3)->min_level, index);
- packet->setSubArrayLengthByName("farseas_unknown5_num_items", 0, index, 0);
- //packet->setSubArrayDataByName("farseas_unknown5", 308397057, index, 0);
- //packet->setSubArrayDataByName("farseas_unknown5", 3215564363, index, 1);
- //packet->setSubArrayDataByName("farseas_unknown5", 445192837, index, 2);
- //packet->setSubArrayDataByName("farseas_unknown5", 3345493294, index, 3);
- //packet->setSubArrayDataByName("farseas_unknown5", 696953971, index, 4);
- packet->setArrayDataByName("farseas_unknown6", 4294967295, index);
- packet->setArrayDataByName("farseas_unknown7", 1, index);
- packet->setArrayDataByName("farseas_classification1", (*itr3)->class_name.c_str(), index);
- packet->setArrayDataByName("farseas_points_req", (*itr3)->req_points, index);
- packet->setArrayDataByName("farseas_unknown8", 0, index);
- packet->setArrayDataByName("farseas_classification2", (*itr3)->subclass_name.c_str(), index);
- packet->setArrayDataByName("farseas_col", (*itr3)->col, index);
- packet->setArrayDataByName("farseas_row", (*itr3)->row, index);
- packet->setArrayDataByName("farseas_line_title", (*itr3)->line_title.c_str(), index);
- packet->setArrayDataByName("farseas_unknown9", ((*itr3)->title_level > 0 ? 258 : 0), index);
- packet->setArrayDataByName("farseas_points_to_unlock", (*itr3)->req_tree_points, index);
- packet->setArrayDataByName("farseas_unknown9b", 0, index);
- //}
- //else
- //LogWrite(SPELL__ERROR, 0, "AltAdvancement","Could not find Spell ID %u and Tier %i in Master Spell List", (*itr3)->spellID, (*itr3)->tier);
- }
- }
-
- packet->setDataByName("farseas_points_spent",20);
- if (version >= 58617) {
- packet->setDataByName("farseas_unknown10", 20);
- packet->setDataByName("farseas_unknown11a", 0);
- packet->setDataByName("farseas_unknown11b", 50386);
- packet->setDataByName("farseas_unknown11c", 3);
- packet->setDataByName("farseas_unknown12", 0, 0);
- packet->setDataByName("farseas_unknown12", 0, 1);
- packet->setDataByName("farseas_unknown12", 0, 2);
- packet->setDataByName("farseas_unknown14", 0);
- packet->setDataByName("farseas_unknown16", 4, 0);
- packet->setDataByName("farseas_unknown16", 0, 1);
- packet->setDataByName("farseas_unknown16", 0, 2);
- packet->setDataByName("farseas_unknown16", 0, 3);
- packet->setDataByName("farseas_unknown16", 0, 4);
- packet->setDataByName("farseas_unknown16", 0, 5);
- }
- int8 tt = 0;
- int8 numtabs = 0;
- int xxx = 0;
- bool sendblanktabs = false;
- packet->setDataByName("template_unknown1", (changemode == 2 ? 255 : 25));
- packet->setDataByName("template_unknown2a", 0);
- packet->setDataByName("template_unknown2b", 0);
- packet->setDataByName("template_unknown2c", (changemode == 3 ? 1 : 0));
- packet->setDataByName("template_unknown2d", (changemode == 1 || changemode == 2 ? 1 :0));
- packet->setDataByName("template_unknown3", (changemode == 2 ? 0 : 4294967295)); //4294967295);
- packet->setDataByName("template_unknown4", newtemplate);// active template ID
- packet->setDataByName("template_unknown5", 0);
- packet->setDataByName("num_templates", 7);
- packet->setDataByName("slot1_template_id", 0);
- packet->setDataByName("slot1_name", "Unused Slot 1");
- packet->setDataByName("slot1_active", 0); //0 is server type ,1 = personal type
- tt = 1; // template #
- numtabs = 0;
- if (AAEntryList[tt][0].size() > 0) { numtabs++; }
- if (AAEntryList[tt][1].size() > 0) { numtabs++; }
- if (AAEntryList[tt][2].size() > 0) { numtabs++; }
- if (AAEntryList[tt][3].size() > 0) { numtabs++; }
- if (AAEntryList[tt][4].size() > 0) { numtabs++; }
-
- if (sendblanktabs == true) {
- numtabs = 4;
- }
- packet->setArrayLengthByName("slot1_num_tabs", numtabs);
- xxx = 0;
- for (int xx = 0; xx < AAEntryList[tt].size(); xx++) {
-
- if (sendblanktabs == false && AAEntryList[tt][xx].size() < 1 ) {continue;}
- packet->setArrayDataByName("slot1_tab_typenum", xx, xxx);
- packet->setArrayDataByName("slot1_tab_unknown2", 1, xxx);
- packet->setSubArrayLengthByName("slot1_num_items", AAEntryList[tt][xx].size(), xxx);
- for (int yy = 0; yy < AAEntryList[tt][xx].size(); yy++) {
- packet->setSubArrayDataByName("slot1_item_order", AAEntryList[tt][xx][yy].order, xxx, yy);
- packet->setSubArrayDataByName("slot1_item_treeid", AAEntryList[tt][xx][yy].treeid, xxx, yy);
- packet->setSubArrayDataByName("slot1_item_id", AAEntryList[tt][xx][yy].aa_id, xxx, yy);
- }
- xxx++;
- }
-
- packet->setDataByName("slot2_template_id", 1);
- packet->setDataByName("slot2_name", "Unused Slot 2");
- packet->setDataByName("slot2_active", 0);
- tt = 2; // template #
- numtabs = 0;
- if (AAEntryList[tt][0].size() > 0) { numtabs++; }
- if (AAEntryList[tt][1].size() > 0) { numtabs++; }
- if (AAEntryList[tt][2].size() > 0) { numtabs++; }
- if (AAEntryList[tt][3].size() > 0) { numtabs++; }
- if (AAEntryList[tt][4].size() > 0) { numtabs++; }
-
- if (sendblanktabs == true) {
- numtabs = 4;
- }
- packet->setArrayLengthByName("slot2_num_tabs", numtabs);
- xxx = 0;
- for (int xx = 0; xx < AAEntryList[tt].size(); xx++) {
- if (sendblanktabs == false && AAEntryList[tt][xx].size() < 1) { continue; }
- packet->setArrayDataByName("slot2_tab_typenum", xx, xxx);
- packet->setArrayDataByName("slot2_tab_unknown2", 1, xxx);
- packet->setSubArrayLengthByName("slot2_num_items", AAEntryList[tt][xx].size(), xxx);
- for (int yy = 0; yy < AAEntryList[tt][xx].size(); yy++) {
- packet->setSubArrayDataByName("slot2_item_order", AAEntryList[tt][xx][yy].order, xxx, yy);
- packet->setSubArrayDataByName("slot2_item_treeid", AAEntryList[tt][xx][yy].treeid, xxx, yy);
- packet->setSubArrayDataByName("slot2_item_id", AAEntryList[tt][xx][yy].aa_id, xxx, yy);
- }
- xxx++;
- }
- packet->setDataByName("slot3_template_id", 2);
- packet->setDataByName("slot3_name", "Unused Slot 3");
- packet->setDataByName("slot3_active", 0);
- tt = 3; // template #
- numtabs = 0;
- if (AAEntryList[tt][0].size() > 0) { numtabs++; }
- if (AAEntryList[tt][1].size() > 0) { numtabs++; }
- if (AAEntryList[tt][2].size() > 0) { numtabs++; }
- if (AAEntryList[tt][3].size() > 0) { numtabs++; }
- if (AAEntryList[tt][4].size() > 0) { numtabs++; }
-
- if (sendblanktabs == true) {
- numtabs = 4;
- }
- packet->setArrayLengthByName("slot3_num_tabs", numtabs);
- xxx = 0;
- for (int xx = 0; xx < AAEntryList[tt].size(); xx++) {
- if (sendblanktabs == false && AAEntryList[tt][xx].size() < 1) { continue; }
- packet->setArrayDataByName("slot3_tab_typenum", xx, xxx);
- packet->setArrayDataByName("slot3_tab_unknown2", 1, xxx);
- packet->setSubArrayLengthByName("slot3_num_items", AAEntryList[tt][xx].size(), xxx);
- for (int yy = 0; yy < AAEntryList[tt][xx].size(); yy++) {
- packet->setSubArrayDataByName("slot3_item_order", AAEntryList[tt][xx][yy].order, xxx, yy);
- packet->setSubArrayDataByName("slot3_item_treeid", AAEntryList[tt][xx][yy].treeid, xxx, yy);
- packet->setSubArrayDataByName("slot3_item_id", AAEntryList[tt][xx][yy].aa_id, xxx, yy);
- }
- xxx++;
- }
- packet->setDataByName("slot4_template_id", 20);
- packet->setDataByName("slot4_name", "Basic Leveling Profile - Solo");
- packet->setDataByName("slot4_active", 1);
- tt = 4; // template #
- numtabs = 0;
- if (AAEntryList[tt][0].size() > 0) { numtabs++; }
- if (AAEntryList[tt][1].size() > 0) { numtabs++; }
- if (AAEntryList[tt][2].size() > 0) { numtabs++; }
- if (AAEntryList[tt][3].size() > 0) { numtabs++; }
- if (AAEntryList[tt][4].size() > 0) { numtabs++; }
-
- if (sendblanktabs == true) {
- numtabs = 4;
- }
- packet->setArrayLengthByName("slot4_num_tabs", numtabs);
- xxx = 0;
- for (int xx = 0; xx < AAEntryList[tt].size(); xx++) {
- if (sendblanktabs == false && AAEntryList[tt][xx].size() < 1) { continue; }
- packet->setArrayDataByName("slot4_tab_typenum", xx, xxx);
- packet->setArrayDataByName("slot4_tab_unknown2", 1, xxx);
- packet->setSubArrayLengthByName("slot4_num_items", AAEntryList[tt][xx].size(), xxx);
- for (int yy = 0; yy < AAEntryList[tt][xx].size(); yy++) {
- packet->setSubArrayDataByName("slot4_item_order", AAEntryList[tt][xx][yy].order, xxx, yy);
- packet->setSubArrayDataByName("slot4_item_treeid", AAEntryList[tt][xx][yy].treeid, xxx, yy);
- packet->setSubArrayDataByName("slot4_item_id", AAEntryList[tt][xx][yy].aa_id, xxx, yy);
- }
- xxx++;
- }
- packet->setDataByName("slot5_template_id", 21);
- packet->setDataByName("slot5_name", "Basic Leveling Profile - Group");
- packet->setDataByName("slot5_active", 1);
- tt = 5; // template #
- numtabs = 0;
- if (AAEntryList[tt][0].size() > 0) { numtabs++; }
- if (AAEntryList[tt][1].size() > 0) { numtabs++; }
- if (AAEntryList[tt][2].size() > 0) { numtabs++; }
- if (AAEntryList[tt][3].size() > 0) { numtabs++; }
- if (AAEntryList[tt][4].size() > 0) { numtabs++; }
-
- if (sendblanktabs == true) {
- numtabs = 4;
- }
- packet->setArrayLengthByName("slot5_num_tabs", numtabs);
- xxx = 0;
- for (int xx = 0; xx < AAEntryList[tt].size(); xx++) {
- if (sendblanktabs == false && AAEntryList[tt][xx].size() < 1) { continue; }
- packet->setArrayDataByName("slot5_tab_typenum", xx, xxx);
- packet->setArrayDataByName("slot5_tab_unknown2", 1, xxx);
- packet->setSubArrayLengthByName("slot5_num_items", AAEntryList[tt][xx].size(), xxx);
- for (int yy = 0; yy < AAEntryList[tt][xx].size(); yy++) {
- packet->setSubArrayDataByName("slot5_item_order", AAEntryList[tt][xx][yy].order, xxx, yy);
- packet->setSubArrayDataByName("slot5_item_treeid", AAEntryList[tt][xx][yy].treeid, xxx, yy);
- packet->setSubArrayDataByName("slot5_item_id", AAEntryList[tt][xx][yy].aa_id, xxx, yy);
- }
- xxx++;
- }
- packet->setDataByName("slot6_template_id", 22);
- packet->setDataByName("slot6_name", "Basic Leveling Profile - PVP");
- packet->setDataByName("slot6_active", 1);
- tt = 6; // template #
- numtabs = 0;
- if (AAEntryList[tt][0].size() > 0) { numtabs++; }
- if (AAEntryList[tt][1].size() > 0) { numtabs++; }
- if (AAEntryList[tt][2].size() > 0) { numtabs++; }
- if (AAEntryList[tt][3].size() > 0) { numtabs++; }
- if (AAEntryList[tt][4].size() > 0) { numtabs++; }
-
- if (sendblanktabs == true) {
- numtabs = 4;
- }
- packet->setArrayLengthByName("slot6_num_tabs", numtabs);
- xxx = 0;
- for (int xx = 0; xx < AAEntryList[tt].size(); xx++) {
- if (sendblanktabs == false && AAEntryList[tt][xx].size() < 1) { continue; }
- packet->setArrayDataByName("slot6_tab_typenum", xx, xxx);
- packet->setArrayDataByName("slot6_tab_unknown2", 1, xxx);
- packet->setSubArrayLengthByName("slot6_num_items", AAEntryList[tt][xx].size(), xxx);
- for (int yy = 0; yy < AAEntryList[tt][xx].size(); yy++) {
- packet->setSubArrayDataByName("slot6_item_order", AAEntryList[tt][xx][yy].order, xxx, yy);
- packet->setSubArrayDataByName("slot6_item_treeid", AAEntryList[tt][xx][yy].treeid, xxx, yy);
- packet->setSubArrayDataByName("slot6_item_id", AAEntryList[tt][xx][yy].aa_id, xxx, yy);
- }
- xxx++;
- }
- packet->setDataByName("slot7_template_id",100);
- packet->setDataByName("slot7_name", "New");
- packet->setDataByName("slot7_active", 0);
- tt = 7; // template #
- numtabs = 0;
- if (AAEntryList[tt][0].size() > 0) { numtabs++; }
- if (AAEntryList[tt][1].size() > 0) { numtabs++; }
- if (AAEntryList[tt][2].size() > 0) { numtabs++; }
- if (AAEntryList[tt][3].size() > 0) { numtabs++; }
- if (AAEntryList[tt][4].size() > 0) { numtabs++; }
- if (sendblanktabs == true) {
- numtabs = 4;
- }
- packet->setArrayLengthByName("slot7_num_tabs", numtabs);
- xxx = 0;
- for (int xx = 0; xx < AAEntryList[tt].size(); xx++) {
- if (sendblanktabs == false && AAEntryList[tt][xx].size() < 1) { continue; }
- packet->setArrayDataByName("slot7_tab_typenum", xx, xxx);
- packet->setArrayDataByName("slot7_tab_unknown2", 1, xxx);
- packet->setSubArrayLengthByName("slot7_num_items", AAEntryList[tt][xx].size(), xxx);
- for (int yy = 0; yy < AAEntryList[tt][xx].size(); yy++) {
- packet->setSubArrayDataByName("slot7_item_order", AAEntryList[tt][xx][yy].order, xxx, yy);
- packet->setSubArrayDataByName("slot7_item_treeid", AAEntryList[tt][xx][yy].treeid, xxx, yy);
- packet->setSubArrayDataByName("slot7_item_id", AAEntryList[tt][xx][yy].aa_id, xxx, yy);
- }
- xxx++;
- }
- //packet->PrintPacket();
- }
- //packet->PrintPacket();
- EQ2Packet* data = packet->serialize();
- EQ2Packet* app = new EQ2Packet(OP_AdventureList, data->pBuffer, data->size);
- //DumpPacket(app);
- client->QueuePacket(app);
- safe_delete(packet);
- safe_delete(data);
- }
|