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;
          }
}
posted @ 2018-03-28 18:38  大龙软件工作室  阅读(137)  评论(0编辑  收藏  举报