помогите со скриптиком только начал

abracadabra

Участник
Автор темы
67
17
Версия MoonLoader
.026-beta
не совсем понимаю что не так, помогите только начинаю это всё изучать,
нужно крч чтобы скрипт по строчке в чате вводил команду и нажимал 9 пункт диалога


lua:
require "lib.moonloader"

local status = false



function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    wait(1501)
    sampAddChatMessage('{00FF88}[>>] Auto Death Run:{ffffff} Успешно загружен.', -1)
    sampRegisterChatCommand('fdr', function()
        status = not status
        if status then
    sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Скрипт активирован.', -1)
    end
        if not status then
    sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Скрипт деактивирован.', -1)
    end
    end)
   
end

require('samp.events').onServerMessage = function(color, text)
if status then
    if text:match('{00FF88}[>>] Смертельный Забег: {FFFFFF}Регистрация на игру открыта. До конца регистрации осталось 3 минуты!') then
                    sampSendChat('/games')
                    sampSendDialogResponse(254, 0, 9, -1)
                    sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Вы автоматически зарегистрировались.', -1)
                end
    end
end

конкретно не работает фрагмент кода 25-33, не пойму что не так
 

Freym

Известный
487
203
не совсем понимаю что не так, помогите только начинаю это всё изучать,
нужно крч чтобы скрипт по строчке в чате вводил команду и нажимал 9 пункт диалога


lua:
require "lib.moonloader"

local status = false



function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    wait(1501)
    sampAddChatMessage('{00FF88}[>>] Auto Death Run:{ffffff} Успешно загружен.', -1)
    sampRegisterChatCommand('fdr', function()
        status = not status
        if status then
    sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Скрипт активирован.', -1)
    end
        if not status then
    sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Скрипт деактивирован.', -1)
    end
    end)
 
end

require('samp.events').onServerMessage = function(color, text)
if status then
    if text:match('{00FF88}[>>] Смертельный Забег: {FFFFFF}Регистрация на игру открыта. До конца регистрации осталось 3 минуты!') then
                    sampSendChat('/games')
                    sampSendDialogResponse(254, 0, 9, -1)
                    sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Вы автоматически зарегистрировались.', -1)
                end
    end
end
все строчки в диалогах в сампе начинаются с 0 а не с 1, то есть тебе нужно вместо 9 поставить 8
 

atomlin

Известный
579
380
Lua:
local status = false

function main()
    while not isSampAvailable() do wait(100) end
    wait(1501)
    sampAddChatMessage('{00FF88}[>>] Auto Death Run:{ffffff} Успешно загружен.', -1)
    sampRegisterChatCommand('fdr', function()
        status = not status
        sampAddChatMessage(string.format("{00FF88}[>>] Auto Death Run: {ffffff}Скрипт %s.", status and "активирован" or "деактивирован"), -1)
    end)
    wait(-1)
end

require('samp.events').onServerMessage = function(color, text)
    if status then
        if text:match('%{......%}%[>>%] Смертельный Забег: %{......%}Регистрация на игру открыта%. До конца регистрации осталось 3 минуты!') then
            sampSendChat('/games')
            sampSendDialogResponse(254, 0, 8)
            sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Вы автоматически зарегистрировались.', -1)
        end
    end
end
 
Последнее редактирование:

abracadabra

Участник
Автор темы
67
17
так вроде все балдежно.. но крашит на моменте появления строки в команде активации
Lua:
local status = false

function main()
    while not isSampAvailable() do wait(100) end
    wait(1501)
    sampAddChatMessage('{00FF88}[>>] Auto Death Run:{ffffff} Успешно загружен.', -1)
    sampRegisterChatCommand('fdr', function()
        status = not status
        sampAddChatMessage(string.format("{00FF88}[>>] Auto Death Run: {ffffff}Скрипт %s.", status and "активирован" or "деактивирован")
    end)
    wait(-1)
end

require('samp.events').onServerMessage = function(color, text)
    if status then
        if text:match('%{......%}%[>>%] Смертельный Забег: %{......%}Регистрация на игру открыта%. До конца регистрации осталось 3 минуты!') then
            sampSendChat('/games')
            sampSendDialogResponse(254, 0, 8)
            sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Вы автоматически зарегистрировались.', -1)
        end
    end
end
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,768
11,210
так вроде все балдежно.. но крашит на моменте появления строки в команде активации
Крашит игру при вызове sampSendChat. Как это исправить?

Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end

Lua:
local status = false

function main()
    while not isSampAvailable() do wait(100) end
    wait(1501)
    sampAddChatMessage('{00FF88}[>>] Auto Death Run:{ffffff} Успешно загружен.', -1)
    sampRegisterChatCommand('fdr', function()
        status = not status
        sampAddChatMessage(string.format("{00FF88}[>>] Auto Death Run: {ffffff}Скрипт %s.", status and "активирован" or "деактивирован")
    end)
    wait(-1)
end

require('samp.events').onServerMessage = function(color, text)
    if status then
        if text:match('%{......%}%[>>%] Смертельный Забег: %{......%}Регистрация на игру открыта%. До конца регистрации осталось 3 минуты!') then
            lua_thread.create(function()
                wait(1)
                sampSendChat('/games')
                sampSendDialogResponse(254, 0, 8)
                sampAddChatMessage('{00FF88}[>>] Auto Death Run: {ffffff}Вы автоматически зарегистрировались.', -1)
            end)
        end
    end
end
 
  • Вау
Реакции: sizeoftrickster