Code:
void getWeaponParamForUI(const WeaponConfig* wc, int* damage, int* spread, int* firerate, int *recoil);
void HUDDisplay::ShowKillTag(obj_AI_Player* killer, STORE_CATEGORIES damageType)
{
if(!Inited)
return;
r3d_assert(killer);
Scaleform::GFx::Value var[32];
char plrUserName[256];
killer->GetUserNameAndClanTag(plrUserName);
var[0].SetString(plrUserName);
var[1].SetNumber(killer->GameStats.TotalScore);
// find weapon that killer used to kill us by checking damage type
int wpnIdx = -1;
if(damageType == storecat_GRENADES) // we cannot properly select mine or grenade, so for now if killed via mine\greande show primary weapon of killer
damageType = storecat_INVALID;
for(int i=0; i<NUM_WEAPONS_ON_PLAYER; ++i)
{
if(killer->m_Weapons[i] && killer->m_Weapons[i]->getCategory() == damageType)
{
wpnIdx = i;
break;
}
}
if(wpnIdx == -1) // if not found, just use primary
wpnIdx = 0;
const Weapon* wpn = killer->m_Weapons[wpnIdx];
r3d_assert(wpn);
var[2].SetStringW(wpn->getConfig()->m_StoreNameW);
const GearConfig* gc = gWeaponArmory.getGearConfig(killer->CurLoadout.BodyArmorID);
var[3].SetStringW(gc?gc->m_StoreNameW:L"");
var[4].SetString(wpn->getConfig()->m_StoreIcon);
var[5].SetString(gc?gc->m_StoreIcon:"");
var[6].SetString(gWeaponArmory.getIconByItemId(killer->CurLoadout.Item1, true));
var[7].SetString(gWeaponArmory.getIconByItemId(killer->CurLoadout.Item2, true));
var[8].SetString(gWeaponArmory.getIconByItemId(killer->CurLoadout.Item3, true));
var[9].SetString(gWeaponArmory.getIconByItemId(killer->CurLoadout.Item4, true));
// skills are disabled for now
var[10].SetNumber(0);//killer->m_Skills[0]);
var[11].SetNumber(0);//killer->m_Skills[1]);
var[12].SetNumber(0);//killer->m_Skills[2]);
var[13].SetNumber(0);//killer->m_Skills[3]);
var[14].SetNumber(0);//killer->m_Skills[4]);
var[15].SetNumber(0);//killer->m_Skills[5]);
var[16].SetNumber(0);//killer->m_Skills[6]);
var[17].SetNumber(0);//killer->m_Skills[7]);
var[18].SetNumber(ceilf(killer->m_Health));
var[19].SetNumber(killer->m_Health/killer->getMaxHealth());
var[20].SetNumber(ceilf(wpn->getConfig()->m_AmmoDamage));
int damage = 0;
getWeaponParamForUI(wpn->getConfig(), &damage, NULL, NULL, NULL);
var[21].SetNumber(float(damage)/100.0f);
var[22].SetNumber(gc?ceilf(gc->m_damagePerc*100.0f):0.0f);
var[23].SetNumber(gc?gc->m_damagePerc:0.0f);
// TO BE REMOVED, OLD UPGRADE SYSTEM
var[24].SetNumber(1);
var[25].SetString("");
var[26].SetNumber(1);
var[27].SetString("");
var[28].SetNumber(1);
var[29].SetString("");
var[30].SetNumber(1);
var[31].SetString("");
// END
gfxHUD.Invoke(VMPROTECT_DecryptStringA("_global.displayKillTag"), var, 32);
}
void HUDDisplay::ShowKilledTag(obj_AI_Player* victim)
{
if(!Inited)
return;
r3d_assert(victim);
Scaleform::GFx::Value var[10];
char plrUserName[256];
victim->GetUserNameAndClanTag(plrUserName);
var[0].SetString(plrUserName);
var[1].SetNumber(victim->GameStats.TotalScore);
const GearConfig* gc = gWeaponArmory.getGearConfig(victim->CurLoadout.BodyArmorID);
var[2].SetStringW(gc?gc->m_StoreNameW:L"");
var[3].SetString(gc?gc->m_StoreIcon:"");
var[4].SetString(gWeaponArmory.getIconByItemId(victim->CurLoadout.Item1, true));
var[5].SetString(gWeaponArmory.getIconByItemId(victim->CurLoadout.Item2, true));
var[6].SetString(gWeaponArmory.getIconByItemId(victim->CurLoadout.Item3, true));
var[7].SetString(gWeaponArmory.getIconByItemId(victim->CurLoadout.Item4, true));
var[8].SetNumber(gc?ceilf(gc->m_damagePerc*100.0f):0.0f);
var[9].SetNumber(gc?gc->m_damagePerc:0.0f);
gfxHUD.Invoke(VMPROTECT_DecryptStringA("_global.displayKilledTag"), var, 10);
}
void HUDDisplay::AddKillMessage(obj_AI_Player* killer, obj_AI_Player* victim, STORE_CATEGORIES damageType)
{
if(!Inited)
return;
// if HUD isn't visible right now, then skip messages
if(hudPause->isActive() || hudScore->isActive())
return;
r3d_assert(victim);
int localPlayerTeamID = 0;
if(gClientLogic().localPlayer_)
localPlayerTeamID = gClientLogic().localPlayer_->TeamID;
Scaleform::GFx::Value vars[5];
char killerUserName[64] = "";
char victimUserName[64] = "";
if(victim) victim->GetUserName(victimUserName);
if(killer) killer->GetUserName(killerUserName);
vars[0].SetString(killer?(killerUserName):"");
const char* killerColor = killer?((killer->TeamID!=localPlayerTeamID)?redColor:blueColor):greyColor;
if(killer && gClientLogic().m_gameInfo.mapType == GBGameInfo::MAPT_Bomb)
killerColor = killer->TeamID==0?redColor:blueColor;
vars[1].SetString(killerColor);
vars[2].SetString(victimUserName);
const char* victimColor = (victim->TeamID!=localPlayerTeamID)?redColor:blueColor;
if(gClientLogic().m_gameInfo.mapType == GBGameInfo::MAPT_Bomb)
victimColor = victim->TeamID==0?redColor:blueColor;
vars[3].SetString(victimColor);
const char* how_killed=VMPROTECT_DecryptStringA("suicide");
{
if(damageType==storecat_ASR)
how_killed = VMPROTECT_DecryptStringA("rifle");
else if(damageType==storecat_SHTG)
how_killed = VMPROTECT_DecryptStringA("shotgun");
else if(damageType==storecat_HG)
how_killed = VMPROTECT_DecryptStringA("pistol");
else if(damageType==storecat_SMG)
how_killed = VMPROTECT_DecryptStringA("smg");
else if(damageType == storecat_SUPPORT)
how_killed = VMPROTECT_DecryptStringA("rpg");
else if(damageType == storecat_GRENADES)
how_killed = VMPROTECT_DecryptStringA("grenade");
else if(damageType==storecat_SNP)
how_killed = VMPROTECT_DecryptStringA("sniper");
else if(damageType==storecat_MG)
how_killed = VMPROTECT_DecryptStringA("mg");
else if(damageType==storecat_MELEE)
how_killed = VMPROTECT_DecryptStringA("knife");
else if(damageType==storecat_UsableItem) // turret is the only usable item that kills right now
how_killed = VMPROTECT_DecryptStringA("turret");
}
vars[4].SetString(how_killed);
gfxHUD.Invoke(VMPROTECT_DecryptStringA("_global.addKillMessage"), vars, 5);
}
void HUDDisplay::AddMessage(const wchar_t *msg)
{
if(!Inited)
return;
if(gClientLogic().localPlayer_ == NULL)
return;
// if HUD isn't visible right now, then skip messages
if(hudPause->isActive() || hudScore->isActive())
return;
Scaleform::GFx::Value vars[2];
vars[0].SetStringW(msg);
vars[1].SetString(orangeColor);
gfxHUD.Invoke(VMPROTECT_DecryptStringA("_global.addGeneralMessage"), vars, 2);
}
- - - Updated - - -
some variables does not exist for warz, just go adding or replacing, still have codes on the server.