Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Config
- -- side_effect can be "none", "harmless", "lethal_to_unsuspecting", or "emp"
- -- "lethal_to_unsuspecting" is the same as backtapping and is not limited to melee
- DAMAGE_EFFECT_SETTINGS = {
- {
- ["tag_path"] = "weapons\\pistol\\bullet",
- ["lower_dmg"] = 25,
- ["upper_dmg"] = {
- ["from"] = 25,
- ["to"] = 25
- },
- ["can_cause_headshots"] = false,
- ["side_effect"] = "none"
- },
- {
- ["tag_path"] = "weapons\\sniper rifle\\sniper bullet",
- ["lower_dmg"] = 101,
- ["upper_dmg"] = {
- ["from"] = 101,
- ["to"] = 101
- },
- ["can_cause_headshots"] = false,
- ["side_effect"] = "none"
- },
- }
- --End of config
- old_damage_settings = {}
- side_effects = {
- ["none"] = 0,
- ["harmless"] = 1,
- ["lethal_to_unsuspecting"] = 2,
- ["emp"] = 3
- }
- api_version = "1.9.0.0"
- function OnScriptLoad()
- register_callback(cb['EVENT_GAME_START'], "OnGameStart")
- register_callback(cb['EVENT_GAME_END'], "OnGameEnd")
- end
- function OnGameStart()
- for k,v in pairs(DAMAGE_EFFECT_SETTINGS) do
- local dmg_effect_tag = lookup_tag("jpt!", v.tag_path)
- if(dmg_effect_tag ~= 0) then
- local dmg_effect_data = read_dword(dmg_effect_tag + 0x14)
- local old_data = {
- ["tag_path"] = v.tag_path,
- ["lower_dmg"] = read_float(dmg_effect_data + 0x1D0),
- ["upper_dmg"] = {
- ["from"] = read_float(dmg_effect_data + 0x1D4),
- ["to"] = read_float(dmg_effect_data + 0x1D8)
- },
- ["can_cause_headshots"] = read_bit(dmg_effect_data + 0x1C8, 1),
- ["side_effect"] = read_byte(dmg_effect_data + 0x1C4)
- }
- table.insert(old_damage_settings, old_data)
- if(type(v.lower_dmg) == "number") then
- write_float(dmg_effect_data + 0x1D0, v.lower_dmg)
- end
- if(v.upper_dmg ~= nil) then
- if(type(v.upper_dmg.from) == "number") then
- write_float(dmg_effect_data + 0x1D4, v.upper_dmg.from)
- end
- if(type(v.upper_dmg.to) == "number") then
- write_float(dmg_effect_data + 0x1D8, v.upper_dmg.to)
- end
- end
- if(type(v.can_cause_headshots) == "boolean") then
- if(v.can_cause_headshots) then
- write_bit(dmg_effect_data + 0x1C8, 1, 1)
- else
- write_bit(dmg_effect_data + 0x1C8, 1, 0)
- end
- end
- if(type(v.side_effect) == "string" and type(side_effects[v.side_effect]) == "number") then
- write_byte(dmg_effect_data + 0x1C4, side_effects[v.side_effect])
- end
- end
- end
- end
- function OnGameEnd()
- old_damage_settings = {}
- end
- function OnScriptUnload()
- for k,v in pairs(old_damage_settings) do
- local dmg_effect_tag = lookup_tag("jpt!", v.tag_path)
- if(dmg_effect_tag ~= 0) then
- local dmg_effect_data = read_dword(dmg_effect_tag + 0x14)
- write_float(dmg_effect_data + 0x1D0, v.lower_dmg)
- write_float(dmg_effect_data + 0x1D4, v.upper_dmg.from)
- write_float(dmg_effect_data + 0x1D8, v.upper_dmg.to)
- write_bit(dmg_effect_data + 0x1C8, 1, v.can_cause_headshots)
- write_byte(dmg_effect_data + 0x1C4, v.side_effect)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement