FlacoBey

Untitled

Jan 30th, 2019
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.28 KB | None | 0 0
  1. #define ZOMBIECLASS_SMOKER  1
  2. #define ZOMBIECLASS_BOOMER  2
  3. #define ZOMBIECLASS_HUNTER  3
  4. #define ZOMBIECLASS_SPITTER 4
  5. #define ZOMBIECLASS_JOCKEY  5
  6. #define ZOMBIECLASS_CHARGER 6
  7. #define ZOMBIECLASS_WITCH   7
  8. #define ZOMBIECLASS_TANK    8
  9.  
  10. #pragma tabsize 0
  11.  
  12. ConVar Time;
  13. float TimeInt;
  14. char sDataFilePath[PLATFORM_MAX_PATH];
  15. int NumMin, NumMax;
  16.  
  17. public OnPluginStart()
  18. {
  19.     Time    = CreateConVar("sm_time_health_for_boss","4.0", "Vremya", FCVAR_NONE);
  20.    
  21.     HookEvent("tank_spawned", TankSpawned);
  22.     AutoExecConfig(true, "RandomHealthBosses");
  23.    
  24.     BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/random_health.ini");
  25.     if (!FileExists(sDataFilePath))
  26.     {
  27.         new Handle:open_path = OpenFile(sDataFilePath, "w");
  28.         WriteFileLine(open_path, "");
  29.         CloseHandle(open_path);
  30.         PrintToServer("Error Code: WSP-EC-01A");
  31.         KvWriteToFile(sDataFilePath);
  32.     }
  33. }
  34.  
  35. void KvWriteToFile(const char[] path)
  36. {
  37.     KeyValues kv = new KeyValues("Health");
  38.     kv.SetNum("TankHealth/min", 1);
  39.     kv.SetNum("TankHealth/max", 1);
  40.    
  41.     kv.SetNum("Charger/min", 1);
  42.     kv.SetNum("Charger/max", 1);
  43.    
  44.     kv.SetNum("Hunter/min", 1);
  45.     kv.SetNum("Hunter/max", 1);
  46.    
  47.     kv.SetNum("Smoker/min", 1);
  48.     kv.SetNum("Smoker/max", 1);
  49.    
  50.     kv.SetNum("Boomer/min", 1);
  51.     kv.SetNum("Boomer/max", 1);
  52.    
  53.     kv.SetNum("Jockey/min", 1);
  54.     kv.SetNum("Jockey/max", 1);
  55.    
  56.     kv.SetNum("Spitter/min", 1);
  57.     kv.SetNum("Spitter/max", 1);
  58.     kv.ExportToFile(path);
  59.    
  60.     delete kv;
  61. }
  62.  
  63. public Action:TankSpawned(Handle:event, const String:ename[], bool:dontBroadcast)
  64. {
  65.     KeyValues kv = new KeyValues("Health");
  66.     if (kv.ImportFromFile(sDataFilePath))
  67.     {
  68.         int eblan = GetClientOfUserId(GetEventInt(event, "userid"));
  69.         if(IsValidClient(eblan))
  70.         {
  71.             if (KvJumpToKey(kv, "TankHealth", true))
  72.             {
  73.                 NumMin = KvGetNum(kv, "min", 1);
  74.                 NumMax = KvGetNum(kv, "max", 1);
  75.                 SetEntityHealth(eblan, GetRandomInt(NumMin, NumMax))
  76.             }
  77.         }
  78.     }
  79. }
  80.  
  81. public OnClientPutInServer(client)
  82. {
  83.     CreateTimer(TimeInt, timer, client, TIMER_FLAG_NO_MAPCHANGE);
  84. }
  85.  
  86. public Action:timer(Handle timer, any client)
  87. {
  88.     if (GetClientTeam(client) == 3 && IsValidClient(client))
  89.     {
  90.         KeyValues kv = new KeyValues("Health");
  91.         if (kv.ImportFromFile(sDataFilePath))
  92.         {
  93.             new class = GetEntProp(client, Prop_Send, "m_zombieClass");
  94.             if(class == ZOMBIECLASS_SMOKER)
  95.             {
  96.                 if (KvJumpToKey(kv, "Smoker", true))
  97.                 {
  98.                     NumMin = KvGetNum(kv, "min", 1);
  99.                     NumMax = KvGetNum(kv, "max", 1);
  100.                     SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
  101.                 }
  102.             }
  103.             else if(class == ZOMBIECLASS_BOOMER)
  104.             {
  105.                 if (KvJumpToKey(kv, "Boomer", true))
  106.                 {
  107.                     NumMin = KvGetNum(kv, "min", 1);
  108.                     NumMax = KvGetNum(kv, "max", 1);
  109.                     SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
  110.                 }
  111.             }
  112.             else if(class == ZOMBIECLASS_HUNTER)
  113.             {
  114.                 if (KvJumpToKey(kv, "Hunter", true))
  115.                 {
  116.                     NumMin = KvGetNum(kv, "min", 1);
  117.                     NumMax = KvGetNum(kv, "max", 1);
  118.                     SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
  119.                 }
  120.             }
  121.             else if(class == ZOMBIECLASS_SPITTER)
  122.             {
  123.                 if (KvJumpToKey(kv, "Spitter", true))
  124.                 {
  125.                     NumMin = KvGetNum(kv, "min", 1);
  126.                     NumMax = KvGetNum(kv, "max", 1);
  127.                     SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
  128.                 }
  129.             }
  130.             else if(class == ZOMBIECLASS_JOCKEY)
  131.             {
  132.                 if (KvJumpToKey(kv, "Jockey", true))
  133.                 {
  134.                     NumMin = KvGetNum(kv, "min", 1);
  135.                     NumMax = KvGetNum(kv, "max", 1);
  136.                     SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
  137.                 }
  138.             }
  139.             else if(class == ZOMBIECLASS_CHARGER)
  140.             {
  141.                 if (KvJumpToKey(kv, "Charger", true))
  142.                 {
  143.                     NumMin = KvGetNum(kv, "min", 1);
  144.                     NumMax = KvGetNum(kv, "max", 1);
  145.                     SetEntityHealth(client, GetRandomInt(NumMin, NumMax))
  146.                 }
  147.             }
  148.         }
  149.     }
  150. }
  151.  
  152. public OnMapStart()
  153. {
  154.     SetCvars()
  155. }
  156.  
  157. public SetCvars()
  158. {
  159.     TimeInt = GetConVarFloat(Time);
  160. }
  161.  
  162. public IsValidClient(client)
  163. {
  164.     if (client <= 0)
  165.         return false;
  166.        
  167.     if (client > MaxClients)
  168.         return false;
  169.        
  170.     if (!IsClientInGame(client))
  171.         return false;
  172.        
  173.     if (!IsPlayerAlive(client))
  174.         return false;
  175.  
  176.     return true;
  177. }
Add Comment
Please, Sign In to add comment