95 lines
2.4 KiB
C#
95 lines
2.4 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
|
|
int overrideHealth = 50; //Set your max health to balance the regenerating armor. This will override any max health values set via trainer. Set to -1 to disable.
|
|
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 (overrideHealth != -1) {
|
|
if (pl.Health > overrideHealth) { pl.Health = overrideHealth; } //MaxHealth not functional?
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
} |