Цитата(Fors1k @ 26.7.2019, 5:46)

Если я правильно понял задачу...
Допустим A=0, идем к B, B=0, идем к C, C=1, должны в логе увидеть "#C = true Сейчас Шаг №3", но если в этот момент и A тоже равно 1, то мы уйдем наверх, на более приоритетную задачу(A), даже если для C подходит условие.
Ну да)
Цитата(Fors1k @ 26.7.2019, 19:27)

Опиши условия а б с, и что должно в них выполняться. Попробуем собрать.
Имеется дерево приоритетов:
1 -выжить
2 -атаковать
3 -собрать ресурсы
При любой угрозе выживанию должно переходить к 1 блоку и там проверять и выполнять какие-то условия. Но часто бывает что скрипт увлекается нижестоящими действиями забывая о первостепенной задаче. В то же время существуют моменты, когда атака сама по себе важнее выживания, потому что не все условия в блоке можно проверить и задать, нужно ветвление блоков, которые бы переходили к нижестоящим по приоритету(но в то же время проверяло вышестоящие). короче хочу всё и понемногу))))))) Вобщем и целом я не знаю как задать параметры управления скриптом, чтобы в случае чего у меня блоки переходили к нижестоящим игнорируя более приоритетные, а в обычном состоянии выполняли всё строго по приоритету. Т.е. их нужно еще "ветвить" и задавать какие-то условия переключения от блока к блоку.
т.е. при отсутствии более приоритетного нужно чтобы переходило по списку ниже, опять же я не знаю как работает приведенный скрипт:
Код
while 1 do
if A then
send A
end
if B then
send B
end
if C then
send C
end
Он возвращает проверку в начало цикла после каждого If или нет?
Цитата(DarkMaster @ 26.7.2019, 21:23)

А не подойдет ли стандартная конструкция типа:
Код
while 1 do
if var1 = 1 then
code
elseif var2 = 2 then
code
elseif var3 = 3 then
code
elseif var4 = 4 then
code
end
end
Т.е. это по сути switch конструкция. Таймеры так же возможны:
Код
local timeout = os.clock() + 5
while timeout > os.clock() do
code
end
Вашу конструкцию я вообще не понял..
что означает "var1" ?
elseif как я понял это условное сокращение команды if ... then ... else чтобы не писать её в несколько строк... которое сразу задаёт блоку статус переходного, в случае отрицательности проверки его условия.
- кое- что нашел для elseif
Цитата
И вообще по-идее в таких ситуациях нужно пользоваться оператором ветвления (switch\case\select и т.д). Но во многих языках он обладает неприятными ограничениями, которые заставляют пользоваться вышеупомянутой конструкцией.
Имеет ли Lua тут какие-то ограничения упомянутые?
Имеется ли какая-то разница между return и просто выполнением условием в цикле когда нужен возврат к его началу в таком скрипте как ниже?
Код
while 1 do
if A then
send A /return?
else
if B then
send B/return?
else
if C then
send C/return?
else
end
end
end
end