Code:void DesenharSange (LPDIRECT3DDEVICE9 pDevice) { pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); cGameClientShell *pGameClientShell = *(cGameClientShell **) ADDR_GCS; cSFXMgr *SFXMgr = pGameClientShell->GetSFXMgr(); g_LTClient = *(CLTClient**) LTClientDLL; GetPlayerByIndex = (lpGetPlayerByIndex)ADDR_PlayerByIndex; unsigned long ulThis = *(unsigned long *)ADDR_ClientInfoMgr; GetLocalPlayer = (lpGetLocalPlayer)ADDR_LocalPlayer; for(INT i = 0; i < 32; i++) { PlayerInfo *pPlayer = GetPlayerByIndex(ulThis, i, 0); D3DXVECTOR3 Position; if(pPlayer != 0 && pPlayer->obj != 0 && pPlayer->IsDead == 0) { if(WorldToScreen(pDevice, pPlayer, &Position)) { if(ValidPointer(SFXMgr)) { cCharacterFX* NPC = (cCharacterFX*)SFXMgr->SFXList[0x18].List[i]; if((*(BYTE *)GameStatus == 1) && (Sangue== 1 && ValidPointer(NPC))) { int MaxHealthArmor = max(NPC->wHealth, NPC->wArmor); int BarWidth = (max(MaxHealthArmor, 100) / 5) + 1; D3DRECT rcHealth = {LONG(Position.x) - BarWidth, LONG(Position.y), LONG(Position.x) + BarWidth, LONG(Position.y) + 10}; pDevice->Clear(1, &rcHealth, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Black, 1.0f, 0); rcHealth.x1 += 1; rcHealth.y1 += 1; rcHealth.y2 -= 4; rcHealth.x2 = rcHealth.x1 + (2 * NPC->wHealth / 5); pDevice->Clear(1, &rcHealth, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, (NPC->wHealth <= 20 ? D3DCOLOR_ARGB(255, 255, 0, 0) : (NPC->wHealth <= 50 ? D3DCOLOR_ARGB(255, 255, 255, 0) : D3DCOLOR_ARGB(255, 0, 255, 0))), 1.0f, 0); rcHealth.y1 = rcHealth.y2; rcHealth.y2 += 3; rcHealth.x2 = rcHealth.x1 + (2 * NPC->wArmor / 5); pDevice->Clear(1, &rcHealth, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Blue, 1.0f, 0); } } } } } }