Client sources bug, in walking mode

All Helbreath Client Source Discussion here.
bone-you
Spamtastic
Posts: 1310
Joined: Wed Mar 16, 2005 3:12 am

Post by bone-you »

Code: Select all

	case DEF_OBJECTRUN:
  // ´Þ¸°°Í¿¡ ´ëÇÑ È¿°ú¸¦ ó¸®ÇÑ´Ù. ü·Â°¨¼Òµîµî
  iRet = iClientMotion_Move_Handler(iClientH, sX, sY, cDir, TRUE);
  if (iRet == 1) {
  	// ÀÎÁ¢ÇÑ Å¬¶óÀ̾ðÆ®µé¿¡°Ô À̵¿ À̺¥Æ®¸¦ ¾Ë¸°´Ù. 
  	SendEventToNearClient_TypeA((short)iClientH, DEF_OWNERTYPE_PLAYER, MSGID_EVENT_MOTION, DEF_OBJECTRUN, NULL, NULL, NULL);
  }
  if ((m_pClientList[iClientH] != NULL) && (m_pClientList[iClientH]->m_iHP <= 0)) ClientKilledHandler(iClientH, NULL, NULL, 1); // v1.4
1 being returned means a successful move. That nullaction message might be what's messing everything up. Try removing it.

0 is a bump.
<img src='http://www.helbreathx.net/sig/sig.jpeg' border='0' alt='user posted image' /><br><a href='http://mafia.cheats4us.org/index.php?x=231030' target='_blank'>#1 on Mafia :D</a><br><!--QuoteBegin-Slipknight+--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Slipknight)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->100mb Internet, burstable too 10GB oc192<br>his speed can go up too 10gbs<br>...<br>Yes my car can have a top speed of 1000mph<!--QuoteEnd--></td></tr></table><div class='signature'><!--QuoteEEnd--><br>^^ I wonder where the retard went to.
Drajwer
&lt;3 bd long time
Posts: 841
Joined: Fri Dec 10, 2004 3:24 pm

Post by Drajwer »

xenx wrote: i cant send u a screen or video cause it only happens when ur connected remotely, doesnt happen when your connected to your own server
bullshit
<img src='http://img440.imageshack.us/img440/2627/15pt.jpg' border='0' alt='user posted image' /><br><br>HBPolska characters:<br><br>Hellios 150+ Aresden Hero Mage<br>TheBill 120 Aresden plrider<br>Kill_Me 100 Full-Hero plrider<br>Rockeater 110+ Aresden Plate Mage<br><br><a href='http://www.helbreath.org' target='_blank'>http://www.helbreath.org</a> come and play (250 ppl online)
xenx
Member
Posts: 169
Joined: Tue Oct 03, 2006 7:08 am

Post by xenx »

doesnt happen when im connecting to the server on my own pc man, doesnt happen when my hoster connects to his own pc either ..

what makes u think its bullshit? :/

why would i lie when im trying to fix something? :/

could someone please post the entire CGame::iClientMotion_Move_Handler

from some old 2.20 sources, or any sources where movement works properly

i wanna compare but i dont have an original 2.20 source anywhere
xenx
Member
Posts: 169
Joined: Tue Oct 03, 2006 7:08 am

Post by xenx »

Problem fixed, was a few problems with
int CGame::iClientMotion_Move_Handler

replaced with an older version, works perfectly now

if u need it, here it is:

Code: Select all

int CGame::iClientMotion_Move_Handler(int iClientH, short sX, short sY, char cDir, char cMoveType)//from older source added by XenX
{
 char  * cp, cData[3000];
 class CTile * pTile;
 DWORD * dwp;
 WORD  * wp, wObjectID;
 short * sp, dX, dY, sTemp, sTemp2, sDOtype, pTopItem;
 int   * ip, iRet, iSize, iDamage;
 BOOL  bRet, bIsBlocked = FALSE;

	if (m_pClientList[iClientH] == NULL) return 0;
	if ((cDir <= 0) || (cDir > 8))       return 0;
	if (m_pClientList[iClientH]->m_bIsKilled == TRUE) return 0;
	if (m_pClientList[iClientH]->m_bIsInitComplete == FALSE) return 0;
	
	if ((sX != m_pClientList[iClientH]->m_sX) || (sY != m_pClientList[iClientH]->m_sY)) return 2;
	int iStX, iStY;
	if (m_pMapList[m_pClientList[iClientH]->m_cMapIndex] != NULL) {
  iStX = m_pClientList[iClientH]->m_sX / 20;
  iStY = m_pClientList[iClientH]->m_sY / 20;
  m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_stTempSectorInfo[iStX][iStY].iPlayerActivity++;
  
  switch (m_pClientList[iClientH]->m_cSide) {
  case 0: m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_stTempSectorInfo[iStX][iStY].iNeutralActivity++; break;
  case 1: m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_stTempSectorInfo[iStX][iStY].iAresdenActivity++; break;
  case 2: m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_stTempSectorInfo[iStX][iStY].iElvineActivity++;  break;
  }
	}
	
	ClearSkillUsingStatus(iClientH);
	
	dX = m_pClientList[iClientH]->m_sX;
	dY = m_pClientList[iClientH]->m_sY;

	switch (cDir) {
	case 1:	dY--; break;
	case 2:	dX++; dY--;	break;
	case 3:	dX++; break;
	case 4:	dX++; dY++;	break;
	case 5: dY++; break;
	case 6:	dX--; dY++;	break;
	case 7:	dX--; break;
	case 8:	dX--; dY--;	break;
	}

	pTopItem = 0;
	bRet = m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->bGetMoveable(dX, dY, &sDOtype, &pTopItem);
	//mag-en00b added to possibly remedy "inviwall" problem 28.08.05
	short sOwner;
	char sOwnerType;
	if (bRet == FALSE) {
  m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->GetOwner(&sOwner,&sOwnerType,dX,dY);	
  if (sOwnerType == 0) {
  	pTile = (class CTile *)(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_pTile +
    dX + dY*m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_sSizeY);
  	pTile->m_sOwner = NULL;
  	pTile->m_cOwnerClass = NULL;
  	pTile->m_sDeadOwner = NULL;
  	pTile->m_cDeadOwnerClass = NULL;
  }
	}
if (m_pClientList[iClientH]->m_cMagicEffectStatus[DEF_MAGICTYPE_HOLDOBJECT] != 0) {
  bRet = FALSE;
}

	bIsBlocked = FALSE;
  
	if ((bRet == TRUE) && (bIsBlocked == FALSE)) {
  if (m_pClientList[iClientH]->m_iQuest != NULL) _bCheckIsQuestCompleted(iClientH);

  m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->ClearOwner(1, iClientH, DEF_OWNERTYPE_PLAYER, m_pClientList[iClientH]->m_sX, m_pClientList[iClientH]->m_sY);

  m_pClientList[iClientH]->m_sX   = dX;
  m_pClientList[iClientH]->m_sY   = dY;
  m_pClientList[iClientH]->m_cDir = cDir;

  m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->SetOwner((short)iClientH,
                                                          DEF_OWNERTYPE_PLAYER,
                   dX, dY);

  if (sDOtype == DEF_DYNAMICOBJECT_SPIKE) {
  	if ((m_pClientList[iClientH]->m_bIsNeutral == TRUE) && ((m_pClientList[iClientH]->m_sAppr2 & 0xF000) == 0)) {

  	}
  	else {
    iDamage = iDice(2,4);

    if (m_pClientList[iClientH]->m_iAdminUserLevel == 0)
    	m_pClientList[iClientH]->m_iHP -= iDamage;
  	}
  }
  
  if (m_pClientList[iClientH]->m_iHP <= 0) m_pClientList[iClientH]->m_iHP = 0;
  
  dwp  = (DWORD *)(cData + DEF_INDEX4_MSGID);
  *dwp = MSGID_RESPONSE_MOTION;
  wp   = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
  *wp  = DEF_OBJECTMOVE_CONFIRM;
  
  cp = (char *)(cData + DEF_INDEX2_MSGTYPE+2);
  
  sp  = (short *)cp;
  *sp = (short)(dX - 10); 
  cp += 2;
  
  sp  = (short *)cp;
  *sp = (short)(dY - 7); 
  cp += 2;
  
  *cp = cDir;
  cp++;
  
  if (cMoveType == 1) {
  	if (m_pClientList[iClientH]->m_iSP > 0) {
    *cp = 0;
    if (m_pClientList[iClientH]->m_iTimeLeft_FirmStaminar == 0) {
    	m_pClientList[iClientH]->m_iSP--;
    	*cp = 1;
    }
  	}
  	else {
    *cp = 0;
    if (m_pClientList[iClientH]->m_iTimeLeft_FirmStaminar == 0) {
    	m_pClientList[iClientH]->m_iSP--;
    	*cp = 1;
    }
    if (m_pClientList[iClientH]->m_iSP < -10) {
    	m_pClientList[iClientH]->m_iSP = 0;
    	DeleteClient(iClientH, TRUE, TRUE);
    	return 0;
    }
  	}
  }
  else *cp = 0;
  cp++;
  
  pTile = (class CTile *)(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_pTile + dX + dY*m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_sSizeY);
  *cp = (char)pTile->m_iOccupyStatus;
  cp++;
  
  ip = (int *)cp;
  *ip = m_pClientList[iClientH]->m_iHP;
  cp += 4;
  
  iSize = iComposeMoveMapData((short)(dX - 10), (short)(dY - 7), iClientH, cDir, cp);	
  iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(cData, iSize + 12 + 1 + 4);
  switch (iRet) {
  case DEF_XSOCKEVENT_QUENEFULL:
  case DEF_XSOCKEVENT_SOCKETERROR:
  case DEF_XSOCKEVENT_CRITICALERROR:
  case DEF_XSOCKEVENT_SOCKETCLOSED:
  	DeleteClient(iClientH, TRUE, TRUE);
  	return 0;
  }
	}
	else {
  m_pClientList[iClientH]->m_bIsMoveBlocked = TRUE;
	dwp  = (DWORD *)(cData + DEF_INDEX4_MSGID);
  *dwp = MSGID_RESPONSE_MOTION;
  wp   = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
  *wp  = DEF_OBJECTMOVE_REJECT;
  if (bIsBlocked == TRUE) {
  	m_pClientList[iClientH]->m_dwAttackLAT = 1050;
  }
  m_pClientList[iClientH]->m_dwAttackLAT = 1010;

  wObjectID = (WORD)iClientH;

  cp = (char *)(cData + DEF_INDEX2_MSGTYPE + 2);

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

  sp  = (short *)cp;
  sX  = m_pClientList[wObjectID]->m_sX;
  *sp = sX;
  cp += 2;

  sp  = (short *)cp;
  sY  = m_pClientList[wObjectID]->m_sY;
  *sp = sY;
  cp += 2;

  sp  = (short *)cp;
  *sp = m_pClientList[wObjectID]->m_sType;
  cp += 2;

  *cp = m_pClientList[wObjectID]->m_cDir;
  cp++;

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

  sp  = (short *)cp;
  *sp = m_pClientList[wObjectID]->m_sAppr1;
  cp += 2;

  sp  = (short *)cp;
  *sp = m_pClientList[wObjectID]->m_sAppr2;
  cp += 2;

  sp  = (short *)cp;
  *sp = m_pClientList[wObjectID]->m_sAppr3;
  cp += 2;

  sp  = (short *)cp;
  *sp = m_pClientList[wObjectID]->m_sAppr4;
  cp += 2;

  ip  = (int *)cp;
  *ip = m_pClientList[wObjectID]->m_iApprColor;
  cp+= 4;

  ip  = (int *)cp;
  sTemp = m_pClientList[wObjectID]->m_iStatus;
  sTemp = 0x0FFFFFFF & sTemp;
  sTemp2 = iGetPlayerABSStatus(wObjectID, iClientH);
  sTemp  = (sTemp | (sTemp2 << 28));
  *ip = sTemp;
  cp += 4;

  iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(cData, 42);
  
  switch (iRet) {
  case DEF_XSOCKEVENT_QUENEFULL:
  case DEF_XSOCKEVENT_SOCKETERROR:
  case DEF_XSOCKEVENT_CRITICALERROR:
  case DEF_XSOCKEVENT_SOCKETCLOSED:
  	DeleteClient(iClientH, TRUE, TRUE);
  	return 0;
  }
  return 0;
	}

	return 1;
}
juggalo2
Spamtastic
Posts: 1144
Joined: Sun Jul 17, 2005 5:28 pm

Post by juggalo2 »

i told u it was hg :P
<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>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xenx
Member
Posts: 169
Joined: Tue Oct 03, 2006 7:08 am

Post by xenx »

hehe u did and u were right :D
ADDKiD
&lt;3 bd long time
Posts: 967
Joined: Tue Jul 12, 2005 8:07 pm
Location: Washington, USA
Contact:

Post by ADDKiD »

Nice Juggalo... I always thought it was Client. Funny part was, any v3.51 Client that's been Cracked, USA one.. Never did it too me... But when I used a Snoopy Client it did.. Dunno, if I'm just imagining things or what.. who cares. Good Job both of you =)
Post Reply