Moonloader игнорирует скрипт

Статус
В этой теме нельзя размещать новые ответы.

papercut

Известный
Автор темы
90
14
Писал я себе мирно скрипт, и, после очередного изменения, лоудер перестал вообще обращать внимание на скрипт. В логах про него ни слова, в игре, конечно же, не работает.
Насколько мои знания уверенного пользователя сети Интернет позволяют, погуглил - ничего подобного. Может сталкивался кто или это я тупой.

И, да, он работал до того, как я решил добавить обработку ответов сервера.
 

papercut

Известный
Автор темы
90
14
Насколько мне позволяет опыт, я думаю, что сочетание кытырыл + эр что-то перезагружает(хотя хз). Так вот, я перезапускал все что можно: и самп, и игру, и комп. В онлайн дебаггере исправил пару синтаксических - ничего не изменилось, просто тупо игнор. Хотя мб куда-то записывается что-то, но где это "что-то" найти я не знаю.

Возможно расширение файла не луа
Я, конечно, тупой, но не на столько. Делал копию файла с другим названием - он тоже игнорируется. Видимо, что-то в коде. Могу, конечно, скинуть код, только проблема, думаю, общая с какой-то функцией ии ее неправильным использованием. Так что конкретный код вряд ли поможет.
 

papercut

Известный
Автор темы
90
14

Ошибку нашел, хз как раньше не замечал. В онлайн компиляторе пишет, что ожидается end в конце файла. Теперь будет проще, но мне все равно не ясно что там не так.

Lua:
script_name('AutoFind')
script_author('Urod')
require "lib.moonloader"

local suspectid
local isact = false
local sampev = require "lib.samp.events"
local pos = 0

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand("/find",
    function(id)
        if id ~= '' then
            suspectid = id
            if sampIsPlayerConnected(suspectid) then
                sampAddChatMessage("[AF] Now finding "..sampGetPlayerNickname(suspectid).."["..suspectid.."]", 0x92e274)
                local thread1 = lua_thread.create_suspended(thread)
                isact = true
                sampSendChat('/find '..suspectid)
                thread1:run()
            else
                sampAddChatMessage("[AF] Player whith id "..suspectid.." is not connected", 0xfb2841)
            end
        else
            if isact then
                sampAddChatMessage("[AF] Stop finding "..sampGetPlayerNickname(suspectid).."["..suspectid.."]", 0x7c7a7d)
                isact = false
            else
                sampAddChatMessage("[AF] Empty ID", 0xfb2841)
            end      
        end
    end)
end

function sampev.onServerMessage(color, text)
    if isact and text:find('Объект {abcdef} .* обнаружен. Передвигается в {D8A903} .* {ffffff}.') then pos = 0 end
    if isact and text:find('Указанный вами игрок не залогинен.') then pos = 1 end
    if isact and text:find('Сигнал от указанного игрока слишком слаб, скорее всего, объект укрывается в здании.') then pos = 2 end
    if isact and text:find('Указанный вами игрок является ботом.') then isact = not isact end
    if isact and text:find('Вы не можете найти самого себя.') then isact = not isact end
end

function thread()
    while isact do
        if pos == 0 then
            wait(2000)
            wait(2000)
            wait(2000)
            wait(2000)
            wait(2000)
            wait(2000)
            wait(2000)
            sampSendChat('/find '..suspectid)
        else if pos == 1 then
            wait(1500)
            sampSendChat('/find '..suspectid)
        else
            wait(2000)
            sampSendChat('/find '..suspectid)
        end
    end
end

upd. С if then end конструкцией никогда не работал, там и проблема выскочила. Сложность не в замене { } на then и end, а в том, что перед else аналог '}' не ставится. Искать, думаю, нужно там. Глаз сейчас уже замылился, сам вряд ли найду
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.