Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
OCB

19xx+ görev sorunu

Önerilen Mesajlar

S.a arkadaşlar oyunda bazı monster kill görevleri monsterı ölürünce saymıyor database ten kontrol ettim dataindexine hangi canavardan kaç tane kesilmesi gerekiyorsa o kolon numarası ekli bu soruna tam olarak ne yol açabilir lua yı da kontrol ettim.

İletiyi paylaş


Link to post
Sitelerde Paylaş

monster penceresi geliyor görevi alınca ama monster kesince 0/20 örnek olarak 1/20 olmuyor.Db deki tablodan kesilmesi istenilen monsterları gm le respawn edip te denedim yinede saymıyor.Lua yı dbdeki ayarları kontrol ettim çalışan bir görevle kıyasladım acaba aktif etmek için saymasını bir şey mi var özel olarak diye çözüme ulaşamadım

İletiyi paylaş


Link to post
Sitelerde Paylaş

Source te bir hata olucağını sanmıyorum monster sayma görevleri çalışıyor bi bazı chitin görevlerinde sıkıntı var.Quest sayma sistemini çözmek için npchandlera bak diyorsan baktım quest methotlarınada baktım lua ve tabloyuda inceledim bir püf noktasi var sanırsam gözümden kacan veya bir yerde hata var sayım yapmayan görevlerde çözemedim

İletiyi paylaş


Link to post
Sitelerde Paylaş

Luadan görev indexini al databasedeki quest_monster ile karsılastır. Sayacak olan hayvan numarası databasedeki ekli olanla birmi onu kontrol et derim

İletiyi paylaş


Link to post
Sitelerde Paylaş

Ettim onları kontrol hatta deathknight görevi var iki tane biri exp veriyor o calısıyor chitin görevi calısmıyor indexinide değiştirdim yine aynı

İletiyi paylaş


Link to post
Sitelerde Paylaş

birde görev sorunlarında söyle bişi oluyordu atıyorum 50 tane mob kesiceksin 21 tane kesip relog atıyorsun bu sayı 0 a düşüyor kesiyorsun tekrar baslıyor bazen 22 diye devam ediyor ama 0 gösteriyor böyle sorunlar cıktığınıda gördüm

İletiyi paylaş


Link to post
Sitelerde Paylaş

db yi kontrol ettim calısıyor diyosun src dan da olacagını sanmıyorum orda da calısıyor diyorsun ama gorev leri saymıyor diyorsun nasıl emin oldun ??

questhandler.cpp icersinde v2montercount prosedurlerinin dogru calısmamasından dolayı saymalı questlerin calısmıyor..ben sana gerekli yerleri atayım kontrol et eksikleri tamamla
tekrar dene eger gene calısmaz ise quest_helper tablonda sıkıntı vardır

1
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 << sQuestID << bQuestState;
Send(&result);



_QUEST_MONSTER * pQuestMonster = g_pMain->m_QuestMonsterArray.GetData(sQuestID);
if (bQuestState == 1 && pQuestMonster)
{
_QUEST_MONSTER_COUNTER *p;
auto itr = m_QuestMonsterCount.find( sQuestID );
if( itr == m_QuestMonsterCount.end() )
{
p = new _QUEST_MONSTER_COUNTER();

m_QuestMonsterCount.insert( std::make_pair( sQuestID,p ) );
}else{
p = itr->second;
}

memset(p,0x00,sizeof(_QUEST_MONSTER_COUNTER));


result.Initialize(WIZ_QUEST);
result << uint8(9) << uint8(1) << sQuestID << uint64(0);
Send( &result );
}

}
------------
2
void CUser::QuestV2MonsterCountAdd(uint16 sNpcID)
{
_QUEST_MONSTER *pQuestMonster = NULL;
foreach(itr,m_questMap)
{
if( itr->second != 1 )
continue;
_QUEST_MONSTER *pQuestMonster = g_pMain->m_QuestMonsterArray.GetData( itr->first );
if( !pQuestMonster )
continue;

for (int group = 0; group < QUEST_MOB_GROUPS; group++)
{
for (int per = 0; per < QUEST_MOBS_PER_GROUP; per++)
{
if( pQuestMonster->sNum[group][per] == sNpcID )
{
auto itr2 = m_QuestMonsterCount.find( itr->first );
if( itr2 == m_QuestMonsterCount.end() )
continue;
_QUEST_MONSTER_COUNTER *pQuestCount = itr2->second;

if( pQuestCount->bCount[group] < pQuestMonster->sCount[group] )
{
pQuestCount->bCount[group]++;

Packet result(WIZ_QUEST,uint8(9));
result << uint8(2) << uint16(itr->first) << uint8( group + 1 )
<< uint16(pQuestCount->bCount[group]);
Send( &result );

return;
}
}
}
}

}
}
-----------
3
uint8 CUser::QuestV2CheckMonsterCount(uint16 sQuestID, uint8 bGroup)
{
uint8 bRet = 0;
bGroup--;

auto itr = m_QuestMonsterCount.find( sQuestID );
if( itr != m_QuestMonsterCount.end()
&& bGroup < 5

)
{
bRet = itr->second->bCount[bGroup];
}

return bRet;
}
----------
4
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];
}
---------

buraları src icersinden bulup kontrol et bunlar calısan halleridir umarım işine yarar..

İletiyi paylaş


Link to post
Sitelerde Paylaş

@ Anyone sorunu çözdüm yazmayı unuttum buraya 😄 saolasın yinede yardımın için sorun source içinde gereksiz bir satırmış saçma bir kontrol yapıp return ediyormuş bazı görevleri.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

S.a arkadaşlar oyunda bazı monster kill görevleri monsterı ölürünce saymıyor database ten kontrol ettim dataindexine hangi canavardan kaç tane kesilmesi gerekiyorsa o kolon numarası ekli bu soruna tam olarak ne yol açabilir lua yı da kontrol ettim.

 


sadece yapacağın işlem şu. Quest helper tablosunda. o görevin sEventDataİndex verisini Quest_monster tblsinde kontol et. aynı mı quest_monster doğrudur büyük ihtimal eklediğin canavar çıkıyorsa.
herşey eşit ise saymama gibi bir durum olamaz. yanlış canavar kesiyorsundur.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş

TheThyke saol cevap için fakat sorunu çözdüm sourceteki hata yüzünden kaynaklanıyordu gereksiz bir kontrol işi bozuyordu hallettim.

**************KONU ÇÖZÜLDÜ**************************

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...