Neler yeni

Metin2 PvP Görevde Sadece Uniqueleri Gösterme

  • Konbuyu başlatan zwoll3x
  • Başlangıç tarihi
Z

zwoll3x

Ziyaretçi
#1
questlerde belirtilen uniqueler dışında herşeyi kaldırmak isteyenler için yapmaları gerekenleri anlatıyorum , umarım işinize yarar.

dungeon.h içinde alttakini aratıp

void SetPartyNull();
altına bunu ekliyoruz

bool IsUnique(LPCHARACTER ch);
dungeon.cpp dosyasını açıp sonuna

bool CDungeon::IsUnique(LPCHARACTER ch)
{
TUniqueMobMap::iterator it = m_map_UniqueMob.begin();
while (it != m_map_UniqueMob.end())
{
if (it->second == ch)
{
return true;
}
++it;
}

return false;
}

ekliyoruz. sonra questlua_dungeon.cpp dosyasında alttakini aratıp ;


void RegisterDungeonFunctionTable()


üstüne bunu ekliyoruz.

struct FuncPurgeNormalMonster
{
LPDUNGEON pDungeon = NULL;

FuncPurgeNormalMonster(LPDUNGEON pDun) : pDungeon(pDun)
{
}

void operator () (LPENTITY ent)
{
if (!ent->IsType(ENTITY_CHARACTER))
return;

LPCHARACTER pkChr = (LPCHARACTER)ent;

if (!pkChr)
return;

if (pkChr->IsNPC() && (pkChr->IsMonster() || pkChr->IsStone()) && !pDungeon->IsUnique(pkChr))
{
M2_DESTROY_CHARACTER(pkChr);
}
}
};

int dungeon_purge_normal_mob(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPDUNGEON pDungeon = q.GetCurrentDungeon();
LPSECTREE_MAP pSectree = SECTREE_MANAGER::instance().GetMap(pDungeon->GetMapIndex());

if (NULL != pSectree)
{
FuncPurgeNormalMonster func(pDungeon);

pSectree->for_each(func);
}

return 0;
}
son olarakta questfunctions dosyasına alttakini ekliyoruz.

{ "purge_normal_monster", dungeon_purge_normal_mob },