Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma semicolon 1
- #pragma newdecls required
- public void OnPluginStart()
- {
- HookEvent("adrenaline_used", AdrenalineUsed_Event);
- HookEvent("pills_used", PillsUsed_Event);
- Handle g_hPillCvar = FindConVar("pain_pills_health_value");
- Handle g_hAdrenCvar = FindConVar("adrenaline_health_buffer");
- SetConVarInt(g_hPillCvar, 0);
- SetConVarInt(g_hAdrenCvar, 0);
- }
- public Action PillsUsed_Event(Event event, const char[] name, bool dontBroadcast)
- {
- int client = GetClientOfUserId(event.GetInt("userid"));
- HealEntityOverTime(client, 1.5, 1, 55);
- }
- public Action AdrenalineUsed_Event(Event event, const char[] name, bool dontBroadcast)
- {
- int client = GetClientOfUserId(event.GetInt("userid"));
- HealEntityOverTime(client, 0.8, 1, 20);
- }
- stock Action HealEntityOverTime(int client, float interval, any increment, int total)
- {
- if(!client || !IsClientInGame(client) || !IsPlayerAlive(client)) return Plugin_Handled;
- if(increment >= total)
- HealTowardsMax(client, total, 100);
- else
- {
- HealTowardsMax(client, increment, 100);
- DataPack myDP;
- CreateDataTimer(interval, HotPills, myDP, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
- WritePackCell(myDP, client);
- WritePackCell(myDP, increment);
- WritePackCell(myDP, total-increment);
- WritePackCell(myDP, 100);
- }
- return Plugin_Continue;
- }
- public Action HotPills(Handle timer, DataPack pack)
- {
- ResetPack(pack);
- int client = ReadPackCell(pack);
- int increment = ReadPackCell(pack);
- DataPackPos pos = GetPackPosition(pack);
- int remaining = ReadPackCell(pack);
- int maxhp = ReadPackCell(pack);
- if(client==0 || !IsClientInGame(client) || !IsPlayerAlive(client))
- {
- return Plugin_Stop;
- }
- if(increment >= remaining)
- {
- HealTowardsMax(client, remaining, maxhp);
- return Plugin_Stop;
- }
- HealTowardsMax(client, increment, maxhp);
- SetPackPosition(pack, pos);
- WritePackCell(pack, remaining-increment);
- return Plugin_Continue;
- }
- stock void HealTowardsMax(int client, int amount, int max)
- {
- float hb = float(amount) + GetEntPropFloat(client, Prop_Send, "m_healthBuffer");
- float overflow = (hb + GetClientHealth(client)) - max;
- if(overflow > 0)
- hb -= overflow;
- SetEntPropFloat(client, Prop_Send, "m_healthBuffer", hb);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement