segunda-feira, 13 de agosto de 2012

Other Soucer Anti-Lead 1.5


bem, este chumbo anti é bom, com tag [LEAD] para o quarto e canal.

LIBERADO PELO INTELWORKER

--ZCharacter.h Line 783

PHP Code:
virtual void OnDamagedAPlayer(ZObject* pAttacker, rvector srcPos, ZDAMAGETYPE damageType, MMatchWeaponType weaponType, float fDamage, float fPiercingRatio=1.f, int nMeleeTpye=-1);virtual void OnDamagedAPlayer(vector<MTD_ShotInfo*> vShots);  
--ZCharacter.cpp Line: 4374

PHP Code:
void ZCharacter::OnDamagedAPlayer(ZObject* pAttacker, rvector srcPos, ZDAMAGETYPE damageType, MMatchWeaponType weaponType, float fDamage, float fPiercingRatio, int nMeleeTpye)
{
    if (
damageType == ZD_MELEE)
    {
        
OnDamaged(pAttacker, srcPos, damageType, weaponType, fDamage, fPiercingRatio, nMeleeTpye);
        return;
    }

    if (
pAttacker != NULL && fDamage > 0)
    {
        if (
pAttacker == ZGetGame()->m_pMyCharacter && this != pAttacker && !ZGetGame()->m_pMyCharacter->IsDie())
        {
            
void* pBlobArray = MMakeBlobArray(sizeof(MTD_ShotInfo), 1);
            
void* pBlobElement = MGetBlobArrayElement(pBlobArray, 0);

            
MTD_ShotInfo shotInfo;
            
shotInfo.fDamage = fDamage;
            
shotInfo.fPosX = srcPos.x;
            
shotInfo.fPosY = srcPos.y;
            
shotInfo.fPosZ = srcPos.z;
            
shotInfo.nDamageType = damageType;
            
shotInfo.fRatio = fPiercingRatio;
            
shotInfo.nLowId = GetUID().Low;
            
shotInfo.nWeaponType = weaponType;

            
memcpy(pBlobElement, &shotInfo, sizeof(MTD_ShotInfo));
            
ZGetGameClient()->GetPeerPacketCrypter().Encrypt((char*)pBlobElement, sizeof(MTD_ShotInfo));
            
ZPOSTCMDLEAD(MC_GUNZ_ANTILEAD, GetUID(), MCommandParameterBlob(pBlobArray, MGetBlobArraySize(pBlobArray)));
        }
    }
}
void ZCharacter::OnDamagedAPlayer(vector<MTD_ShotInfo*> vShotInfo)
{
    if (
vShotInfo.size() > 0)
    {
        if (
ZGetGameClient()->GetPlayerUID().Low != GetUID().Low)
        {
            
void* pBlobArray = MMakeBlobArray(sizeof(MTD_ShotInfo), vShotInfo.size());

            for (
int i = 0; i < vShotInfo.size(); ++i)
            {
                
MTD_ShotInfo* pShot = vShotInfo[i];
                
void* pElement = MGetBlobArrayElement(pBlobArray, i);
                
memcpy(pElement, pShot, sizeof(MTD_ShotInfo));
                
ZGetGameClient()->GetPeerPacketCrypter().Encrypt((char*)pElement, sizeof(MTD_ShotInfo));
            }

            
ZPOSTCMDLEAD(MC_GUNZ_ANTILEAD, GetUID(), MCommandParameterBlob(pBlobArray, MGetBlobArraySize(pBlobArray)));
        }
    }
}  

--ZGame.cpp Line: 4475

PHP Code:
vector<MTD_ShotInfo*> vShots;  

--ZGame.cpp Line: 4511

PHP Code:
MTD_ShotInfo* pShotInfo = OnPeerShotgun_Damaged( pOwnerCharacter, fShotTime, pos, dir, pickinfo, dwPickPassFlag, v1, v2, pItem, BulletMarkNormal, bBulletMark, nTargetType, bHitEnemy);  

--ZGame.cpp Line: 4648

PHP Code:
if (vShots.size() > 0 && !ZGetGameInterface()->GetCombatInterface()->GetObserverMode())
        {
                
ZCharacter* pCharacter = (ZCharacter*)ZGetCharacterManager()->Find(MUID(0, vShots[0]->nLowId));
 
                if (
pOwnerCharacter->GetUID() == ZGetGameClient()->GetPlayerUID())
                {
                        if (!
GetMatch()->IsTeamPlay())
                        {
                                
pCharacter->OnDamagedAPlayer(vShots);
                        }
                        else if (
GetMatch()->IsTeamPlay() && ZGetGame()->GetMatch()->GetTeamKillEnabled() && pCharacter->IsTeam(pOwnerCharacter))
                        {
                                
pCharacter->OnDamagedAPlayer(vShots);
                        }
                        else if (
GetMatch()->IsTeamPlay() && !pCharacter->IsTeam(pOwnerCharacter))
                        {
                                
pCharacter->OnDamagedAPlayer(vShots);
                        }
                }
        
vShots.clear();
        }  

--ZGame.cpp Line: 4171

PHP Code:
if(pickinfo.pObject->IsNPC() == true)
        
pickinfo.pObject->OnDamaged(pOwner, pOwner->GetPosition(), dt, pDesc->m_nWeaponType.Ref(), fActualDamage, fRatio );
else
        ((
ZCharacter*)(pickinfo.pObject))->OnDamagedAPlayer(pOwner, pOwner->GetPosition(), dt, pDesc->m_nWeaponType.Ref(), fActualDamage, fRatio );  

--Zitem.cpp Line: 171

PHP Code:
if(bHead)       fRatio = 0.8f;
else            
fRatio = 0.6f;  

--MMatchTransDataType.h Line: 576

PHP Code:
struct MTD_ShotInfo{
        
unsigned long nLowId;
        
float fPosX;
        
float fPosY;
        
float fPosZ;
        
float fDamage;
        
float fRatio;
        
char nDamageType;
        
char nWeaponType;
};  
--MMatchClient.h Line: 151

PHP Code:
MPacketCrypter GetPeerPacketCrypter() { return m_PeerPacketCrypter; }  
--ZGameClient.h Line: 399

PHP Code:
#define ZPOSTCMDLEAD(_ID, _UID, _P0)                                                            { MCommand* pC=ZNewCmd(_ID); pC->AP(_P0); pC->m_Receiver = _UID; ZPostCommand(pC); }  
--MSharedCommandTable.h Line: 680

PHP Code:
#define MC_GUNZ_ANTILEAD                                                50010  
--MSharedCommandTable.cpp Line: 1710

PHP Code:
C(MC_GUNZ_ANTILEAD, "Match.Gunz.AntiLead", "AntiLead Information", MCDT_PEER2PEER)
                 
P(MPT_BLOB, "ShotInfo");  
-ZGame.cpp Line: 1806


PHP Code:
case MC_GUNZ_ANTILEAD:
                {
                        
MCommandParameter* pParam = pCommand->GetParameter(0);
 
                        if (
pParam->GetType() != MPT_BLOB)
                                break;
 
                        
void* pBlob = pParam->GetPointer();
                        
int nSize = MGetBlobArrayCount(pBlob);
 
                        for (
int i = 0; i < nSize; ++i)
                        {
                                
MTD_ShotInfo* pInfo = (MTD_ShotInfo*)MGetBlobArrayElement(pBlob, i);
                                
ZGetGameClient()->GetPeerPacketCrypter().Decrypt((char*)pInfo, sizeof(MTD_ShotInfo));
                       
                                if (
m_pMyCharacter && ZGetGameClient()->GetPlayerUID() != pCommand->GetSenderUID())
                                {
                                        
ZCharacter* pCharacter = (ZCharacter*)ZGetCharacterManager()->Find(pCommand->GetSenderUID());
                                        
rvector pos;
                                        
pos.x = pInfo->fPosX;
                                        
pos.y = pInfo->fPosY;
                                        
pos.z = pInfo->fPosZ;
 
 
                                        if (
pCharacter && pInfo->nLowId == ZGetGameClient()->GetPlayerUID().Low
                                                
&& !ZGetGame()->GetMatch()->IsTeamPlay() ||  ((m_pMyCharacter->IsTeam(pCharacter) && ZGetGame()->GetMatch()->GetTeamKillEnabled()) || !m_pMyCharacter->IsTeam(pCharacter))
                                                )
                                        {
                                                
m_pMyCharacter->OnDamaged(pCharacter, pos, (ZDAMAGETYPE)pInfo->nDamageType, (MMatchWeaponType)pInfo->nWeaponType, pInfo->fDamage, pInfo->fRatio);
                                                
pCharacter->GetStatus().CheckCrc();
                                                
pCharacter->GetStatus().Ref().nDamageCaused += pInfo->fDamage;
                                                
pCharacter->GetStatus().MakeCrc();
                                        }
                                }
                                else
                                {
                                        
ZCharacter* pCharacter = (ZCharacter*)ZGetCharacterManager()->Find(pCommand->GetSenderUID());
                                        if (
pCharacter != ZGetGame()->m_pMyCharacter)
                                        {
                                                
pCharacter->GetStatus().CheckCrc();
                                                
pCharacter->GetStatus().Ref().nDamageCaused += pInfo->fDamage;
                                                
pCharacter->GetStatus().MakeCrc();
                                        }
                                        else
                                        {
                                                
m_pMyCharacter->GetStatus().CheckCrc();
                                                
m_pMyCharacter->GetStatus().Ref().nDamageCaused += pInfo->fDamage;
                                                
m_pMyCharacter->GetStatus().MakeCrc();
                                        }
                                }
                        }
                        break;
                }  
--ZCharacter.h Line: 262


PHP Code:
   int                     nDamageCaused;
          
int                     nDamageTaken;  

--h ZCharacter.Line: 2771

PHP Code:
nDamageCaused(0),nDamageTaken(0)
 
 
 
 
 
 
--- 
neekeri
 
MTD_ShotInfo
* ZGame::OnPeerShotgun_Damaged(ZObject* pOwner, float fShotTime, const rvector& pos, rvector& dir, ZPICKINFO pickinfo, DWORD dwPickPassFlag, rvector& v1, rvector& v2, ZItem *pItem, rvector& BulletMarkNormal, bool& bBulletMark, ZTargetType& nTargetType, bool& bHitEnemy)
{
        
ZCharacter *pTargetCharacter = ZGetGameInterface()->GetCombatInterface()->GetTargetCharacter();
        
bool bReturnValue = !pTargetCharacter;
        if(!
pTargetCharacter)PROTECT_DEBUG_REGISTER(bReturnValue) return NULL;
       
        
MMatchItemDesc *pDesc = pItem->GetDesc();
        
bReturnValue = !pDesc;
        if(!
pDesc)PROTECT_DEBUG_REGISTER(bReturnValue) { _ASSERT(FALSE); return NULL; }
 
        
//rvector dir = to - pos;
 
        
bool waterSound = false;
        
//¿©±â¿¡ ¹æ¾îÄڵ尡 µé¾î°¡¾ßµÅ~
        
bReturnValue = !(ZGetGame()->PickHistory(pOwner,fShotTime,pos,pos+10000.f*dir, &pickinfo,dwPickPassFlag));
        if(!(
ZGetGame()->PickHistory(pOwner,fShotTime,pos,pos+10000.f*dir, &pickinfo,dwPickPassFlag)))
        {
                
PROTECT_DEBUG_REGISTER(bReturnValue)
                {
                        
v1 = pos;
                        
v2 = pos+dir*10000.f;
                        
nTargetType     = ZTT_NOTHING;
                        
waterSound = GetWorld()->GetWaters()->CheckSpearing( v1, v2, 250, 0.3, !waterSound );
                        return 
NULL;
                }
        }
                
//¿©±âµµ..
        
bReturnValue = (!pickinfo.pObject) && (!pickinfo.bBspPicked);
        if(
pickinfo.bBspPicked)
        {
                
PROTECT_DEBUG_REGISTER(pickinfo.nBspPicked_DebugRegister == FOR_DEBUG_REGISTER)
                {
                        
nTargetType = ZTT_OBJECT;
 
                        
v1 = pos;
                        
v2 = pickinfo.bpi.PickPos;
 
                        
// ÃÑź ÈçÀû
                        
BulletMarkNormal.x = pickinfo.bpi.pInfo->plane.a;
                        
BulletMarkNormal.y = pickinfo.bpi.pInfo->plane.b;
                        
BulletMarkNormal.z = pickinfo.bpi.pInfo->plane.c;
                        
Normalize(BulletMarkNormal);
                        
bBulletMark = true;
 
                        
// ¸Â´Â°÷ ¹Ý°æ 20cm °¡ È­¸é¿¡ µé¾î¿À¸é ±×¸°´Ù
                        
bool bDrawTargetEffects = isInViewFrustum(v2,20.f,RGetViewFrustum());
                        if(
bDrawTargetEffects)
                        {
                                
rvector pdir = v2-v1;
                                
Normalize(pdir);
 
                                
int size = 3;
                                
bool bDrawFireEffects = isInViewFrustum(v1,100.f,RGetViewFrustum());
                                
rvector v[6];
 
                
//              size = GetWeapondummyPos(pOwnerCharacter,v);
                                
ZCharacterObject* pCOwnerObject = MDynamicCast(ZCharacterObject, pOwner);
                                if(
pCOwnerObject->IsRendered())
                                        
size = pCOwnerObject->GetWeapondummyPos(v);
                                else
                                {
                                        
size = 6;
                                        
v[0] = v[1] = v[2] = v1;
                                        
v[3] = v[4] = v[5] = v[0];
                                }
 
 
                                
MMatchWeaponType wtype = pDesc->m_nWeaponType.Ref();
                                
bool bSlugOutput = pDesc->m_bSlugOutput;
                                
ZGetEffectManager()->AddBulletMark(v2,BulletMarkNormal);
                                
ZGetEffectManager()->AddShotEffect(&v1, size , v2, BulletMarkNormal, nTargetType, wtype, bSlugOutput, pCOwnerObject,bDrawFireEffects,bDrawTargetEffects);
                }
                        
waterSound = GetWorld()->GetWaters()->CheckSpearing( v1, v2, 250, 0.3, !waterSound );
                        return 
NULL;
                }
        }
        else if( (!
pickinfo.pObject) && (!pickinfo.bBspPicked) )
        {
                
PROTECT_DEBUG_REGISTER(bReturnValue)
                {
                        
_ASSERT(false);
                        return 
NULL;
                }
        }
 
        
//À§¿¡±îÁö´Â °Ë»ç ´Ü°è...
 
        
ZObject *pObject = pickinfo.pObject;
        
bool bGuard = pObject->IsGuard() && (pickinfo.info.parts!=eq_parts_legs) &&             // ´Ù¸®´Â ¸·À»¼ö¾ø´Ù
                                        
DotProduct(dir,pObject->GetDirection())<0;
 
        if(
pObject->IsGuard() && (pickinfo.info.parts!=eq_parts_legs) &&
                                        
DotProduct(dir,pObject->GetDirection())<0)
        {
                
PROTECT_DEBUG_REGISTER(bGuard)
                {
                        
nTargetType = ZTT_CHARACTER_GUARD;
                        
// ¸·¾Ò´Ù
                        
rvector t_pos = pObject->GetPosition();
                        
t_pos.z += 100.f;
                        
ZGetEffectManager()->AddSwordDefenceEffect(t_pos+(-dir*50.f),-dir);
                        
pObject->OnGuardSuccess();
                        
v1 = pos;
                        
v2 = pickinfo.info.vOut;
                        return 
NULL;
                }
        }
 
        
ZActor* pATarget = MDynamicCast(ZActor,pObject);
        
nTargetType = ZTT_CHARACTER;
 
        
bool bPushSkip = false;
 
        if(
pATarget)
        {
                
bPushSkip = pATarget->GetNPCInfo()->bNeverPushed;
        }
 
        
float fKnockbackForce = pItem->GetKnockbackForce()/ (.5f*float(SHOTGUN_BULLET_COUNT));
 
        if(
bPushSkip)
        {
//                                      ZGetSoundEngine()->PlaySound("fx_bullethit_mt_met");
                
rvector vPos = pOwner->GetPosition() + (pickinfo.pObject->GetPosition() - pOwner->GetPosition()) * 0.1f;
                
ZGetSoundEngine()->PlaySound("fx_bullethit_mt_met", vPos );
                
fKnockbackForce = 1.0f;
        }
 
        
pObject->OnKnockback( dir, fKnockbackForce );
 
        
float fActualDamage = CalcActualDamage(pOwner, pObject, (float)pDesc->m_nDamage.Ref());
        
float fRatio = pItem->GetPiercingRatio( pDesc->m_nWeaponType.Ref(), pickinfo.info.parts );
        
ZDAMAGETYPE dt = (pickinfo.info.parts==eq_parts_head) ? ZD_BULLET_HEADSHOT : ZD_BULLET;
 
        
MTD_ShotInfo* pShotInfo = NULL;
 
 
if(
ZGetGameClient()->GetChannelType() == MCHANNEL_TYPE_DUELTOURNAMENT) {
 
        if(
strstr(ZGetGameClient()->GetChannelName(), "[LEAD]")) {
                
pickinfo.pObject->OnDamaged(pOwner, pOwner->GetPosition(), dt, pDesc->m_nWeaponType.Ref(), fActualDamage, fRatio );
        } else {
                
pShotInfo = new MTD_ShotInfo;
                
pShotInfo->nLowId = pickinfo.pObject->GetUID().Low;
                
pShotInfo->fDamage = fActualDamage;
                
pShotInfo->fPosX = pOwner->GetPosition().x;
                
pShotInfo->fPosY = pOwner->GetPosition().y;
                
pShotInfo->fPosZ = pOwner->GetPosition().z;
                
pShotInfo->fRatio = fRatio;
                
pShotInfo->nDamageType = dt;
                
pShotInfo->nWeaponType = pDesc->m_nWeaponType.Ref();
        }
 
} else {
 
        if(
pickinfo.pObject->IsNPC() == true || strstr(ZGetGameClient()->GetStageName(), "[LEAD]"))
        {
                
pickinfo.pObject->OnDamaged(pOwner, pOwner->GetPosition(), dt, pDesc->m_nWeaponType.Ref(), fActualDamage, fRatio );
        }
        else
        {
                
pShotInfo = new MTD_ShotInfo;
                
pShotInfo->nLowId = pickinfo.pObject->GetUID().Low;
                
pShotInfo->fDamage = fActualDamage;
                
pShotInfo->fPosX = pOwner->GetPosition().x;
                
pShotInfo->fPosY = pOwner->GetPosition().y;
                
pShotInfo->fPosZ = pOwner->GetPosition().z;
                
pShotInfo->fRatio = fRatio;
                
pShotInfo->nDamageType = dt;
                
pShotInfo->nWeaponType = pDesc->m_nWeaponType.Ref();
        }
 
        if(!
m_Match.IsTeamPlay() || (pTargetCharacter->GetTeamID()!=pObject->GetTeamID()))
        {
                
bHitEnemy = true;
        }
 
        
v1 = pos;
        
v2 = pickinfo.info.vOut;
 
        
waterSound = GetWorld()->GetWaters()->CheckSpearing( v1, v2, 250, 0.3, !waterSound );
        return 
pShotInfo;
}
 
 
 
 
 
 
-- 
keltainen poika
 
 
        MTD_ShotInfo
* OnPeerShotgun_Damaged(ZObject* pOwner, float fShotTime, const rvector& pos, rvector &dir, ZPICKINFO pickinfo, DWORD dwPickPassFlag, rvector& v1, rvector& v2, ZItem *pItem, rvector& BulletMarkNormal, bool& bBulletMark, ZTargetType& nTargetType, bool& bHitEnemy);  
Creditos:  MatheusRose Da Ragezone Inter.

4 comentários:

  1. mano esse ultimo codigo vai na onde ?
    --h ZCharacter.Line: 2771
    não achei lugar nenhum para adicionar essa modo

    ResponderExcluir
  2. mano esse ultimo codigo vai na onde ?
    --h ZCharacter.Line: 2771
    não achei lugar nenhum para adicionar essa modo

    ResponderExcluir
  3. mano esse ultimo codigo vai na onde ?
    --h ZCharacter.Line: 2771
    não achei lugar nenhum para adicionar essa modo

    ResponderExcluir