Index: TownHall/GameMechanics.cpp =================================================================== --- TownHall/GameMechanics.cpp (revision 42) +++ TownHall/GameMechanics.cpp (working copy) @@ -146,14 +146,20 @@ pkg << pCreature->guid << CREATUREGUID_HIGH; pkg << (unsigned long)580; // npc text pkg << (unsigned long)2; + pkg << (unsigned long)97; // SH Heal handler pkg << (unsigned char)0; pkg << (unsigned char)0; + pkg << (unsigned long)0; pkg << "Return me to life."; + pkg << (unsigned char)0; + pkg << (unsigned long)100; // Default for close gossip pkg << (unsigned char)0; pkg << (unsigned char)0; + pkg << (unsigned long)0; pkg << "Goodbye."; + pkg << (unsigned char)0; pClient->Send(&pkg); return; Index: TownHall/MsgHandlers.cpp =================================================================== --- TownHall/MsgHandlers.cpp (revision 42) +++ TownHall/MsgHandlers.cpp (working copy) @@ -2745,15 +2745,17 @@ pkg << (unsigned long)pQuest->Data.zoneid; pkg << (unsigned long)pQuest->Data.questtype; + pkg << (unsigned long)0; //SuggestedPlayers pkg << (unsigned long)pQuest->Data.repfaction[0]; pkg << (unsigned long)pQuest->Data.repvalue[0]; - pkg << (unsigned long)pQuest->Data.repfaction[1]; // ? - pkg << (unsigned long)pQuest->Data.repvalue[1]; // ? + pkg << (unsigned long)pQuest->Data.repfaction[1]; // ? + pkg << (unsigned long)pQuest->Data.repvalue[1]; // ? pkg << (unsigned long)DataManager.QuestIDs(pQuest->Data.nextquest); // nextquest pkg << (unsigned long)pQuest->Data.rewardgold; - pkg << (unsigned long)pQuest->Data.rewardexp; // quest exp - pkg << (unsigned long)pQuest->Data.learnspell; + pkg << (unsigned long)pQuest->Data.rewardexp; // quest exp + pkg << (unsigned long)pQuest->Data.learnspell; //RewardSpellID + pkg << (unsigned long)0; //EffectOnPlayer - Spell/effect cast on player when completing. pkg << (unsigned long)(DataManager.ItemTemplates(pQuest->Data.srcitem[0])); pkg << (unsigned long)(DataManager.ItemTemplates(pQuest->Data.srcitemcount[0])); @@ -3586,13 +3588,13 @@ // Guild master pkg.Reset(SMSG_PETITION_SHOWLIST); pkg << guid << PLAYERGUID_HIGH; - // Packets::PackGuid(pkg,guid,0); pkg << (char)1; - pkg << (unsigned long)1; - pkg << (unsigned long)0x16e7; - pkg << (unsigned long)0x23ef; - pkg << (unsigned long)1000; - pkg << (unsigned long)1; + pkg << (unsigned long)1; // index + pkg << (unsigned long)5863; // charter entry + pkg << (unsigned long)16161; // charter display id + pkg << (unsigned long)1000; // charter cost + pkg << (unsigned long)0; // unknown + pkg << (unsigned long)9; // required signs? pClient->Send(&pkg); return; } @@ -3792,8 +3794,13 @@ void MsgChannelJoin(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { string channelname,pass; + uint32 channel_id; + uint8 unknown; + + Data >> channel_id >> unknown; Data >> channelname; Data >> pass; + CChannel* pChannel=NULL; if(!(pChannel=CChannel::AllChannels[channelname])) { @@ -3812,6 +3819,9 @@ void MsgChannelLeave(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { string channelname; + uint32 unk; + + Data >> unk; Data >> channelname; if(!channelname.length()) @@ -4512,30 +4522,36 @@ } /*response codes: 0 - success; 1 - already have a gm ticket; 2 - ?(success?); 3 - general error*/ } + void MsgGMTicketSystemStatus(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { pClient->OutPacket(SMSG_GMTICKET_SYSTEMSTATUS,"\x01\x00\x00\x00",4); //0: unavailable 1: available } + void MsgQueryNextMailTime(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { pClient->OutPacket(MSG_QUERY_NEXT_MAIL_TIME,"\x00\xc0\xa8\xc7",4); //-86400 float } + void MsgGetTicket(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { pClient->OutPacket(SMSG_GMTICKET_GETTICKET,"\x01\x00\x00\x00",4); } + void MsgMeetStone(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { char buffer[12]; memset(buffer,0,12); pClient->OutPacket(SMSG_MEETINGSTONE_SETQUEUE,buffer,12); } + void MsgSetGameUiTarget(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { Data >> pClient->pPlayer->TargetID; pClient->pPlayer->ResetCombo(); } + void MsgTime(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { uint32 curtime=time(NULL); @@ -4548,16 +4564,19 @@ { memset(&pClient->pPlayer->Data.TutorialFlags,0xff,0x20); } + void MsgHelm(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { pClient->pDataObject->ToggleFlag(STATUS_NOHELM); pClient->UpdateObject(); } + void MsgCloak(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { pClient->pDataObject->ToggleFlag(STATUS_NOCLOAK); pClient->UpdateObject(); } + void MsgSetWeaponMode(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { unsigned char mode; @@ -4565,6 +4584,7 @@ pClient->pDataObject->SetWeaponMode(mode); pClient->UpdateObject(); } + void MsgStandState(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { unsigned char state; @@ -4572,6 +4592,7 @@ pClient->pDataObject->SetStandState(state); pClient->UpdateObject(); } + void MsgSetSheathed(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { pClient->pPlayer->bSheathed = !pClient->pPlayer->bSheathed; @@ -4586,6 +4607,7 @@ } pClient->pPlayer->UpdateObject(); } + void MsgRoll(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { uint32 min; @@ -4662,6 +4684,7 @@ } return; } + void MsgCancelAura(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { uint32 id;Data>>id; @@ -4688,7 +4711,7 @@ void MsgRequestRaidInfo(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { - Debug.Log("Unhandled CMSG_REQUEST_RAID_INFO"); + Debug.Log("Unhandled CMSG_REQUEST_RAID_INFO"); } // --- PET HANDLERS --- // Index: TownHall/Packets.cpp =================================================================== --- TownHall/Packets.cpp (revision 42) +++ TownHall/Packets.cpp (working copy) @@ -254,51 +254,78 @@ switch(*i) { case GOSSIPTYPE_QUEST: - pkg << (unsigned long)0; - pkg << (unsigned short)0; + pkg << (unsigned long)0; //menuId + pkg << (unsigned char)0; //menuIcon + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "Quests are above!"; + pkg << (unsigned char)0; //char // acceptText - show as accept dialog when clicking on menu item break; case GOSSIPTYPE_TRADE: pkg << (unsigned long)90; // 90 = trade - pkg << (unsigned short)1; + pkg << (unsigned char)1; //menuIcon + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "Items for Sale"; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item break; case GOSSIPTYPE_TRAIN: pkg << (unsigned long)91; // 91 = train - pkg << (unsigned short)3; + pkg << (unsigned char)3; + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "Train me"; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item break; case GOSSIPTYPE_TAXI: pkg << (unsigned long)92; // 92 = taxi - pkg << (unsigned short)4; + pkg << (unsigned char)4; + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "Flight Destinations"; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item break; case GOSSIPTYPE_GUILD: pkg << (unsigned long)93; // 93 = Guild Master - pkg << (unsigned short)5; + pkg << (unsigned char)5; + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "Guild Management"; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item break; case GOSSIPTYPE_TABARD: pkg << (unsigned long)94; // 94 = Tabard Vendor - pkg << (unsigned short)6; + pkg << (unsigned char)6; + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "Buy Guild Tabard"; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item break; case GOSSIPTYPE_BINDER: pkg << (unsigned long)95; // 95 = Binder - pkg << (unsigned short)5; // CHECKME + pkg << (unsigned char)5; // CHECKME + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "Make this inn your home."; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item break; default: pkg << (unsigned long)0; - pkg << (unsigned short)0; + pkg << (unsigned char)0; + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "No option"; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item break; } } pkg << (unsigned long)100; - pkg << (unsigned short)0; + pkg << (unsigned char)0; + pkg << (unsigned char)0; //input + pkg << (unsigned long)0; //requiredMoney pkg << "I'm done talking to you."; + pkg << (unsigned char)0; //char// acceptText - show as accept dialog when clicking on menu item // Quests! Fixed by nneonneo ^_^ std::list Quests; @@ -329,12 +356,14 @@ for(std::list::iterator q=Quests.begin();q!=Quests.end();q++) { uint32 qid=(*q)&0x7FFFFFFF; // byebye hidden flag - pkg << (unsigned long)qid; + pkg << (unsigned long)qid; //q_menuId + if((*q)&0x80000000) - pkg << (unsigned long)0x03; // Icon + pkg << (unsigned long)0x03; // q_menuIcon else - pkg << (unsigned long)0x05; // Icon - pkg << (unsigned long)0; // Current + pkg << (unsigned long)0x05; // q_menuIcon + + pkg << (unsigned long)0; //q_base_level //thx RomanRom2 if (!DataManager.RetrieveObject((CWoWObject**)&pQuest, OBJ_QUESTINFO, qid)) pkg << "Quest not found in DB!"; else Index: TownHall/Player.cpp =================================================================== --- TownHall/Player.cpp (revision 42) +++ TownHall/Player.cpp (working copy) @@ -1461,7 +1461,6 @@ { CPacket pkg(SMSG_CAST_RESULT); pkg << (unsigned long)7266; - pkg << (unsigned char)2; pkg << (unsigned char)SPELL_FAILED_TARGET_DUELING; pClient->Send(&pkg); } @@ -1472,7 +1471,6 @@ { CPacket pkg(SMSG_CAST_RESULT); pkg << (unsigned long)7266; - pkg << (unsigned char)2; pkg << (unsigned char)SPELL_FAILED_TARGET_DUELING; pClient->Send(&pkg); } Index: TownHall/res/TownHall.manifest =================================================================== --- TownHall/res/TownHall.manifest (revision 42) +++ TownHall/res/TownHall.manifest (working copy) @@ -6,7 +6,7 @@ name="Microsoft.Windows.TownHall" type="win32" /> -SWemu Realm Server Application +Pantera Realm Server Application OutPacket(SMSG_CAST_RESULT,buffer,5); + CPacket pkg; + pkg.Reset(SMSG_TARGET_CAST_RESULT); + Packets::PackGuid(pkg, pClient->pPlayer->guid, PLAYERGUID_HIGH); + pkg << (unsigned long)SpellID; + pClient->Send(&pkg); } void CSpell::SendSpellGo() @@ -354,7 +354,6 @@ { CPacket pkg(SMSG_CAST_RESULT); pkg << (unsigned long)SpellID; - pkg << (unsigned char)2; pkg << (unsigned char)reason; pClient->Send(&pkg); } @@ -363,7 +362,6 @@ { CPacket pkg(SMSG_CAST_RESULT); pkg << (unsigned long)SpellID; - pkg << (unsigned char)2; pkg << (unsigned char)reason; pkg << msg; pClient->Send(&pkg); Index: TownHall/TownHall.cpp =================================================================== --- TownHall/TownHall.cpp (revision 42) +++ TownHall/TownHall.cpp (working copy) @@ -129,7 +129,7 @@ time_t endtime; time(&endtime); // puts("Loaded successfully"); - printf("SWemu server successfully loaded in %.2f seconds!\r\n\r\n", difftime(endtime, starttime)); + printf("TyphoonWoW server successfully loaded in %.2f seconds!\r\n\r\n", difftime(endtime, starttime)); /* printf("==========================\r\n"); printf("SERVER INFO:\r\n"); printf("------------\r\n"); Index: TownHall/TownHallDlg.cpp =================================================================== --- TownHall/TownHallDlg.cpp (revision 42) +++ TownHall/TownHallDlg.cpp (working copy) @@ -133,15 +133,15 @@ pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } - SetWindowText("SWemu Emulator"); + SetWindowText("TyphoonWoW Emulator"); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); - m_TrayIcon.Create(NULL,WM_APP+10,_T("SWemu Realm Server"),m_hIcon,IDR_MENU,FALSE,0,0,0,10); - Txt_ServerName.SetWindowText("SWemu Server"); + m_TrayIcon.Create(NULL,WM_APP+10,_T("TyphoonWoW Realm Server"),m_hIcon,IDR_MENU,FALSE,0,0,0,10); + Txt_ServerName.SetWindowText("TyphoonWoW Server"); rs_started=FALSE; m_hBitmap = (HBITMAP)LoadImage(GetModuleHandle(NULL), "Data\\Design.bin", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if (m_hBitmap == NULL)