//00555150 -> 100% int CTemporaryUserManager::ClearOverTimeUserData(int Second) //OK { DWORD dwCurrentTickCount = GetTickCount(); // ---- for( int i = 0; i < MAX_TEMP_SLOT; i++ ) { if( !this->m_UserData[i].UserIndex ) { continue; } // ---- if( dwCurrentTickCount - this->m_UserData[i].Tick <= 1000 * Second ) { continue; } // ---- int PartyNumber = this->m_UserData[i].PartyNumber; // ---- if( OBJMAX_RANGE(PartyNumber) ) { if( CheckInEventMap(i) == TEMP_NONE || CheckInEventMap(i) == TEMP_BLOODCASTLE || CheckInEventMap(i) == TEMP_DEVILSQUARE ) { gParty.Delete(PartyNumber, m_UserData[i].UserIndex, gObj[m_UserData[i].UserIndex].DBNumber); gParty.UpdatePKPartyPanalty(PartyNumber); CGPartyListAll(PartyNumber); // ---- if( gParty.GetCount(PartyNumber) >= 2 ) { continue; } // ---- for( int n = 0; n < MAX_USER_IN_PARTY; n++ ) { int number = gParty.m_PartyS[PartyNumber].Number[n]; // ---- if( number >= 0 ) { gParty.Delete(PartyNumber, n); gObj[number].PartyNumber = -1; gObj[number].PartyTargetUser = -1; GCPartyDelUserSend(number); } } // ---- gParty.Destroy(PartyNumber); } // ---- TidyUpTempuserdate(i); } else { TidyUpTempuserdate(i); } } // ---- return true; }
//005554b0 -> 100% void CTemporaryUserManager::DeleteUserInParty(int SlotIndex) //Need connect with DS, good { if( !IS_TEMP_SLOT(SlotIndex) ) { return; } // ---- int nPartyNumber = this->m_UserData[SlotIndex].PartyNumber; // ---- if( !OBJMAX_RANGE(nPartyNumber) ) { return; } // ---- gParty.Delete(nPartyNumber, m_UserData[SlotIndex].UserIndex, gObj[m_UserData[SlotIndex].UserIndex].DBNumber); gParty.UpdatePKPartyPanalty(nPartyNumber); // ---- CGPartyListAll(nPartyNumber); // ---- if( gParty.GetCount(nPartyNumber) >= 2 ) { return; } // ---- for( int n = 0; n < 5; n++ ) { int number = gParty.m_PartyS[nPartyNumber].Number[n]; // ---- if( number >= 0 ) { gParty.Delete(nPartyNumber, n); gObj[number].PartyNumber = -1; gObj[number].PartyTargetUser = -1; GCPartyDelUserSend(number); } } // ---- gParty.Destroy(nPartyNumber); TidyUpTempuserdate(SlotIndex); }
// ------------------------------------------------------------------------------------------------------------------------------------------------------ void CGPartyDelUser(PMSG_PARTYDELUSER * lpMsg, int aIndex) { int usernumber = -1; int dbnumber = -1; if( gObj[aIndex].PartyNumber < 0 ) { CLog.LogAdd("No Party %s %s", gObj[aIndex].AccountID, gObj[aIndex].Name); return; } if( !gParty.GetIndexUser(gObj[aIndex].PartyNumber, lpMsg->Number, usernumber, dbnumber)) { CLog.LogAdd("User Not found"); return; } if( usernumber < 0 ) { CLog.LogAdd("User Not found"); return; } int count; int number; int pnumber = gObj[aIndex].PartyNumber; if( pnumber < 0 ) { CLog.LogAdd("%s %d", __FILE__, __LINE__); return; } count = gParty.GetCount(pnumber); if( count < 1 ) { CLog.LogAdd("%s %d", __FILE__, __LINE__); return; } if( lpMsg->Number == 0 || count <= 2 ) { for ( int n=0;n<MAX_USER_IN_PARTY;n++) { number = gParty.m_PartyInfo[pnumber].Number[n]; if( number >= 0 ) { gParty.DelMember(pnumber, n); gObj[number].PartyNumber = -1; gObj[number].PartyTargetUser = -1; GCPartyDelUserSend(number); } } gParty.Destroy(pnumber); } else { gParty.DelMember(pnumber, lpMsg->Number); count = gParty.GetCount(gObj[aIndex].PartyNumber); gObj[usernumber].PartyNumber = -1; gObj[usernumber].PartyTargetUser = -1; GCPartyDelUserSend(usernumber); CGPartyListAll(pnumber); } }