Created
December 6, 2018 14:09
-
-
Save Youngv/0a86edde6110e793333ff2330065aab1 to your computer and use it in GitHub Desktop.
PUBG LGS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-------------------------------------------------------------------------- | |
---------------- 基本设定 ------------------------------ | |
-------------------------------------------------------------------------- | |
---- 键绑定 ---- | |
local ump9_key = nil | |
local akm_key = nil | |
local m16a4_key = nil | |
local m416_key = nil | |
local scarl_key = nil | |
local uzi_key = nil | |
local qbz_key = 5 | |
local set_off_key = 4 | |
-- 键盘----仅支持罗技G键盘 | |
local ump9_gkey = nil ---1 is use F1. | |
local akm_gkey = nil | |
local m16a4_gkey = nil | |
local m416_gkey = nil | |
local scarl_gkey = nil | |
local uzi_gkey = nil | |
local qbz_gkey = nil | |
local set_off_gkey = nil | |
---- control_key ---- | |
local control_key = "lctrl" | |
---- can use "lalt", "ralt", "alt" "lshift", "rshift", "shift" "lctrl", "rctrl", "ctrl" | |
local ignore_key = "lalt" --- ignore key | |
local hold_breath_key = "lshift" | |
-- 快速拾取 设置--- | |
-- 按control键和ignore_键,然后单击鼠标左键--- | |
-- “lctrl”+“lalt”+ mousebutton | |
local KSSQ_key = 7 | |
local move = 40 | |
---- 只能使用“numlock”,“capslock”,“scrolllock” | |
local full_mode_key = "numlock" ---numlock lamp on,recoil is full_mode."numlock" | |
local mode_switch_key = "capslock" | |
local lighton_key = "scrolllock" ---start script,scrolllock lamp will be on.close script ,scrolllock lamp will be off. | |
--- 你在游戏中的灵敏度 | |
local vertical_sensitivity = 1.2 --- 默认值为0.7 | |
local target_sensitivity = 50 --- 默认值为50.0 | |
local scope_sensitivity = 50 --- 默认值为50.0 | |
local scope4x_sensitivity = 50 --- 默认值为50.0 | |
--你可以通过true到false来关闭它们 | |
local hold_breath_mode = true | |
local full_mode = true | |
---- Obfs setting | |
-- local obfs_mode = false | |
local obfs_mode = false | |
local interval_ratio = 0.75 | |
local random_seed = 1 | |
local auto_reloading = false | |
--如果auto_mode = true,枪支需要切换自动拍摄模式,m16单曲除外。 | |
local auto_mode = true | |
-------------------------------------------------------------------------- | |
---------------- Recoil Table ------------------------------ | |
---------------- You can fix the value here ------------------------------ | |
-------------------------------------------------------------------------- | |
--- recoil times | |
--- 如果Recoil补偿大或小,您可以修改all_recoil_Times或recoil_table {times}的值 | |
local all_recoil_times = 1440/1080 | |
local recoil_table = {} | |
recoil_table["akm"] = { | |
basic={60.3,40.2,47.5,51.0,54.5, 64.0,67.5,69.0,70.5,71.9, 71.5,73.6,79.3,79.3,81.6 ,70}, | |
basictimes = 1, | |
full={61.3,41.2,47.5,51.0,54.5, 64.0,67.5,69.0,70.5,71.9, 71.5,73.6,79.3,79.3,81.6 ,80}, | |
fulltimes = 1*0.75, | |
quadruple={61.3,41.2,47.5,51.0,54.5, 64.0,67.5,69.0,70.5,71.9, 71.5,73.6,79.3,79.3,81.6 ,80}, | |
quadrupletimes = 4*1, | |
fullof4x={61.3,41.2,47.5,51.0,54.5, 64.0,67.5,69.0,70.5,71.9, 71.5,73.6,79.3,79.3,81.6 ,80}, | |
fullof4xtimes = 4*1*0.75, | |
speed = 100, | |
maxbullets = 40, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
recoil_table["m416"] = { | |
basic={52.0,39.5,41.0,43.0,48.0, 50.0,53.2,54.2,54.5,52.5, 55.5,54.8,58.6,58.6,59.5, 70.3}, | |
basictimes = 1, | |
full={52.0,39.5,41.0,43.0,48.0, 50.0,53.2,53.2,53.5,51.5, 51.5,54.8,58.6,58.6,59.5, 60.3}, | |
fulltimes = 1*0.75*0.98*0.85, | |
quadruple={52.0,39.5,41.0,43.0,48.0, 50.0,53.2,53.2,53.5,51.5, 51.5,54.8,58.6,58.6,59.5, 60.3}, | |
quadrupletimes = 4*1*0.9, | |
fullof4x={52.0,39.5,41.0,43.0,48.0, 50.0,53.2,53.2,53.5,51.5, 51.5,54.8,58.6,58.6,59.5, 60.3}, | |
fullof4xtimes = 4*1*0.75, | |
speed = 90, | |
maxbullets = 40, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
recoil_table["scarl"] = { | |
basic={56.0,26.0,32.0,40.0,45.1, 48.9,51.0,54.2,59.8,60.4, 60.9,60.9,58.9,56.9,59.8, 60.5}, | |
basictimes = 1, | |
full={56.0,26.0,32.0,40.0,45.1, 48.9,51.0,54.2,59.8,60.4, 60.9,60.9,58.9,56.9,59.8, 60.5}, | |
fulltimes = 1*0.75, | |
quadruple={56.0,26.0,32.0,40.0,45.1, 48.9,51.0,54.2,59.8,60.4, 60.9,60.9,58.9,56.9,59.8, 60.5}, | |
quadrupletimes = 4*1, | |
fullof4x={56.0,26.0,32.0,40.0,45.1, 48.9,51.0,54.2,59.8,60.4, 60.9,60.9,58.9,56.9,59.8, 60.5}, | |
fullof4xtimes = 4*1*0.75, | |
speed = 100, | |
maxbullets = 40, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
recoil_table["qbz"] = { | |
basic={52.0,25.0,28.7,38.2,42.4, 44.0,46.0,46.0,45.6,45.1, 48.0,51.3,49.50,51.0,52.0, 55}, | |
basictimes = 1, | |
full={51.2,24.5,28.7,38.2,42.4, 43.3,45.2,45.2,45.6,45.1, 48.0,50.3,51.0,53.0,55.0}, | |
fulltimes = 1*1*0.85, | |
quadruple={51.2,24.5,28.7,38.2,42.4, 43.3,45.2,45.2,45.6,45.1, 48.0,50.3,51.0,53.0,55.0}, | |
quadrupletimes = 4*1.09, | |
fullof4x={51.2,24.5,28.7,38.2,42.4, 43.3,45.2,45.2,45.6,45.1, 48.0,50.3,51.0,53.0,55.0}, | |
fullof4xtimes = 4*1*0.75, | |
speed = 90, | |
maxbullets = 40, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
recoil_table["ump9"] = { | |
basic={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 40.8,41.8,42.5,40.5,44.5}, | |
basictimes = 0.99, | |
full={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 43.8,43.8,46.5,44.5,47.5}, | |
fulltimes = 0.75*0.9, | |
quadruple={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 43.8,43.8,46.5,44.5,47.5}, | |
quadrupletimes = 4*1*0.97, | |
fullof4x={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 43.8,43.8,46.5,44.5,47.5}, | |
fullof4xtimes = 4*0.75, | |
speed = 90, | |
maxbullets = 40, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
recoil_table["uzi"] = { | |
basic={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 40.8,41.8,42.5,40.5,44.5}, | |
basictimes = 0.99, | |
full={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 43.8,43.8,46.5,44.5,47.5}, | |
fulltimes = 0.75*0.9, | |
quadruple={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 43.8,43.8,46.5,44.5,47.5}, | |
quadrupletimes = 4*1*0.97, | |
fullof4x={33.5,19.2,30.5,35.7,39.3, 39.0,38.7,40.2,41.8,44.0, 43.8,43.8,46.5,44.5,47.5}, | |
fullof4xtimes = 4*0.75, | |
speed = 90, | |
maxbullets = 35, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
recoil_table["m16a4"] = { | |
basic={41.9,36.5,37.1,50.5,55.9, 62.9,66.9,69.5,69.5,70.0, 71.2,}, | |
basictimes = 1.05, | |
full={41.9,36.5,37.1,50.5,55.9, 62.9,66.9,69.5,69.5,70.0, 71.2,}, | |
fulltimes = 1*0.77, | |
quadruple={41.9,36.5,37.1,50.5,55.9, 62.9,66.9,69.5,69.5,70.0, 71.2,}, | |
quadrupletimes = 1*4, | |
fullof4x={41.9,36.5,37.1,50.5,55.9, 62.9,66.9,69.5,69.5,70.0, 71.2,}, | |
fullof4xtimes = 4*1*0.75, | |
speed = 75, | |
maxbullets = 40, | |
clickspeed = 40, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
recoil_table["none"] = { | |
basic={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, | |
basictimes = 1, | |
full={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, | |
fulltimes = 1, | |
quadruple={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, | |
quadrupletimes = 1, | |
fullof4x={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, | |
fullof4xtimes = 1, | |
speed = 30, | |
maxbullets = 40, | |
clickspeed = 40, | |
holdbreathtimes = 1.25, | |
fullholdbreathtimes = 1.25, | |
} | |
-------------------------------------------------------------------------- | |
---------------- Function ------------------------------ | |
-------------------------------------------------------------------------- | |
function convert_sens(unconvertedSens) | |
return 0.002 * math.pow(10, unconvertedSens / 50) | |
end | |
function calc_sens_scale(sensitivity) | |
return convert_sens(sensitivity)/convert_sens(50) | |
end | |
local target_scale = calc_sens_scale(target_sensitivity) | |
local scope_scale = calc_sens_scale(scope_sensitivity) | |
local scope4x_scale = calc_sens_scale(scope4x_sensitivity) | |
function recoil_mode() | |
if not IsKeyLockOn(mode_switch_key) then | |
if IsKeyLockOn(full_mode_key) and full_mode then | |
return "full"; | |
else | |
return "basic"; | |
end | |
end | |
if IsKeyLockOn(mode_switch_key) then | |
if IsKeyLockOn(full_mode_key) and full_mode then | |
return "fullof4x" | |
else | |
return "quadruple" | |
end | |
end | |
end | |
function single_value(value) | |
return 10 * math.floor(( value / 10 ) + 0.9) | |
end | |
function recoil_value(_weapon,_duration) | |
local _mode = recoil_mode() | |
local step = (math.floor(_duration/recoil_table[_weapon]["speed"])) + 1 | |
if step > #recoil_table[_weapon][_mode] then | |
step = #recoil_table[_weapon][_mode] | |
end | |
local weapon_recoil = recoil_table[_weapon][_mode][step] | |
local weapon_speed = recoil_table[_weapon]["speed"] | |
local weapon_clickspeed = recoil_table[_weapon]["clickspeed"] | |
local weapon_maxbullets = recoil_table[_weapon]["maxbullets"] | |
local weapon_basictimes = recoil_table[_weapon]["basictimes"] | |
local weapon_fulltimes = recoil_table[_weapon]["fulltimes"] | |
local weapon_quadrupletimes = recoil_table[_weapon]["quadrupletimes"] | |
local weapon_fullof4xtimes = recoil_table[_weapon]["fullof4xtimes"] | |
local weapon_holdbreathtimes = recoil_table[_weapon]["holdbreathtimes"] | |
local weapon_fullofholdbreathtimes = recoil_table[_weapon]["fullholdbreathtimes"] | |
local weapon_intervals = weapon_speed | |
local weapon_clicktime = weapon_clickspeed | |
local weapon_bullets = weapon_maxbullets | |
if obfs_mode then | |
local coefficient = interval_ratio * ( 1 + random_seed * math.random()) | |
weapon_intervals = math.floor(coefficient * weapon_speed) | |
end | |
-- OutputLogMessage("weapon_intervals = %s\n", weapon_intervals) | |
recoil_recovery = weapon_recoil | |
recoil_times = all_recoil_times * 0.7 / vertical_sensitivity | |
if recoil_mode() == "basic" and not IsModifierPressed(hold_breath_key) then | |
recoil_recovery = recoil_recovery * recoil_times * weapon_basictimes | |
end | |
if recoil_mode() == "basic" and hold_breath_mode and IsModifierPressed(hold_breath_key) then | |
recoil_recovery = recoil_recovery * weapon_holdbreathtimes * recoil_times * weapon_basictimes | |
end | |
if recoil_mode() == "full" and not IsModifierPressed(hold_breath_key) then | |
recoil_recovery = recoil_recovery * recoil_times * weapon_fulltimes | |
end | |
if recoil_mode() == "full" and hold_breath_mode and IsModifierPressed(hold_breath_key) then | |
recoil_recovery = recoil_recovery * weapon_fullofholdbreathtimes * recoil_times * weapon_fulltimes | |
end | |
if recoil_mode() == "quadruple" then | |
recoil_recovery = recoil_recovery * recoil_times * weapon_quadrupletimes | |
end | |
if recoil_mode() == "fullof4x" then | |
recoil_recovery = recoil_recovery * recoil_times * weapon_fullof4xtimes | |
end | |
-- issues/3 | |
if IsMouseButtonPressed(2) then | |
recoil_recovery = recoil_recovery / target_scale | |
elseif recoil_mode() == "basic" then | |
recoil_recovery = recoil_recovery / scope_scale | |
elseif recoil_mode() == "full" then | |
recoil_recovery = recoil_recovery / scope_scale | |
elseif recoil_mode() == "quadruple" then | |
recoil_recovery = recoil_recovery / scope4x_scale | |
elseif recoil_mode() == "fullof4x" then | |
recoil_recovery = recoil_recovery / scope4x_scale | |
end | |
return weapon_intervals,recoil_recovery,weapon_clicktime,weapon_bullets | |
end | |
-------------------------------------------------------------------------- | |
---------------- OnEvent ------------------------------ | |
-------------------------------------------------------------------------- | |
function OnEvent(event, arg) | |
OutputLogMessage("event = %s, arg = %d\n", event, arg) | |
if (event == "PROFILE_ACTIVATED") then | |
EnablePrimaryMouseButtonEvents(true) | |
Fire = false | |
current_weapon = "none" | |
shoot_duration = 0.0 | |
if IsKeyLockOn(lighton_key) then | |
PressAndReleaseKey(lighton_key) | |
elseif IsKeyLockOn(full_mode_key) then | |
PressAndReleaseKey(full_mode_key) | |
elseif IsKeyLockOn(mode_switch_key) then | |
PressAndReleaseKey(mode_switch_key) | |
end | |
elseif event == "PROFILE_DEACTIVATED" then | |
ReleaseMouseButton(1) | |
end | |
if (event == "MOUSE_BUTTON_PRESSED" and arg == set_off_key) | |
or (event == "G_PRESSED" and arg == set_off_gkey) then | |
current_weapon = "none" | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == akm_key) | |
or (event == "G_PRESSED" and arg == akm_gkey) then | |
current_weapon = "akm" | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == m16a4_key) | |
or (event == "G_PRESSED" and arg == m16a4_gkey) then | |
current_weapon = "m16a4" | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == m416_key) | |
or (event == "G_PRESSED" and arg == m416_gkey) then | |
current_weapon = "m416" | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == ump9_key) | |
or (event == "G_PRESSED" and arg == ump9_gkey) then | |
current_weapon = "ump9" | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == uzi_key) | |
or (event == "G_PRESSED" and arg == uzi_gkey) then | |
current_weapon = "uzi" | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == scarl_key) | |
or (event == "G_PRESSED" and arg == scarl_gkey) then | |
current_weapon = "scarl" | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == qbz_key) | |
or (event == "G_PRESSED" and arg == qbz_gkey) then | |
current_weapon = "qbz" | |
elseif (event == "M_RELEASED" and arg == 3 and Fire) then | |
local intervals,recovery,clicktime,bullets = recoil_value(current_weapon,shoot_duration) | |
if shoot_duration % (single_value(intervals) / 2) == 0 then | |
PressAndReleaseMouseButton(1) | |
end | |
MoveMouseRelative(0, recovery / 10) | |
Sleep(single_value(intervals)/10) | |
shoot_duration = shoot_duration + (single_value(intervals)/10) | |
if auto_reloading then | |
if shoot_duration > (single_value(intervals) * bullets) + 100 then | |
ReleaseMouseButton(1) | |
PressAndReleaseKey("r") | |
Sleep(200) | |
Fire = false | |
end | |
end | |
if not Fire then | |
ReleaseMouseButton(1) | |
elseif Fire then | |
SetMKeyState(3) | |
end | |
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == 1) then | |
-- button 1 : Shoot | |
if ((current_weapon == "none") or IsModifierPressed(ignore_key)) then | |
PressMouseButton(1) | |
repeat | |
Sleep(30) | |
until not IsMouseButtonPressed(1) | |
elseif(current_weapon == "m16a4") then | |
Fire = true | |
SetMKeyState(3) | |
else | |
if auto_mode then | |
repeat | |
local intervals,recovery,clicktime,bullets = recoil_value(current_weapon,shoot_duration) | |
MoveMouseRelative(0, recovery /10 ) | |
Sleep(intervals/10) | |
shoot_duration = shoot_duration + (intervals/10) | |
if auto_reloading then | |
if shoot_duration > (intervals * bullets) + 100 then | |
ReleaseMouseButton(1) | |
PressAndReleaseKey("r") | |
Sleep(200) | |
end | |
end | |
until not IsMouseButtonPressed(1) | |
else | |
Fire = true | |
SetMKeyState(3) | |
end | |
end | |
elseif (event == "MOUSE_BUTTON_RELEASED" and arg == 1) then | |
Fire = false | |
shoot_duration = 0.0 | |
end | |
if (event == "MOUSE_BUTTON_PRESSED" and arg == KSSQ_key) then | |
Sleep(10) | |
PressMouseButton(1) | |
Sleep(10) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
Sleep(2) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
Sleep(2) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
Sleep(2) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
Sleep(2) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
MoveMouseRelative(move, 0) | |
Sleep(10) | |
ReleaseMouseButton(1) | |
Sleep(10) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
Sleep(2) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
Sleep(2) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
Sleep(2) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
Sleep(2) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
MoveMouseRelative(-move, 0) | |
end | |
if (current_weapon == "none") then | |
if IsKeyLockOn(lighton_key) then | |
PressAndReleaseKey(lighton_key) | |
end | |
else | |
if not IsKeyLockOn(lighton_key) then | |
PressAndReleaseKey(lighton_key) | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment