FlacoBey

Untitled

Jan 5th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.08 KB | None | 0 0
  1. #include <sourcemod>
  2. #include <sdktools>
  3. #include <sdkhooks>
  4.  
  5. #pragma semicolon 1
  6. #pragma tabsize 0
  7.  
  8. new bool:isChatLog = false;
  9.  
  10. new bool:lateLoad;
  11. char sDataFilePath[PLATFORM_MAX_PATH];
  12.  
  13. public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
  14. {
  15.     lateLoad = late;
  16.     return APLRes_Success;    
  17. }
  18.  
  19. public OnPluginStart()
  20. {
  21.     RegAdminCmd("sm_damagelog", DamageLog, ADMFLAG_ROOT);
  22.    
  23.     if (lateLoad)
  24.     {
  25.         for (new client = 1; client <= MaxClients; client++)
  26.         {
  27.             if (IsClientInGame(client))
  28.             {
  29.                 OnClientPutInServer(client);
  30.             }
  31.         }
  32.     }
  33.     BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/melee_damage_specials_test.ini");
  34.     if (!FileExists(sDataFilePath))
  35.     {
  36.         new Handle:open_path = OpenFile(sDataFilePath, "w");
  37.         WriteFileLine(open_path, "");
  38.         CloseHandle(open_path);
  39.         PrintToServer("Error Code: WSP-EC-01A");
  40.         KvWriteToFile(sDataFilePath);
  41.     }
  42. }
  43.  
  44. void KvWriteToFile(const char[] path)
  45. {
  46.     KeyValues kv = new KeyValues("damage_melee");
  47.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_baseball_bat/damage", 1);
  48.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_cricket_bat/damage", 1);
  49.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_crowbar/damage", 1);
  50.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_electric_guitar/damage", 1);
  51.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_fireaxe/damage", 1);
  52.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_frying_pan/damage", 1);
  53.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_golfclub/damage", 1);
  54.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_katana/damage", 1);
  55.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_machete/damage", 1);
  56.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_tonfa/damage", 1);
  57.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_knife/damage", 1);
  58.     kv.SetNum("ZOMBIECLASS_SMOKER/weapon_chainsaw/damage", 1);
  59.     // boomer
  60.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_baseball_bat/damage", 1);
  61.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_cricket_bat/damage", 1);
  62.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_crowbar/damage", 1);
  63.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_electric_guitar/damage", 1);
  64.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_fireaxe/damage", 1);
  65.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_frying_pan/damage", 1);
  66.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_golfclub/damage", 1);
  67.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_katana/damage", 1);
  68.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_machete/damage", 1);
  69.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_tonfa/damage", 1);
  70.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_knife/damage", 1);
  71.     kv.SetNum("ZOMBIECLASS_BOOMER/weapon_chainsaw/damage", 1);
  72.     // hunter
  73.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_baseball_bat/damage", 1);
  74.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_cricket_bat/damage", 1);
  75.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_crowbar/damage", 1);
  76.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_electric_guitar/damage", 1);
  77.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_fireaxe/damage", 1);
  78.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_frying_pan/damage", 1);
  79.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_golfclub/damage", 1);
  80.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_katana/damage", 1);
  81.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_machete/damage", 1);
  82.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_tonfa/damage", 1);
  83.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_knife/damage", 1);
  84.     kv.SetNum("ZOMBIECLASS_HUNTER/weapon_chainsaw/damage", 1);
  85.     // spitter
  86.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_baseball_bat/damage", 1);
  87.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_cricket_bat/damage", 1);
  88.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_crowbar/damage", 1);
  89.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_electric_guitar/damage", 1);
  90.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_frying_pan/damage", 1);
  91.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_golfclub/damage", 1);
  92.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_katana/damage", 1);
  93.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_machete/damage", 1);
  94.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_tonfa/damage", 1);
  95.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_knife/damage", 1);
  96.     kv.SetNum("ZOMBIECLASS_SPITTER/weapon_chainsaw/damage", 1);
  97.     // Jockey
  98.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_baseball_bat/damage", 1);
  99.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_cricket_bat/damage", 1);
  100.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_crowbar/damage", 1);
  101.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_electric_guitar/damage", 1);
  102.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_frying_pan/damage", 1);
  103.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_golfclub/damage", 1);
  104.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_katana/damage", 1);
  105.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_machete/damage", 1);
  106.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_tonfa/damage", 1);
  107.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_knife/damage", 1);
  108.     kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_chainsaw/damage", 1);
  109.    
  110.     kv.SetNum("ZOMBIECLASS_CHARGER/weapon_chainsaw/damage", 1);
  111.     kv.SetNum("ZOMBIECLASS_TANK/weapon_chainsaw/damage", 1);
  112.  
  113.     kv.ExportToFile(path);
  114.  
  115.     delete kv;
  116. }
  117.  
  118. public OnClientPutInServer(client)
  119. {
  120.     SDKHook(client, SDKHook_TraceAttack, _SI_OnTraceAttack);
  121. }
  122.  
  123. public OnClientDisconnect(client)
  124. {
  125.     SDKUnhook(client, SDKHook_TraceAttack, _SI_OnTraceAttack);
  126. }
  127.  
  128. public Action:_SI_OnTraceAttack(victim, &attacker, &inflictor, &Float:damage, &damagetype, &ammotype, hitbox, hitgroup)
  129. {
  130.     decl String:clsname[64];
  131.     GetEdictClassname(inflictor, clsname, 64);
  132.     if (StrEqual(clsname, "weapon_melee") || StrEqual(clsname, "weapon_chainsaw"))
  133.     {
  134.         KeyValues kv = new KeyValues("damage_melee");
  135.         if (kv.ImportFromFile(sDataFilePath))
  136.         {
  137.             decl String:classname[64];
  138.             GetClientWeapon(attacker, classname, sizeof(classname));
  139.             kv.Rewind();
  140.             if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 1)
  141.             {
  142.                
  143.                 if (KvJumpToKey(kv, "ZOMBIECLASS_SMOKER", true))
  144.                 {
  145.                     decl String:classname2[64];
  146.                     GetClientWeapon(attacker, classname2, sizeof(classname2));
  147.                     if (kv.JumpToKey(classname2))
  148.                     {
  149.                         new num = KvGetNum(kv, "damage", 1);
  150.                         damage = (damage * 0) + num;
  151.                         if (isChatLog == true)
  152.                         {
  153.                             int heal = GetClientHealth(victim);
  154.                             PrintToChatAll("SmokerHealth=%i", heal);
  155.                         }
  156.                         return Plugin_Changed;
  157.                     }
  158.                 }
  159.             }
  160.             else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 2)
  161.             {
  162.                 if (KvJumpToKey(kv, "ZOMBIECLASS_BOOMER", true))
  163.                 {
  164.                     if (KvJumpToKey(kv, classname, true))
  165.                     {
  166.                         new num = KvGetNum(kv, "damage", 1);
  167.                         damage = (damage * 0) + num;
  168.                         if(isChatLog == true)
  169.                         {
  170.                             int heal = GetClientHealth(victim);
  171.                             PrintToChatAll("BoomerHealth=%i", heal);
  172.                         }
  173.                         return Plugin_Changed;
  174.                     }
  175.                 }
  176.             }
  177.             else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 3)
  178.             {
  179.                 if (KvJumpToKey(kv, "ZOMBIECLASS_HUNTER", true))
  180.                 {
  181.                     if (KvJumpToKey(kv, classname, true))
  182.                     {
  183.                         new num = KvGetNum(kv, "damage", 1);
  184.                         damage = (damage * 0) + num;
  185.                         if(isChatLog == true)
  186.                         {
  187.                             int heal = GetClientHealth(victim);
  188.                             PrintToChatAll("HunterHealth=%i", heal);
  189.                         }
  190.                         return Plugin_Changed;
  191.                     }
  192.                 }
  193.             }
  194.             else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 4)
  195.             {
  196.                 if (KvJumpToKey(kv, "ZOMBIECLASS_SPITTER", true))
  197.                 {
  198.                     if (KvJumpToKey(kv, classname, true))
  199.                     {
  200.                         new num = KvGetNum(kv, "damage", 1);
  201.                         damage = (damage * 0) + num;
  202.                         if(isChatLog == true)
  203.                         {
  204.                             int heal = GetClientHealth(victim);
  205.                             PrintToChatAll("SpitterHealth=%i", heal);
  206.                         }
  207.                         return Plugin_Changed;
  208.                     }
  209.                 }
  210.             }
  211.             else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 5)
  212.             {
  213.                 if (KvJumpToKey(kv, "ZOMBIECLASS_JOCKEY", true))
  214.                 {
  215.                     if (KvJumpToKey(kv, classname, true))
  216.                     {
  217.                         new num = KvGetNum(kv, "damage", 1);
  218.                         damage = (damage * 0) + num;
  219.                         if(isChatLog == true)
  220.                         {
  221.                             int heal = GetClientHealth(victim);
  222.                             PrintToChatAll("JockeyHealth=%i", heal);
  223.                         }
  224.                         return Plugin_Changed;
  225.                     }
  226.                 }
  227.             }
  228.             else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 6)
  229.             {
  230.                 if (KvJumpToKey(kv, "ZOMBIECLASS_CHARGER", true))
  231.                 {
  232.                     if (KvJumpToKey(kv, classname, true))
  233.                     {
  234.                         new num = KvGetNum(kv, "damage", 1);
  235.                         damage = (damage * 0) + num;
  236.                         if(isChatLog == true)
  237.                         {
  238.                             int heal = GetClientHealth(victim);
  239.                             PrintToChatAll("ChargerHealth=%i", heal);
  240.                         }
  241.                         return Plugin_Changed;
  242.                     }
  243.                 }
  244.             }
  245.             else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 8)
  246.             {
  247.                 if (KvJumpToKey(kv, "ZOMBIECLASS_TANK", true))
  248.                 {
  249.                     if (KvJumpToKey(kv, classname, true))
  250.                     {
  251.                         new num = KvGetNum(kv, "damage", 1);
  252.                         damage = (damage * 0) + num;
  253.                         if(isChatLog == true)
  254.                         {
  255.                             int heal = GetClientHealth(victim);
  256.                             PrintToChatAll("TankHealth=%i", heal);
  257.                         }
  258.                         return Plugin_Changed;
  259.                     }
  260.                 }
  261.             }
  262.         }
  263.     }
  264.     return Plugin_Continue;
  265. }
  266.  
  267. public Action:DamageLog(i, args)
  268. {
  269.     if(isChatLog == false)
  270.     {
  271.         isChatLog = true;
  272.         PrintToChatAll("Логирование урона рукопашным оружеем включено.");
  273.     }
  274.     else if(isChatLog == true)
  275.     {
  276.         isChatLog = false;
  277.         PrintToChatAll("Логирование урона рукопашным оружеем выключено.");
  278.     }
  279. }
  280.  
  281. public IsValidClient(client)
  282. {
  283.     if (client <= 0)
  284.         return false;
  285.        
  286.     if (client > MaxClients)
  287.         return false;
  288.        
  289.     if (!IsClientInGame(client))
  290.         return false;
  291.        
  292.     if (!IsPlayerAlive(client))
  293.         return false;
  294.  
  295.     return true;
  296. }
Advertisement
Add Comment
Please, Sign In to add comment