NPC 死亡协议源码
发送协议
case 0x17: // NPC Die
DieNPCEx(aIndex,(aSend[4] + aSend[3] * 256));
break;
*.cpp
//When NPC Die (For item drops and other stuff)
bool DieNPCEx(int aIndex,int NPC)
{
OBJECTSTRUCT *gObjNPC = (OBJECTSTRUCT*) OBJECT_POINTER (NPC);
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*) OBJECT_POINTER (aIndex);
//dwRand
DWORD dwRand;
srand(static_cast(time(NULL)));
dwRand = (DWORD) rand()%0x4E20;//0x2710 = 10000
//Quest3 Monster Count
if(gObj->m_Quest[1] == Q_BARRACKS_INFILTRATION02 && gObj->MapNumber == Config.Season3Quest.HeroMobsMap)
{
if(gObjNPC->Class == BALRAM_H && gObj->m_Quest[4] <= 10)
gObj->m_Quest[4] += 1;
if(gObjNPC->Class == DEATHSPIRIT_H && gObj->m_Quest[5] <= 10)
gObj->m_Quest[5] += 1;
if(gObjNPC->Class == SORAM_H && gObj->m_Quest[6] <= 10)
gObj->m_Quest[6] += 1;
}
if(gObj->m_Quest[1] == Q_INTO_THE_DARKNESS02 && gObj->MapNumber == Config.Season3Quest.DarkElfMap)
{
if(gObjNPC->Class == DARK_ELF_H && gObj->m_Quest[7] == 0)
gObj->m_Quest[7] = 1;
}
}