1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705 |
- /*
- 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();
- vector<vector<vector<AAEntry> > > AAEntryList ;
- Query query;
- 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 = query.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()->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);
- }
|