KroniqWaqaa 6 #1 Oluşturuldu: Mart 4, 2018 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]; } Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
Mountain 49 #2 Mart 5, 2018 tarihinde gönderildi Saveevent voidinde seventdataindex devredışı görüldüğü gibi //m_sEventDataIndex = sQuestID;QuestV2MonsterDataRequest(sQuestID) Questid eşitlemiyor sayma voidindede m_seventdataindex ==0 return görebiliyorsun bu yüzden görev saymıyordur. Ayrıca bu sistemde yalnızca tek monster quest yapabilirsin bilgilendireyimm_sEventDataIndex = sQuestIDŞu şekilde aktif edersin 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
KroniqWaqaa 6 #3 Konu Sahibi Mart 5, 2018 tarihinde gönderildi @ Mountain Değerli yorumun için teşekkür ederim. Dediklerini yaptım m_sEventDataIndex = sQuestID; burayı açtım, fakat yine aynı monster kesince saymıyor. m_sEventDataIndex == 0 burayı 1 mi yapıcam ? Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
Mountain 49 #4 Mart 5, 2018 tarihinde gönderildi Hayır orası eventindexini kontrol ediyor 0 a eşitse çalıştırmıyor. Sayma voidini biraz beklersen özelden dönüş yapacağım görev sistemini değişelim az işim var. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
KroniqWaqaa 6 #5 Konu Sahibi Mart 5, 2018 tarihinde gönderildi Sorunum @ Mountain tarafından çözülmüştür. Kendisine çok teşekkür ediyorum. Konuyu çözülen kısmına taşıyabilirsiniz. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
Fonzz 22 #6 Mart 5, 2018 tarihinde gönderildi AlıntıSorunum @ Mountain tarafından çözülmüştür. Kendisine çok teşekkür ediyorum. Konuyu çözülen kısmına taşıyabilirsiniz. Nasıl çözüldüğünü anlatsaydınız da insanlar da faydalansaydı :S Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
byxox 67 #7 Mart 6, 2018 tarihinde gönderildi AlıntıSorunum @ Mountain tarafından çözülmüştür. Kendisine çok teşekkür ediyorum. Konuyu çözülen kısmına taşıyabilirsiniz. Selam kardes nasıl cozdugunuzu yazarsanız herkes faydalansın lutfen. 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
KroniqWaqaa 6 #8 Konu Sahibi Mart 7, 2018 tarihinde gönderildi AlıntıSelam kardes nasıl cozdugunuzu yazarsanız herkes faydalansın lutfen. kardesm Source'den çok anlamadığım için şu diyip tarif edemiyecem malesef. TW verdim girdi hallediverdi çok sağolsun @ Mountain Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
mkilincoglu 12 #9 Haziran 6, 2018 tarihinde gönderildi Alıntı kardesm Source'den çok anlamadığım için şu diyip tarif edemiyecem malesef. TW verdim girdi hallediverdi çok sağolsun @ Mountain Selam Dostum,@ Mountain sorunu çözmüş sanırım. Bende aynı sorunla günlerdir uğraşıyorum. Rica etsem questhandler.cpp ekler misin buraya. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #10 Haziran 7, 2018 tarihinde gönderildi benim böyle bir sorunum yok sadece konuya göz gezdiriyodum fakat konuyu açan arkadaş işimi halledeyim kaçayım kafasında heralde ki questhandler.cpp yi bile paylaşma ihtiyacı duymamış isimini not edin arkadaşın ki ilerde ona göre yardımcı olursunuz.... 3 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
Miranda 1 #11 Ocak 13, 2019 tarihinde gönderildi Bende de görev sayma sorunu var. Kutu kırdırmada tepki vermiyordu onları lua değişerek çözdüm fakat aldığım görevleri saymıyor ve kutu kırdırırken exchange dediğimde tepki vermiyor. Sorunu hallolan arkadaşlar keşke nasıl olduğunu da yazsalar. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
Miranda 1 #12 Ocak 13, 2019 tarihinde gönderildi Alıntı Hayır orası eventindexini kontrol ediyor 0 a eşitse çalıştırmıyor. Sayma voidini biraz beklersen özelden dönüş yapacağım görev sistemini değişelim az işim var. Bendede görev alıyor fakat saymıyor. Banada bir yardım edebilrmisiniz. Arkadaşın sorunu çözülmüş forumdan kaçmış galiba. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş