Genel Araştırma
'sayma' etiketi için arama sonuçları.
Araştırmada 2 sonuç bulundu
-
Herkese merhabalar. Çözülen sorunlarda birçok konu mevcut fakat sorunu çözülen arkadaşlar sadece teşekkürler diyip konudan uzaklaşmış. Sorunu çözülen arkadaşlar nasıl yapıldığına dair tek bir mesaj bırakmamış. Hayırlı günler.. GAMESERVER : QUESTV2SAVEEVENT. void CUser::QuestV2SaveEvent(uint16 sQuestID) { _QUEST_HELPER * pQuestHelper = g_pMain->m_QuestHelperArray.GetData(sQuestID); if (pQuestHelper == nullptr) return; SaveEvent(pQuestHelper->sEventDataIndex, pQuestHelper->bEventStatus); } void CUser::QuestV2SendNpcMsg(uint32 nQuestID, uint16 sNpcID) { Packet result(WIZ_QUEST, uint8(7)); result << nQuestID << sNpcID; Send(&result); } void CUser::QuestV2ShowGiveItem(uint32 nUnk1, uint32 sUnk1, uint32 nUnk2, uint32 sUnk2, uint32 nUnk3, uint32 sUnk3, uint32 nUnk4, uint32 sUnk4, uint32 nUnk5, uint32 sUnk5) { Packet result(WIZ_QUEST, uint8(10)); result << nUnk1 << sUnk1 << nUnk2 << sUnk2 << nUnk3 << sUnk3 << nUnk4 << sUnk4 << nUnk5 << sUnk5; Send(&result); } uint16 CUser::QuestV2SearchEligibleQuest(uint16 sNpcID) { Guard lock(g_pMain->m_questNpcLock); QuestNpcList::iterator itr = g_pMain->m_QuestNpcList.find(sNpcID); if (itr == g_pMain->m_QuestNpcList.end() || itr->second.empty()) return 0; // Loop through all the QuestHelper instances attached to that NPC. foreach (itr2, itr->second) { _QUEST_HELPER * pHelper = (*itr2); if (pHelper->bLevel > GetLevel() || (pHelper->bLevel == GetLevel() && pHelper->nExp > m_iExp) || (pHelper->bClass != 5 && !JobGroupCheck(pHelper->bClass)) || (pHelper->bNation != 3 && pHelper->bNation != GetNation()) || (pHelper->sEventDataIndex == 0) || (pHelper->bEventStatus < 0 || CheckExistEvent(pHelper->sEventDataIndex, 2)) //gorev tamamlanmamis ise || !CheckExistEvent(pHelper->sEventDataIndex, pHelper->bEventStatus)) //gorev tamamlanma kontrolu continue; return 2; } return 0; } void CUser::QuestV2ShowMap(uint32 nQuestHelperID) { Packet result(WIZ_QUEST, uint8(11)); result << nQuestHelperID; Send(&result); } uint8 CUser::CheckMonsterCount(uint8 bGroup) { _QUEST_MONSTER * pQuestMonster = g_pMain->m_QuestMonsterArray.GetData(m_sEventDataIndex); if (pQuestMonster == nullptr || bGroup == 0 || bGroup >= QUEST_MOB_GROUPS) return 0; return m_bKillCounts[bGroup];
-
Arkadaşlar QUEST Monster görevlerinde görev alma ile bir sorun yok. Fakat sayma konusunda problemim var bu konuda bana yardımcı olabilecek varmı? QuestHandler.cpp de bulunan voidlerde bir problem varmı göremedim ? void CUser::SaveEvent(uint16 sQuestID, uint8 bQuestState) { m_questMap[sQuestID] = bQuestState; // Don't need to handle special/kill quests any further Packet result(WIZ_QUEST, uint8(2)); result Send(&result); _QUEST_MONSTER * pQuestMonster = g_pMain->m_QuestMonsterArray.GetData(sQuestID); if (bQuestState == 1 && pQuestMonster) if (pQuestMonster != nullptr && bQuestState == 1 && m_sEventDataIndex > 0) return; if (sQuestID >= QUEST_KILL_GROUP1) return; // Valid Finished Quest Count if (bQuestState == 2 ) AchieveMainCount(0, 0, sQuestID, 0); if (bQuestState == 2) { QuestV2MonsterDataDeleteAll(); QuestV2MonsterDataRequest(sQuestID); } if (bQuestState == 1 && pQuestMonster != nullptr) { // TODO: Decipher this into more meaningful code. int16 v11 = ((int16)((uint32)(6711 * sQuestID) >> 16) >> 10) - (sQuestID >> 15); int16 v12 = ((int16)((uint32)(5243 * (int16)(sQuestID - 10000 * v11)) >> 16) >> 3) - ((int16)(sQuestID - 10000 * v11) >> 15); SaveEvent(32005, (uint8)v11); SaveEvent(32006, (uint8)v12); SaveEvent(32007, sQuestID - 100 * v12); for(int i = 0; i { _QUEST_DATA * uQuest = GetQuestID(i); if (uQuest != nullptr) continue; uQuest->dQuestID = sQuestID; break; } //m_sEventDataIndex = sQuestID; QuestV2MonsterDataRequest(sQuestID); } } void CUser::QuestV2MonsterCountAdd(uint16 sNpcID) { if (m_sEventDataIndex == 0) return; // it looks like they use an active quest ID which is kind of dumb // we'd rather search through the player's active quests for applicable mob counts to increment // but then, this system can't really handle that (static counts). More research is necessary. uint16 sQuestNum = m_sEventDataIndex; // placeholder so that we can implement logic mockup _QUEST_MONSTER *pQuestMonster = g_pMain->m_QuestMonsterArray.GetData(sQuestNum); if (pQuestMonster == nullptr) return; // TODO: Implement obscure zone ID logic for (int Count = 0; Count { for (int i = 0; i { if (pQuestMonster->sNum[Count][i] != sNpcID) continue; if (m_bKillCounts[Count] + 1 > pQuestMonster->sCount[Count]) return; m_bKillCounts[Count]++; SaveEvent(QUEST_KILL_GROUP1 + Count, m_bKillCounts[Count]); Packet result(WIZ_QUEST, uint8(9)); result Send(&result); if (m_bKillCounts[Count] >= pQuestMonster->sCount[Count]) //Closing conditions { uint8 bQuestState = 3; SaveEvent(QUEST_KILL_GROUP1 + Count, bQuestState); //Fixed Number Quest_Moster_Couner_Map::iterator itr = m_quest_moster_map.find(sQuestNum); if(itr == m_quest_moster_map.end()) { m_quest_moster_map.insert(std::make_pair(sQuestNum,m_bKillCounts[Count])); } else { itr->second = m_bKillCounts[Count]; } } return; } } } uint8 CUser::QuestV2CheckMonsterCount(uint16 sQuestID) { if (sQuestID >= QUEST_KILL_GROUP1) { QuestMap::iterator itr = m_questMap.find(sQuestID); // If it doesn't exist, it doesn't exist. if (itr == m_questMap.end()) return 0; return itr->second; } else { Quest_Moster_Couner_Map::iterator itr = m_quest_moster_map.find(sQuestID); if(itr == m_quest_moster_map.end()) return 0; return itr->second; } } uint8 CUser::QuestV2CheckMonsterCount(uint16 sQuestID) { if (sQuestID >= QUEST_KILL_GROUP1) { QuestMap::iterator itr = m_questMap.find(sQuestID); // If it doesn't exist, it doesn't exist. if (itr == m_questMap.end()) return 0; return itr->second; } else { Quest_Moster_Couner_Map::iterator itr = m_quest_moster_map.find(sQuestID); if(itr == m_quest_moster_map.end()) return 0; return itr->second; } } uint8 CUser::CheckMonsterCount(uint8 bGroup) { _QUEST_MONSTER * pQuestMonster = g_pMain->m_QuestMonsterArray.GetData(m_sEventDataIndex); if (pQuestMonster == nullptr || bGroup == 0 || bGroup >= QUEST_MOB_GROUPS) return 0; return m_bKillCounts[bGroup]; }