Is there is any way to use DamagePlayer() inside OnPlayerDamage ?
OnPlayerDamage is where you should finish processing and add finishing touches to the damage. If you return 1 the damage will be done anyways so why would you want to use DamagePlayer in that callback at all?