смена команды активации

araminglol

Активный
Автор темы
123
42
скиньте код чтобы на команду "/cmlol" можно было изменить активацию скрипта.

Пример:
Активация скрипта /captcha
Я ввожу /cmlol clown
Теперь чтобы скрипт активировался надо прописать /clown, а чтобы выключился еще раз /clown.

Думаю понятно
 
  • Эм
Реакции: YarikVL

araminglol

Активный
Автор темы
123
42
Код:
script_name('CaptchaLOL')
script_author('araminglol')

local q = require 'lib.samp.events'
local inicfg = require 'inicfg'
local vkeys = require 'vkeys'
local imgui = require 'imgui'
local mem = require 'memory'
local time = nil
local captime = nil
local t = 0
local captcha = ''
local captchaTable = {}
local cfg = inicfg.load({
    main = { 
        key = 78,
        record = nil
    }
}, "Captchalol")

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand("captcha", function() state = not state
        sampAddChatMessage((state and '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи включена' or '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи выключена'), -1)
    end)
    sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Успешно загружен! Команда: /captcha Активация N. Изменить кливашу /keylol",-1)

  while true do wait(0)
    if state then
    if isKeyJustPressed(cfg.main.key) and not sampIsChatInputActive() and not sampIsDialogActive() then showCaptcha() end
    local result, button, list, input = sampHasDialogRespond(8813)
    if result then
      if button == 1 then
        if input == captcha..'0' then sampAddChatMessage(string.format('{ff0000}[CaptchaLOL{ff0000}] {ffffff}Код верный [%.3f] ('..captcha..'0|'..input..')', os.clock() - captime), -1)
        elseif input ~= captcha..'0' then sampAddChatMessage(string.format('{ff0000}[CaptchaLOL{ff0000}] {ffffff}Неверный код! [%.3f] ('..captcha..'0|'..input..')', os.clock() - captime), -1) end
                end
      removeTextdraws()
            end   
        end
        if not doesFileExist(getWorkingDirectory()..'\\config\\Captchalol.ini') then inicfg.save(cfg, 'Captchalol.ini') end
        sampRegisterChatCommand('keylol', function(keyId)
            if tonumber(keyId) then
                cfg.main.key = tonumber(keyId)
                if inicfg.save(cfg, 'Captchalol.ini') then 
                    sampAddChatMessage('{ff0000}[CaptchaLOL by araminglol] {ffffff}Клавиша активации изменена на: {ff0000}'..keyId) 
                end 
            end
        end)
        
    end
end

Этого будет достаточно
 

YarikVL

Известный
Проверенный
4,750
1,815
скиньте код чтобы на команду "/cmlol" можно было изменить активацию скрипта.

Пример:
Активация скрипта /captcha
Я ввожу /cmlol clown
Теперь чтобы скрипт активировался надо прописать /clown, а чтобы выключился еще раз /clown.

Думаю понятно

Еще можно юзать sampUnregisterChatCommand
Вот тут рабочий пример:
 
Последнее редактирование:
  • Bug
  • Ха-ха
Реакции: CaJlaT и Mintha

CaJlaT

07.11.2024 14:55
Модератор
2,836
2,674
Не можно, а НУЖНО, ведь твоя хуйня не перерегистрирует команду, она так и останется старой до перезагрузки скрипта, но ты не сохраняешь новую команду в ини/жсон, поэтому при перезагрузке опять будет старая команда.

Вот готвый вариант смены команды без необходимости перезагружать скрипт:
Lua:
script_name('CaptchaLOL')
script_author('araminglol')

local q = require 'lib.samp.events'
local inicfg = require 'inicfg'
local vkeys = require 'vkeys'
local imgui = require 'imgui'
local mem = require 'memory'
local time = nil
local captime = nil
local t = 0
local captcha = ''
local captchaTable = {}
local cfg = inicfg.load({
    main = {
        key = 78,
        record = nil,
        command = "captcha"
    }
}, "Captchalol")

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand(cfg.main.command, cmd_func)
    sampRegisterChatCommand("cmlol", function(arg)
        if not arg or #arg == 0 then sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Ошибка, используйте /cmlol [command]",-1) return end
        sampUnregisterChatCommand(cfg.main.command) -- удаляем старую команду
        cfg.main.command = arg
        inicfg.save(cfg, 'Captchalol.ini') -- обновляем команду в ини
        sampRegisterChatCommand(cfg.main.command, cmd_func) -- регестрируем новую команду
        sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Команда активации была изменена на "..cfg.main.command,-1)
    end)
    sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Успешно загружен! Команда: /captcha Активация N. Изменить кливашу /keylol",-1)

    while true do
        wait(0)
        if state then
            if isKeyJustPressed(cfg.main.key) and not sampIsChatInputActive() and not sampIsDialogActive() then
                showCaptcha()
            end
            local result, button, list, input = sampHasDialogRespond(8813)
            if result then
                if button == 1 then
                    if input == captcha .. '0' then
                        sampAddChatMessage(
                        string.format(
                        '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Код верный [%.3f] (' .. captcha ..
                        '0|' .. input .. ')', os.clock() - captime), -1)
                    elseif input ~= captcha .. '0' then
                        sampAddChatMessage(
                        string.format(
                        '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Неверный код! [%.3f] (' ..
                        captcha .. '0|' .. input .. ')', os.clock() - captime), -1)
                    end
                end
                removeTextdraws()
            end
        end
        if not doesFileExist(getWorkingDirectory() .. '\\config\\Captchalol.ini') then inicfg.save(cfg, 'Captchalol.ini') end
        sampRegisterChatCommand('keylol', function(keyId)
            if tonumber(keyId) then
                cfg.main.key = tonumber(keyId)
                if inicfg.save(cfg, 'Captchalol.ini') then
                    sampAddChatMessage('{ff0000}[CaptchaLOL by araminglol] {ffffff}Клавиша активации изменена на: {ff0000}' ..keyId, -1)
                end
            end
        end)
    end
end

function cmd_func()
    state = not state
    sampAddChatMessage((state and '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи включена' or '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи выключена'),-1)
end
 
Последнее редактирование:

araminglol

Активный
Автор темы
123
42
Не можно, а НУЖНО, ведь твоя хуйня не перерегистрирует команду, она так и останется старой до перезагрузки скрипта, но ты не сохраняешь новую команду в ини/жсон, поэтому при перезагрузке опять будет старая команда.

Вот готвый вариант смены команды без необходимости перезагружать скрипт:
Lua:
script_name('CaptchaLOL')
script_author('araminglol')

local q = require 'lib.samp.events'
local inicfg = require 'inicfg'
local vkeys = require 'vkeys'
local imgui = require 'imgui'
local mem = require 'memory'
local time = nil
local captime = nil
local t = 0
local captcha = ''
local captchaTable = {}
local cfg = inicfg.load({
    main = {
        key = 78,
        record = nil,
        command = "captcha"
    }
}, "Captchalol")

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand(cfg.main.command, cmd_func)
    sampRegisterChatCommand("cmlol", function(arg)
        if not arg or #arg == 0 then sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Ошибка, используйте /cmlol [command]",-1) return end
        sampUnregisterChatCommand(cfg.main.command) -- удаляем старую команду
        cfg.main.command = arg
        inicfg.save(cfg, 'Captchalol.ini') -- обновляем команду в ини
        sampRegisterChatCommand(cfg.main.command, cmd_func) -- регестрируем новую команду
        sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Команда активации была изменена на "..cfg.main.command,-1)
    end)
    sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Успешно загружен! Команда: /captcha Активация N. Изменить кливашу /keylol",-1)

    while true do
        wait(0)
        if state then
            if isKeyJustPressed(cfg.main.key) and not sampIsChatInputActive() and not sampIsDialogActive() then
                showCaptcha()
            end
            local result, button, list, input = sampHasDialogRespond(8813)
            if result then
                if button == 1 then
                    if input == captcha .. '0' then
                        sampAddChatMessage(
                        string.format(
                        '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Код верный [%.3f] (' .. captcha ..
                        '0|' .. input .. ')', os.clock() - captime), -1)
                    elseif input ~= captcha .. '0' then
                        sampAddChatMessage(
                        string.format(
                        '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Неверный код! [%.3f] (' ..
                        captcha .. '0|' .. input .. ')', os.clock() - captime), -1)
                    end
                end
                removeTextdraws()
            end
        end
        if not doesFileExist(getWorkingDirectory() .. '\\config\\Captchalol.ini') then inicfg.save(cfg, 'Captchalol.ini') end
        sampRegisterChatCommand('keylol', function(keyId)
            if tonumber(keyId) then
                cfg.main.key = tonumber(keyId)
                if inicfg.save(cfg, 'Captchalol.ini') then
                    sampAddChatMessage('{ff0000}[CaptchaLOL by araminglol] {ffffff}Клавиша активации изменена на: {ff0000}' ..keyId, -1)
                end
            end
        end)
    end
end

function cmd_func()
    state = not state
    sampAddChatMessage((state and '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи включена' or '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи выключена'),-1)
end
При прописывании /cmlol clown просто крашит игру..

изображение_2023-06-26_154911341.png


При прописывании /cmlol clown просто крашит игру..

изображение_2023-06-26_154911341.png
Не важно, /cmlol /clown, или /cmlol clown. В любом случае крашит игру
 

CaJlaT

07.11.2024 14:55
Модератор
2,836
2,674
При прописывании /cmlol clown просто крашит игру..

Посмотреть вложение 205729


Не важно, /cmlol /clown, или /cmlol clown. В любом случае крашит игру
Да, мой косяк, нужно пропускать кадр, чтобы игра не крашилась. Ещё я не заметил, что у тебя регистрация команды keylol идёт в бесконечном цикле, исправил.
1687773301500.png


Lua:
script_name('CaptchaLOL')
script_author('araminglol')

local q = require 'lib.samp.events'
local inicfg = require 'inicfg'
local vkeys = require 'vkeys'
local imgui = require 'imgui'
local mem = require 'memory'
local time = nil
local captime = nil
local t = 0
local captcha = ''
local captchaTable = {}
local cfg = inicfg.load({
    main = {
        key = 78,
        record = nil,
        command = "captcha"
    }
}, "Captchalol")

if not doesFileExist(getWorkingDirectory() .. '\\config\\Captchalol.ini') then inicfg.save(cfg, 'Captchalol.ini') end

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand(cfg.main.command, cmd_func)
    sampRegisterChatCommand("cmlol", function(arg)
        lua_thread.create(function()
            wait(0) -- пропуск кадра, чтобы игра не крашилась
            if not arg or #arg == 0 then sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Ошибка, используйте /cmlol [command]",-1) return end
            sampUnregisterChatCommand(cfg.main.command) -- удаляем старую команду
            cfg.main.command = arg
            inicfg.save(cfg, 'Captchalol.ini') -- обновляем команду в ини
            sampRegisterChatCommand(cfg.main.command, cmd_func) -- регестрируем новую команду
            sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Команда активации была изменена на "..cfg.main.command,-1)
        end)
    end)
    sampRegisterChatCommand('keylol', function(keyId)
        if tonumber(keyId) then
            cfg.main.key = tonumber(keyId)
            if inicfg.save(cfg, 'Captchalol.ini') then
                sampAddChatMessage('{ff0000}[CaptchaLOL by araminglol] {ffffff}Клавиша активации изменена на: {ff0000}' ..keyId, -1)
            end
        end
    end)
    sampAddChatMessage("{ff0000}[CaptchaLOL by araminglol] {ffffff}Успешно загружен! Команда: /captcha Активация N. Изменить кливашу /keylol",-1)

    while true do
        wait(0)
        if state then
            if isKeyJustPressed(cfg.main.key) and not sampIsChatInputActive() and not sampIsDialogActive() then
                showCaptcha()
            end
            local result, button, list, input = sampHasDialogRespond(8813)
            if result then
                if button == 1 then
                    if input == captcha .. '0' then
                        sampAddChatMessage(
                        string.format(
                        '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Код верный [%.3f] (' .. captcha ..
                        '0|' .. input .. ')', os.clock() - captime), -1)
                    elseif input ~= captcha .. '0' then
                        sampAddChatMessage(
                        string.format(
                        '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Неверный код! [%.3f] (' ..
                        captcha .. '0|' .. input .. ')', os.clock() - captime), -1)
                    end
                end
                removeTextdraws()
            end
        end
    end
end

function cmd_func()
    state = not state
    sampAddChatMessage((state and '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи включена' or '{ff0000}[CaptchaLOL{ff0000}] {ffffff}Тренировка капчи выключена'),-1)
end

Просто возможности чекнуть скрипт не было, написал по памяти, поэтому косяк с крашем появился....
 
  • Нравится
Реакции: zakatov и ARMOR