Не закрывается диалог.

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

SeReNtiNo

Известный
Автор темы
58
11
Делаю антикапчу для даймонда.
Вопросик, скрипт, когда находит ответ в базе, записывает его, но диалог не закрывает, даже с командой sampCloseCurrentDialogWithButton(0). На даймонде фишка, что если диалог открыт, то комманды вводить не льзя. Хелпаните пожалуйста.
(Луа только учу, поэтому тут говнокод немного)
Lua:
script_name("AutoCaptcha")
script_authors("SeReNtiNo")
script_dependencies("CLEO")
require "lib.moonloader"
local sampev = require 'lib.samp.events'
require "lib.sampfuncs"
local key = require 'vkeys'

local valuecap = 45
function main()
sampfuncsLog("AutoCaptcha. verison: 0.1(Загружено: "..valuecap.." капч)")
end

function sampev.onShowDialog(dialogId, style, caption, b1, b2,text)
--sampfuncsLog(text)
if string.find(text, "В какую игру Вы сейчас играете?") then -- 45 штуки
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} GTA SAMP(3)",0xFFFFFF)
end
if string.find(text, "Отметьте цифру 15") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 15(2)",0xFFFFFF)
end
if string.find(text, "Какой сейчас год?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 2018(1)",0xFFFFFF)
end
if string.find(text, "Какое время года идёт после зимы?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Весна(1)",0xFFFFFF)
end
if string.find(text, "На каком СЕРВЕРЕ Вы сейчас играете?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Emerald(1)",0xFFFFFF)
end
if string.find(text, "Сколько букв в имени TANYA") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 5(4)",0xFFFFFF)
end
if string.find(text, "Сколько букв в имени ROMEO") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 5(3)",0xFFFFFF)
end
if string.find(text, "Что такое GTA SAMP?") then
sampSendDialogResponse(673, 1, 0, 4)
enableDialog(true)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Игра(4)",0xFFFFFF)
end
if string.find(text, "Что снизу Вашего персонажа?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Ноги(3)",0xFFFFFF)
end
if string.find(text, "Какого цвета трава?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Зеленая(3)",0xFFFFFF)
end
if string.find(text, "Чем облизывает человек?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Языком(2)",0xFFFFFF)
end
if string.find(text, "Чем слышит человек других людей?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Ушами(2)",0xFFFFFF)
end
if string.find(text, "Сколько ногтей на пяти пальцах?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Пять(1)",0xFFFFFF)
end
if string.find(text, "Сколько всего часов в одном дне?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 24(2)",0xFFFFFF)
end
if string.find(text, "Выберите слово КИТ") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} КИТ(3)",0xFFFFFF)
end
if string.find(text, "Правильный ответ на пример 2 плюс шесть?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 8(4)",0xFFFFFF)
end
if string.find(text, "На чем сидите?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} На машине(1)",0xFFFFFF)
end
if string.find(text, "Чем видит человек окружающий мир?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Глазами(3)",0xFFFFFF)
end
if string.find(text, "С помощью чего ходит здоровый человек?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} С помощью ног(3)",0xFFFFFF)
end
if string.find(text, "Что растет на голове?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Волосы(2)",0xFFFFFF)
end
if string.find(text, "Сколько будет два плюс пять?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 7(2)",0xFFFFFF)
end
if string.find(text, "Правильный ответ на пример 6 минус 3?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 3(3)",0xFFFFFF)
end
if string.find(text, "Сколько городов на сервере?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 3(3)",0xFFFFFF)
end
if string.find(text, "На каком сервере вы играете ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Триллиант(1)",0xFFFFFF)
end
if string.find(text, "Сколько будет 2 плюс 2 ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 4(2)",0xFFFFFF)
end
if string.find(text, "Какое количество мест на нашем сервере ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 1000(1)",0xFFFFFF)
end
if string.find(text, "Как называется наш проект ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Дайменд(1)",0xFFFFFF)
end
if string.find(text, "Прибор для измерения времени ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Часы(2)",0xFFFFFF)
end
if string.find(text, "Слово состоящее из Ля и Гушка?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Лягушка(2)",0xFFFFFF)
end
if string.find(text, "Кто из списка лишний ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Дом(4)",0xFFFFFF)
end
if string.find(text, "Кто делает мяу мяу ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Кот(4)",0xFFFFFF)
end
if string.find(text, "У какой геометрической фигуры нет углов?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Круг(3)",0xFFFFFF)
end
if string.find(text, "Кто делает гав гав ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Собака(4)",0xFFFFFF)
end
if string.find(text, "Что делают в больнице ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Лечат(1)",0xFFFFFF)
end
if string.find(text, "Какое слово состоит из 3 букв?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} три(3)",0xFFFFFF)
end
if string.find(text, "Что делают собаки ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Гавкают(4)",0xFFFFFF)
end
if string.find(text, "Сколько пальцев на руке ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 5(1)",0xFFFFFF)
end
if string.find(text, "Какой банды не существует на сервере?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Грифоны(4)",0xFFFFFF)
end
if string.find(text, "Какой игры мультиплеер вы играете?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 3TA san andreas(3)",0xFFFFFF)
end
if string.find(text, "Сколько букв в слове Экстракт?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 8(4)",0xFFFFFF)
end
if string.find(text, "Столица России это?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Москва(3)",0xFFFFFF)
end
if string.find(text, "Какой месяц идет после Января?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Февраль(2)",0xFFFFFF)
end
if string.find(text, "Сколько букв в слове Завод?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Пять(3)",0xFFFFFF)
end
if string.find(text, "Кто был Бессмертным?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Кощей(1)",0xFFFFFF)
end
if string.find(text, "Что такое DeatMatch ?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Убивать всех подряд без причины(2)",0xFFFFFF)
end
if string.find(text, "На что спящий человек кладет голову во время сна?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Подушка(1)",0xFFFFFF)
end
if string.find(text, "Что из ниже перечисленного относится к цитрусам?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Апельсин(2)",0xFFFFFF)
end
if string.find(text, "Сколько будет 10 умножить на 10?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 4)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} 100(4)",0xFFFFFF)
end
if string.find(text, "На какоъ планете живут Марсиане?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 2)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Марс(2)",0xFFFFFF)
end
if string.find(text, "Сколько ножек у стула?") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 1)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Четыре(1)",0xFFFFFF)
end
if string.find(text, "Президентом какой страны является Владимир Владимирович Пути") then
enableDialog(true)
sampSendDialogResponse(673, 1, 0, 3)
sampCloseCurrentDialogWithButton(0)
sampAddChatMessage("Ответ был найден в базе:{007dff} Россия(3)",0xFFFFFF)
end
end

function enableDialog(bool)
    local memory = require 'memory'
    memory.setint32(sampGetDialogInfoPtr()+40, bool and 1 or 0, true)
    sampToggleCursor(bool)
end

И если можно, дайте идею, как оптимизировать код, спасибо.
 

RedBoxWhite

Известный
337
27
sampSendDialogResponse(673, 1, 0, 1)
Тебе его (диалог) и закрывать необязательно, потому что для сервера у тебя уже закрыт он. и sampCloseDialogWithButton() не будет работать, потому что когда только тебе все это приходит, самого диалога ещё нет (надеюсь, понятно написал). юзай return false, короче. И почему main без цикла?
 
  • Нравится
Реакции: SeReNtiNo

Aniki

🐰
Администратор
1,229
1,568
И если можно, дайте идею, как оптимизировать код, спасибо.
По-хорошему эту базу с ответами стоит хранить в ini-файле, тогда код будет НАМНОГО компактнее. Смотри примеры работы с inicfg, ну и сделай все то что тебе уже подсказали выше
 

AnWu

Известный
Всефорумный модератор
4,772
5,397
фишка в том что сервер снача получает от тебя ответ а потом показывает диалог. надо искать пути обхода. максимальный лвл костылей. я кстати и не обошел это
 
Статус
В этой теме нельзя размещать новые ответы.