Uzman Üye
Rãnh rỗi share cho anh em macro PUBG Logitech dùng thử...
Mình đang sài G502 Hero anh em sài chuột loại khác thì vào edit script map lại phím cho nó nhé...!
Dùng Scope X6 thì bấm phím CAPSLOCK để sấy...! độ nhạy cài mặc định hết..
hình ảnh phím G502
Mình đang sài G502 Hero anh em sài chuột loại khác thì vào edit script map lại phím cho nó nhé...!
C++:
---------------- V4.5.1 ------------------------------
---V4.5.1 -> Updated Recoil Table 09/11/2020
-- Shared with you by RomeoAngel & [MHTeam]
---Created by some VietNamese dude
---Log:
--Recoil Table updated
--Main focus on AKM due to multiple complaints.
--A few more comments were added for advanced users and beginners.
--Comments are important, they are clarifications... Read them =)
---- KEY BIND ----
--Info: The name of the gun_key = arg (which is the button name)
--Ex: ump9_key = 1(left click)
local vector_key = nil
local akm_key = 7
local m16a4_key = nil
local m416_key = 8
local scarl_key = 4
local uzi_key = 9
local qbz_key = nil
local mp5_key = nil
local beryl_key = 5
local gc_key = nil
---This is the button used to turn off the script (default:6) - G502
local set_off_key = 6
---- KEYBOARD ----
--This should only be used by users with a Logitech Keyboard
local ump9_gkey = 1 ---1 is for G1
local akm_gkey = 7
local m16a4_gkey = 8
local m416_gkey = nil
local scarl_gkey = nil
local uzi_gkey = 2
local mp5_gkey = nil
local qbz_gkey = nil
local gc_gkey = nil
local beryl_gkey = nil
---Button used to turn off the script(keyboard)
local set_off_gkey = 4
---- control_key ----
local control_key = "lctrl"
---- Allowed Keys are: "lalt", "ralt", "alt" "lshift", "rshift", "shift" "lctrl", "rctrl", "ctrl"
local ignore_key = "lalt" --- ignore key
local hold_breath_key = "lshift"
----------------------------- Fast Loot------------------------------------------
-----Allows for faster looting, moving mouse from one area to another
---Risk of Ban: 50%
--- Press Control_Key + Ignore_Key + Left Button to activate ---
local control_key = "lctrl"
local fastloot = false ---if you don't need it, you can close it by true to false./
local move = 40 ----1920*1080
------------------------End of Fast Loot config----------------------------------
--------------------------Functionalities---------------------------------
------Full_Mode = When gun is full of attachments, activates a weaker recoil mode when compared to Basic
-----Mode_Switch_Key = When gun has 6x or 4x, activates 4x(quadruple) mode which quadruples values
----Lighton_Key = When the Script is on, the light for "scrolllock" on your keyboard will be on.
---- Only allowed keys for this area: "numlock", "capslock", "scrolllock" - Don't mistype it.
local full_mode_key = "numlock"
local mode_switch_key = "capslock"
local lighton_key = "scrolllock"
-----------------------End of Functionalities-----------------------------
------------------------Settings-------------------------------------------
local vertical_sensitivity = 0.7 --- default is 1
local target_sensitivity = 45 --- default is 50.0
local scope_sensitivity = 45 --- default is 50.0
local scope4x_sensitivity = 45 --- default is 50.0
----------------------End of Settings--------------------------------------
-------------------Functionalities settings ------------------------------
---Hold_Breath_Mode = True, automatically holds breath when shooting
---Full_Mode = True, allows for change from basic to full_mode(full attached gun)
local hold_breath_mode = true
local full_mode = true
-------------------End of Functionalities Settings------------------------
-------------------------Safety-------------------------------------------
--If Obfs_mode = true then, values from recoil table are randomized to reduce chance of detection
--Interval_Ratio, by how much are the numbers randomized
--Random_Seed, some random shit in calculation that makes no freaking sense(ignore)
---These are the recommended settings, changing anything here drastically impacts Recoil Table!
local obfs_mode = true
local interval_ratio = 0.5
local random_seed = 1
local auto_reloading = false
----------------------End of Safety--------------------------------------
-- Auto_Mode = True, DO NOT CHANGE THIS TO FALSE as it will create bugs
local auto_mode = true -- dont change
-----------------------
--------------------------------------------------------------------------
---------------- Recoil Table ------------------------------
---------------- You can fix the value here ------------------------------
--------------------------------------------------------------------------
--- Recoil Times
----basictimes = 1,
--- If All_Recoil_Times greater than 1 , then increased force of pulldown
--- If less than 1, decreased force of pulldown
local all_recoil_times = 1
----------------------------- Don't play here UNLESS you know what you are DOING!!---------------------------------
-----Follow my TUTORIAL VIDEOS at the top, to understand how everything here works!
----Link: https://www.youtube.com/watch?v=F_tvWzF3x18
local recoil_table = {}
recoil_table["akm"] = {
basic={40,35,35,35,35,35,35,35,39,45,40,43,45,46, 47,48},
basictimes = 1,
full={48,35,35,35,35,36,35,45,45,42,45,45,42,43,40,51},
fulltimes = 1*.88,
quadruple={40,42,36,51,52, 50,54,56.9,56,59, 58.9,60.4,59,56,57 ,62},
quadrupletimes = 4*.85,
fullof4x={40,42,44,51,56, 50,54,56.4,54,58, 58.8,60,59,56,57 ,62},
fullof4xtimes = 4*.66,
speed = 96,
maxbullets = 40,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["m416"] = {
basic={29,30.8,31,36.6,39, 41,41.6,39,41.2,42.5,43,42, 42,43.6,42,45,46, 47},
basictimes = 1,
full={23,25,27,29,31,33.5,34,35.5,36,37,37.5,38,39.5,41,41.5,40, 39,37},
fulltimes = .8,
quadruple={55,35,41,44,51, 46,50,43,32,46,43, 42,44,42,45,52, 58},
quadrupletimes = 4*0.6,
fullof4x={45,45,45,45,50, 45,45,50,45,45,0, 0,0,0,0,0, 0},
fullof4xtimes = 4*.5,
speed = 73,
maxbullets = 40,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["scarl"] = {
basic={56.0,37.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 = 0.9,
full={56.0,26.0,32.0,40.0,45.1, 48.9,50.0,54.2,56.8,54.4, 56.9,51.9,45.9,46.9,48.8, 56.5},
fulltimes = 1*.4,
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*.75,
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*.52,
speed = 100,
maxbullets = 40,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["vector"] = {
basic={40,40,43,45,47,49,50,52.5,54,56,58,61,63,66, 69,71.4},
basictimes = 1.05,
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 = 33,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.75,
}
recoil_table["uzi"] = {
basic={16.0,16.0,16.0,17.6,18.6, 20.4,22.4,22.9,25.8,27.6, 28.5,30,31.5,33,34,35.9},
basictimes = 1.15,
full={16.0,16.0,16.0,17.6,18.6, 20.4,22.5,23,23.9,24.5, 26,29,30,32,33,35},
fulltimes = 1.15*0.75*0.75,
quadruple={16.0,16.0,16.0,17.6,18.6, 20.4,22.4,22.9,25.8,27.6, 32.6,36.9,38.0,38.8,39.8,40.5},
quadrupletimes = 1.15,
fullof4x={16.0,16.0,16.0,17.6,18.6, 20.4,22.4,22.9,25.8,27.6, 32.6,36.9,38.0,38.8,39.8,40.5},
fullof4xtimes = 1.15*0.75*0.75,
speed = 48,
maxbullets = 35,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["m16a4"] = {
basic={41.9,34.5,40.1,54.2,58.6, 60.9,62.9,64.5,69.5,60.0, 74.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,
fulltimes = 1,
speed = 75,
maxbullets = 40,
clickspeed = 100,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["qbz"] = {
basic={40, 32.2,34.6,39.9,41.8, 45,47.6,46.2,41,41.0, 42.8,41.8,43.5,44.5,50.5},
basictimes = 1,
full={40, 46.2,47.6,48.9,56.8, 58,54.6,56.2,58.2,54.0, 48.8,47.8,47.5,46.5,50.5},
fulltimes = 1*.6,
quadruple={40, 32.2,34.6,39.9,43.8, 45,46.6,46.2,41,43.0, 45.8,43.8,46.5,47.5,50.5},
quadrupletimes = 4*.8,
fullof4x={48, 34.2,36,37.4,37.8, 36,32.6,37.2,42.2,41.2, 32.8,40.8,36.5,40.5,46},
fullof4xtimes = 4*.6,
speed = 100,
maxbullets = 40,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["beryl"] = {
basic={51,51,4,51.0,52.6, 54.6,54,56,54,57.9, 64.6,62.8,66,64.3,66 ,70},
basictimes = 0.9,
full={51,51,4,51.0,52.6, 54.6,54,56,54,56.9, 62.6,61.8,66,64.3,66 ,70},
fulltimes = 1*0.65,
quadruple={50,50,55,56.0,62.6, 64.6,69,75,75,75.9, 79.6,84.8,85,86.3,85 ,86},
quadrupletimes = 4*.6,
fullof4x={53,54,4,56.0,59.6, 56.6,58,62,64,62.9, 64.6,68.8,66,64.3,66 ,70},
fullof4xtimes = 4*.5,
speed = 65,
maxbullets = 40,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["gc"] = {
basic={60.0,42,44,46,42, 48,46,52,51,53,52.0, 51.6,52.8,44.8,54, 52.6, 60},
basictimes = 0.8,
full={52.0,36,38.6,39,42.6, 44.8,43.0,46.8,45,48,46.0, 44.6,48.8,46.8,45, 46.6, 51},
fulltimes = 1*.7,
quadruple={55.0,40,41.6,42,42.6, 43.8,44.6,44.8,45.6,46.8,47.8, 50.6,53.4,54.8,53, 56.6, 57},
quadrupletimes = 4*0.7,
fullof4x={52.0,40,36,39,36.0, 48.0,48.0,56,52,50,46.0, 56.5,48.8,56.8,56,52.6, 50},
fullof4xtimes = 4*0.54,
speed = 100,
maxbullets = 40,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
recoil_table["mp5"] = {
basic={36.5,34.6,36.5,35.7,32.6, 42.8,32.6,45.8,31.8,32, 43.7,36.8,38.8,32.6,42.2},
basictimes = 1*0.9,
full={36.5,34.6,36.5,35.7,32.6, 40,30.6,34,31,32, 43.7,36.8,38.8,32.6,42.2},
fulltimes = 1*.75,
quadruple={56.5,44.6,46.5,45.7,42.6, 52.8,42.6,55.8,41.8,52, 43.7,46.8,48.8,42.6,52.2},
quadrupletimes = 4*.6,
fullof4x={56.5,44.6,46.5,45.7,42.6, 52.8,42.6,55.8,41.8,52, 43.7,46.8,48.8,42.6,52.2},
fullof4xtimes = 4*.5,
speed = 90,
maxbullets = 35,
clickspeed = 100,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
---Template, copy this below to create a new gun---- |Advanced|
}
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 = 100,
holdbreathtimes = 1.25,
fullholdbreathtimes = 1.25,
}
--------------------------------------------------------------------------
---------------- Function ------------------------------
-----ANY SMALL CHANGE IN HERE CAN EITHER INTERRUPT THE SCRIPT FROM FUNCTIONING
-----OR ALLOW YOU TO BECOME SUPERMAN, MOST LIKELY THE FIRST OPTION
---Basic calculation----
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)
---The key switching and changes in mode----
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, Button = %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"
OutputLogMessage("Script = OFF -> ")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == akm_key)
or (event == "G_PRESSED" and arg == akm_gkey) then
current_weapon = "akm"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == beryl_key)
or (event == "G_PRESSED" and arg == beryl_gkey) then
current_weapon = "beryl"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == m16a4_key)
or (event == "G_PRESSED" and arg == m16a4_gkey) then
current_weapon = "m16a4"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == m416_key)
or (event == "G_PRESSED" and arg == m416_gkey) then
current_weapon = "m416"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == vector_key)
or (event == "G_PRESSED" and arg == ump9_gkey) then
current_weapon = "vector"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == qbz_key)
or (event == "G_PRESSED" and arg == qbz_gkey) then
current_weapon = "qbz"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == uzi_key)
or (event == "G_PRESSED" and arg == uzi_gkey) then
current_weapon = "uzi"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == scarl_key)
or (event == "G_PRESSED" and arg == scarl_gkey) then
current_weapon = "scarl"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == gc_key)
or (event == "G_PRESSED" and arg == gc_gkey) then
current_weapon = "gc"
OutputLogMessage("Script = ON ->")
elseif (event == "MOUSE_BUTTON_PRESSED" and arg == mp5_key)
or (event == "G_PRESSED" and arg == mp5_gkey) then
current_weapon = "mp5"
OutputLogMessage("Script = ON ->")
-----Template below, just an example |Advanced|
----elseif (event == "MOUSE_BUTTON_PRESSED" and arg == mp5_key)
----or (event == "G_PRESSED" and arg == mp5_gkey) then
--------- current_weapon = "mp5"
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
while (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and IsModifierPressed(control_key) and IsModifierPressed(ignore_key) and fastloot) do
ReleaseMouseButton(1)
PressMouseButton(1)
for i = 0, 14 do
MoveMouseRelative(move, 0)
Sleep(2)
end
ReleaseMouseButton(1)
for i = 0, 14 do
MoveMouseRelative(-move, 0)
Sleep(2)
end
Sleep(10)
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
hình ảnh phím G502