Остановка выполнение скрипта. HOW?!

Firus20016

Участник
Автор темы
148
15
Версия MoonLoader
.025-beta
Пожалуйста, помогите. Как остановить выполнение этого скрипта нажатием кнопки PageDown?
Код:
Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do
        wait(1)
        if isKeyDown(2) and isKeyJustPressed(49) then
                result, ped = getCharPlayerIsTargeting()
                if result then
                        r, i = sampGetPlayerIdByCharHandle(ped)
                        if r then
                            sampSendChat("Здравствуйте. Я, Флип Сайз, сотрудник данного медицинского центра, что вас беспокоит?")
                            sampAddChatMessage("Нажмите <ENTER>, чтобы продолжить.", -50000)
                            stage = 1
                        end
                end
        end
        if stage == 1 and isKeyDown(13) then
            sampSendChat("/me нырнув правой рукой в карман, вытянул оттуда блокнот и ручку")
            wait(1250)
            sampSendChat("/todo Хорошо, понял, ничего страшного*записывая в блокнот, все сказанное пациентом.")
            wait(1250)
            sampSendChat("/do Открытая сумка весит на плече правой руки.")
            wait(1250)
            sampSendChat("/me несколькими движениями нащупал лекарство")
            wait(1250)
            sampSendChat("/do Лекарство в левой руке.")
          wait(1250)
            sampSendChat("/todo Вот, держите*передавая лекарство человеку напротив.")
            wait(1250)
            sampSendChat("Принимайте эти таблетки,и через некоторое время вам станет лучше")
            wait(100)
            sampSendChat('/heal '..i)
            stage = 0
        end

        if isKeyDown(2) and isKeyJustPressed(50) then
                result, ped = getCharPlayerIsTargeting()
                if result then
                        r, i = sampGetPlayerIdByCharHandle(ped)
                        if r then
                            sampSendChat("Здравствуйте, как я понял, Вам нужна мед.карта.")
                            wait(1250)
                            sampSendChat("Предоставьте пожалуйста Ваш паспорт.")
                            sampAddChatMessage("Нажмите <1>, чтобы выдать новую мед.карту.", -50000)
                            sampAddChatMessage("Нажмите <2>, чтобы обновить мед.карту.", -50000)
                            stape = 3
                        end
                end
        end
        if stape == 3 and isKeyDown(50) then
            stape = 0
            if p < 6 then
            t = 8000
            end
            if p > 5 and p < 11 then
            t = 24000
            end
            if p > 10 and p < 16 then
            t = 32000
            end
            if p > 15 and p < 21 then
            t = 40000
            end
            if p > 20 and p < 30 then
            t = 48000
            end
            if p > 29 and t < 56000 then
            t = 56000
          end
            sampSendChat("Хорошо, я Вас понял. Вам нужно обновить данные в мед.карте.")
            wait(1250)
            sampSendChat(('Для обновления карты необходимо заплатить гос.пошлину в размере %s$, после чего мы продолжим.'):format(t))
            wait(1250)
            sampSendChat("/b Оплатите с помощью команды /pay или /trade")
            sampAddChatMessage("Нажмите <ENTER>, чтобы продолжить.", -50000)
            p = 0
            t = 0
            step = 1
        end
        if step == 1 and isKeyDown(13) then
            sampSendChat("/todo Благодарю, Вас*взяв паспорт в левую руку.")
            wait(1250)
            sampSendChat("/do Паспорт в левой руке.")
            wait(1250)
            sampSendChat("Не волнуйтесь, скоро я его Вам отдам!")
            wait(1250)
            sampSendChat("/me положил паспорт на стол")
            wait(1250)
            sampSendChat("/do Паспорт лежит на столе.")
            wait(1250)
            sampSendChat("/me подошел к столу и сел на стул")
            wait(1250)
            sampSendChat("/me пододвинул правой рукой паспорт к себе и открыл его")
            wait(1250)
            sampSendChat("/do Паспорт открыт.")
            wait(1250)
            sampSendChat("/do Ручка лежит в правом кармане.")
            wait(1250)
            sampSendChat("/me плавным движением левой руки вытащил ручку из кармана")
            wait(1250)
            sampSendChat("/do Ручка в левой руке.")
            wait(1250)
            sampSendChat("/do Чистые бланки для заполнения лежат на столе.")
            wait(1250)
            sampSendChat("/me плавным движением правой руки пододвинул чистые бланки к себе")
            wait(1250)
            sampSendChat("/me начал переписывать данные с паспорта на бланки")
            wait(1250)
            sampSendChat("/do Данные с паспорта переписаны на бланки.")
            wait(1250)
            sampSendChat("Жалобы на здоровье есть?")
            sampAddChatMessage("Нажмите <ENTER>, чтобы продолжить.", -50000)
            step = 2
        end
        if step == 2 and isKeyDown(13) then
            sampSendChat("/me записал в бланк")
            wait(1250)
            sampSendChat("Хорошо, теперь маленький тест на психику.")
            wait(1250)
            if z > 3 then
                z = 0
            end
            if z == 0 then
            sampSendChat("Вы видите как горит лес, что Вы будете делать?")
          end
          if z == 1 then
          sampSendChat("Вы видите, как человек упал и схватился за живот, что Вы будете делать?")
         end
          if z == 3 then
          sampSendChat("Вы видите, как несколько людей врываются в банк с оружием, что Вы будете делать?")
         end
            z = z + 1
            sampAddChatMessage("Нажмите <1>, чтобы поставить диагноз 'Полноcтью здоров(ая)'", -50000)
            sampAddChatMessage("Нажмите <2>, чтобы поставить диагноз 'Есть отклонения'", -50000)
            sampAddChatMessage("Нажмите <3>, чтобы поставить диагноз 'Психически не здоров(а)'", -50000)
            step = 3
        end
        if step == 3 and isKeyDown(49) then
            sampSendChat("/me поставил печать 'Полноcтью здоров(ая)'")
            wait(1250)
            sampSendChat("/me взял в левую руку мед. карту, а паспорт в правую")
            wait(1250)
            sampSendChat("/do Мед.карта и паспорт в руках.")
            wait(1250)
            sampSendChat("/todo Не болейте, всего доброго*передавая мед.карту и паспорт.")
            wait(1250)
            sampSendChat(("/medcard %s"):format(i.." "..3))
            step = 0
        end
        if step == 3 and isKeyDown(50) then
            sampSendChat("/me поставил печать 'Есть отклонения'")
            wait(1250)
            sampSendChat("/me взял в левую руку мед. карту, а паспорт в правую")
            wait(1250)
            sampSendChat("/do Мед.карта и паспорт в руках.")
            wait(1250)
            sampSendChat("/todo Не болейте, всего доброго*передавая мед.карту и паспорт.")
            wait(1250)
            sampSendChat(("/medcard %s"):format(i.." "..2))
            step = 0
        end
        if step == 3 and isKeyDown(51) then
            sampSendChat("/me поставил печать 'Психически не здоров(а)'")
            wait(1250)
            sampSendChat("/me взял в левую руку мед. карту, а паспорт в правую")
            wait(1250)
            sampSendChat("/do Мед.карта и паспорт в руках.")
          wait(1250)
            sampSendChat("/todo Не болейте, всего доброго*передавая мед.карту и паспорт.")
            wait(1250)
            sampSendChat(("/medcard %s"):format(i.." "..1))
            step = 0
        end
        if stape == 3 and isKeyDown(49) then
            sampSendChat("Хорошо, я Вас понял. Вам нужно оформить новую мед.карту.")
            wait(1250)
            sampSendChat("Для оформления карты необходимо заплатить гос.пошлину в размере 8000$, после чего мы продолжим.")
            wait(1250)
            sampSendChat("/b Оплатите с помощью команды /pay или /trade")
            sampAddChatMessage("Нажмите <ENTER>, чтобы продолжить.", -50000)
            stape = 4
        end
        if stape == 4 and isKeyDown(13) then
            sampSendChat("/todo Благодарю, Вас*взяв паспорт в левую руку.")
            wait(1250)
            sampSendChat("/do Паспорт в левой руке.")
            wait(1250)
            sampSendChat("Не волнуйтесь, скоро я его Вам отдам!")
            wait(1250)
            sampSendChat("/me положил паспорт на стол")
            wait(1250)
            sampSendChat("/do Паспорт лежит на столе.")
            wait(1250)
            sampSendChat("/me подошел к столу и сел на стул")
            wait(1250)
            sampSendChat("/me пододвинул правой рукой паспорт к себе и открыл его")
            wait(1250)
            sampSendChat("/do Паспорт открыт.")
            wait(1250)
            sampSendChat("/do Ручка лежит в правом кармане.")
            wait(1250)
            sampSendChat("/me плавным движением левой руки вытащил ручку из кармана")
            wait(1250)
            sampSendChat("/do Ручка в левой руке.")
            wait(1250)
            sampSendChat("/do Чистые бланки для заполнения лежат на столе.")
            wait(1250)
            sampSendChat("/me плавным движением правой руки пододвинул чистые бланки к себе")
            wait(1250)
            sampSendChat("/me начал переписывать данные с паспорта на бланки")
            wait(1250)
            sampSendChat("/do Данные с паспорта переписаны на бланки.")
            wait(1250)
            sampSendChat("Жалобы на здоровье есть?")
            sampAddChatMessage("Нажмите <ENTER>, чтобы продолжить.", -50000)
            stape = 5
        end
        if stape == 5 and isKeyDown(13) then
            sampSendChat("/me записал в бланк")
            wait(1250)
            sampSendChat("Хорошо, теперь маленький тест на психику.")
            wait(1250)
            if z > 3 then
                z = 0
            end
            if z == 0 then
            sampSendChat("Вы видите как горит лес, что Вы будете делать?")
          end
          if z == 1 then
          sampSendChat("Вы видите, как человек упал и схватился за живот, что Вы будете делать?")
         end
          if z == 3 then
          sampSendChat("Вы видите, как несколько людей врываются в банк с оружием, что Вы будете делать?")
         end
            z = z + 1
            sampAddChatMessage("Нажмите <1>, чтобы поставить диагноз 'Полноcтью здоров(ая)'", -50000)
            sampAddChatMessage("Нажмите <2>, чтобы поставить диагноз 'Есть отклонения'", -50000)
            sampAddChatMessage("Нажмите <3>, чтобы поставить диагноз 'Психически не здоров(а)'", -50000)
            stape = 6
        end
        if stape == 6 and isKeyDown(49) then
            sampSendChat("/me поставил печать 'Полноcтью здоров(ая)'")
            wait(1250)
            sampSendChat("/me взял в левую руку мед. карту, а паспорт в правую")
            wait(1250)
            sampSendChat("/do Мед.карта и паспорт в руках.")
            wait(1250)
            sampSendChat("/todo Не болейте, всего доброго*передавая мед.карту и паспорт.")
            wait(1250)
            sampSendChat(("/medcard %s"):format(i.." "..3))
            stape = 0
        end
        if stape == 6 and isKeyDown(50) then
            sampSendChat("/me поставил печать 'Есть отклонения'")
            wait(1250)
            sampSendChat("/me взял в левую руку мед. карту, а паспорт в правую")
            wait(1250)
            sampSendChat("/do Мед.карта и паспорт в руках.")
            wait(1250)
            sampSendChat("/todo Не болейте, всего доброго*передавая мед.карту и паспорт.")
            wait(1250)
            sampSendChat(("/medcard %s"):format(i.." "..2))
            stape = 0
        end
        if stape == 6 and isKeyDown(51) then
            sampSendChat("/me поставил печать 'Психически не здоров(a)'")
            wait(1250)
            sampSendChat("/me взял в левую руку мед. карту, а паспорт в правую")
            wait(1250)
            sampSendChat("/do Мед.карта и паспорт в руках.")
            wait(1250)
            sampSendChat("/todo Не болейте, всего доброго*передавая мед.карту и паспорт.")
            wait(1250)
            sampSendChat(("/medcard %s"):format(i.." "..1))
            stape = 0
        end
    end
end
 

Petr_Sergeevich

Известный
Проверенный
707
297
Lua:
if isKeyJustPressed(0x22) then
  thisScript():terminate()
end

У скрипта нет метода terminate, ты просто положишь его с ошибкой.

По теме:
thisScript():pause(), thisScript():resume()

 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141
Значит архитектура у скрипта не правильно построена и основной поток забит чем-то.

Просто создай новый поток перед началом бесконечного цикла в main и вызывай перезагрузку в нём.
Lua:
lua_thread.create(function() while true do wait(0)
  if isKeyJustPressed(0x22) then
    thisScript():reload()
  end
end end)
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,141

Petr_Sergeevich

Известный
Проверенный
707
297
Спасибо, что следишь за моими ошибками и своевременно поправляешь меня. Я перепутал unload и terminate.
Ты всё равно ему положишь скрипт, он просит поставить на паузу
 

Firus20016

Участник
Автор темы
148
15
Значит архитектура у скрипта не правильно построена и основной поток забит чем-то.

Просто создай новый поток перед началом бесконечного цикла в main и вызывай перезагрузку в нём.
Lua:
lua_thread.create(function()
  if isKeyJustPressed(0x22) then
    thisScript():reload()
  end
end)
сорян, не совсем понял как это работает, вствалял перед беск.циклом но ничего не работает(
 

The Spark

Известный
656
690
сорян, не совсем понял как это работает, вствалял перед беск.циклом но ничего не работает(
Нужно в этом потоке цикл создать и в нём уже проверять нажатие клавиши. А так этот поток проходит 1 раз и падает