FlacoBey

Untitled

Jan 5th, 2019
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.78 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. KeyValues kv = new KeyValues("damage_melee");
  131. if (kv.ImportFromFile(sDataFilePath))
  132. {
  133. decl String:classname[64];
  134. GetClientWeapon(attacker, classname, sizeof(classname));
  135. kv.Rewind();
  136. if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 1)
  137. {
  138. if (KvJumpToKey(kv, "ZOMBIECLASS_SMOKER", true))
  139. {
  140. if (KvJumpToKey(kv, classname, true))
  141. {
  142. new num = KvGetNum(kv, "damage", 1);
  143. damage = (damage * 0) + num;
  144. if (isChatLog == true)
  145. {
  146. int heal = GetClientHealth(victim);
  147. PrintToChatAll("SmokerHealth=%i", heal);
  148. }
  149. return Plugin_Changed;
  150. }
  151. }
  152. }
  153. else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 2)
  154. {
  155. if (KvJumpToKey(kv, "ZOMBIECLASS_BOOMER", true))
  156. {
  157. if (KvJumpToKey(kv, classname, true))
  158. {
  159. new num = KvGetNum(kv, "damage", 1);
  160. damage = (damage * 0) + num;
  161. if(isChatLog == true)
  162. {
  163. int heal = GetClientHealth(victim);
  164. PrintToChatAll("BoomerHealth=%i", heal);
  165. }
  166. return Plugin_Changed;
  167. }
  168. }
  169. }
  170. else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 3)
  171. {
  172. if (KvJumpToKey(kv, "ZOMBIECLASS_HUNTER", true))
  173. {
  174. if (KvJumpToKey(kv, classname, true))
  175. {
  176. new num = KvGetNum(kv, "damage", 1);
  177. damage = (damage * 0) + num;
  178. if(isChatLog == true)
  179. {
  180. int heal = GetClientHealth(victim);
  181. PrintToChatAll("HunterHealth=%i", heal);
  182. }
  183. return Plugin_Changed;
  184. }
  185. }
  186. }
  187. else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 4)
  188. {
  189. if (KvJumpToKey(kv, "ZOMBIECLASS_SPITTER", true))
  190. {
  191. if (KvJumpToKey(kv, classname, true))
  192. {
  193. new num = KvGetNum(kv, "damage", 1);
  194. damage = (damage * 0) + num;
  195. if(isChatLog == true)
  196. {
  197. int heal = GetClientHealth(victim);
  198. PrintToChatAll("SpitterHealth=%i", heal);
  199. }
  200. return Plugin_Changed;
  201. }
  202. }
  203. }
  204. else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 5)
  205. {
  206. if (KvJumpToKey(kv, "ZOMBIECLASS_JOCKEY", true))
  207. {
  208. if (KvJumpToKey(kv, classname, true))
  209. {
  210. new num = KvGetNum(kv, "damage", 1);
  211. damage = (damage * 0) + num;
  212. if(isChatLog == true)
  213. {
  214. int heal = GetClientHealth(victim);
  215. PrintToChatAll("JockeyHealth=%i", heal);
  216. }
  217. return Plugin_Changed;
  218. }
  219. }
  220. }
  221. else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 6)
  222. {
  223. if (KvJumpToKey(kv, "ZOMBIECLASS_CHARGER", true))
  224. {
  225. if (KvJumpToKey(kv, classname, true))
  226. {
  227. new num = KvGetNum(kv, "damage", 1);
  228. damage = (damage * 0) + num;
  229. if(isChatLog == true)
  230. {
  231. int heal = GetClientHealth(victim);
  232. PrintToChatAll("ChargerHealth=%i", heal);
  233. }
  234. return Plugin_Changed;
  235. }
  236. }
  237. }
  238. else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 8)
  239. {
  240. if (KvJumpToKey(kv, "ZOMBIECLASS_TANK", true))
  241. {
  242. if (KvJumpToKey(kv, classname, true))
  243. {
  244. new num = KvGetNum(kv, "damage", 1);
  245. damage = (damage * 0) + num;
  246. if(isChatLog == true)
  247. {
  248. int heal = GetClientHealth(victim);
  249. PrintToChatAll("TankHealth=%i", heal);
  250. }
  251. return Plugin_Changed;
  252. }
  253. }
  254. }
  255. }
  256. return Plugin_Continue;
  257. }
  258.  
  259. public Action:DamageLog(i, args)
  260. {
  261. if(isChatLog == false)
  262. {
  263. isChatLog = true;
  264. PrintToChatAll("Логирование урона рукопашным оружеем включено.");
  265. }
  266. else if(isChatLog == true)
  267. {
  268. isChatLog = false;
  269. PrintToChatAll("Логирование урона рукопашным оружеем выключено.");
  270. }
  271. }
  272.  
  273. public IsValidClient(client)
  274. {
  275. if (client <= 0)
  276. return false;
  277.  
  278. if (client > MaxClients)
  279. return false;
  280.  
  281. if (!IsClientInGame(client))
  282. return false;
  283.  
  284. if (!IsPlayerAlive(client))
  285. return false;
  286.  
  287. return true;
  288. }
Advertisement
Add Comment
Please, Sign In to add comment