donz05 30 #1 Oluşturuldu: Aralık 1, 2017 arkadaşlar monster stone ye filesleri ilk açtığım zaman taş ile sorunsuz girip çıkaliyorum sorun çıktıktan sonra tekrar giremiyorum şuan zaten başka dungeondasın diye bir hata veriyor nereyi kontrol etmem gerekiyor? Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
YNG 55 #2 Aralık 1, 2017 tarihinde gönderildi Alıntı arkadaşlar monster stone ye filesleri ilk açtığım zaman taş ile sorunsuz girip çıkaliyorum sorun çıktıktan sonra tekrar giremiyorum şuan zaten başka dungeondasın diye bir hata veriyor nereyi kontrol etmem gerekiyor? Paketleri Kontrol Ettirmen Lazım..Paketlerden Yapma Olasılıgı Var Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #3 Konu Sahibi Aralık 1, 2017 tarihinde gönderildi paketlere baktım 2 source var biri çalışıyor fakat bi türlü birleştiremedim çok yere müdahale gerekiyor aslında tek satırlık bişey bile olabilir ama bu karakterin dungeondan çıktığını belirten bi satır var heralde tam olarak neresi onu bilmiyorum çalışan ile değiştirecem ama neresi bu işlemi yapıyor? Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
OzkanOzdemir 1.560 Admin #4 Aralık 1, 2017 tarihinde gönderildi Breakpoint mantığını öğrendikten sonra herşey zaten takır takır gelecek ama siz onu anlayamıyorsunuz. Mesela yapacağın sadece şundan ibaret; 1) Şuan zaten dungeondasın mesajını cliente gösteren paketi server tam nerede atıyorsa onu bulacaksın. 2) Bulduktan sonra oraya breakpoint koyacaksın. 3) Oyuna gireceksin o bahsettiğin dungeondasınız hatasını almaya çalış. 4) Hatayı aldıktan sonra zaten Visual Studio tetiklenecek ve öncesinde koydukları IF koşulunda ne sağlanmıyor onu kontrol edeceksin. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #5 Konu Sahibi Aralık 1, 2017 tarihinde gönderildi daha önce yapmadığım için tam olarak bilmiyorum ama araştırıp denicem... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
PENTAGRAM 926 #6 Aralık 1, 2017 tarihinde gönderildi Alıntı daha önce yapmadığım için tam olarak bilmiyorum ama araştırıp denicem... Şuan başka bir dungeondasın diyorsa, CUser sınıfında dungeon ile alakalı olan bir değişken(oda no vs.), karakter monster stone'dan çıktıktan sonra sıfırlanmamış demektir. Monster stone ile alakalı olan değişkenleri kontrol et, ve çıkış fonksiyonunda sıfırlandıklarından emin ol. 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #7 Konu Sahibi Aralık 2, 2017 tarihinde gönderildi Alıntı Şuan başka bir dungeondasın diyorsa, CUser sınıfında dungeon ile alakalı olan bir değişken(oda no vs.), karakter monster stone'dan çıktıktan sonra sıfırlanmamış demektir. Monster stone ile alakalı olan değişkenleri kontrol et, ve çıkış fonksiyonunda sıfırlandıklarından emin ol. void CUser::MonsterStoneProcess(uint8 bType) { uint16 nActiveEvent = (uint16)bType; uint8 bResult = 0; if (nActiveEvent == MONSTER_STONE && !isQuestEventUser()) { g_pMain->pQuestEvent.ActiveEvent = TEMPLE_EVENT_MONSTER_STONE; if (nActiveEvent == MONSTER_STONE) { if (!CheckExistItem(ITEM_MONSTER_STONE,1)) bResult = 0; else if (GetLevel() < 35) bResult = WarpListMinLevel; else if (isMining()) bResult = 3; else bResult = 1; } if (bResult == 1) { if (!isMonsterStoneActive()) m_bMonsterStatus = true; if (!isMonsterSummonActive()) m_aMonsterStatus = true; if (!isMonsterStoneMonsterKill() || isMonsterStoneMonsterKill()) m_tMonsterStatus = false; m_bMonsterStoneTime = UNIXTIME; m_MonsterSummonTime = UNIXTIME; RobItem(ITEM_MONSTER_STONE); GetNation() == KARUS ? g_pMain->pQuestEvent.KarusUserCount++ : g_pMain->pQuestEvent.ElMoradUserCount++; g_pMain->pQuestEvent.AllUserCount = (g_pMain->pQuestEvent.KarusUserCount + g_pMain->pQuestEvent.ElMoradUserCount); g_pMain->AddQuestEventUser(this); g_pMain->TempleQuestEventTeleportUsers(this); } } else if (nActiveEvent == TEMPLE_EVENT_DISBAND && nActiveEvent == TEMPLE_EVENT_FINISH && isQuestEventUser()) { GetNation() == KARUS ? g_pMain->pQuestEvent.KarusUserCount-- : g_pMain->pQuestEvent.ElMoradUserCount--; g_pMain->pQuestEvent.AllUserCount = g_pMain->pQuestEvent.KarusUserCount + g_pMain->pQuestEvent.ElMoradUserCount; if (g_pMain->pQuestEvent.LastEventRoom <= 1) { g_pMain->pQuestEvent.ActiveEvent = -1; g_pMain->pQuestEvent.StartTime = (uint32)UNIXTIME; g_pMain->pQuestEvent.m_eEventTime = 0; g_pMain->pQuestEvent.LastEventRoom = 1; g_pMain->pQuestEvent.AllUserCount = 0; g_pMain->pQuestEvent.ElMoradUserCount = 0; g_pMain->pQuestEvent.KarusUserCount = 0; g_pMain->pQuestEvent.isActive = false; g_pMain->pQuestEvent.isAttackable = false; } if (g_pMain->pQuestEvent.LastEventRoom > 1) g_pMain->pQuestEvent.LastEventRoom--; if (isMonsterStoneActive()) m_bMonsterStatus = false; if (isMonsterSummonActive()) m_aMonsterStatus = false; if (!isMonsterStoneMonsterKill() || isMonsterStoneMonsterKill()) m_tMonsterStatus = false; g_pMain->KillNpc(GetSocketID()); m_bMonsterStoneTime = UNIXTIME; m_MonsterSummonTime = UNIXTIME; g_pMain->UpdateQuestEventUser(this, 0); g_pMain->RemoveQuestEventUser(this); } } abi sanırım sorun burda sana zahmet bi incelermisin sanki sonu yarım kalmış gibi geldi bana yardım edermisin... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
YNG 55 #8 Aralık 2, 2017 tarihinde gönderildi Alıntı void CUser::MonsterStoneProcess(uint8 bType) { uint16 nActiveEvent = (uint16)bType; uint8 bResult = 0; if (nActiveEvent == MONSTER_STONE && !isQuestEventUser()) { g_pMain->pQuestEvent.ActiveEvent = TEMPLE_EVENT_MONSTER_STONE; if (nActiveEvent == MONSTER_STONE) { if (!CheckExistItem(ITEM_MONSTER_STONE,1)) bResult = 0; else if (GetLevel() < 35) bResult = WarpListMinLevel; else if (isMining()) bResult = 3; else bResult = 1; } if (bResult == 1) { if (!isMonsterStoneActive()) m_bMonsterStatus = true; if (!isMonsterSummonActive()) m_aMonsterStatus = true; if (!isMonsterStoneMonsterKill() || isMonsterStoneMonsterKill()) m_tMonsterStatus = false; m_bMonsterStoneTime = UNIXTIME; m_MonsterSummonTime = UNIXTIME; RobItem(ITEM_MONSTER_STONE); GetNation() == KARUS ? g_pMain->pQuestEvent.KarusUserCount++ : g_pMain->pQuestEvent.ElMoradUserCount++; g_pMain->pQuestEvent.AllUserCount = (g_pMain->pQuestEvent.KarusUserCount + g_pMain->pQuestEvent.ElMoradUserCount); g_pMain->AddQuestEventUser(this); g_pMain->TempleQuestEventTeleportUsers(this); } } else if (nActiveEvent == TEMPLE_EVENT_DISBAND && nActiveEvent == TEMPLE_EVENT_FINISH && isQuestEventUser()) { GetNation() == KARUS ? g_pMain->pQuestEvent.KarusUserCount-- : g_pMain->pQuestEvent.ElMoradUserCount--; g_pMain->pQuestEvent.AllUserCount = g_pMain->pQuestEvent.KarusUserCount + g_pMain->pQuestEvent.ElMoradUserCount; if (g_pMain->pQuestEvent.LastEventRoom <= 1) { g_pMain->pQuestEvent.ActiveEvent = -1; g_pMain->pQuestEvent.StartTime = (uint32)UNIXTIME; g_pMain->pQuestEvent.m_eEventTime = 0; g_pMain->pQuestEvent.LastEventRoom = 1; g_pMain->pQuestEvent.AllUserCount = 0; g_pMain->pQuestEvent.ElMoradUserCount = 0; g_pMain->pQuestEvent.KarusUserCount = 0; g_pMain->pQuestEvent.isActive = false; g_pMain->pQuestEvent.isAttackable = false; } if (g_pMain->pQuestEvent.LastEventRoom > 1) g_pMain->pQuestEvent.LastEventRoom--; if (isMonsterStoneActive()) m_bMonsterStatus = false; if (isMonsterSummonActive()) m_aMonsterStatus = false; if (!isMonsterStoneMonsterKill() || isMonsterStoneMonsterKill()) m_tMonsterStatus = false; g_pMain->KillNpc(GetSocketID()); m_bMonsterStoneTime = UNIXTIME; m_MonsterSummonTime = UNIXTIME; g_pMain->UpdateQuestEventUser(this, 0); g_pMain->RemoveQuestEventUser(this); } } abi sanırım sorun burda sana zahmet bi incelermisin sanki sonu yarım kalmış gibi geldi bana yardım edermisin... 1 Sorun Burada Deil 2 MonsterStone Kaynak kodları Benim kimden aldını Örenebilirmiyim.. Örjinal Hali void CUser::MonsterStoneProcess(uint8 bType) { uint16 nActiveEvent = (uint16)bType; uint8 bResult = 0; if(nActiveEvent == MONSTER_STONE && !isQuestEventUser()) { g_pMain->pQuestEvent.ActiveEvent = TEMPLE_EVENT_MONSTER_STONE; if (nActiveEvent == MONSTER_STONE) { if (!CheckExistItem(ITEM_MONSTER_STONE)) bResult = 0; else if (isTrading() || isMerchanting() || isStoreOpen()) bResult = 2; else if (isMining()) bResult = 3; else bResult = 1; } if (bResult == 1) { if (!isMonsterStoneActive()) m_bMonsterStatus = true; if (!isMonsterSummonActive()) m_aMonsterStatus = true; if (!isMonsterStoneMonsterKill() || isMonsterStoneMonsterKill()) m_tMonsterStatus = false; m_bMonsterStoneTime = UNIXTIME; m_MonsterSummonTime = UNIXTIME; RobItem(ITEM_MONSTER_STONE); GetNation() == KARUS ? g_pMain->pQuestEvent.KarusUserCount++ :g_pMain->pQuestEvent.ElMoradUserCount++; g_pMain->pQuestEvent.AllUserCount = (g_pMain->pQuestEvent.KarusUserCount + g_pMain->pQuestEvent.ElMoradUserCount); g_pMain->AddQuestEventUser(this); g_pMain->TempleQuestEventTeleportUsers(this); } } else if (nActiveEvent == TEMPLE_EVENT_DISBAND && isQuestEventUser()) { GetNation() == KARUS ? g_pMain->pQuestEvent.KarusUserCount-- : g_pMain->pQuestEvent.ElMoradUserCount--; g_pMain->pQuestEvent.AllUserCount = g_pMain->pQuestEvent.KarusUserCount + g_pMain->pQuestEvent.ElMoradUserCount; if (g_pMain->pQuestEvent.LastEventRoom <= 1) { g_pMain->pQuestEvent.ActiveEvent = -1; g_pMain->pQuestEvent.StartTime = (uint32)UNIXTIME; g_pMain->pQuestEvent.m_eEventTime = 0; g_pMain->pQuestEvent.LastEventRoom = 1; g_pMain->pQuestEvent.AllUserCount = 0; g_pMain->pQuestEvent.ElMoradUserCount = 0; g_pMain->pQuestEvent.KarusUserCount = 0; g_pMain->pQuestEvent.isActive = false; g_pMain->pQuestEvent.isAttackable = false; } if (g_pMain->pQuestEvent.LastEventRoom > 1) g_pMain->pQuestEvent.LastEventRoom--; if (isMonsterStoneActive()) m_bMonsterStatus = false; if (isMonsterSummonActive()) m_aMonsterStatus = false; if (!isMonsterStoneMonsterKill() || isMonsterStoneMonsterKill()) m_tMonsterStatus = false; g_pMain->KillNpc(GetSocketID()); m_bMonsterStoneTime = UNIXTIME; m_MonsterSummonTime = UNIXTIME; m_MonsterStoneFamily = 0; g_pMain->UpdateQuestEventUser(this,0); g_pMain->RemoveQuestEventUser(this); } } Hatalı Kod else if (nActiveEvent == TEMPLE_EVENT_DISBAND && nActiveEvent == TEMPLE_EVENT_FINISH && isQuestEventUser()) Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #9 Konu Sahibi Aralık 2, 2017 tarihinde gönderildi konuyu acmadan once forumdan bir arkadas tw istemisti yardim icin o zamanlar hic girmiyordu sagolsun ayarladi ama moblari ayarlarken girmedigini gordum bu hatali kod konusunda yardimci olurmusun? Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
YNG 55 #10 Aralık 2, 2017 tarihinde gönderildi Alıntı konuyu acmadan once forumdan bir arkadas tw istemisti yardim icin o zamanlar hic girmiyordu sagolsun ayarladi ama moblari ayarlarken girmedigini gordum bu hatali kod konusunda yardimci olurmusun? Oldumya Orjinal Halini Değiştir dene Bakalım Ne diyecek.. 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #11 Konu Sahibi Aralık 3, 2017 tarihinde gönderildi ya müdür kusura bakma bende aynısı attın sandım göz ucuyla inceledim aynısı geldi yorumu görünce değiştirdim sorun yok çok teşekkür ederim eline sağlık... Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
donz05 30 #12 Konu Sahibi Aralık 3, 2017 tarihinde gönderildi Alıntı Oldumya Orjinal Halini Değiştir dene Bakalım Ne diyecek.. selam YNG 40 lvl de 81. harita 50 lvl de 82. harita bu harita lvl kontrolu nereden yapılıyor 20 den 30 lvl kadar giriş yapmıyor 40 tan sonra normale dönüyor. sourceyi didik didik yaptım dünden beri bulamadım -- mesaja ek olarak -- if (pUser->GetLevel() >= 35 && pUser->GetLevel() <= 50) ZoneID = ZONE_STONE1; else if (pUser->GetLevel() >= 51 && pUser->GetLevel() <= 70) ZoneID = ZONE_STONE2; else if (pUser->GetLevel() >= 71 && pUser->GetLevel() <= m_byMaxLevel) ZoneID = ZONE_STONE3; if (ZoneID != 0) pUser->ZoneChange(ZoneID, 0.0f, 0.0f); tmm buldum 35 lvl olarak ayarlanmış fakat 34 lvl ve altı ile girdiğin zaman lvl kontrolu yada hata verme gibi bir fonksiyon olmadığı için heralde yine girmiş gibi yapıyor karakter bugta kalıyor burdaki satırlara "if (pUser->GetLevel() <= 35" küçük ise ekrana düşük lvl gibi bi hata fonksiyonu yazabilirmiyiz acaba? Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş