Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define ZOMBIECLASS_SMOKER 1
- #define ZOMBIECLASS_BOOMER 2
- #define ZOMBIECLASS_HUNTER 3
- #define ZOMBIECLASS_SPITTER 4
- #define ZOMBIECLASS_JOCKEY 5
- #define ZOMBIECLASS_CHARGER 6
- #define ZOMBIECLASS_WITCH 7
- #define ZOMBIECLASS_TANK 8
- #pragma tabsize 0
- ConVar Time;
- float TimeInt;
- char sDataFilePath[PLATFORM_MAX_PATH];
- int NumMin, NumMax;
- public OnPluginStart()
- {
- Time = CreateConVar("sm_time_health_for_boss","4.0", "Vremya", FCVAR_NONE);
- HookEvent("tank_spawned", TankSpawned);
- AutoExecConfig(true, "RandomHealthBosses");
- BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/random_health.ini");
- if (!FileExists(sDataFilePath))
- {
- new Handle:open_path = OpenFile(sDataFilePath, "w");
- WriteFileLine(open_path, "");
- CloseHandle(open_path);
- PrintToServer("Error Code: WSP-EC-01A");
- KvWriteToFile(sDataFilePath);
- }
- }
- void KvWriteToFile(const char[] path)
- {
- KeyValues kv = new KeyValues("Health");
- kv.SetNum("TankHealth/min", 1);
- kv.SetNum("TankHealth/max", 1);
- kv.SetNum("Charger/min", 1);
- kv.SetNum("Charger/max", 1);
- kv.SetNum("Hunter/min", 1);
- kv.SetNum("Hunter/max", 1);
- kv.SetNum("Smoker/min", 1);
- kv.SetNum("Smoker/max", 1);
- kv.SetNum("Boomer/min", 1);
- kv.SetNum("Boomer/max", 1);
- kv.SetNum("Jockey/min", 1);
- kv.SetNum("Jockey/max", 1);
- kv.SetNum("Spitter/min", 1);
- kv.SetNum("Spitter/max", 1);
- kv.ExportToFile(path);
- delete kv;
- }
- public Action:TankSpawned(Handle:event, const String:ename[], bool:dontBroadcast)
- {
- KeyValues kv = new KeyValues("Health");
- if (kv.ImportFromFile(sDataFilePath))
- {
- int eblan = GetClientOfUserId(GetEventInt(event, "userid"));
- if(IsValidClient(eblan))
- {
- if (KvJumpToKey(kv, "TankHealth", true))
- {
- NumMin = KvGetNum(kv, "min", 1);
- NumMax = KvGetNum(kv, "max", 1);
- SetEntityHealth(eblan, GetRandomInt(NumMin, NumMax))
- }
- }
- }
- }
- public OnClientPutInServer(client)
- {
- CreateTimer(TimeInt, timer, client, TIMER_FLAG_NO_MAPCHANGE);
- }
- public Action:timer(Handle timer, any client)
- {
- if (GetClientTeam(client) == 3 && IsValidClient(client))
- {
- KeyValues kv = new KeyValues("Health");
- if (kv.ImportFromFile(sDataFilePath))
- {
- new class = GetEntProp(client, Prop_Send, "m_zombieClass");
- if(class == ZOMBIECLASS_SMOKER)
- {
- if (KvJumpToKey(kv, "Smoker", true))
- {
- NumMin = KvGetNum(kv, "min", 1);
- NumMax = KvGetNum(kv, "max", 1);
- SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
- }
- }
- else if(class == ZOMBIECLASS_BOOMER)
- {
- if (KvJumpToKey(kv, "Boomer", true))
- {
- NumMin = KvGetNum(kv, "min", 1);
- NumMax = KvGetNum(kv, "max", 1);
- SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
- }
- }
- else if(class == ZOMBIECLASS_HUNTER)
- {
- if (KvJumpToKey(kv, "Hunter", true))
- {
- NumMin = KvGetNum(kv, "min", 1);
- NumMax = KvGetNum(kv, "max", 1);
- SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
- }
- }
- else if(class == ZOMBIECLASS_SPITTER)
- {
- if (KvJumpToKey(kv, "Spitter", true))
- {
- NumMin = KvGetNum(kv, "min", 1);
- NumMax = KvGetNum(kv, "max", 1);
- SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
- }
- }
- else if(class == ZOMBIECLASS_JOCKEY)
- {
- if (KvJumpToKey(kv, "Jockey", true))
- {
- NumMin = KvGetNum(kv, "min", 1);
- NumMax = KvGetNum(kv, "max", 1);
- SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
- }
- }
- else if(class == ZOMBIECLASS_CHARGER)
- {
- if (KvJumpToKey(kv, "Charger", true))
- {
- NumMin = KvGetNum(kv, "min", 1);
- NumMax = KvGetNum(kv, "max", 1);
- SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
- }
- }
- }
- }
- }
- public OnMapStart()
- {
- SetCvars()
- }
- public SetCvars()
- {
- TimeInt = GetConVarFloat(Time);
- }
- public IsValidClient(client)
- {
- if (client <= 0)
- return false;
- if (client > MaxClients)
- return false;
- if (!IsClientInGame(client))
- return false;
- if (!IsPlayerAlive(client))
- return false;
- return true;
- }
Add Comment
Please, Sign In to add comment