local w = {
{ask = 'Викторина: Сколько будет 150*10+6-4? %S+Ответ пишите в чат%S+', answ = '1 502'},
{ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?', answ = '32'}
}
require('lib.samp.events').onServerMessage = function(color, text)
for i = 1, #w do
if text:find(w[i].ask) then
sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ, -1)
sampSendChat(w[i].answ)
return true
end
end
end
А как сделать чтоб он отвечал на 1 вопрос несколькими ответами отдельным сообщением?Lua:local w = { {ask = 'Викторина: Сколько будет 150*10+6-4? %S+Ответ пишите в чат%S+', answ = '1 502'}, {ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?', answ = '32'} } require('lib.samp.events').onServerMessage = function(color, text) for i = 1, #w do if text:find(w[i].ask) then sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ, -1) sampSendChat(w[i].answ) return true end end end
что-то типа такого
local w = {
{
ask = 'Викторина: Сколько будет 150*10+6-4?',
answ = {'1502', '1 502'},
},
{
ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?',
answ = {'32', 'тридцать два', '32 зуба', '32 teeth'},
},
}
require('lib.samp.events').onServerMessage = function(color, text)
for i = 1, #w do
if text:find(w[i].ask, 1, true) then
sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ, -1)
for j = 1, #w[i].answ do
sampSendChat(w[i].answ[j])
sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1)
end
return true
end
end
end
(error) autoquiz.lua: .../Android/media/com.arizona.game/monetloader/autoquiz.lua:15: attempt to concatenate field 'answ' (a table value) stack traceback: .../Android/media/com.arizona.game/monetloader/autoquiz.lua:15: in function 'callback' ...ia/com.arizona.game/monetloader/lib/samp/events/core.lua:79: in function <...ia/com.arizona.game/monetloader/lib/samp/events/core.lua:53> [02:36:55.095199] (error) autoquiz.lua: Script died due to an error.
local w = {
{
ask = 'Викторина: Сколько будет 150*10+6-4?',
answ = {'1502', '1 502'},
},
{
ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?',
answ = {'32', 'тридцать два', '32 зуба', '32 teeth'},
},
}
require('lib.samp.events').onServerMessage = function(color, text)
for i = 1, #w do
if text:find(w[i].ask, 1, true) then
sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1)
for j = 1, #w[i].answ do
sampSendChat(w[i].answ[j])
sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1)
end
return true
end
end
end
Не работаетLua:local w = { { ask = 'Викторина: Сколько будет 150*10+6-4?', answ = {'1502', '1 502'}, }, { ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?', answ = {'32', 'тридцать два', '32 зуба', '32 teeth'}, }, } require('lib.samp.events').onServerMessage = function(color, text) for i = 1, #w do if text:find(w[i].ask, 1, true) then sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1) for j = 1, #w[i].answ do sampSendChat(w[i].answ[j]) sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1) end return true end end end
sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1)
local w = {
{
ask = 'Викторина: Сколько будет 150*10+6-4?',
answ = {'1502', '1 502'},
},
{
ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?',
answ = {'32', 'тридцать два', '32 зуба', '32 teeth'},
},
}
require('lib.samp.events').onServerMessage = function(color, text)
local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '')
for i = 1, #w do
if clear:find(w[i].ask, 1, true) then
sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1)
for j = 1, #w[i].answ do
sampSendChat(w[i].answ[j])
sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1)
end
return true
end
end
end
Не отправляет 2 ответПосмотреть вложение 277736
всё работает, ключ [1] пропустил.
Lua:sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1)
Lua:local w = { { ask = 'Викторина: Сколько будет 150*10+6-4?', answ = {'1502', '1 502'}, }, { ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?', answ = {'32', 'тридцать два', '32 зуба', '32 teeth'}, }, } require('lib.samp.events').onServerMessage = function(color, text) local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '') for i = 1, #w do if clear:find(w[i].ask, 1, true) then sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1) for j = 1, #w[i].answ do sampSendChat(w[i].answ[j]) sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1) end return true end end end
local w = {
{
ask = 'Викторина: Сколько будет 150*10+6-4?',
answ = {'1502', '1 502'},
},
{
ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?',
answ = {'32', 'тридцать два', '32 зуба', '32 teeth'},
},
}
require('lib.samp.events').onServerMessage = function(color, text)
local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '')
for i = 1, #w do
if clear:find(w[i].ask, 1, true) then
sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1)
for j = 1, #w[i].answ do
sampSendChat(w[i].answ[j])
sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1)
end
return true
end
end
end
Посмотреть вложение 277737
Lua:local w = { { ask = 'Викторина: Сколько будет 150*10+6-4?', answ = {'1502', '1 502'}, }, { ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека?', answ = {'32', 'тридцать два', '32 зуба', '32 teeth'}, }, } require('lib.samp.events').onServerMessage = function(color, text) local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '') for i = 1, #w do if clear:find(w[i].ask, 1, true) then sampAddChatMessage('Найден ответ на вопрос: '..w[i].ask..' Ответ: '..w[i].answ[1], -1) for j = 1, #w[i].answ do sampSendChat(w[i].answ[j]) sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1) end return true end end end
всё отправляет, скинь строчку из чатлога или скрином. Что там?
local w = {
{
ask = 'Викторина: Сколько будет 150*10+6-4? (Ответ пишите в чат)',
answ = {'1502', '1 502'},
type = 'text' --текс
},
{
ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека? (Ответ пишите цифрой в чат)',
answ = {'32', 'тридцать два', '32 зуба', '32 teeth'},
type = 'number' --цифра
},
{
ask = 'Викторина: Кто нарисовал Мону Лизу? (Ответ пишите цифрой в чат)',
answ = {'1. Винсент Ван Гог', '2. Леонардо Да Винчи', '3. Пабло Пикассо', '4. Клод Моне'},
correct = '2',
type = 'choice' --варианты
},
}
require('lib.samp.events').onServerMessage = function(color, text)
local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '')
for i = 1, #w do
if clear:find(w[i].ask, 1, true) then
sampAddChatMessage('Найден вопрос: '.. w[i].ask, -1)
local responseType = w[i].type or detectResponseType(clear)
if responseType == 'choice' and w[i].correct then
sampSendChat(w[i].correct)
elseif responseType == 'number' then
sampSendChat(w[i].answ[1])
else
lua_thread.create(function()
for j = 1, #w[i].answ do
wait(100)
sampSendChat(w[i].answ[j])
sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1)
end
end)
end
return true
end
end
end
function detectResponseType(text)
if text:find('пишите цифрой') or text:find('выберите цифру') or text:find('номер ответа') then
return 'choice'
elseif text:find('пишите в чат') or text:find('напишите ответ') then
return 'text'
elseif text:find('цифрой') or text:find('числом') then
return 'number'
end
return 'text' -- по умолчанию
end
local w = {
{
ask = 'Викторина: Сколько будет 150*10+6-4? (Ответ пишите в чат)',
answ = '1502'
},
{
ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека? (Ответ пишите цифрой в чат)',
answ = '32'
},
{
ask = 'Викторина: Кто нарисовал Мону Лизу? (Ответ пишите цифрой в чат)',
answ = '2'
}
}
require('lib.samp.events').onServerMessage = function(color, text)
local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '')
for i = 1, #w do
if clear:find(w[i].ask, 1, true) then
sampSendChat(w[i].answ)
sampAddChatMessage('Отправлен ответ: ' .. w[i].answ, -1)
return true
end
end
end
Там вопросов полно и по этому я взял просто "{00a1fa}Викторина: " и хотел чтоб он просто писал 1 2 3 4 только не 1 сообщениемПосмотреть вложение 277741нашёл в чем прикол, не увидел изначально варианты. (Ответ пишите цифрой в чат) + (Ответ пишите в чат). Хотя можно было бы и просто и по зелёному тексту найти ответ что бы не вписывать каждый вариант из ответов, вдруг сейчас он под 2 номером, через час будет под 1 номером. Сделать вопрос = ответ
Lua:local w = { { ask = 'Викторина: Сколько будет 150*10+6-4? (Ответ пишите в чат)', answ = {'1502', '1 502'}, type = 'text' --текс }, { ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека? (Ответ пишите цифрой в чат)', answ = {'32', 'тридцать два', '32 зуба', '32 teeth'}, type = 'number' --цифра }, { ask = 'Викторина: Кто нарисовал Мону Лизу? (Ответ пишите цифрой в чат)', answ = {'1. Винсент Ван Гог', '2. Леонардо Да Винчи', '3. Пабло Пикассо', '4. Клод Моне'}, correct = '2', type = 'choice' --варианты }, } require('lib.samp.events').onServerMessage = function(color, text) local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '') for i = 1, #w do if clear:find(w[i].ask, 1, true) then sampAddChatMessage('Найден вопрос: '.. w[i].ask, -1) local responseType = w[i].type or detectResponseType(clear) if responseType == 'choice' and w[i].correct then sampSendChat(w[i].correct) elseif responseType == 'number' then sampSendChat(w[i].answ[1]) else lua_thread.create(function() for j = 1, #w[i].answ do wait(100) sampSendChat(w[i].answ[j]) sampAddChatMessage(string.format('Ответ %d: %s', j, w[i].answ[j]), -1) end end) end return true end end end function detectResponseType(text) if text:find('пишите цифрой') or text:find('выберите цифру') or text:find('номер ответа') then return 'choice' elseif text:find('пишите в чат') or text:find('напишите ответ') then return 'text' elseif text:find('цифрой') or text:find('числом') then return 'number' end return 'text' -- по умолчанию end
Lua:local w = { { ask = 'Викторина: Сколько будет 150*10+6-4? (Ответ пишите в чат)', answ = '1502' }, { ask = 'Викторина: Сколько зубов должно быть во рту взрослого человека? (Ответ пишите цифрой в чат)', answ = '32' }, { ask = 'Викторина: Кто нарисовал Мону Лизу? (Ответ пишите цифрой в чат)', answ = '2' } } require('lib.samp.events').onServerMessage = function(color, text) local clear = text:gsub('~%x%x%x%x%x%x', ''):gsub('~%x%x%x', '') for i = 1, #w do if clear:find(w[i].ask, 1, true) then sampSendChat(w[i].answ) sampAddChatMessage('Отправлен ответ: ' .. w[i].answ, -1) return true end end end
ну да, зачем делать велосипед если есть героскутер, вот упрощенный вариант. Зачем давать несколько вариантов ответов на 1 вопрос если требуется "Ответ пишите цифрой в чат + варианты ответов и что-то из ответов надо выбрать, другого варианта нет" и "Ответ пишите в чат. Пример: 150*10+6-4 = 1502 , зачем сюда еще несколько доп.ответов если оно того не требует?"). Я изначально скинул готовый вариант, разве нет?
if text:find('Викторина: .+') then
--cod
end
if text:find('.+') then
--cod
end
local number = {1, 2, 3, 4}
require('lib.samp.events').onServerMessage = function(color, text)
if text:find('Викторина: .+ %S+Ответ пишите цифрой в чат%S+') then
for i = 1, #number do
sampSendChat(number[i])
end
end
end
Там по цифрам идёт ответОго ты захотел, а как оно поймет что туда вписывать без конкретики? Решил обойтись просто
Lua:if text:find('Викторина: .+') then --cod end
Ты так хотел? Ну с козырей получается заходишь, а как оно поймет на что отвечать без вопроса=ответа? Это базу данных в любом случае придётся заполнять, что бы давать нормальные ответы. Ты бы ещё ебанул такой формат:
Lua:if text:find('.+') then --cod end
А чего нам, пусть само ищет))
Lua:local number = {1, 2, 3, 4} require('lib.samp.events').onServerMessage = function(color, text) if text:find('Викторина: .+ %S+Ответ пишите цифрой в чат%S+') then for i = 1, #number do sampSendChat(number[i]) end end end
Если только на такой вопрос триггер, а на (Ответ пишите в чат) там нет вариантов ответа и придется самому вписывать их. И-то, подобный вопрос который был про зубы - данный вариант тоже не подойдёт.