コード例 #1
0
//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;
}
コード例 #2
0
//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;
}
コード例 #3
0
//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);
}
コード例 #4
0
// ------------------------------------------------------------------------------------------------------------------------------------------------------
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);
	}		
}
コード例 #5
0
// ------------------------------------------------------------------------------------------------------------------------------------------------------
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);
	}
}