Party

All Helbreath Server Source Discussion here.
Post Reply
666666
Regular
Posts: 39
Joined: Thu Nov 24, 2005 1:14 pm

Post by 666666 »

hello, anyone know how to fix the party problem in source 2.24b?
Because sometimes people can't party, and when they do party, sometimes nobody gets exp. Anyone know how to fix it?
juggalo2
Spamtastic
Posts: 1144
Joined: Sun Jul 17, 2005 5:28 pm

Post by juggalo2 »

here whats i have in my source works fine more me
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Code: Select all

void CGame::CreateNewPartyHandler(int iClientH)
{
 BOOL bFlag;

	if (m_pClientList[iClientH] == NULL) return;

	bFlag = m_pClientList[iClientH]->bCreateNewParty();
	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_RESPONSE_CREATENEWPARTY, (int)bFlag, NULL, NULL, NULL);
}

Code: Select all

void CGame::JoinPartyHandler(int iClientH, int iV1, char *pMemberName)
{
	char * cp, cData[120];
	short sAppr2;
	DWORD * dwp;
	WORD * wp;
	int i;

	if (m_pClientList[iClientH] == NULL) return;
	if ((m_bAdminSecurity == TRUE) && (m_pClientList[iClientH]->m_iAdminUserLevel > 0)) return;

	switch (iV1) {
	case 0: // ÆÄƼ Å»Åð ½Åû
  RequestDeletePartyHandler(iClientH);
  break;

	case 1: // ÆÄƼ °¡ÀÔ ½Åû
  //testcode
  wsprintf(G_cTxt, "Join Party Req: %s(%d) ID(%d) Stat(%d) ReqJoinH(%d) ReqJoinName(%s)", m_pClientList[iClientH]->m_cCharName, iClientH, 
  	m_pClientList[iClientH]->m_iPartyID, m_pClientList[iClientH]->m_iPartyStatus, m_pClientList[iClientH]->m_iReqJoinPartyClientH,
  	m_pClientList[iClientH]->m_cReqJoinPartyName);
  PutLogList(G_cTxt);

  if ((m_pClientList[iClientH]->m_iPartyID != NULL) || (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_NULL)) {
  	// À̹Ì ÆÄƼ¿¡ °¡ÀÔÇØ ÀÖ´Ù¸é ÆÄƼ °¡ÀÔ ½ÅûÀ» ÇÒ ¼ö ¾ø´Ù.
  	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
  	m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
  	ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
  	m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
  	//testcode
  	PutLogList("Join Party Reject (1)");
  	return;
  }

  for (i = 1; i < DEF_MAXCLIENTS; i++)
  	if ((m_pClientList[i] != NULL) && (strcmp(m_pClientList[i]->m_cCharName, pMemberName) == 0)) {
    // °°Àº À̸§À» °¡Ã￾ø Ç÷¹À̾ ã¾Ò´Ù.
    sAppr2 = (short)((m_pClientList[i]->m_sAppr2 & 0xF000) >> 12);
    if (sAppr2 != 0) {
    	// ÀüÅõ ¸ðµå »óÅÂÀÇ »ó´ë¿¡°Ô´Â ÆÄƼ °¡ÀÔ ½ÅûÀ» ÇÒ ¼ö ¾ø´Ù.
    	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
    	//testcode
    	PutLogList("Join Party Reject (2)");
    }
    else if (m_pClientList[i]->m_cSide != m_pClientList[iClientH]->m_cSide) {
    	// ÆíÀÌ ´Ù¸£¸é ÆÄƼ¿¡ µé ¼ö ¾ø´Ù.
    	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
    	//testcode
    	PutLogList("Join Party Reject (3)");
    }
    else if (m_pClientList[i]->m_iPartyStatus == DEF_PARTYSTATUS_PROCESSING) {
    	// ÆÄƼ °¡ÀÔÀ» ½ÅûÇÑ ´ë»óÀÌ À̹Ì ´Ù¸¥ ÆÄƼ °¡ÀÔ °ü·Ã 󸮸¦ ÇÃ￾°í ÀÖ´Ù. ½Åû ºÒ°¡.
    	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
    	//testcode
    	PutLogList("Join Party Reject (4)");
    	//testcode
    	wsprintf(G_cTxt, "Party join reject(2) ClientH:%d ID:%d JoinName:%d", i, m_pClientList[i]->m_iPartyID, m_pClientList[i]->m_cReqJoinPartyName);
    	PutLogList(G_cTxt);

    	m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
    	ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
    	m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
    }
    else {
    	// °¡ÀÔ ½ÂÀÎ ¿©ºÎ¸¦ ¹¯´Â´Ù.
    	m_pClientList[i]->m_iReqJoinPartyClientH = iClientH;
    	ZeroMemory(m_pClientList[i]->m_cReqJoinPartyName, sizeof(m_pClientList[i]->m_cReqJoinPartyName));
    	strcpy(m_pClientList[i]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName);
    	SendNotifyMsg(NULL, i, DEF_NOTIFY_QUERY_JOINPARTY, NULL, NULL, NULL, m_pClientList[iClientH]->m_cCharName);

    	// ½ÅûÇÑ Ãø¿¡´Â ÆÄƼ ¸¶½ºÅÃ￾°¡ µÉ ij¸¯ÅÃ￾ÀÇ À妽º¸¦ ³Ö¾îÃ￾Ãœ. Ãë¼ÒÇÒ¶§ ó¸®ÇÃ￾±â À§ÇÔÀÓ.
    	m_pClientList[iClientH]->m_iReqJoinPartyClientH = i;
    	ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
    	strcpy(m_pClientList[iClientH]->m_cReqJoinPartyName, m_pClientList[i]->m_cCharName);
    	// ÆÄƼ »óÅ ¼¼Æ®
    	m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;
    }
    return;
  	}
  	break;

	case 2: // ÆÄƼ ¸â¹ö È®ÀÎ ¸í·É 
  if (m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_CONFIRM) {
  	ZeroMemory(cData, sizeof(cData));
  	cp = (char *)cData;
  	dwp = (DWORD *)cp;
  	*dwp = MSGID_PARTYOPERATION;
  	cp += 4;
  	wp = (WORD*)cp;
  	*wp = 6; // ÆÄƼ ¸â¹ö ¸®½ºÆ® ¿äû
  	cp += 2;
  	wp = (WORD *)cp;
  	*wp = iClientH;
  	cp += 2;
  	memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
  	cp += 10;
  	wp = (WORD *)cp;
  	*wp = m_pClientList[iClientH]->m_iPartyID;
  	cp += 2;
  	PutLogList("JoinPartyHandler case (2) send 6 to GateServer");
  	SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
  }
  break;
	}
}


Code: Select all

void CGame::RequestCreatePartyHandler(int iClientH)
{
	char *cp, cData[120];
	DWORD * dwp;
	WORD * wp;

	if (m_pClientList[iClientH] == NULL) return;
	if (m_pClientList[iClientH]->m_bIsInitComplete == FALSE) return;

	if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_NULL) {
  // ÆÄƼ »óÅ°¡ À̹Ì Ã￾¸ÀçÇÃ￾¸é ÆÄƼ¸¦ ¸¸µé ¼ö ¾ø´Ù.
  return;
	}

	m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;

	// Gate Server¿¡ ÆÄƼ »ý¼ºÈÄ PartyID¸¦ ¾Ë·Ã￾Ã￾Ù °Ã￾À» ¿äûÇÑ´Ù. 
	ZeroMemory(cData, sizeof(cData));
	cp = (char *)cData;

	dwp = (DWORD *)cp;
	*dwp = MSGID_PARTYOPERATION;
	cp += 4;
	wp = (WORD*)cp;
	*wp = 1; // 1, request
	cp += 2;

	wp = (WORD *)cp;
	*wp = iClientH;
	cp += 2;

	memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
	cp += 10;

	PutLogList("RequestCreatePartyHandler send 1 to GateServer");
	SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);

	//testcode
	wsprintf(G_cTxt, "Request Create Party: %d", iClientH);
	PutLogList(G_cTxt);
}

Code: Select all

void CGame::PartyOperationResultHandler(char *pData)
{
 char * cp, cResult, cName[12];
 WORD * wp;
 int i, iClientH, iPartyID, iTotal;

	cp = (char *)(pData + 4);
	wp = (WORD *)cp;
	cp += 2;

	switch (*wp) {
	case 1:
  cResult = *cp;
  cp++;

  wp = (WORD *)cp;
  iClientH = (int)*wp;
  cp += 2;

  ZeroMemory(cName, sizeof(cName));
  memcpy(cName, cp, 10);
  cp += 10;

  wp = (WORD *)cp;
  iPartyID = (int)*wp;
  cp += 2;

  PartyOperationResult_Create(iClientH, cName, cResult, iPartyID);

  wsprintf(G_cTxt, "party Operation Result: Create(ClientH:%d PartyID:%d)", iClientH, iPartyID);
  PutLogList(G_cTxt);
  break;

	case 2:
  wp = (WORD *)cp;
  iPartyID = *wp;
  cp += 2;

  PartyOperationResult_Delete(iPartyID);

  wsprintf(G_cTxt, "party Operation Result: Delete(PartyID:%d)", iPartyID);
  PutLogList(G_cTxt);
  break;

	case 3:
  wp = (WORD *)cp;
  iClientH = *wp;
  cp += 2;

  ZeroMemory(cName, sizeof(cName));
  memcpy(cName, cp, 10);
  cp += 10;

  if ((iClientH < 0) && (iClientH > DEF_MAXCLIENTS)) return;
  if (m_pClientList[iClientH] == NULL) return;
  if (strcmp(m_pClientList[iClientH]->m_cCharName, cName) != 0) return;

  for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
  	if (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == iClientH) {
    m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] = 0;
    m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers--;

    wsprintf(G_cTxt, "PartyID:%d member:%d Out(Clear) Total:%d", m_pClientList[iClientH]->m_iPartyID, iClientH, m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers);
    PutLogList(G_cTxt);
    goto PORH_LOOPBREAK1;
  	}
PORH_LOOPBREAK1:;

    for (i = 0; i < DEF_MAXPARTYMEMBERS-1; i++)
    if ((m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == 0) && (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i+1] != 0)) {
    	m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i]   = m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i+1];
    	m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i+1] = 0;
    }

    m_pClientList[iClientH]->m_iPartyID = NULL;
    m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;

    wsprintf(G_cTxt, "Party Status NULL: %s", m_pClientList[iClientH]->m_cCharName);
    PutLogList(G_cTxt);

    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 8, 0, NULL, NULL);
    break;

	case 4:
  cResult = *cp;
  cp++;

  wp = (WORD *)cp;
  iClientH = (int)*wp;
  cp += 2;

  ZeroMemory(cName, sizeof(cName));
  memcpy(cName, cp, 10);
  cp += 10;

  wp = (WORD *)cp;
  iPartyID = (int)*wp;
  cp += 2;

  PartyOperationResult_Join(iClientH, cName, cResult, iPartyID);

  wsprintf(G_cTxt, "party Operation Result: Join(ClientH:%d PartyID:%d)", iClientH, iPartyID);
  PutLogList(G_cTxt);
  break;

	case 5:
  wp = (WORD *)cp;
  iClientH = (int)*wp;
  cp += 2;

  ZeroMemory(cName, sizeof(cName));
  memcpy(cName, cp, 10);
  cp += 10;

  wp = (WORD *)cp;
  iTotal = (int)*wp;
  cp += 2;

  PartyOperationResult_Info(iClientH, cName, iTotal, cp);

  wsprintf(G_cTxt, "party Operation Result: Info(ClientH:%d Total:%d)", iClientH, iTotal);
  PutLogList(G_cTxt);
  break;

	case 6:
  cResult = *cp;
  cp++;

  wp = (WORD *)cp;
  iClientH = (int)*wp;
  cp += 2;

  ZeroMemory(cName, sizeof(cName));
  memcpy(cName, cp, 10);
  cp += 10;

  wp = (WORD *)cp;
  iPartyID = (int)*wp;
  cp += 2;

  PartyOperationResult_Dismiss(iClientH, cName, cResult, iPartyID);

  wsprintf(G_cTxt, "party Operation Result: Dismiss(ClientH:%d PartyID:%d)", iClientH, iPartyID);
  PutLogList(G_cTxt);
  break;
	}
}

Code: Select all

void CGame::PartyOperationResult_Create(int iClientH, char *pName, int iResult, int iPartyID)
{
	char * cp, cData[120];
	DWORD * dwp;
	WORD * wp;
	int i;

	if (m_pClientList[iClientH] == NULL) return;
	if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;

	switch (iResult) {
	case 0: // ÆÄƼ »ý¼º ½ÇÆÃ￾ 
  if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
  if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;

  m_pClientList[iClientH]->m_iPartyID = NULL;
  m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
  m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 1, 0, NULL, NULL);
  break;

	case 1: // ÆÄƼ »ý¼º ¼º°ø 
  if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
  if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;

  m_pClientList[iClientH]->m_iPartyID = iPartyID;
  m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_CONFIRM;
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 1, 1, NULL, NULL);

  // °ÔÀÓ ¼­¹öÀÇ ÆÄƼ ¸®½ºÆ®¿¡ µî·Ã￾.
  for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
  	if (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == 0) {
    m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] = iClientH;
    m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers++;
    //testcode
    wsprintf(G_cTxt, "PartyID:%d member:%d New Total:%d", m_pClientList[iClientH]->m_iPartyID, iClientH, m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers);
    PutLogList(G_cTxt);
    goto PORC_LOOPBREAK1;
  	}
PORC_LOOPBREAK1:;

  	if ((m_pClientList[iClientH]->m_iReqJoinPartyClientH != NULL) && (strlen(m_pClientList[iClientH]->m_cReqJoinPartyName) != NULL)) {
    ZeroMemory(cData, sizeof(cData));

    cp = (char *)cData;

    dwp = (DWORD *)cp;
    *dwp = MSGID_PARTYOPERATION;
    cp += 4;

    wp = (WORD*)cp;
    *wp = 3;
    cp += 2;

    wp = (WORD *)cp;
    *wp = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
    cp += 2;

    memcpy(cp, m_pClientList[iClientH]->m_cReqJoinPartyName, 10);
    cp += 10;

    wp = (WORD *)cp;
    *wp = m_pClientList[iClientH]->m_iPartyID;
    cp += 2;

    PutLogList("PartyOperationResult_Create send 3 to GateServer");
    SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
    m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
    ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
  	}
  	break;
	}
}

Code: Select all

void CGame::PartyOperationResult_Join(int iClientH, char *pName, int iResult, int iPartyID)
{
	int i;

	if (m_pClientList[iClientH] == NULL) return;

	switch (iResult) {
	case 0:
  if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
  if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;

  m_pClientList[iClientH]->m_iPartyID = NULL;
  m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 4, 0, NULL, pName);

  m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
  ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
  break;

	case 1:
  if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
  if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;

  m_pClientList[iClientH]->m_iPartyID = iPartyID;
  m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_CONFIRM;
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 4, 1, NULL, pName);

  m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
  ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));

  for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
  	if (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == 0) {
    m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] = iClientH;
    m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers++;

    wsprintf(G_cTxt, "PartyID:%d member:%d In(Join) Total:%d", m_pClientList[iClientH]->m_iPartyID, iClientH, m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers);
    PutLogList(G_cTxt);
    goto PORC_LOOPBREAK1;
  	}
PORC_LOOPBREAK1:;

  	for (i = 1; i < DEF_MAXCLIENTS; i++)
    if ((i != iClientH) && (m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
    	SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 4, 1, NULL, pName);
    }
    break;
	}
}

Code: Select all

void CGame::PartyOperationResult_Dismiss(int iClientH, char *pName, int iResult, int iPartyID)
{
	int i;
	// iClientH´Â À̹Ì »ç¶óÃ￾ö°í ¾ø´Â ij¸¯ÅÃ￾ÀÃ￾¼öµµ ÀÖ´Ù.

	switch (iResult) {
	case 0: // ÆÄƼ Å»Åð ½ÇÆÃ￾ ? ÀÌ·± ÀÃ￾ÀÌ?
  break;

	case 1: // ÆÄƼ Å»Å𠼺°ø 
  if (iClientH == NULL) {
  	// iClientH °¡ NULLÀ̸é ¼­¹ö À̵¿Ã￾ß Ã￾¢¼Ó Ã￾¾·áµÇ¾î °­Ã￾¦ Ã￾¦°Å ¿äûµÈ °Ã￾ÀÓ.
  	for (i = 1; i < DEF_MAXCLIENTS; i++)
    if ((m_pClientList[i] != NULL) && (strcmp(m_pClientList[i]->m_cCharName, pName) == 0)) {
    	iClientH = i;
    	goto PORD_LOOPBREAK;
    }
PORD_LOOPBREAK:;

    // °ÔÀÓ ¼­¹öÀÇ ÆÄƼ ¸®½ºÆ®¿¡¼­ ÇØÃ￾¦.
    for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
    	if (m_stPartyInfo[iPartyID].iIndex[i] == iClientH) {
      m_stPartyInfo[iPartyID].iIndex[i] = 0;
      m_stPartyInfo[iPartyID].iTotalMembers--;
      //testcode
      wsprintf(G_cTxt, "PartyID:%d member:%d Out Total:%d", iPartyID, iClientH, m_stPartyInfo[iPartyID].iTotalMembers);
      PutLogList(G_cTxt);
      goto PORC_LOOPBREAK1;
    	}
PORC_LOOPBREAK1:;
    	// ¸®½ºÆ® À妽ºÀÇ ºó°ø°£À» Ã￾¦°ÅÇÑ´Ù.
    	for (i = 0; i < DEF_MAXPARTYMEMBERS-1; i++)
      if ((m_stPartyInfo[iPartyID].iIndex[i] == 0) && (m_stPartyInfo[iPartyID].iIndex[i+1] != 0)) {
      	m_stPartyInfo[iPartyID].iIndex[i]   = m_stPartyInfo[iPartyID].iIndex[i+1];
      	m_stPartyInfo[iPartyID].iIndex[i+1] = 0;
      }

      if (m_pClientList[iClientH] != NULL) {
      	m_pClientList[iClientH]->m_iPartyID = NULL;
      	m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
      	m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
      }

      // ¸ðµç ÆÄƼ¿øµé¿¡°Ô ¾Ë·Ã￾Ã￾Ø´Ù.
      for (i = 1; i < DEF_MAXCLIENTS; i++)
      	if ((m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
        SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 6, 1, NULL, pName);
      	}
      	return;
  }

  if ((m_pClientList[iClientH] != NULL) && (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING)) return;
  if ((m_pClientList[iClientH] != NULL) && (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0)) return;

  // ¸ðµç ÆÄƼ¿øµé¿¡°Ô ¾Ë·Ã￾Ã￾Ø´Ù.
  for (i = 1; i < DEF_MAXCLIENTS; i++)
  	if ((m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
    SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 6, 1, NULL, pName);
  	}

  	// °ÔÀÓ ¼­¹öÀÇ ÆÄƼ ¸®½ºÆ®¿¡¼­ ÇØÃ￾¦.
  	for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
    if (m_stPartyInfo[iPartyID].iIndex[i] == iClientH) {
    	m_stPartyInfo[iPartyID].iIndex[i] = 0;
    	m_stPartyInfo[iPartyID].iTotalMembers--;
    	//testcode
    	wsprintf(G_cTxt, "PartyID:%d member:%d Out Total:%d", iPartyID, iClientH, m_stPartyInfo[iPartyID].iTotalMembers);
    	PutLogList(G_cTxt);
    	goto PORC_LOOPBREAK2;
    }
PORC_LOOPBREAK2:;
    // ¸®½ºÆ® À妽ºÀÇ ºó°ø°£À» Ã￾¦°ÅÇÑ´Ù.
    for (i = 0; i < DEF_MAXPARTYMEMBERS-1; i++)
    	if ((m_stPartyInfo[iPartyID].iIndex[i] == 0) && (m_stPartyInfo[iPartyID].iIndex[i+1] != 0)) {
      m_stPartyInfo[iPartyID].iIndex[i]   = m_stPartyInfo[iPartyID].iIndex[i+1];
      m_stPartyInfo[iPartyID].iIndex[i+1] = 0;
    	}

    	if (m_pClientList[iClientH] != NULL) {
      m_pClientList[iClientH]->m_iPartyID = NULL;
      m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
      m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
    	}
    	break;
	}
}

Code: Select all

void CGame::PartyOperationResult_Delete(int iPartyID)
{
	int i;

	for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
	{
  m_stPartyInfo[iPartyID].iIndex[i] = 0;
  m_stPartyInfo[iPartyID].iTotalMembers = 0;
	}

	// ÆÄƼ ÇØ»êµÊ 
	for (i = 1; i < DEF_MAXCLIENTS; i++)
  if ((m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
  	SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 2, 0, NULL, NULL);
  	m_pClientList[i]->m_iPartyID = NULL;
  	m_pClientList[i]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
  	m_pClientList[i]->m_iReqJoinPartyClientH = NULL;
  	//testcode
  	wsprintf(G_cTxt, "Notify delete party: %d", i);
  	PutLogList(G_cTxt);
  }
}

Code: Select all


void CGame::RequestJoinPartyHandler(int iClientH, char *pData, DWORD dwMsgSize)
{
	char   seps[] = "= \t\n";
	char   * cp, * token, cBuff[256], cData[120], cName[12];
	class  CStrTok * pStrTok;
	DWORD * dwp;
	WORD  * wp;
	int i;

	// ÆÄƼ °¡ÀÔ ¿©ºÎ¸¦ ¹¯°í ÀÖ´Ù.
	if (m_pClientList[iClientH] == NULL) return;
	if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_NULL) return;
	if ((dwMsgSize)	<= 0) return;
	if ((m_bAdminSecurity == TRUE) && (m_pClientList[iClientH]->m_iAdminUserLevel > 0)) return;

	ZeroMemory(cBuff, sizeof(cBuff));
	memcpy(cBuff, pData, dwMsgSize);

	pStrTok = new class CStrTok(cBuff, seps);
	token = pStrTok->pGet();

	token = pStrTok->pGet();
	if (token != NULL) {
  ZeroMemory(cName, sizeof(cName));
  strcpy(cName, token);
	}
	else return;

	for (i = 1; i < DEF_MAXCLIENTS; i++)
  if ((m_pClientList[i] != NULL) && (strcmp(m_pClientList[i]->m_cCharName, cName) == 0)) {
  	// °ÔÀÌÆ® ¼­¹ö·Î ÆÄƼ ¸â¹ö °¡ÀÔÀ» ½ÅûÇÑ´Ù.
  	if ((m_pClientList[i]->m_iPartyID == NULL) || (m_pClientList[i]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM)) {
    // ÆÄƼ¿¡ °¡ÀÔÇÃ￾°íÀÚ ÇÑ ij¸¯ÅÃ￾°¡ ÆÄƼ ¸¶½ºÅÃ￾°¡ ¾Æ´Ã￾´Ù.
    return;
  	}

  	ZeroMemory(cData, sizeof(cData));
  	
  	cp = (char *)cData;
  	dwp = (DWORD *)cp;
  	*dwp = MSGID_PARTYOPERATION;
  	cp += 4;
  	wp = (WORD*)cp;
  	*wp = 3; // ÆÄƼ ¸â¹ö Ãß°¡ ¿äû
  	cp += 2;
  	wp = (WORD *)cp;
  	*wp = iClientH;
  	cp += 2;
  	memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
  	cp += 10;
  	wp = (WORD *)cp;
  	*wp = m_pClientList[i]->m_iPartyID;
  	cp += 2;
  	PutLogList("RequestJoinPartyHandler send 3 to GateServer");
  	SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
  	return;
  }

  // °¡ÀÔÇÃ￾°íÀÚ ÇÃ￾´Â ÆÄƼ ¸¶½ºÅÃ￾°¡ ÇöÀç ¼­¹ö¿¡ Ã￾¸ÀçÇÃ￾Ã￾ö ¾Ê´Â´Ù.
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PLAYERNOTONGAME, NULL, NULL, NULL, cName);
}


Code: Select all

void CGame::RequestDismissPartyHandler(int iClientH)
{
	char * cp, cData[120];
	DWORD * dwp;
	WORD  * wp;

	if (m_pClientList[iClientH] == NULL) return;
	if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM) return;

	ZeroMemory(cData, sizeof(cData));
	cp = (char *)cData;
	dwp = (DWORD *)cp;
	*dwp = MSGID_PARTYOPERATION;
	cp += 4;
	wp = (WORD*)cp;
	*wp = 4; // ¸â¹ö Ã￾¦°Å ¿äû
	cp += 2;
	wp = (WORD *)cp;
	*wp = iClientH;
	cp += 2;
	memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
	cp += 10;
	wp = (WORD *)cp;
	*wp = m_pClientList[iClientH]->m_iPartyID;
	cp += 2;
	PutLogList("RequestDismissPartyHandler send 4 to GateServer");
	SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);

	m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;
}

Code: Select all

void CGame::GetPartyInfoHandler(int iClientH)
{
	char * cp, cData[120];
	DWORD * dwp;
	WORD  * wp;

	if (m_pClientList[iClientH] == NULL) return;
	if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM) return;

	ZeroMemory(cData, sizeof(cData));
	cp = (char *)cData;
	dwp = (DWORD *)cp;
	*dwp = MSGID_PARTYOPERATION;
	cp += 4;
	wp = (WORD*)cp;
	*wp = 5; // ÆÄƼ Ã￾¤º¸ ¿äû
	cp += 2;
	wp = (WORD *)cp;
	*wp = iClientH;
	cp += 2;
	memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
	cp += 10;
	wp = (WORD *)cp;
	*wp = m_pClientList[iClientH]->m_iPartyID;
	cp += 2;
	PutLogList("GetPartyInfoHandler send 5 to GateServer");
	SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
}

Code: Select all

void CGame::PartyOperationResult_Info(int iClientH, char * pName, int iTotal, char *pNameList)
{
	if (m_pClientList[iClientH] == NULL) return;
	if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;
	if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM) return;

	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 5, 1, iTotal, pNameList);
}

Code: Select all

void CGame::RequestDeletePartyHandler(int iClientH)
{
	char * cp, cData[120];
	DWORD * dwp;
	WORD * wp;

	if (m_pClientList[iClientH] == NULL) return;
	if (m_pClientList[iClientH]->m_iPartyID != NULL) {
  ZeroMemory(cData, sizeof(cData));
  cp = (char *)cData;
  dwp = (DWORD *)cp;
  *dwp = MSGID_PARTYOPERATION;
  cp += 4;
  wp = (WORD*)cp;
  *wp = 4; // ¸â¹ö Ã￾¦°Å ¿äû
  cp += 2;
  wp = (WORD *)cp;
  *wp = iClientH;
  cp += 2;
  memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
  cp += 10;
  wp = (WORD *)cp;
  *wp = m_pClientList[iClientH]->m_iPartyID;
  cp += 2;
  PutLogList("RequestDeletePartyHandler send 4 to GateServer");
  SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
  // »óÅ º¯È¯
  m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;
	}
}

Code: Select all

void CGame::RequestAcceptJoinPartyHandler(int iClientH, int iResult)
{
	char *cp, cData[120];
	DWORD * dwp;
	WORD * wp;
	int iH;

	if (m_pClientList[iClientH] == NULL) return;

	switch (iResult) {
	case 0: // ÆÄƼ °¡ÀÔ ½Åû °ÅºÎµÇ¾úÀ½À» ¾Ë·Ã￾Ã￾Ø´Ù.
  iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
  if (m_pClientList[iH] == NULL) {
  	// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼­¹ö»ó¿¡ ¾ø´Ù.
  	return;
  }
  if (strcmp(m_pClientList[iH]->m_cCharName, m_pClientList[iClientH]->m_cReqJoinPartyName) != 0) {
  	// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼­¹ö»ó¿¡ ¾ø´Ù.
  	return;
  }
  if (m_pClientList[iH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) {
  	// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾îÀÇ »óÅ°¡ º¯°æµÇ¾ú´Ù.
  	return;
  }
  if ((m_pClientList[iH]->m_iReqJoinPartyClientH != iClientH) || (strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) != 0)) {
  	// °¡ÀÔÀ» ½ÅûÇß´ø ±×¶§ ±× Ç÷¹À̾ ¾Æ´Ã￾´Ù.
  	return;
  }

  SendNotifyMsg(NULL, iH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
  //testcode
  wsprintf(G_cTxt, "Party join reject(3) ClientH:%d ID:%d", iH, m_pClientList[iH]->m_iPartyID);
  PutLogList(G_cTxt);

  m_pClientList[iH]->m_iPartyID = NULL;
  m_pClientList[iH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
  m_pClientList[iH]->m_iReqJoinPartyClientH = NULL;
  ZeroMemory(m_pClientList[iH]->m_cReqJoinPartyName, sizeof(m_pClientList[iH]->m_cReqJoinPartyName));

  m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
  ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
  break;

	case 1: // ÆÄƼ °¡ÀÔ ½Åû ½ÂÀÎ
  if ((m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_CONFIRM) && (m_pClientList[iClientH]->m_iPartyID != NULL)) {
  	iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
  	if (m_pClientList[iH] == NULL) {
    // °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼­¹ö»ó¿¡ ¾ø´Ù.
    return;
  	}
  	if (strcmp(m_pClientList[iH]->m_cCharName, m_pClientList[iClientH]->m_cReqJoinPartyName) != 0) {
    // °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼­¹ö»ó¿¡ ¾ø´Ù.
    return;
  	}
  	if (m_pClientList[iH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) {
    // °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾îÀÇ »óÅ°¡ º¯°æµÇ¾ú´Ù.
    return;
  	}
  	if ((m_pClientList[iH]->m_iReqJoinPartyClientH != iClientH) || (strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) != 0)) {
    // °¡ÀÔÀ» ½ÅûÇß´ø ±×¶§ ±× Ç÷¹À̾ ¾Æ´Ã￾´Ù.
    return;
  	}

  	// °¡ÀÔ ó¸® ÇÑ´Ù.
  	ZeroMemory(cData, sizeof(cData));
  	cp = (char *)cData;
  	dwp = (DWORD *)cp;
  	*dwp = MSGID_PARTYOPERATION;
  	cp += 4;
  	wp = (WORD*)cp;
  	*wp = 3; // ÆÄƼ ¸â¹ö Ãß°¡ ¿äû
  	cp += 2;
  	wp = (WORD *)cp;
  	*wp = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
  	cp += 2;
  	memcpy(cp, m_pClientList[iClientH]->m_cReqJoinPartyName, 10);
  	cp += 10;
  	wp = (WORD *)cp;
  	*wp = m_pClientList[iClientH]->m_iPartyID;
  	cp += 2;
  	PutLogList("RequestAcceptJoinPartyHandler send 3 to GateServer");
  	SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
  }
  else {
  	iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
  	if (m_pClientList[iH] == NULL) {
    // °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼­¹ö»ó¿¡ ¾ø´Ù.
    return;
  	}
  	if (strcmp(m_pClientList[iH]->m_cCharName, m_pClientList[iClientH]->m_cReqJoinPartyName) != 0) {
    // °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼­¹ö»ó¿¡ ¾ø´Ù.
    return;
  	}
  	if (m_pClientList[iH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) {
    // °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾îÀÇ »óÅ°¡ º¯°æµÇ¾ú´Ù.
    return;
  	}
  	if ((m_pClientList[iH]->m_iReqJoinPartyClientH != iClientH) || (strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) != 0)) {
    // °¡ÀÔÀ» ½ÅûÇß´ø ±×¶§ ±× Ç÷¹À̾ ¾Æ´Ã￾´Ù.
    return;
  	}

  	if (m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_NULL) {
    // ½Åû ¹ÞÀº Ç÷¹À̾ ¾Æ¹«·± ÆÄƼ¿¡µµ °¡ÀÔÇÃ￾°í ÀÖÃ￾ö ¾Ê´Ù. ÀÌ ij¸¯ÅÃ￾¸¦ ÆÄƼ ¸¶½ºÅÃ￾·Î ½ÅûÇÑ´Ù.
    RequestCreatePartyHandler(iClientH);
  	}
  	else {
    // ó¸® ºÒ°¡
  	}
  }
  break;

	case 2: // ÆÄƼ °¡ÀÔ ½Åû Ãë¼Ò
  // ÀÌ ¸Þ½ÃÃ￾ö¸¦ ¹Þ±â Àü¿¡ À̹Ì ÆÄƼ¿¡ °¡ÀԵǾú´Ù¸é Å»Åð 󸮸¦ ÇÑ´Ù.
  if ((m_pClientList[iClientH]->m_iPartyID != NULL) && (m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_CONFIRM)) {
  	// ¸â¹ö Ã￾¦°Å¸¦ ¿äûÇÑ´Ù.
  	RequestDismissPartyHandler(iClientH);
  }
  else {
  	// °¡ÀÔ ½Åû »óÅ¿´´ø °ªµéÀ» ÃʱâÈ­ ÇÑ´Ù.
  	iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;

  	// ½ÅûÇß´ø ij¸¯ÅÃ￾°¡ Ã￾¢¼ÓÀ» ²÷Àº »óŶó¸é NULLÀÃ￾ ¼ö ÀÖ´Ù.
  	if ((m_pClientList[iH] != NULL) && (m_pClientList[iH]->m_iReqJoinPartyClientH == iClientH) && 
    (strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) == 0)) {
    	// ½ÅûÇß´ø ij¸¯ÅÃ￾ÀÇ ÆÄƼ ¾ÆÀ̵ð¿Ã￾ »óÅ´Â °Çµå¸®Ã￾ö ¾Ê´Â´Ù.
    	m_pClientList[iH]->m_iReqJoinPartyClientH = NULL;
    	ZeroMemory(m_pClientList[iH]->m_cReqJoinPartyName, sizeof(m_pClientList[iH]->m_cReqJoinPartyName));
    }

    m_pClientList[iClientH]->m_iPartyID = NULL;
    m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
    m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
    ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
  }
  break;
	}
}


have fun
<img src='http://lifeplaysu420.com/unknow/nightsign.png' border='0' alt='user posted image' /><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Wanna make money for surfing the net sing up at <br><a href='http://www.cashfiesta.com/php/join.php? ... yprivitera' target='_blank'>cash fiesta</a><br>its all free hey why ntot make money while fucking around on the computer<br><br><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kahn
Loyal fan
Posts: 203
Joined: Thu Oct 07, 2004 1:20 am

Post by kahn »

if they type /createparty it will fix this problem well not for ever but while they play it can take them out ao a party to rejoin
snoopy81
Loyal fan
Posts: 338
Joined: Mon Jul 12, 2004 7:13 pm

Post by snoopy81 »

There is missing the DeleteClient(...) part.

and, most important: InitPlayerData(...) must finish using GetPartyInfoHandler(iClientH);
_\_ _<br> / , \__/ . \ Admin of Equilibrium Project<br> II\ \___ . O<br> III \_/ \ _ / <a href='http://www.equiprojet.com' target='_blank'>http://www.equiprojet.com</a><br> II I¯I
666666
Regular
Posts: 39
Joined: Thu Nov 24, 2005 1:14 pm

Post by 666666 »

Thanks alot guys
666666
Regular
Posts: 39
Joined: Thu Nov 24, 2005 1:14 pm

Post by 666666 »

Well, I've been trying to fix it, but it still won't work. Anyone got a direct code, because I'm getting nowhere with the party source in 2.24b
juggalo2
Spamtastic
Posts: 1144
Joined: Sun Jul 17, 2005 5:28 pm

Post by juggalo2 »

the source i sent works works fine wsith my server
<img src='http://lifeplaysu420.com/unknow/nightsign.png' border='0' alt='user posted image' /><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Wanna make money for surfing the net sing up at <br><a href='http://www.cashfiesta.com/php/join.php? ... yprivitera' target='_blank'>cash fiesta</a><br>its all free hey why ntot make money while fucking around on the computer<br><br><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
666666
Regular
Posts: 39
Joined: Thu Nov 24, 2005 1:14 pm

Post by 666666 »

is the code you applied the default one in source 2.24b, or have you modified it?
juanduran
noob
Posts: 19
Joined: Sat Dec 04, 2004 1:21 am

Post by juanduran »

Party Fix

Search void cgame::RequestInitDataHandler(...) ... and then add....

Code: Select all

	//If the party is finished u have party-id = 0
	if (m_pClientList[iClientH]->m_iPartyID != 0) {
  m_pClientList[iClientH]->m_iPartyID = NULL;
  GetPartyInfoHandler(iClientH);
	}
test it..im not sure if this will work...
juggalo2
Spamtastic
Posts: 1144
Joined: Sun Jul 17, 2005 5:28 pm

Post by juggalo2 »

party bugs fixed in 3.0 for the mosted part just use there code
<img src='http://lifeplaysu420.com/unknow/nightsign.png' border='0' alt='user posted image' /><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Wanna make money for surfing the net sing up at <br><a href='http://www.cashfiesta.com/php/join.php? ... yprivitera' target='_blank'>cash fiesta</a><br>its all free hey why ntot make money while fucking around on the computer<br><br><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Post Reply