iv-pdhealth/paydayHealth.cs
2018-04-18 22:04:16 +02:00

90 lines
2.1 KiB
C#

using System;
using System.Windows.Forms;
using GTA;
namespace pdHealth
{
public class pdHealth : Script
{
public pdHealth()
{
this.Tick += new EventHandler(this.doHealthTick);
//this.KeyDown += new GTA.KeyEventHandler(this.keyDownHandler);
}
//Settings:
int tickTime = 100; //Tick-Rate in ms
int armorRegen = 25; //How far to regenerate the armor
int armorRegenSpeed = 1; //How much armor to regenerate per tick
int armorRegenDelay = 5000; //Delay before recharging armor
bool allDamageArmor = true; //The armor soaks up all the health, even fall and explosion-damage.
bool ditchDamage = false; //Ditch damage, if hit depletes armor
//Vars
int armorVal = -1;
int healthVal = -1;
int timeUntilRegen = 0;
private void doHealthTick(object sender, EventArgs e)
{
Ped pl = Player.Character;
if (pl.isAlive == false) {
armorVal = -1;
healthVal = -1;
timeUntilRegen = 0;
return;
}
if (pl.Armor < armorVal) { timeUntilRegen = armorRegenDelay; }
if (pl.Health < healthVal) { timeUntilRegen = armorRegenDelay; }
if (allDamageArmor == true) {
if (pl.Health < healthVal) {
int damageTaken = healthVal - pl.Health;
if (damageTaken < pl.Armor) {
pl.Health = pl.Health + damageTaken;
pl.Armor = pl.Armor - damageTaken;
} else {
pl.Health = pl.Health + pl.Armor;
pl.Armor = 0;
}
}
}
if (timeUntilRegen > 0) {
timeUntilRegen = timeUntilRegen - tickTime;
if (timeUntilRegen < 0) { timeUntilRegen = 0; }
} else {
if (pl.Armor < armorRegen) {
pl.Armor = pl.Armor + armorRegenSpeed;
if (pl.Armor > armorRegen) { pl.Armor = armorRegen; }
}
}
armorVal = pl.Armor;
healthVal = pl.Health;
Game.DisplayText("Health:\n " +pl.Health.ToString(), 1000);
Wait(tickTime);
}
//Testing
private void keyDownHandler(object sender, GTA.KeyEventArgs e)
{
if (e.Key == Keys.B) {
Ped pl = Player.Character;
pl.Invincible = true;
pl.Health = -1;
return;
}
if (e.Key == Keys.N) {
Ped pl = Player.Character;
pl.Invincible = false;
pl.Health = -100;
return;
}
}
}
}