int Player::drawEspIcons(int yOffset) { float iconSize; // Distance based icon size if (VAR(VAR_ESP_SIZE_TYPE) == ESP_SIZE_TYPE_DIST) { iconSize = 10000.0f / this->distance; iconSize = max(iconSize, 5.0f); // Min size iconSize = min(iconSize, 25.0f); // Max size // Static icon size } else { iconSize = 15.0f; } qhandle_t weaponIcon = this->getWeaponIcons(cgame->cg_entities[this->entityNum].currentState->weapon); float iconWidth = iconSize; // Weapons with 'wide' icons if ((weaponIcon == cgame->weaponIconThompson) || (weaponIcon == cgame->weaponIconMp40) || (weaponIcon == cgame->weaponIconSten) || (weaponIcon == cgame->weaponIconPanzerfaust) || (weaponIcon == cgame->weaponIconFlamethrower) || (weaponIcon == cgame->weaponIconGarand) || (weaponIcon == cgame->weaponIconFg42) || (weaponIcon == cgame->weaponIconK43) || (weaponIcon == cgame->weaponIconScoped) || (weaponIcon == cgame->weaponIconK43Gren) || (weaponIcon == cgame->weaponIconGarandGren) || (weaponIcon == cgame->weaponIconMg42) || (weaponIcon == cgame->weaponIconMortar)) { iconWidth *= 2; } // Position int height = (int)(iconSize + 4); int x = (int)(this->screenX - ((iconSize + iconWidth) / 2)); int y = this->screenY - yOffset - height; // Icon color vec4_t iconColor; Vector4Copy(this->espColor, iconColor); // Background if (VAR(VAR_ESP_ICONS_BG)) { vec4_t bgColor; Vector4Copy(colorBlack, bgColor); bgColor[3] = this->espColor[3] / 2.0; drawFillRect(x, y, (iconSize + iconWidth) + 2 , iconSize + 2, bgColor); } syscall_R_SetColor(iconColor); // Draw class icon drawPic(x, y, iconSize, iconSize, cgame->classIcons[cgame->clientInfo[this->entityNum]->cls]); // Draw weapon icon drawPic(x + iconSize, y, iconWidth, iconSize, weaponIcon); syscall_R_SetColor(NULL); return height; } qhandle_t Player::getWeaponIcons(int weapon) { switch (cgame->mod->type) { case MOD_ETMAIN: case MOD_ETPRO: switch (weapon) { case WP_KNIFE: return cgame->weaponIconKnife; case WP_LUGER: case WP_SILENCER: case WP_AKIMBO_LUGER: case WP_AKIMBO_SILENCEDLUGER: return cgame->weaponIconLuger; case WP_COLT: case WP_SILENCED_COLT: case WP_AKIMBO_COLT: case WP_AKIMBO_SILENCEDCOLT: return cgame->weaponIconColt; case WP_MP40: return cgame->weaponIconMp40; case WP_THOMPSON: return cgame->weaponIconThompson; case WP_GRENADE_LAUNCHER: return cgame->weaponIconGrenade; case WP_GRENADE_PINEAPPLE: return cgame->weaponIconPineapple; case WP_PANZERFAUST: return cgame->weaponIconPanzerfaust; case WP_FLAMETHROWER: return cgame->weaponIconFlamethrower; case WP_STEN: return cgame->weaponIconSten; case WP_MEDIC_SYRINGE: return cgame->weaponIconSyringe; case WP_MEDIC_ADRENALINE: return cgame->weaponIconSyringeAdre; case WP_MORTAR: case WP_MORTAR_SET: return cgame->weaponIconMortar; case WP_AMMO: return cgame->weaponIconAmmopack; case WP_MEDKIT: return cgame->weaponIconMedicpack; case WP_BINOCULARS: return cgame->weaponIconBinoculars; case WP_SMOKE_MARKER: case WP_SMOKE_BOMB: return cgame->weaponIconSmokegrenade; case WP_PLIERS: return cgame->weaponIconPliers; case WP_K43: case WP_KAR98: return cgame->weaponIconK43; case WP_GARAND: case WP_CARBINE: return cgame->weaponIconGarand; case WP_GARAND_SCOPE: case WP_K43_SCOPE: return cgame->weaponIconScoped; case WP_FG42: case WP_FG42SCOPE: return cgame->weaponIconFg42; case WP_LANDMINE: return cgame->weaponIconLandmine; case WP_SATCHEL: return cgame->weaponIconSatchel; case WP_SATCHEL_DET: return cgame->weaponIconSatchelDet; case WP_GPG40: return cgame->weaponIconK43Gren; case WP_M7: return cgame->weaponIconGarandGren; case WP_MOBILE_MG42: case WP_MOBILE_MG42_SET: return cgame->weaponIconMg42; case WP_DYNAMITE: return cgame->weaponIconDynamite; default: return -1; } case MOD_NOQUARTER: switch (weapon) { case NQ_WP_KNIFE: case NQ_WP_KNIFE_KABAR: return cgame->weaponIconKnife; case NQ_WP_LUGER: case NQ_WP_SILENCER: case NQ_WP_AKIMBO_LUGER: case NQ_WP_AKIMBO_SILENCEDLUGER: return cgame->weaponIconLuger; case NQ_WP_COLT: case NQ_WP_SILENCED_COLT: case NQ_WP_AKIMBO_COLT: case NQ_WP_AKIMBO_SILENCEDCOLT: return cgame->weaponIconColt; case NQ_WP_STG44: case NQ_WP_MP34: case NQ_WP_MP40: return cgame->weaponIconMp40; case NQ_WP_THOMPSON: case NQ_WP_SHOTGUN: // Not good but it's the best place return cgame->weaponIconThompson; case NQ_WP_GRENADE_LAUNCHER: return cgame->weaponIconGrenade; case NQ_WP_GRENADE_PINEAPPLE: return cgame->weaponIconPineapple; case NQ_WP_PANZERFAUST: case NQ_WP_BAZOOKA: return cgame->weaponIconPanzerfaust; case NQ_WP_FLAMETHROWER: return cgame->weaponIconFlamethrower; case NQ_WP_STEN: case NQ_WP_STEN_MKII: return cgame->weaponIconSten; case NQ_WP_MEDIC_SYRINGE: return cgame->weaponIconSyringe; case NQ_WP_MEDIC_ADRENALINE: case NQ_WP_POISON: return cgame->weaponIconSyringeAdre; case NQ_WP_MORTAR: case NQ_WP_MORTAR_SET: case NQ_WP_GRANATWERFER: case NQ_WP_GRANATWERFER_SET: return cgame->weaponIconMortar; case NQ_WP_AMMO: return cgame->weaponIconAmmopack; case NQ_WP_MEDKIT: return cgame->weaponIconMedicpack; case NQ_WP_BINOCULARS: return cgame->weaponIconBinoculars; case NQ_WP_SMOKE_MARKER: case NQ_WP_SMOKE_BOMB: return cgame->weaponIconSmokegrenade; case NQ_WP_PLIERS: return cgame->weaponIconPliers; case NQ_WP_K43: case NQ_WP_KAR98: return cgame->weaponIconK43; case NQ_WP_GARAND: case NQ_WP_CARBINE: return cgame->weaponIconGarand; case NQ_WP_GARAND_SCOPE: case NQ_WP_K43_SCOPE: return cgame->weaponIconScoped; case NQ_WP_FG42: case NQ_WP_FG42SCOPE: return cgame->weaponIconFg42; case NQ_WP_LANDMINE: return cgame->weaponIconLandmine; case NQ_WP_SATCHEL: return cgame->weaponIconSatchel; case NQ_WP_SATCHEL_DET: return cgame->weaponIconSatchelDet; case NQ_WP_GPG40: return cgame->weaponIconK43Gren; case NQ_WP_M7: return cgame->weaponIconGarandGren; case NQ_WP_MOBILE_MG42: case NQ_WP_MOBILE_MG42_SET: case NQ_WP_BROWNING: case NQ_WP_BROWNING_SET: case NQ_WP_BAR: case NQ_WP_BAR_SET: return cgame->weaponIconMg42; case NQ_WP_DYNAMITE: return cgame->weaponIconDynamite; default: return -1; } case MOD_TCE: default: return -1; } }