- 152
- 14
- Версия MoonLoader
- .026-beta
Всем привет! Я пару месяцев назад писал кар хелпер и позавчера решил добавить функцию смену клавиш (есть говнокод). Исходник ini взял с +с @deddosouru, и не умею так хорошо работать с ини. У меня проблема что когда я хочу сменить клавиши (например: Alt+G) у меня сменивается только на Alt (вы скажите наверное, что там команды клавиш не правильные, это потому-что я уже пару способов перебрал, и правильные, и не правильные, не помогло). И ещё самая менюшка изменения клавиш, спавнится вверхнем левом углу, хотя должна быть по середине. Сможете помочь? Вот код:
Lua:
script_name('Car Helper For ARZ')
script_version('1.0')
script_author('backloop')
local hook = require 'lib.samp.events'
local inicfg = require 'inicfg'
local cfg = inicfg.load({set = {
repair = 18,74,
fill = 18,72}})
function main()
while not isSampAvailable() do wait(100) end
sampRegisterChatCommand("chelp", SHOW_DLG)
while true do wait(0)
inicfg.save(cfg)
if isKeyDown(cfg.set.repair) and isKeyJustPressed(cfg.set.repair) and not sampIsCursorActive() then
sampSendChat("/repcar")
end
if isKeyDown(cfg.set.fill) and isKeyJustPressed(cfg.set.fill) and not sampIsCursorActive() then
sampSendChat("/fillcar")
end
if testCheat("L") and not sampIsCursorActive() then
sampSendChat("/lock")
end
if testCheat("JL") and not sampIsCursorActive() then
sampSendChat("/jlock")
end
if testCheat("K") and not sampIsCursorActive() then
sampSendChat("/key")
end
end
end
function sendKey(key)
local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
local data = allocateMemory(68)
sampStorePlayerOnfootData(myId, data)
setStructElement(data, 4, 2, key, false)
sampSendOnfootData(data)
freeMemory(data)
end
function get_screen_centure(szX, szY)
local X,Y = getScreenResolution()
X = X/2 - szX
Y = Y/2 - szY
return X, Y
end
function SHOW_DLG()
lua_thread.create(showCur)
return
end
function showCur()
wait(0)
if not dxutIsDialogExists(HND_DLG) then
HND_DLG = dxutCreateDialog("{818384}Vehicle {0094c8}Helper {FFFFFF}Settings")
local X, Y = get_screen_centure(2, 2)
dxutAddButton(HND_DLG, 1, string.format("Сменить клавиши починки.", cfg.set.repair), 5, 5, 300, 20)
dxutAddButton(HND_DLG, 2, string.format("Сменить клавиши заправки.", cfg.set.fill), 5, 30, 300, 20)
dxutAddButton(HND_DLG, 3, "Сохранить", 5, 290, 300, 20)
sampToggleCursor(true)
else
dxutSetDialogVisible(HND_DLG, (not dxutIsDialogVisible(HND_DLG)))
end
while true do
wait(0)
local RES, DLG_EVENT, DLG_CONTROL = dxutPopEvent(HND_DLG)
if DLG_CONTROL == 3 --[[ "Save" button]] then
wait(0)
inicfg.save(cfg)
dxutSetDialogVisible(HND_DLG, false)
dxutDeleteDialog(HND_DLG)
sampToggleCursor(false)
break
end
if DLG_CONTROL == 1 --[[Выбирайте клавиши]] then
dxutSetControlText(HND_DLG, 1, "Сменить клавиши починки")
repeat
wait(0)
repexit = false
for btn = 0, 254 do
if isKeyDown(btn) and isKeyJustPressed(btn) then
repexit = true
cfg.set.repair = btn
dxutSetControlText(HND_DLG, 1, string.format("Изменить клавиши. current: %s", cfg.set.repair))
end
end
until repexit
repexit = false
end
if DLG_CONTROL == 2 --[[Выбирайте клавиши]] then
dxutSetControlText(HND_DLG, 2, "Сменить клавиши заправки")
repeat
wait(0)
repexit = false
for qqq = 0, 254 do
if isKeyDown(qqq) and isKeyJustPressed(qqq) then
repexit = true
cfg.set.fill = qqq
dxutSetControlText(HND_DLG, 2, string.format("Изменить клавиши. current: %s", cfg.set.fill))
end
end
until repexit
repexit = false
end
end
end