|
|
|
|
void AVATAR_OBJECT::ProcessRAttackPacket( void )
{
ATTACK_FOR_PROTOCOL tAttackInfo = {0};
int i;
mMYINFO->mTotalTargetNum = 0;
for ( i = 1; i < mPLAY->MAX_AVATAR_OBJECT; i++ )
{
if ( mPLAY->mAVATAR_OBJECT[i].mCheckValidState && mPLAY->mAVATAR_OBJECT[i].mDATA.aVisibleState && mPLAY->CheckPossibleAvatarTarget( mPLAY->mAVATAR_OBJECT[i].mDATA.aAction.aSort)
&& mPLAY->CheckRAttackRange(mDATA.aAction.aSkillNumber, mDATA.aAction.aLocation, mPLAY->mAVATAR_OBJECT[i].mDATA.aAction.aLocation, 4.5f
) )
{
if ( mPLAY->mAVATAR_OBJECT[0].mDATA.aDuelState[0] == 1 && mPLAY->mAVATAR_OBJECT[i].mDATA.aDuelState[0] == 1 && mPLAY->mAVATAR_OBJECT[0].mDATA.aDuelState[1] == mPLAY->mAVATAR_OBJECT[i].mDATA.aDuelState[1] && mPLAY->mAVATAR_OBJECT[0].mDATA.aDuelState[2] != mPLAY->mAVATAR_OBJECT[i].mDATA.aDuelState[2] )
{
if ( mMYINFO->mTotalTargetNum < 5 )
{
mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum] = 1;
mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum + 5] = 1;
mMYINFO->mTargetServerIndex[mMYINFO->mTotalTargetNum] = mPLAY->mAVATAR_OBJECT[i].mServerIndex;
mMYINFO->mTargetUniqueNumber[mMYINFO->mTotalTargetNum++] = mPLAY->mAVATAR_OBJECT[i].mUniqueNumber;
}
}
else if ( mPLAY->CheckPossibleTribeAttack(mPLAY->mAVATAR_OBJECT[i].mDATA.aTribe, mPLAY->mAVATAR_OBJECT[i].mDATA.aBattleTeam, mPLAY->mAVATAR_OBJECT[i].mDATA.aGuildName) && mMYINFO->mTotalTargetNum < 5 )
{
mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum] = 1;
mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum + 5] = 2;
mMYINFO->mTargetServerIndex[mMYINFO->mTotalTargetNum] = mPLAY->mAVATAR_OBJECT[i].mServerIndex;
mMYINFO->mTargetUniqueNumber[mMYINFO->mTotalTargetNum++] = mPLAY->mAVATAR_OBJECT[i].mUniqueNumber;
}
}
}
for ( i = 0; i < mPLAY->MAX_MONSTER_OBJECT; i++ )
{
if ( mPLAY->mMONSTER_OBJECT[i].mCheckValidState && mPLAY->CheckPossibleMonsterTarget(mPLAY->mMONSTER_OBJECT[i].mDATA.mAction.aSort) && mMYINFO->mTotalTargetNum < 5
&& mPLAY->CheckRAttackRange(
mDATA.aAction.aSkillNumber,
mDATA.aAction.aLocation, mPLAY->mMONSTER_OBJECT[i].mDATA.mAction.aLocation,
mPLAY->mMONSTER_OBJECT[i].mRadiusForSize
)
)
{
mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum] = 2;
mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum + 5] = 3;
mMYINFO->mTargetServerIndex[mMYINFO->mTotalTargetNum] = mPLAY->mMONSTER_OBJECT[i].mIndex;
mMYINFO->mTargetUniqueNumber[mMYINFO->mTotalTargetNum++] = mPLAY->mMONSTER_OBJECT[i].mUniqueNumber;
}
}
for ( i = 0; i < mMYINFO->mTotalTargetNum; i++ )
{
tAttackInfo.mCase = mMYINFO->mTargetSort[i + 5];
tAttackInfo.mServerIndex1 = mServerIndex;
tAttackInfo.mUniqueNumber1 = mUniqueNumber;
tAttackInfo.mServerIndex2 = mMYINFO->mTargetServerIndex[i];
tAttackInfo.mUniqueNumber2 = mMYINFO->mTargetUniqueNumber[i];
tAttackInfo.mSenderLocation[0] = mDATA.aAction.aLocation[0];
tAttackInfo.mSenderLocation[1] = mDATA.aAction.aLocation[1];
tAttackInfo.mSenderLocation[2] = mDATA.aAction.aLocation[2];
tAttackInfo.mAttackActionValue1 = 2;
tAttackInfo.mAttackActionValue2 = mDATA.aAction.aSkillNumber;
tAttackInfo.mAttackActionValue3 = mDATA.aAction.aSkillGradeNum2 + mDATA.aAction.aSkillGradeNum1;
tAttackInfo.mAttackActionValue4 = mDATA.aAction.aSort;
mTRANSFER->T_PROCESS_ATTACK_SEND(&tAttackInfo);
}
}
Why not OtherUser?Quote:
It's called another type of animation hack.
try next hack: (bypass) send attack packet for every monster on screen.
here is client aoe attack method:
Code:void AVATAR_OBJECT::ProcessRAttackPacket( void ) { ATTACK_FOR_PROTOCOL tAttackInfo = {0}; int i; mMYINFO->mTotalTargetNum = 0; for ( i = 1; i < mPLAY->MAX_AVATAR_OBJECT; i++ ) { if ( mPLAY->mAVATAR_OBJECT[i].mCheckValidState && mPLAY->mAVATAR_OBJECT[i].mDATA.aVisibleState && mPLAY->CheckPossibleAvatarTarget( mPLAY->mAVATAR_OBJECT[i].mDATA.aAction.aSort) && mPLAY->CheckRAttackRange(mDATA.aAction.aSkillNumber, mDATA.aAction.aLocation, mPLAY->mAVATAR_OBJECT[i].mDATA.aAction.aLocation, 4.5f ) ) { if ( mPLAY->mAVATAR_OBJECT[0].mDATA.aDuelState[0] == 1 && mPLAY->mAVATAR_OBJECT[i].mDATA.aDuelState[0] == 1 && mPLAY->mAVATAR_OBJECT[0].mDATA.aDuelState[1] == mPLAY->mAVATAR_OBJECT[i].mDATA.aDuelState[1] && mPLAY->mAVATAR_OBJECT[0].mDATA.aDuelState[2] != mPLAY->mAVATAR_OBJECT[i].mDATA.aDuelState[2] ) { if ( mMYINFO->mTotalTargetNum < 5 ) { mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum] = 1; mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum + 5] = 1; mMYINFO->mTargetServerIndex[mMYINFO->mTotalTargetNum] = mPLAY->mAVATAR_OBJECT[i].mServerIndex; mMYINFO->mTargetUniqueNumber[mMYINFO->mTotalTargetNum++] = mPLAY->mAVATAR_OBJECT[i].mUniqueNumber; } } else if ( mPLAY->CheckPossibleTribeAttack(mPLAY->mAVATAR_OBJECT[i].mDATA.aTribe, mPLAY->mAVATAR_OBJECT[i].mDATA.aBattleTeam, mPLAY->mAVATAR_OBJECT[i].mDATA.aGuildName) && mMYINFO->mTotalTargetNum < 5 ) { mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum] = 1; mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum + 5] = 2; mMYINFO->mTargetServerIndex[mMYINFO->mTotalTargetNum] = mPLAY->mAVATAR_OBJECT[i].mServerIndex; mMYINFO->mTargetUniqueNumber[mMYINFO->mTotalTargetNum++] = mPLAY->mAVATAR_OBJECT[i].mUniqueNumber; } } } for ( i = 0; i < mPLAY->MAX_MONSTER_OBJECT; i++ ) { if ( mPLAY->mMONSTER_OBJECT[i].mCheckValidState && mPLAY->CheckPossibleMonsterTarget(mPLAY->mMONSTER_OBJECT[i].mDATA.mAction.aSort) && mMYINFO->mTotalTargetNum < 5 && mPLAY->CheckRAttackRange( mDATA.aAction.aSkillNumber, mDATA.aAction.aLocation, mPLAY->mMONSTER_OBJECT[i].mDATA.mAction.aLocation, mPLAY->mMONSTER_OBJECT[i].mRadiusForSize ) ) { mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum] = 2; mMYINFO->mTargetSort[mMYINFO->mTotalTargetNum + 5] = 3; mMYINFO->mTargetServerIndex[mMYINFO->mTotalTargetNum] = mPLAY->mMONSTER_OBJECT[i].mIndex; mMYINFO->mTargetUniqueNumber[mMYINFO->mTotalTargetNum++] = mPLAY->mMONSTER_OBJECT[i].mUniqueNumber; } } for ( i = 0; i < mMYINFO->mTotalTargetNum; i++ ) { tAttackInfo.mCase = mMYINFO->mTargetSort[i + 5]; tAttackInfo.mServerIndex1 = mServerIndex; tAttackInfo.mUniqueNumber1 = mUniqueNumber; tAttackInfo.mServerIndex2 = mMYINFO->mTargetServerIndex[i]; tAttackInfo.mUniqueNumber2 = mMYINFO->mTargetUniqueNumber[i]; tAttackInfo.mSenderLocation[0] = mDATA.aAction.aLocation[0]; tAttackInfo.mSenderLocation[1] = mDATA.aAction.aLocation[1]; tAttackInfo.mSenderLocation[2] = mDATA.aAction.aLocation[2]; tAttackInfo.mAttackActionValue1 = 2; tAttackInfo.mAttackActionValue2 = mDATA.aAction.aSkillNumber; tAttackInfo.mAttackActionValue3 = mDATA.aAction.aSkillGradeNum2 + mDATA.aAction.aSkillGradeNum1; tAttackInfo.mAttackActionValue4 = mDATA.aAction.aSort; mTRANSFER->T_PROCESS_ATTACK_SEND(&tAttackInfo); } }
Sorry i did not understand relationship between ports and hack, using hacks is easy on any server for this game, i know this hack, and still not fixed, and everyone using same exe, so blocking this is not so easy, it is not about ports, also hiding is easy, nvm. I ll try this too.Quote:
What do you mean what? This guy keeps saying for a weeks now that he will destroy our server but he can't even do sht he is like a clown wanna be.
Goodluck and Have Fun with that. Knowing this ivy guy is just all talk he can't release any cheat on our server as we are protected.Quote:
Sorry i did not understand relationship between ports and hack, using hacks is easy on any server for this game, i know this hack, and still not fixed, and everyone using same exe, so blocking this is not so easy, it is not about ports, also hiding is easy, nvm. I ll try this too.
You don't know who attacked your server.Quote:
Gave up on us? lmao told you we are protected. you can't do sh*t our ports is also closed.
I am the first server person. Do you think if I'm serious about how many players in my server? Will I allow other servers to come up?Quote:
So many people jealous on our server just because we are currently the best server in ASIA region and we have 500+ players active that's why we get hated so much by these server owner that has a 10-20 players on their server.