There is often no benefit to trying to put an insane amount of code into a single line and often causes you to create bugs.
Are the two codes supposed to do the same thing? If yes, is there some reason you are trying to refactor the code? Maybe there is a better solution for your goal.
I did my own version of refactoring the second code you posted and it is much more modular, easier to change the calculations, and much much easier to debug:
PHP Code:
// Set headshot bonus based on headshot status
new hsHealthBonus, hsMoneyBonus, hsArmorBonus
hsHealthBonus = user_data[iKiller][hs ? hp_kill_hs : hp_kill]
hsMoneyBonus = user_data[iKiller][hs ? money_kill_hs : money_kill]
hsArmorBonus = user_data[iKiller][hs ? ap_kill_hs : ap_kill]
// Set the bonus values based on weapon type
new weaponHealthBonus = 0, weaponMoneyBonus = 0, weaponArmorBonus = 0
if( wpn[0] == 'k' ) // Knife
{
weaponHealthBonus = user_data[iKiller][knife_kill_multi]
weaponMoneyBonus = user_data[iKiller][knife_kill_multi]
weaponArmorBonus = user_data[iKiller][knife_kill_multi]
}
else if( wpn[1] == 'r' ) // Grenade
{
weaponHealthBonus = user_data[iKiller][grenade_kill_multi]
weaponMoneyBonus = user_data[iKiller][grenade_kill_multi]
weaponArmorBonus = user_data[iKiller][grenade_kill_multi]
}
// Calculate new values
new newHealth, newMoney, newArmor
newHealth = get_user_health(iKiller) + hsHealthBonus + weaponHealthBonus
newMoney = cs_get_user_money(iKiller) + hsMoneyBonus + weaponMoneyBonus
newArmor = get_user_armor(iKiller) + hsArmorBonus + weaponArmorBonus
// Set new values without exceeding max value
set_user_health(iKiller, min(user_data[iKiller][max_hp], newHealth))
cs_set_user_money(iKiller, min(16000, newMoney), 1)
set_user_armor(iKiller, min(user_data[iKiller][max_ap], newArmor))
__________________