Как закрыть end?

Koteika777

Участник
Автор темы
30
1
Версия SA-MP
  1. 0.3.7-R3
[ML] (error) tsr.lua: ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:144: 'end' expected (to close 'function' at line 89) near 'elseif'
[ML] (error) tsr.lua: Script died due to an error. (232C10CC)

часть кода:
lua:
function imgui.OnDrawFrame()
    imgui.SetNextWindowSize(imgui.ImVec2(150, 280), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(115,370), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.Begin('HELPER LICENSE', main_window_state, imgui.WindowFlags.NoResize)
    if imgui.CollapsingHeader(u8'Основное') then
        if imgui.Button(u8'Обыск', imgui.ImVec2(90, 25)) then
            lua_thread.create(function()
                sampSendChat('Не переживайте, это быстро!')
                wait(1300)
                sampSendChat('/me достал резиновые перчатки из кармана')
                wait(1500)
                sampSendChat('/me одевает перчатки и начинает обыск')
                wait(1500)
                sampSendChat('/do Процесс...')
                wait(500)
                sampSendChat('/frisk ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Задержание', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/cuff ' ..PlayerId)
                wait(1300)
                sampSendChat('Вас задержал ' ..myId)
                wait(1300)
                sampSendChat('Вы имеете право хранить молчание.')
                wait(1300)
                sampSendChat('Всё, что Вы скажете, может использоваться против Вас в суде.')
                wait(1300)
                sampSendChat('Ваш адвокат может присутствовать на допросе.')
                wait(1300)
                sampSendChat('Если Вы не можете оплатить услуги адвоката, он будет предоставлен Вам государством')
                wait(1300)
                sampSendChat('Вам были зачитаны Ваши права. Вы арестованы!')
                end)
            end
        elseif imgui.Button(u8'Проверка док', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/hi ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Проверка мед', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/me взял мед.карту человека напротив')
                wait(1300)
                sampSendChat('/me начал осматривать мед.карту')
                wait(1200)
                sampSendChat('/do Убедившись что человек психически здоров закрыл её.')
                wait(1200)
                sampSendChat('/me передал мед.карту человеку напротив')
            end)
        elseif imgui.Button(u8'Выдача', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('Всё хорошо, держите Вашу лицензию!')
                wait(10000)
                sampSendChat('Удачного дня!')
            end)
        end
    elseif imgui.CollapsingHeader(u8'Лицензии') then
        if imgui.Button(u8'Авто', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Авто стоит 10 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Мото', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Мото стоит 20 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Лодки', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Водный транспорт стоит 100 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Ж/Д', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Железно-Дорожный транспорт стоит 40 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Оружие', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Оружие стоит 200 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Охота', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Охоту стоит 25 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Рыба', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Ловлю рыбы стоит 20 тысяч рублей. Готовы купить?')
        end
    end
    imgui.End()
че оно все требует от меня? Где end ставить? Все норм пахало и теперь снова сломано.
И еще вопрос как вставить функции из кода если я создаю отдельные в elseif для wait ?
 

CloudCode

Известный
734
207
На 144 строке лишний енд, у меня была такая проблема со скриптом через 30 минут все доперло
[ML] (error) tsr.lua: ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:144: 'end' expected (to close 'function' at line 89) near 'elseif'
[ML] (error) tsr.lua: Script died due to an error. (232C10CC)

часть кода:
lua:
function imgui.OnDrawFrame()
    imgui.SetNextWindowSize(imgui.ImVec2(150, 280), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(115,370), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.Begin('HELPER LICENSE', main_window_state, imgui.WindowFlags.NoResize)
    if imgui.CollapsingHeader(u8'Основное') then
        if imgui.Button(u8'Обыск', imgui.ImVec2(90, 25)) then
            lua_thread.create(function()
                sampSendChat('Не переживайте, это быстро!')
                wait(1300)
                sampSendChat('/me достал резиновые перчатки из кармана')
                wait(1500)
                sampSendChat('/me одевает перчатки и начинает обыск')
                wait(1500)
                sampSendChat('/do Процесс...')
                wait(500)
                sampSendChat('/frisk ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Задержание', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/cuff ' ..PlayerId)
                wait(1300)
                sampSendChat('Вас задержал ' ..myId)
                wait(1300)
                sampSendChat('Вы имеете право хранить молчание.')
                wait(1300)
                sampSendChat('Всё, что Вы скажете, может использоваться против Вас в суде.')
                wait(1300)
                sampSendChat('Ваш адвокат может присутствовать на допросе.')
                wait(1300)
                sampSendChat('Если Вы не можете оплатить услуги адвоката, он будет предоставлен Вам государством')
                wait(1300)
                sampSendChat('Вам были зачитаны Ваши права. Вы арестованы!')
                end)
            end
        elseif imgui.Button(u8'Проверка док', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/hi ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Проверка мед', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/me взял мед.карту человека напротив')
                wait(1300)
                sampSendChat('/me начал осматривать мед.карту')
                wait(1200)
                sampSendChat('/do Убедившись что человек психически здоров закрыл её.')
                wait(1200)
                sampSendChat('/me передал мед.карту человеку напротив')
            end)
        elseif imgui.Button(u8'Выдача', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('Всё хорошо, держите Вашу лицензию!')
                wait(10000)
                sampSendChat('Удачного дня!')
            end)
        end
    elseif imgui.CollapsingHeader(u8'Лицензии') then
        if imgui.Button(u8'Авто', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Авто стоит 10 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Мото', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Мото стоит 20 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Лодки', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Водный транспорт стоит 100 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Ж/Д', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Железно-Дорожный транспорт стоит 40 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Оружие', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Оружие стоит 200 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Охота', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Охоту стоит 25 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Рыба', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Ловлю рыбы стоит 20 тысяч рублей. Готовы купить?')
        end
    end
    imgui.End()
че оно все требует от меня? Где end ставить? Все норм пахало и теперь снова сломано.
И еще вопрос как вставить функции из кода если я создаю отдельные в elseif для wait ?
 

Koteika777

Участник
Автор темы
30
1
Писать код в нормальных редакторах кода вроде VS Code, где есть аддоны (https://marketplace.visualstudio.com/items?itemName=sumneko.lua), поддерживающие синтаксис языка.
не хочу я вску юзать, много весит

На 144 строке лишний енд, у меня была такая проблема со скриптом через 30 минут все доперло
1686748579435.png
и где тут енд лишний?
 

CaJlaT

Овощ
Модератор
2,805
2,606
Тогда хотя-бы как минимум правильно пользоваться табуляцией.

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

Лишний end.
там 2 лишних end. elseif не нужно закрывать end, если после него идёт ещё один elseif

1686748880949.png


UPD: Ладно, откат... из-за кривой табуляции сразу не понял, что там 2 проверки, поэтому лишний только 1 end

UPD2:
Lua:
function imgui.OnDrawFrame()
    imgui.SetNextWindowSize(imgui.ImVec2(150, 280), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(115,370), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.Begin('HELPER LICENSE', main_window_state, imgui.WindowFlags.NoResize)
    if imgui.CollapsingHeader(u8'Основное') then
        if imgui.Button(u8'Обыск', imgui.ImVec2(90, 25)) then
            lua_thread.create(function()
                sampSendChat('Не переживайте, это быстро!')
                wait(1300)
                sampSendChat('/me достал резиновые перчатки из кармана')
                wait(1500)
                sampSendChat('/me одевает перчатки и начинает обыск')
                wait(1500)
                sampSendChat('/do Процесс...')
                wait(500)
                sampSendChat('/frisk ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Задержание', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/cuff ' ..PlayerId)
                wait(1300)
                sampSendChat('Вас задержал ' ..myId)
                wait(1300)
                sampSendChat('Вы имеете право хранить молчание.')
                wait(1300)
                sampSendChat('Всё, что Вы скажете, может использоваться против Вас в суде.')
                wait(1300)
                sampSendChat('Ваш адвокат может присутствовать на допросе.')
                wait(1300)
                sampSendChat('Если Вы не можете оплатить услуги адвоката, он будет предоставлен Вам государством')
                wait(1300)
                sampSendChat('Вам были зачитаны Ваши права. Вы арестованы!')
                end)
        elseif imgui.Button(u8'Проверка док', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/hi ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Проверка мед', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/me взял мед.карту человека напротив')
                wait(1300)
                sampSendChat('/me начал осматривать мед.карту')
                wait(1200)
                sampSendChat('/do Убедившись что человек психически здоров закрыл её.')
                wait(1200)
                sampSendChat('/me передал мед.карту человеку напротив')
            end)
        elseif imgui.Button(u8'Выдача', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('Всё хорошо, держите Вашу лицензию!')
                wait(10000)
                sampSendChat('Удачного дня!')
            end)
        end
    elseif imgui.CollapsingHeader(u8'Лицензии') then
        if imgui.Button(u8'Авто', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Авто стоит 10 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Мото', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Мото стоит 20 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Лодки', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Водный транспорт стоит 100 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Ж/Д', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Железно-Дорожный транспорт стоит 40 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Оружие', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Оружие стоит 200 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Охота', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Охоту стоит 25 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Рыба', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Ловлю рыбы стоит 20 тысяч рублей. Готовы купить?')
        end
    end
    imgui.End()
end
Но вроде CollapsingHeader не дружит с elseif, поэтому лучше юзать обычный if
 
  • Нравится
Реакции: Vespan и savvin

Koteika777

Участник
Автор темы
30
1
там 2 лишних end. elseif не нужно закрывать end, если после него идёт ещё один elseif

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

UPD: Ладно, откат... из-за кривой табуляции сразу не понял, что там 2 проверки, поэтому лишний только 1 end

UPD2:
Lua:
function imgui.OnDrawFrame()
    imgui.SetNextWindowSize(imgui.ImVec2(150, 280), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(115,370), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.Begin('HELPER LICENSE', main_window_state, imgui.WindowFlags.NoResize)
    if imgui.CollapsingHeader(u8'Основное') then
        if imgui.Button(u8'Обыск', imgui.ImVec2(90, 25)) then
            lua_thread.create(function()
                sampSendChat('Не переживайте, это быстро!')
                wait(1300)
                sampSendChat('/me достал резиновые перчатки из кармана')
                wait(1500)
                sampSendChat('/me одевает перчатки и начинает обыск')
                wait(1500)
                sampSendChat('/do Процесс...')
                wait(500)
                sampSendChat('/frisk ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Задержание', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/cuff ' ..PlayerId)
                wait(1300)
                sampSendChat('Вас задержал ' ..myId)
                wait(1300)
                sampSendChat('Вы имеете право хранить молчание.')
                wait(1300)
                sampSendChat('Всё, что Вы скажете, может использоваться против Вас в суде.')
                wait(1300)
                sampSendChat('Ваш адвокат может присутствовать на допросе.')
                wait(1300)
                sampSendChat('Если Вы не можете оплатить услуги адвоката, он будет предоставлен Вам государством')
                wait(1300)
                sampSendChat('Вам были зачитаны Ваши права. Вы арестованы!')
                end)
        elseif imgui.Button(u8'Проверка док', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/hi ' ..PlayerId)
            end)
        elseif imgui.Button(u8'Проверка мед', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('/me взял мед.карту человека напротив')
                wait(1300)
                sampSendChat('/me начал осматривать мед.карту')
                wait(1200)
                sampSendChat('/do Убедившись что человек психически здоров закрыл её.')
                wait(1200)
                sampSendChat('/me передал мед.карту человеку напротив')
            end)
        elseif imgui.Button(u8'Выдача', imgui.ImVec2(90,25)) then
            lua_thread.create(function()
                sampSendChat('Всё хорошо, держите Вашу лицензию!')
                wait(10000)
                sampSendChat('Удачного дня!')
            end)
        end
    elseif imgui.CollapsingHeader(u8'Лицензии') then
        if imgui.Button(u8'Авто', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Авто стоит 10 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Мото', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Мото стоит 20 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Лодки', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Водный транспорт стоит 100 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Ж/Д', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Железно-Дорожный транспорт стоит 40 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Оружие', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Оружие стоит 200 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Охота', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Охоту стоит 25 тысяч рублей. Готовы купить?')
        elseif imgui.Button(u8'Рыба', imgui.ImVec2(85, 25)) then
            sampSendChat('Лицензия на Ловлю рыбы стоит 20 тысяч рублей. Готовы купить?')
        end
    end
    imgui.End()
end
Но вроде CollapsingHeader не дружит с elseif, поэтому лучше юзать обычный if
все починил, еще оказывается в imgui.End не было () в конце - т.е imgui.End(). Ток ща увидел. А второй вопрос? Как юзать мне другие функции в функциях? Я хочу впихнуть PlayerId в это и все равно крашит скрипт.
функшен:
[ML] (error) TSR: ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:108: attempt to concatenate global 'PlayerId' (a function value)
stack traceback:
    ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua: in function <...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:107>
stack traceback:
    [C]: in function 'create'
    ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:107: in function 'OnDrawFrame'
    ...izona Games Launcher\bin\rodina\moonloader\lib\imgui.lua:1378: in function <...izona Games Launcher\bin\rodina\moonloader\lib\imgui.lua:1367>
[ML] (error) TSR: Script died due to an error. (1540826C)
lua_thread.create(function()

все починил, еще оказывается в imgui.End не было () в конце - т.е imgui.End(). Ток ща увидел. А второй вопрос? Как юзать мне другие функции в функциях? Я хочу впихнуть PlayerId в это и все равно крашит скрипт.
функшен:
[ML] (error) TSR: ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:108: attempt to concatenate global 'PlayerId' (a function value)
stack traceback:
    ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua: in function <...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:107>
stack traceback:
    [C]: in function 'create'
    ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:107: in function 'OnDrawFrame'
    ...izona Games Launcher\bin\rodina\moonloader\lib\imgui.lua:1378: in function <...izona Games Launcher\bin\rodina\moonloader\lib\imgui.lua:1367>
[ML] (error) TSR: Script died due to an error. (1540826C)
мне все равно нужен wait для сообщений и без него никак
 

CaJlaT

Овощ
Модератор
2,805
2,606
все починил, еще оказывается в imgui.End не было () в конце - т.е imgui.End(). Ток ща увидел. А второй вопрос? Как юзать мне другие функции в функциях? Я хочу впихнуть PlayerId в это и все равно крашит скрипт.
функшен:
[ML] (error) TSR: ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:108: attempt to concatenate global 'PlayerId' (a function value)
stack traceback:
    ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua: in function <...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:107>
stack traceback:
    [C]: in function 'create'
    ...mes\Arizona Games Launcher\bin\rodina\moonloader\tsr.lua:107: in function 'OnDrawFrame'
    ...izona Games Launcher\bin\rodina\moonloader\lib\imgui.lua:1378: in function <...izona Games Launcher\bin\rodina\moonloader\lib\imgui.lua:1367>
[ML] (error) TSR: Script died due to an error. (1540826C)
у тебя нет переменной playerId, вот он и выдаёт ошибку
 

AndroSamp

Активный
297
47
а как пихнуть? Я пробовал "local plid = PlayerId" и все равно не пашет. Или без локал надо?
Возможно у тебя две переменной с одинаковым именем. Либо же у тебя в коде, или даже в какой-то библиотеке имеется функция с точно таким же названием. Я давненько на lua ничего не делал, но текст ошибки говорит именно об этом.
 

Koteika777

Участник
Автор темы
30
1
Возможно у тебя две переменной с одинаковым именем. Либо же у тебя в коде, или даже в какой-то библиотеке имеется функция с точно таким же названием. Я давненько на lua ничего не делал, но текст ошибки говорит именно об этом.
а куда сувать? В начало скрипта или в луа функшн эту? Я сделал названия разными
 

AndroSamp

Активный
297
47
а куда сувать? В начало скрипта или в луа функшн эту? Я сделал названия разными
Если тебе нужно постоянно, то в начало скрипта, а если временно, на момент вызова функции, то прямо в начало функции
 

Koteika777

Участник
Автор темы
30
1
Если тебе нужно постоянно, то в начало скрипта, а если временно, на момент вызова функции, то прямо в начало функции
attempt to concatenate upvalue 'getPlayerId' (a function value)
stack traceback: