Advertisement
Guest User

damage_effect_settings.lua

a guest
Jan 25th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.92 KB | None | 0 0
  1. --Config
  2.  
  3. -- side_effect can be "none", "harmless", "lethal_to_unsuspecting", or "emp"
  4. -- "lethal_to_unsuspecting" is the same as backtapping and is not limited to melee
  5. DAMAGE_EFFECT_SETTINGS = {
  6.     {
  7.         ["tag_path"] = "weapons\\pistol\\bullet",
  8.         ["lower_dmg"] = 25,
  9.         ["upper_dmg"] = {
  10.             ["from"] = 25,
  11.             ["to"] = 25
  12.         },
  13.         ["can_cause_headshots"] = false,
  14.         ["side_effect"] = "none"
  15.     },
  16.     {
  17.         ["tag_path"] = "weapons\\sniper rifle\\sniper bullet",
  18.         ["lower_dmg"] = 101,
  19.         ["upper_dmg"] = {
  20.             ["from"] = 101,
  21.             ["to"] = 101
  22.         },
  23.         ["can_cause_headshots"] = false,
  24.         ["side_effect"] = "none"
  25.     },
  26. }
  27.  
  28. --End of config
  29.  
  30. old_damage_settings = {}
  31. side_effects = {
  32.     ["none"] = 0,
  33.     ["harmless"] = 1,
  34.     ["lethal_to_unsuspecting"] = 2,
  35.     ["emp"] = 3
  36. }
  37. api_version = "1.9.0.0"
  38.  
  39. function OnScriptLoad()
  40.     register_callback(cb['EVENT_GAME_START'], "OnGameStart")
  41.     register_callback(cb['EVENT_GAME_END'], "OnGameEnd")
  42. end
  43.  
  44. function OnGameStart()
  45.     for k,v in pairs(DAMAGE_EFFECT_SETTINGS) do
  46.         local dmg_effect_tag = lookup_tag("jpt!", v.tag_path)
  47.         if(dmg_effect_tag ~= 0) then
  48.             local dmg_effect_data = read_dword(dmg_effect_tag + 0x14)
  49.            
  50.             local old_data = {
  51.                 ["tag_path"] = v.tag_path,
  52.                 ["lower_dmg"] = read_float(dmg_effect_data + 0x1D0),
  53.                 ["upper_dmg"] = {
  54.                     ["from"] = read_float(dmg_effect_data + 0x1D4),
  55.                     ["to"] = read_float(dmg_effect_data + 0x1D8)
  56.                 },
  57.                 ["can_cause_headshots"] = read_bit(dmg_effect_data + 0x1C8, 1),
  58.                 ["side_effect"] = read_byte(dmg_effect_data + 0x1C4)
  59.             }
  60.             table.insert(old_damage_settings, old_data)
  61.            
  62.             if(type(v.lower_dmg) == "number") then
  63.                 write_float(dmg_effect_data + 0x1D0, v.lower_dmg)
  64.             end
  65.             if(v.upper_dmg ~= nil) then
  66.                 if(type(v.upper_dmg.from) == "number") then
  67.                     write_float(dmg_effect_data + 0x1D4, v.upper_dmg.from)
  68.                 end
  69.                 if(type(v.upper_dmg.to) == "number") then
  70.                     write_float(dmg_effect_data + 0x1D8, v.upper_dmg.to)
  71.                 end
  72.             end
  73.             if(type(v.can_cause_headshots) == "boolean") then
  74.                 if(v.can_cause_headshots) then
  75.                     write_bit(dmg_effect_data + 0x1C8, 1, 1)
  76.                 else
  77.                     write_bit(dmg_effect_data + 0x1C8, 1, 0)
  78.                 end
  79.             end
  80.             if(type(v.side_effect) == "string" and type(side_effects[v.side_effect]) == "number") then
  81.                 write_byte(dmg_effect_data + 0x1C4, side_effects[v.side_effect])
  82.             end
  83.         end
  84.     end
  85. end
  86.  
  87. function OnGameEnd()
  88.     old_damage_settings = {}
  89. end
  90.  
  91. function OnScriptUnload()
  92.     for k,v in pairs(old_damage_settings) do
  93.         local dmg_effect_tag = lookup_tag("jpt!", v.tag_path)
  94.         if(dmg_effect_tag ~= 0) then
  95.             local dmg_effect_data = read_dword(dmg_effect_tag + 0x14)
  96.            
  97.             write_float(dmg_effect_data + 0x1D0, v.lower_dmg)
  98.             write_float(dmg_effect_data + 0x1D4, v.upper_dmg.from)
  99.             write_float(dmg_effect_data + 0x1D8, v.upper_dmg.to)
  100.             write_bit(dmg_effect_data + 0x1C8, 1, v.can_cause_headshots)
  101.             write_byte(dmg_effect_data + 0x1C4, v.side_effect)
  102.         end
  103.     end
  104. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement