bool cProtoFunc::NPCTalkEx(LPOBJ gObj, int NpcId) { bool bResult = false; OBJECTSTRUCT *gObjNPC = (OBJECTSTRUCT*)OBJECT_POINTER(NpcId); #ifdef _GS if (gObjNPC->Class == 479 && Config.Duel.Enabled) { PMSG_SEND_WINDOW aSend; // ---- aSend.uHead = 0xC3; aSend.uSize = 0x04; aSend.uPacketType = 0x30; aSend.uNum = 0x21; gObj->m_IfState.use = 479; gObj->m_IfState.type = 20; // ---- DataSend(gObj->m_Index, (BYTE*)&aSend, 4); g_DuelSystem.SendDuelStatus(gObj); bResult = true; } if (gObjNPC->Class == 492 && moss.MossConfig.EnableMoss) { if (gObj->m_PK_Level > 3 && moss.MossConfig.UsePK == 0) { Chat.Message(gObj->m_Index,"[Moss The Gambler] PK player don`t use Moss The Gambler"); return false; } if (moss.GetStatusMoss() == FALSE) { Chat.Message(gObj->m_Index,"[Moss The Gambler] Moss is closed"); return false; } BYTE Send2[6] = {0xC3,0x06,0x30,0x00,0x27,0x00}; BYTE Send[71] = {0xC2,0x00,71,0x31,0x00,5,0x00,71,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x02,72,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x04,73,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x18,74,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x06,75,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF}; DataSend(gObj->m_Index,Send2,6); DataSend(gObj->m_Index,Send,71); gObj->TargetShopNumber = 492; gObj->m_IfState.use = 1; gObj->m_IfState.type = 3; bResult = true; } if ((gObjNPC->Class == Config.ClearNpc.NpcId) && (Config.ClearNpc.Enabled)) { PkClear(gObj, gObjNPC); bResult = true; } if(gObjNPC->Class == 236 && Config.Archer.Enabled) { GoldenArcher.GoldenArcherClick(gObj); bResult = true; } if (gObjNPC->Class == 241) { if( AddTab[gObj->m_Index].Resets < Config.GuildRes) { Chat.Message(1,gObj->m_Index,"You don't have enough Resets, you need %d more resets.", Config.GuildRes - AddTab[gObj->m_Index].Resets); bResult = true; } if( gObj->Level < Config.GuildLevel) { Chat.Message(1,gObj->m_Index,"You don't have enough Level, you need %d more Level.", Config.GuildLevel - gObj->Level); bResult = true; } } #endif return bResult; }
bool cProtoFunc::NPCTalkEx(LPOBJ gObj, int NpcId) { bool bResult = false; OBJECTSTRUCT *gObjNPC = (OBJECTSTRUCT*)OBJECT_POINTER(NpcId); if ((gObjNPC->Class == Config.ClearNpc.NpcId) && (Config.ClearNpc.Enabled)) { PkClear(gObj, gObjNPC); bResult = true; } if ((gObjNPC->Class == Config.ResetNpcNumber) && (Config.IsResetSystem == 2)) { if(AddTab[gObj->m_Index].ResType == -1) { ResetSystem.MainReset(gObj, gObjNPC); bResult = true; } else { if(gObjNPC != NULL) NPCMessageLog(cLog.c_Blue, cLog.t_RESET, gObj, gObjNPC, "You have %2.1f more secs for answer.", AddTab[gObj->m_Index].ResType/1000.0f); else Chat.MessageLog(0, cLog.c_Blue, cLog.t_RESET, gObj, "[Reset] You have %2.1f more secs for answer.", AddTab[gObj->m_Index].ResType/1000.0f); bResult = true; } } if (gObjNPC->Class == 236) { AddTab[gObj->m_Index].ArcherObj = gObjNPC; bResult = false; } if (gObjNPC->Class == Config.Marry.MarryNpcNum && !AddTab[gObj->m_Index].IsMarried) { if(!cMarry.StartMarriage(gObj, gObjNPC)) bResult = true; } /* if (gObjNPC->Class == Config.Marry.DivorceNpcNum) { if(Config.Marry.DivorceNpcNum == Config.Marry.MarryNpcNum) return true; if(!cMarry.StartMarriage(gObj, gObjNPC)) bResult = true; } */ if (gObjNPC->Class == 241) { if( AddTab[gObj->m_Index].Resets < Config.GuildRes) { Chat.Message(1,gObj->m_Index,"You don't have enought Resets, you need %d more resets.", Config.GuildRes - AddTab[gObj->m_Index].Resets); bResult = true; } if( gObj->Level < Config.GuildLevel) { Chat.Message(1,gObj->m_Index,"You don't have enought Level, you need %d more Level.", Config.GuildLevel - gObj->Level); bResult = true; } } #ifdef _GameServer_ if (gObjNPC->Class == 479 && Config.Duel.Enabled) { PMSG_SEND_WINDOW aSend; // ---- aSend.uHead = 0xC3; aSend.uSize = 0x04; aSend.uPacketType = 0x30; aSend.uNum = 0x21; gObj->m_IfState.use = 479; gObj->m_IfState.type = 20; // ---- DataSend(gObj->m_Index, (BYTE*)&aSend, 4); g_DuelSystem.SendDuelStatus(gObj); bResult = true; } if(gObjNPC->Class == 492 && Config.Moss.Enabled) { if (gObj->m_PK_Level > 3 && Config.Moss.UsePkPlayers == 0 ) { Chat.Message(1,gObj->m_Index,"[Moss The Gambler] PK players can`t use Moss The Gambler"); bResult = false; } else { BYTE Send2[6] = {0xC3,0x06,0x30,0x00,0x27,0x00}; BYTE Send[71] = {0xC2,0x00,71,0x31,0x00,5,0x00,71,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x02,72,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x04,73,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x18,74,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x06,75,0x00,0x01,0x00,0x00,13*16,0x00,0xFF,0xFF,0xFF,0xFF,0xFF}; DataSend(gObj->m_Index,Send2,6); DataSend(gObj->m_Index,Send,71); gObj->TargetShopNumber = 492; gObj->m_IfState.use = 1; gObj->m_IfState.type = 3; bResult = true; } } #endif return bResult; }