Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case PC_LEAD_SHOT:
- {
- MUID uidAttacker;
- MUID uidPlayer;
- D3DXVECTOR3 srcPos;
- float fDamage, fPiercingRatio;
- ZDAMAGETYPE damageType;
- MMatchWeaponType weaponType;
- uidPlayer.Low = 0;
- int nMeleeType;
- char string[32];
- char szName[32];
- int nTeam;
- pCmd->GetParameter( &uidPlayer.High, 0, MPT_INT, -1 );
- //uidAttacker = pCmd->m_uidSender;
- if( pCmd->m_uidSender.High != uidChar.High ){
- pCmd->GetParameter( &srcPos.x, 1, MPT_FLOAT, -1 );
- pCmd->GetParameter( &srcPos.y, 2, MPT_FLOAT, -1 );
- pCmd->GetParameter( &srcPos.z, 3, MPT_FLOAT, -1 );
- pCmd->GetParameter( &damageType, 4, MPT_INT, -1 );
- pCmd->GetParameter( &weaponType, 5, MPT_INT, -1 );
- pCmd->GetParameter( &fDamage, 6, MPT_FLOAT, -1 );
- pCmd->GetParameter( &fPiercingRatio, 7, MPT_FLOAT, -1 );
- pCmd->GetParameter( &nMeleeType, 8, MPT_INT, -1 );
- pCmd->GetParameter( &string, 9, MPT_STRING, 32 );
- pCmd->GetParameter( &szName, 10, MPT_STRING, 32 );
- pCmd->GetParameter( &nTeam, 11, MPT_INT, -1 );
- if( fDamage > 150.0f || fPiercingRatio > 2.0f ){
- return true;
- }
- if( uidChar.High == uidPlayer.High ){
- ZCharacter* pAttacker = ZCharacterManager::GetInstance()->Find( pCmd->m_uidSender );
- ZCharacter* pMe = ZCharacterManager::GetInstance()->Find( uidChar );
- ZGameClient* pClient = (ZGameClient*)ZGetGameClient();
- MSTAGE_SETTING_NODE& pNode = pClient->GetStageSetting()->GetStageSettingNode();
- if( ZCharacter::GetMe()->GetTeamID() != nTeam){
- ZPostBackDamage( fDamage, szName );
- nRecv += fDamage;
- }
- int type = pNode.nGameType;
- if (pMe && !stricmp(string, "l34d") && (type == 0 || type == 2 || type == 6 || type == 5 || type == 10 || type == 8) || (pMe->IsTeam(pAttacker) && pNode.bTeamKillEnabled) || (!pMe->IsTeam(pAttacker))){
- if( !bGod ){
- /*float newDamage = 0.0f;
- newDamage = fDamage*nTank;
- fDamage = newDamage;
- ((void(__thiscall*)( ZCharacter*, ZCharacter*, D3DXVECTOR3, ZDAMAGETYPE, MMatchWeaponType, float, float, int ))0x47AE10)( pMe, pAttacker, srcPos, damageType, weaponType, fDamage, fPiercingRatio, nMeleeType );*/
- if (pMe->GetAP() <= 0) {
- fPiercingRatio = 1.0f;
- }
- float damageHp = fDamage * fPiercingRatio;
- float damageAp = fDamage - damageHp;
- int ap = pMe->GetAP() - static_cast<int>(damageAp);
- int hp = pMe->GetHP() - static_cast<int>(damageHp);
- pMe->SetAP((hp > 0) ? ap : 0);
- pMe->SetHP(hp);
- DWORD* me = (DWORD*)ZCharacterManager::GetInstance()->Find( uidChar );
- DWORD lowid = pCmd->m_uidSender.Low;
- DWORD highid = pCmd->m_uidSender.High;
- _asm {
- PUSHAD
- MOV EAX, pMe
- MOV EAX, DWORD PTR DS:[EAX+0x3BC]
- MOV EDX, lowid
- MOV EBX, highid
- MOV DWORD PTR DS:[EAX+0x1C], EDX
- MOV DWORD PTR DS:[EAX+0x20], EBX
- POPAD
- }
- }
- }
- }
- }
- return true;
- break;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement