//00554f70 -> 100% int CTemporaryUserManager::AddToPriviousParty(int UserIndex, int SlotIndex) //OK { if( !IS_TEMP_SLOT(SlotIndex) ) { return false; } // ---- if( strcmp(this->m_UserData[SlotIndex].Name, gObj[UserIndex].Name) ) { return false; } // ---- gParty.Delete(m_UserData[SlotIndex].PartyNumber, m_UserData[SlotIndex].UserIndex, gObj[UserIndex].DBNumber); // ---- if( gParty.Add(m_UserData[SlotIndex].PartyNumber,UserIndex, gObj[UserIndex].DBNumber, gObj[UserIndex].Level) >= 0 ) { gObj[UserIndex].PartyNumber = this->m_UserData[SlotIndex].PartyNumber; CGPartyListAll(this->m_UserData[SlotIndex].PartyNumber); gParty.PartyLog(this->m_UserData[SlotIndex].PartyNumber, UserIndex, 2); } else { //GCServerMsgStringSend("¦-¦- -áLL -¦¦¦ LL+¦+-.", UserIndex, 1); } // ---- ClearSpecificUserData(SlotIndex); // ---- return true; }
//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); } }
// ------------------------------------------------------------------------------------------------------------------------------------------------------ void CGPartyRequestResultRecv(PMSG_PARTYREQUESTRESULT * lpMsg, int aIndex) { int number; BYTE result = false; char szTemp[256]; int pnumber = -1; if( !PacketCheckTime(&gObj[aIndex])) return; number = MAKE_NUMBERW(lpMsg->NumberH, lpMsg->NumberL); if( number < 0 || number > OBJMAX-1) return; if( !gObjIsConnected(&gObj[aIndex])) return; if( !gObjIsConnected(&gObj[number])) { GCResultSend(aIndex, 0x41, 0x04); } else { result = true; } if( gObj[number].MapNumber != gObj[aIndex].MapNumber ) { result = false; GCResultSend(number, 0x41, 0x00); } if( gUser.ChaosCastleMapRange(gObj[aIndex].MapNumber) == true ) { GCServerMsgStringSend(lMsg.Get(MSGGET(4, 198)), aIndex, 1); result = false; ::GCResultSend(number, 0x41, 0x00); } if( lpMsg->Result == 0 ) { result = false; ::GCResultSend(number, 0x41, 0x01); } if( gObj[number].m_IfState.use == 0 || gObj[number].m_IfState.type != 2) { result = false; ::GCResultSend(number, 0x41, 0x00); } if( gObj[aIndex].m_IfState.use == 0 || gObj[aIndex].m_IfState.type != 2) { result = false; ::GCResultSend(number, 0x41, 0x00); } if( result == 1 ) { if( gObj[number].PartyNumber < 0 ) { gObj[number].PartyNumber = gParty.Create(number, gObj[number].DBNumber, gObj[number].Level); } if( gObj[number].PartyNumber >= 0 ) { pnumber = gObj[number].PartyNumber; int iPartyPos = gParty.AddMember(gObj[number].PartyNumber, aIndex, gObj[aIndex].DBNumber, gObj[aIndex].Level); if( iPartyPos >= 0 ) { gObj[aIndex].PartyNumber = gObj[number].PartyNumber; result = true; wsprintf(szTemp, lMsg.Get(MSGGET(4, 83)), gObj[aIndex].Name); ::GCServerMsgStringSend(szTemp, number, 1); wsprintf(szTemp, lMsg.Get(MSGGET(4, 83)), gObj[number].Name); ::GCServerMsgStringSend(szTemp, aIndex, 1); gParty.Paint(pnumber); } else if( iPartyPos == -1 ) { GCResultSend(number, 0x41, 2); GCResultSend(aIndex, 0x41, 2); } else if( iPartyPos == -2 ) { result = 2; wsprintf(szTemp, lMsg.Get(MSGGET(4, 84)), gObj[aIndex].Name); GCServerMsgStringSend(szTemp, aIndex, 1); } } } if( gObj[aIndex].m_IfState.use != 0 && gObj[aIndex].m_IfState.type == 2) { gObj[aIndex].m_IfState.use = 0; gObj[aIndex].PartyTargetUser = -1; } if( gObj[number].m_IfState.use != 0 && gObj[number].m_IfState.type == 2) { gObj[number].m_IfState.use = 0; gObj[number].PartyTargetUser = -1; } if( pnumber >= 0 ) { CGPartyListAll(pnumber); } }