PHP Code:
#pragma semicolon 1
#pragma newdecls required
#define PL_VER "1.2.0 (rewritten by Grey83)"
Handle
hTimer[MAXPLAYERS+1];
int
iMax,
iAdd;
float
fCD;
public Plugin myinfo =
{
name = "Admin Regenerate",
version = PL_VER,
description = "Lets admins regenerate their health with a command",
author = "joac1144/Zyanthius"
}
public void OnPluginStart()
{
CreateConVar("adminregen_version", PL_VER, "Plugin version. Do not change.", FCVAR_DONTRECORD|FCVAR_NOTIFY|FCVAR_SPONLY);
ConVar cvar;
cvar = CreateConVar("adminregen_maxhp", "100", "Maximum health you can have by regenerating (0 - plugin disabled)", _, true);
cvar.AddChangeHook(CVarChange_Max);
iMax = cvar.IntValue;
cvar = CreateConVar("adminregen_health", "2", "Amount of health to regenerate", _, true, 1.0);
cvar.AddChangeHook(CVarChange_Add);
iAdd = cvar.IntValue;
cvar = CreateConVar("adminregen_time", "2.0", "Amount of time (in seconds) between each health", _, true, 0.1);
cvar.AddChangeHook(CVarChange_CD);
fCD = cvar.FloatValue;
AutoExecConfig(true, "plugin.adminregen");
RegAdminCmd("sm_adminregen", Cmd_Regen, ADMFLAG_SLAY, "Activates regeneration.");
}
public void CVarChange_Max(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iMax = cvar.IntValue;
}
public void CVarChange_Add(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iAdd = cvar.IntValue;
}
public void CVarChange_CD(ConVar cvar, const char[] oldValue, const char[] newValue)
{
fCD = cvar.FloatValue;
}
public void OnMapEnd()
{
for(int i = 1; i <= MaxClients; i++) OnClientDisconnect(i);
}
public void OnClientDisconnect(int client)
{
if(hTimer[client]) delete hTimer;
}
public Action Cmd_Regen(int client, int args)
{
if(!client || IsFakeClient(client) || GetClientTeam(client) < 2 || !IsPlayerAlive(client))
return Plugin_Handled;
if(hTimer[client])
{
ReplyToCommand(client, "[SM] You have deactivated regeneration!");
PrintToServer("[SM] %N has deactivated regeneration!", client);
delete hTimer[client];
return Plugin_Handled;
}
if(GetClientHealth(client) >= iMax)
{
ReplyToCommand(client, "[SM] You already have maximum hp!");
PrintToServer("[SM] %N already has maximum hp!", client);
return Plugin_Handled;
}
hTimer[client] = CreateTimer(fCD, RegenTimer, GetClientUserId(client), TIMER_REPEAT);
ReplyToCommand(client, "[SM] You have activated regeneration!");
PrintToServer("[SM] %N has activated regeneration!", client);
return Plugin_Handled;
}
public Action RegenTimer(Handle timer, int uid)
{
int client = GetClientOfUserId(uid);
if(!client || GetClientTeam(client) < 2 || !IsPlayerAlive(client))
return StopTimer(client);
int hp = GetClientHealth(client);
if(hp >= iMax)
return StopTimer(client);
if((hp += iAdd) >= iMax)
{
SetEntityHealth(client, iMax);
return StopTimer(client);
}
SetEntityHealth(client, hp);
return Plugin_Continue;
}
stock Action StopTimer(int client)
{
hTimer[client] = null;
return Plugin_Stop;
}
__________________