LUA | Объединение функций

3211Marlon1123

Участник
Автор темы
135
13
Версия MoonLoader
.027.0-preview
Возможно ли сделать функцию в функции?
Например, если не прописать команду, то в диалоге ничего писаться не будет( диалог с пикапа), а если прописать - то будет.

Пример:

есть 2 функции. Одна из них - event(модуль), другая - команда
Можно ли их объединить, чтобы только после команды можно было lua отвечать на диалог?

P.s. main и require не пишу в данном примере, но в луа задам
smile


Lua:
function sampev.onShowDialog(slot0)
   if slot0 == 872 then
      sampSendDialogResponse(slot0, 1, nil, nil)
   end
end

function cmd_table()
   sampSendChatMessage("ON", main_color)
end
 

3211Marlon1123

Участник
Автор темы
135
13
Переменную-флаг используй.

Lua:
local state = false

sampRegisterChatCommand('toggle', function () state = not state end)

function sampev.onShowDialog(slot0)
    if state and slot0 == 872 then
        sampSendDialogResponse(slot0, 1, nil, nil)
    end
end
До меня дошло, но я не понимаю, почему в sampRegisterChatCommand('toggle', function () state = not state end) написаны апострафы и что значит после запятой, скажем так условия
Переменную-флаг используй.

Lua:
local state = false

sampRegisterChatCommand('toggle', function () state = not state end)

function sampev.onShowDialog(slot0)
    if state and slot0 == 872 then
        sampSendDialogResponse(slot0, 1, nil, nil)
    end
end
и почему local state = false ?
 
Последнее редактирование:

cheremuxa

Известный
428
203
До меня дошло, но я не понимаю, почему в sampRegisterChatCommand('toggle', function () state = not state end) написаны апострафы и что значит после запятой, скажем так условия

и почему local state = false ?
local state = false - значение state по умолчанию т.е false - выключено, true - включено
sampRegisterChatCommand('toggle', function () state = not state end)
'toggle' - команда, далее идет запятая, function() - функция которая выполнится после написания команды 'toggle',

state = not state - меняет значение state, если true то ставит false, и наоборот,
далее закрываем function() end'ом и закрываем скобкой sampRegisterChatCommand
 

3211Marlon1123

Участник
Автор темы
135
13
local state = false - значение state по умолчанию т.е false - выключено, true - включено
sampRegisterChatCommand('toggle', function () state = not state end)
'toggle' - команда, далее идет запятая, function() - функция которая выполнится после написания команды 'toggle',

state = not state - меняет значение state, если true то ставит false, и наоборот,
далее закрываем function() end'ом и закрываем скобкой sampRegisterChatCommand
Дошло, руки целовать буду :D
Спасибо
 
  • Нравится
Реакции: cheremuxa