Если прочесть функцию toggle_nospread, то функция лишь переключает спрейд.По итогу оно должно так выглядеть? Извиняюсь за тупые вопросы, я просто не очень силен в этом
function main()
while true do wait(0)
if isKeyDown(0x06) and not isPressed then
isPressed = true
toggle_nospread()
sampAddChatMessage('Чит активен - пока ты держишь бро!')
elseif not isKeyDown(0x06) and isPressed then
isPressed = false
toggle_nospread()
sampAddChatMessage('Ну бро, зачем ты отпустил кнопку :(. Давай повтори!')
end
end
end
Lua:if isKeyDown(4) then -- это же не трудно
script_name("NoSpread")
script_version("1.0.0")
script_author("Musaigen")
-- / Libraries
local memory = require("memory")
local inicfg = require("inicfg")
-- / Config
-- Состояние, чтобы не сохранялось в конфиг.
local enabled = false
-- Настройки.
local nospread = inicfg.load({
settings = { add_chat_messages = true, spread = 100 }
}, "nospread.ini")
local patches = {
spread_for_non_shotguns = 0x8D6110,
spread_for_shotguns = 0x8D611C
}
-- Константа (ID RPC).
local RPC_SERVERCOMMAND = 50
function main()
-- Проверяем на SAMPFUNCS.
if not isSampfuncsLoaded() then
error("No SAMPFUNCS!")
end
while true do
wait(0)
if wasKeyPressed(4) then
process_command_input()
end
end
end
-- / Events
function onSendRpc(id, bs)
if (id == RPC_SERVERCOMMAND) then
-- Читаем содержимое битстрима.
local len = raknetBitStreamReadInt32(bs)
local command = raknetBitStreamReadString(bs, len)
-- Обрабатываем команду.
if (command:find("^/nospr")) then
process_command_input(command:sub(7))
return false
end
end
end
-- / Functions
--- Обрабатывает ввод команды.
---@param arg string
function process_command_input(arg)
local subcommand = string.match(arg,"%s+(%S+)")
if not(subcommand) then
-- Переключаем состояние.
enabled = not enabled
-- Информируем пользователя.
add_chat_message("Состояние: %s{FFFFFF}.", (enabled) and
("{388E3C}Включён") or ("{D32F2F}Выключен"))
-- Устанавливаем разброс.
return set_spread((enabled) and (nospread.settings.spread) or (100))
elseif (subcommand == "msg") then
nospread.settings.add_chat_messages = not nospread.settings.add_chat_messages
elseif (subcommand == "spread") then
-- Получаем значение и проверяем на валидность.
local value = tonumber(string.match(arg,"%s+%S+%s+(%d+)"))
if (value == nil) then
return add_chat_message("Текущий разброс - {D32F2F}%d {FFFFFF}процентов.", nospread.settings.spread)
end
if not ((value >= 0) and (value <= 100)) then
return add_chat_message("Укажите значение от 0 до 100.")
end
-- Обновляем разброс.
nospread.settings.spread = value
-- Устанавливаем его.
if (enabled) then
set_spread(value)
end
-- Информируем пользователя.
add_chat_message("Установлен разброс на {D32F2F}%d{FFFFFF} процентов.", value)
elseif (subcommand == "help") then
add_chat_message("Без под-команды - переключение состояния. Под-команды: help / msg / spread [процент].")
else
return add_chat_message("Неизвестная под-команда.")
end
-- Сохраняем настройки.
inicfg.save(nospread, "nospread.ini")
end
--- Устанавливает разброс для оружия.
---@param spread number
function set_spread(spread)
local actual_spread = (spread <= 0) and (0.1) or (spread)
local spread_for_non_shotguns = (0.75 * (spread / 100))
local spread_for_shotguns = (0.050000001 * (actual_spread / 100))
memory.setfloat(patches.spread_for_non_shotguns, spread_for_non_shotguns, true)
memory.setfloat(patches.spread_for_shotguns, spread_for_shotguns, true)
end
--- Добавляет сообщение в чат.
---@param text string
---@param ... any
function add_chat_message(text, ...)
if not (nospread.settings.add_chat_messages) then
return
end
-- Форматируем строку.
local str = ("{D32F2F}[NoSpread]:{FFFFFF} %s"):format(string.format(text, ...))
sampAddChatMessage(str, -1) -- Отправляем сообщение.
end
function onScriptTerminate(scr)
if (scr == script.this) then
set_spread(100)
end
end
в бесконечном цикле, которого нетуне совсем понятно где оно должно быть в таком коде
не работаетА хотя в скрипт дохуя интересный, так что на, пробуй, я не тестил но должно так работать
Lua:script_name("NoSpread") script_version("1.0.0") script_author("Musaigen") -- / Libraries local memory = require("memory") local inicfg = require("inicfg") -- / Config -- Состояние, чтобы не сохранялось в конфиг. local enabled = false -- Настройки. local nospread = inicfg.load({ settings = { add_chat_messages = true, spread = 100 } }, "nospread.ini") local patches = { spread_for_non_shotguns = 0x8D6110, spread_for_shotguns = 0x8D611C } -- Константа (ID RPC). local RPC_SERVERCOMMAND = 50 function main() -- Проверяем на SAMPFUNCS. if not isSampfuncsLoaded() then error("No SAMPFUNCS!") end while true do wait(0) if wasKeyPressed(4) then process_command_input() end end end -- / Events function onSendRpc(id, bs) if (id == RPC_SERVERCOMMAND) then -- Читаем содержимое битстрима. local len = raknetBitStreamReadInt32(bs) local command = raknetBitStreamReadString(bs, len) -- Обрабатываем команду. if (command:find("^/nospr")) then process_command_input(command:sub(7)) return false end end end -- / Functions --- Обрабатывает ввод команды. ---@param arg string function process_command_input(arg) local subcommand = string.match(arg,"%s+(%S+)") if not(subcommand) then -- Переключаем состояние. enabled = not enabled -- Информируем пользователя. add_chat_message("Состояние: %s{FFFFFF}.", (enabled) and ("{388E3C}Включён") or ("{D32F2F}Выключен")) -- Устанавливаем разброс. return set_spread((enabled) and (nospread.settings.spread) or (100)) elseif (subcommand == "msg") then nospread.settings.add_chat_messages = not nospread.settings.add_chat_messages elseif (subcommand == "spread") then -- Получаем значение и проверяем на валидность. local value = tonumber(string.match(arg,"%s+%S+%s+(%d+)")) if (value == nil) then return add_chat_message("Текущий разброс - {D32F2F}%d {FFFFFF}процентов.", nospread.settings.spread) end if not ((value >= 0) and (value <= 100)) then return add_chat_message("Укажите значение от 0 до 100.") end -- Обновляем разброс. nospread.settings.spread = value -- Устанавливаем его. if (enabled) then set_spread(value) end -- Информируем пользователя. add_chat_message("Установлен разброс на {D32F2F}%d{FFFFFF} процентов.", value) elseif (subcommand == "help") then add_chat_message("Без под-команды - переключение состояния. Под-команды: help / msg / spread [процент].") else return add_chat_message("Неизвестная под-команда.") end -- Сохраняем настройки. inicfg.save(nospread, "nospread.ini") end --- Устанавливает разброс для оружия. ---@param spread number function set_spread(spread) local actual_spread = (spread <= 0) and (0.1) or (spread) local spread_for_non_shotguns = (0.75 * (spread / 100)) local spread_for_shotguns = (0.050000001 * (actual_spread / 100)) memory.setfloat(patches.spread_for_non_shotguns, spread_for_non_shotguns, true) memory.setfloat(patches.spread_for_shotguns, spread_for_shotguns, true) end --- Добавляет сообщение в чат. ---@param text string ---@param ... any function add_chat_message(text, ...) if not (nospread.settings.add_chat_messages) then return end -- Форматируем строку. local str = ("{D32F2F}[NoSpread]:{FFFFFF} %s"):format(string.format(text, ...)) sampAddChatMessage(str, -1) -- Отправляем сообщение. end function onScriptTerminate(scr) if (scr == script.this) then set_spread(100) end end
в бесконечном цикле, которого нету
script_name("NoSpread")
script_version("1.0.0")
script_author("Musaigen")
local memory = require("memory")
local inicfg = require("inicfg")
local enabled = false
local nospread = inicfg.load({
settings = { add_chat_messages = true, spread = 100 }
}, "nospread.ini")
local patches = {
spread_for_non_shotguns = 0x8D6110,
spread_for_shotguns = 0x8D611C
}
local RPC_SERVERCOMMAND = 50
function main()
if not isSampfuncsLoaded() then
error("No SAMPFUNCS!")
end
while true do
wait(0)
if isKeyPressed(4) then
toggle_nospread()
end
end
end
function onSendRpc(id, bs)
if (id == RPC_SERVERCOMMAND) then
local len = raknetBitStreamReadInt32(bs)
local command = raknetBitStreamReadString(bs, len)
if (command:find("^/nospr")) then
process_command_input(command:sub(7))
return false
end
end
end
function onScriptTerminate(scr)
if (scr == script.this) then
set_spread(100)
end
end
function toggle_nospread()
enabled = not enabled
add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен"))
return set_spread((enabled) and (nospread.settings.spread) or (100))
end
function process_command_input(arg)
local subcommand = arg:match("%s+(%S+)")
if not subcommand then
enabled = not enabled
add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен"))
return set_spread((enabled) and (nospread.settings.spread) or (100))
elseif subcommand == "msg" then
nospread.settings.add_chat_messages = not nospread.settings.add_chat_messages
elseif subcommand == "spread" then
local value = tonumber(arg:match("%s+%S+%s+(%d+)"))
if value == nil then
return add_chat_message("Текущий спред - {D32F2F}%d {FFFFFF}единиц.", nospread.settings.spread)
end
if not ((value >= 0) and (value <= 100)) then
return add_chat_message("Значение спреда должно быть от 0 до 100.")
end
nospread.settings.spread = value
if enabled then
set_spread(value)
end
add_chat_message("Спред установлен на {D32F2F}%d{FFFFFF} единиц.", value)
elseif subcommand == "help" then
add_chat_message("Доступные команды: help / msg / spread [значение].")
else
return add_chat_message("Неизвестная команда.")
end
inicfg.save(nospread, "nospread.ini")
end
function set_spread(spread)
local actual_spread = (spread <= 0) and (0.1) or (spread)
local spread_for_non_shotguns = (0.75 * (spread / 100))
local spread_for_shotguns = (0.050000001 * (actual_spread / 100))
memory.setfloat(patches.spread_for_non_shotguns, spread_for_non_shotguns, true)
memory.setfloat(patches.spread_for_shotguns, spread_for_shotguns, true)
end
function add_chat_message(text, ...)
if not nospread.settings.add_chat_messages then
return
end
local str = string.format("{D32F2F}[NoSpread]:{FFFFFF} %s", text:format(...))
sampAddChatMessage(str, -1)
end
[20:18:04.067347] (error) NoSpread: D:\GTA San Andreas Clear\moonloader\nospread.lua:29: attempt to call global 'isKeyPressed' (a nil value)Пырывет
Lua:script_name("NoSpread") script_version("1.0.0") script_author("Musaigen") local memory = require("memory") local inicfg = require("inicfg") local enabled = false local nospread = inicfg.load({ settings = { add_chat_messages = true, spread = 100 } }, "nospread.ini") local patches = { spread_for_non_shotguns = 0x8D6110, spread_for_shotguns = 0x8D611C } local RPC_SERVERCOMMAND = 50 function main() if not isSampfuncsLoaded() then error("No SAMPFUNCS!") end while true do wait(0) if isKeyPressed(4) then toggle_nospread() end end end function onSendRpc(id, bs) if (id == RPC_SERVERCOMMAND) then local len = raknetBitStreamReadInt32(bs) local command = raknetBitStreamReadString(bs, len) if (command:find("^/nospr")) then process_command_input(command:sub(7)) return false end end end function onScriptTerminate(scr) if (scr == script.this) then set_spread(100) end end function toggle_nospread() enabled = not enabled add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен")) return set_spread((enabled) and (nospread.settings.spread) or (100)) end function process_command_input(arg) local subcommand = arg:match("%s+(%S+)") if not subcommand then enabled = not enabled add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен")) return set_spread((enabled) and (nospread.settings.spread) or (100)) elseif subcommand == "msg" then nospread.settings.add_chat_messages = not nospread.settings.add_chat_messages elseif subcommand == "spread" then local value = tonumber(arg:match("%s+%S+%s+(%d+)")) if value == nil then return add_chat_message("Текущий спред - {D32F2F}%d {FFFFFF}единиц.", nospread.settings.spread) end if not ((value >= 0) and (value <= 100)) then return add_chat_message("Значение спреда должно быть от 0 до 100.") end nospread.settings.spread = value if enabled then set_spread(value) end add_chat_message("Спред установлен на {D32F2F}%d{FFFFFF} единиц.", value) elseif subcommand == "help" then add_chat_message("Доступные команды: help / msg / spread [значение].") else return add_chat_message("Неизвестная команда.") end inicfg.save(nospread, "nospread.ini") end function set_spread(spread) local actual_spread = (spread <= 0) and (0.1) or (spread) local spread_for_non_shotguns = (0.75 * (spread / 100)) local spread_for_shotguns = (0.050000001 * (actual_spread / 100)) memory.setfloat(patches.spread_for_non_shotguns, spread_for_non_shotguns, true) memory.setfloat(patches.spread_for_shotguns, spread_for_shotguns, true) end function add_chat_message(text, ...) if not nospread.settings.add_chat_messages then return end local str = string.format("{D32F2F}[NoSpread]:{FFFFFF} %s", text:format(...)) sampAddChatMessage(str, -1) end
[20:18:04.067347] (error) NoSpread: D:\GTA San Andreas Clear\moonloader\nospread.lua:29: attempt to call global 'isKeyPressed' (a nil value)
stack traceback:
D:\GTA San Andreas Clear\moonloader\nospread.lua: in function <D:\GTA San Andreas Clear\moonloader\nospread.lua:21>
[20:18:04.067347] (error) NoSpread: Script died due to an error. (17979DC4)
script_name("NoSpread")
script_version("1.0.0")
script_author("Musaigen")
local memory = require("memory")
local inicfg = require("inicfg")
local enabled = false
local nospread = inicfg.load({
settings = { add_chat_messages = true, spread = 100 }
}, "nospread.ini")
local patches = {
spread_for_non_shotguns = 0x8D6110,
spread_for_shotguns = 0x8D611C
}
local RPC_SERVERCOMMAND = 50
function isKeyPressed(key)
return getGameKeys():isPressed(key)
end
function main()
if not isSampfuncsLoaded() then
error("No SAMPFUNCS!")
end
while true do
wait(0)
if isKeyPressed(4) then
toggle_nospread()
end
end
end
function onSendRpc(id, bs)
if (id == RPC_SERVERCOMMAND) then
local len = raknetBitStreamReadInt32(bs)
local command = raknetBitStreamReadString(bs, len)
if (command:find("^/nospr")) then
process_command_input(command:sub(7))
return false
end
end
end
function onScriptTerminate(scr)
if (scr == script.this) then
set_spread(100)
end
end
function toggle_nospread()
enabled = not enabled
add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен"))
return set_spread((enabled) and (nospread.settings.spread) or (100))
end
function process_command_input(arg)
local subcommand = arg:match("%s+(%S+)")
if not subcommand then
enabled = not enabled
add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен"))
return set_spread((enabled) and (nospread.settings.spread) or (100))
elseif subcommand == "msg" then
nospread.settings.add_chat_messages = not nospread.settings.add_chat_messages
elseif subcommand == "spread" then
local value = tonumber(arg:match("%s+%S+%s+(%d+)"))
if value == nil then
return add_chat_message("Текущий спред - {D32F2F}%d {FFFFFF}единиц.", nospread.settings.spread)
end
if not ((value >= 0) and (value <= 100)) then
return add_chat_message("Значение спреда должно быть от 0 до 100.")
end
nospread.settings.spread = value
if enabled then
set_spread(value)
end
add_chat_message("Спред установлен на {D32F2F}%d{FFFFFF} единиц.", value)
elseif subcommand == "help" then
add_chat_message("Доступные команды: help / msg / spread [значение].")
else
return add_chat_message("Неизвестная команда.")
end
inicfg.save(nospread, "nospread.ini")
end
function set_spread(spread)
local actual_spread = (spread <= 0) and (0.1) or (spread)
local spread_for_non_shotguns = (0.75 * (spread / 100))
local spread_for_shotguns = (0.050000001 * (actual_spread / 100))
memory.setfloat(patches.spread_for_non_shotguns, spread_for_non_shotguns, true)
memory.setfloat(patches.spread_for_shotguns, spread_for_shotguns, true)
end
function add_chat_message(text, ...)
if not nospread.settings.add_chat_messages then
return
end
local str = string.format("{D32F2F}[NoSpread]:{FFFFFF} %s", text:format(...))
sampAddChatMessage(str, -1)
end
[00:22:55.256326] (error) NoSpread: D:\GTA San Andreas Clear\moonloader\nospread.lua:22: attempt to call global 'getGameKeys' (a nil value)Lua:script_name("NoSpread") script_version("1.0.0") script_author("Musaigen") local memory = require("memory") local inicfg = require("inicfg") local enabled = false local nospread = inicfg.load({ settings = { add_chat_messages = true, spread = 100 } }, "nospread.ini") local patches = { spread_for_non_shotguns = 0x8D6110, spread_for_shotguns = 0x8D611C } local RPC_SERVERCOMMAND = 50 function isKeyPressed(key) return getGameKeys():isPressed(key) end function main() if not isSampfuncsLoaded() then error("No SAMPFUNCS!") end while true do wait(0) if isKeyPressed(4) then toggle_nospread() end end end function onSendRpc(id, bs) if (id == RPC_SERVERCOMMAND) then local len = raknetBitStreamReadInt32(bs) local command = raknetBitStreamReadString(bs, len) if (command:find("^/nospr")) then process_command_input(command:sub(7)) return false end end end function onScriptTerminate(scr) if (scr == script.this) then set_spread(100) end end function toggle_nospread() enabled = not enabled add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен")) return set_spread((enabled) and (nospread.settings.spread) or (100)) end function process_command_input(arg) local subcommand = arg:match("%s+(%S+)") if not subcommand then enabled = not enabled add_chat_message("Носприд: %s{FFFFFF}.", (enabled) and ("{388E3C}Включен") or ("{D32F2F}Выключен")) return set_spread((enabled) and (nospread.settings.spread) or (100)) elseif subcommand == "msg" then nospread.settings.add_chat_messages = not nospread.settings.add_chat_messages elseif subcommand == "spread" then local value = tonumber(arg:match("%s+%S+%s+(%d+)")) if value == nil then return add_chat_message("Текущий спред - {D32F2F}%d {FFFFFF}единиц.", nospread.settings.spread) end if not ((value >= 0) and (value <= 100)) then return add_chat_message("Значение спреда должно быть от 0 до 100.") end nospread.settings.spread = value if enabled then set_spread(value) end add_chat_message("Спред установлен на {D32F2F}%d{FFFFFF} единиц.", value) elseif subcommand == "help" then add_chat_message("Доступные команды: help / msg / spread [значение].") else return add_chat_message("Неизвестная команда.") end inicfg.save(nospread, "nospread.ini") end function set_spread(spread) local actual_spread = (spread <= 0) and (0.1) or (spread) local spread_for_non_shotguns = (0.75 * (spread / 100)) local spread_for_shotguns = (0.050000001 * (actual_spread / 100)) memory.setfloat(patches.spread_for_non_shotguns, spread_for_non_shotguns, true) memory.setfloat(patches.spread_for_shotguns, spread_for_shotguns, true) end function add_chat_message(text, ...) if not nospread.settings.add_chat_messages then return end local str = string.format("{D32F2F}[NoSpread]:{FFFFFF} %s", text:format(...)) sampAddChatMessage(str, -1) end
Мы вам не роблоксерыfunction isKeyPressed(key) return getGameKeys():isPressed(key) end
Попробуй заменить на isKeyJustPressed, исполняет один раз на 1 кнопку. Если постоянно то isKeyDown[20:18:04.067347] (error) NoSpread: D:\GTA San Andreas Clear\moonloader\nospread.lua:29: attempt to call global 'isKeyPressed' (a nil value)
stack traceback:
D:\GTA San Andreas Clear\moonloader\nospread.lua: in function <D:\GTA San Andreas Clear\moonloader\nospread.lua:21>
[20:18:04.067347] (error) NoSpread: Script died due to an error. (17979DC4)
ошибки нет, но не работает, все так же по командеМы вам не роблоксеры
Посмотреть вложение 261748
И такс,
Попробуй заменить на isKeyJustPressed, исполняет один раз на 1 кнопку. Если постоянно то isKeyDown
Попробуйте тогда эти:ошибки нет, но не работает, все так же по команде
VK_MBUTTON = 0x04
VK_XBUTTON1 = 0x05
VK_XBUTTON2 = 0x06
-- isKeyPressed(0x04) and other
isKeyDown(6) работает, но не совсем корректно, при зажатии кнопки оно быстро включается и выключается, что в целом дает эффект носприда, но он прерывчатый и после отжима кнопки он может остановиться на включенном состоянии, а я же хочу добиться того, чтобы при зажатии он включался, бесперебойно работал, пока палец находится на кнопке, а после отжатия выключался. заранее извиняюсь за такие огромные наглые запросыПопробуйте тогда эти:
Lua:VK_MBUTTON = 0x04 VK_XBUTTON1 = 0x05 VK_XBUTTON2 = 0x06 -- isKeyPressed(0x04) and other
В таком случае isKeyDown постоянно проверяет на зажатие, но это постоянно, то есть ты долго удерживаешь кнопку пока не отпустишьпри зажатии кнопки оно быстро включается и выключается, что в целом дает эффект носприда, но он прерывчатый и после отжима кнопки он может остановиться на включенном состоянии, а я же хочу добиться того, чтобы при зажатии он включался, бесперебойно работал, пока палец находится на кнопке, а после отжатия выключался
local isPressed = false
function main()
while true do wait(0)
if isKeyDown(0x06) and not isPressed then
isPressed = true
sampAddChatMessage('Чит активен - пока ты держишь бро!')
elseif not isKeyDown(0x06) and isPressed then
isPressed = false
sampAddChatMessage('Ну бро, зачем ты отпустил кнопку :(. Давай повтори!')
end
end
end