[1.7.10] ComputerCraft [1.74]
#2242
Написал 08.07.2013 - 10:54
У тебя sleep выполняется только --если проверка прошла.Вот код, но он не хочет работать, уже устал с ним бороться.
В противном случае через три секунды комп отключится.
И еще, по моему, в конце end нужен
#2243
Написал 08.07.2013 - 14:48
local targets = sensor[paste][/paste]wrap(sideSensor)[paste][/paste]getTargets() local s = 1 for name in pairs(targets) do nameT[s] = tostring(name) s = s + 1 endобрабатываются только ключи, а не значения. Попробуй так:
[paste][/paste][paste][/paste][paste][/paste]for i,name in pairs(targets) do[paste][/paste][paste][/paste][paste][/paste]
#2244
Написал 08.07.2013 - 17:18
print(string[paste][/paste]gmatch("2 4", "%d%d"))Неужели функция string.gmatch работает только так: for ... in string.gmatch(..) do ?
#2245
Написал 08.07.2013 - 17:57
#2246
Написал 08.07.2013 - 17:59
#2247
Написал 08.07.2013 - 18:12
a,b=string.match("2 4", "(%d+)%s+(%d+)")
Все зависит от того, чего хотел автор
#2248
Написал 08.07.2013 - 18:58
Благодарю, именно это мне и нужно.Если нужен результат, используй string.match("2 4", "%d%d")
Зачем 2 раза %d? Этот шаблон будет возвращать двухзначные числа.
То есть пробел нужно тоже учитывать? И забавно, если:Ну, я на параметры даже не глянул. Правильно, наверное, как то так
a,b=string.match("2 4", "(%d+)%s+(%d+)")
Все зависит от того, чего хотел автор
a,b,c = string[paste][/paste]match("2 4", "(%d)(%s)(%d)")То будет: a="2", b=" ", c="4". А если написать так:
a,b,c = string[paste][/paste]match("2 4", "%d%s%d")То будет: a="2 4", b=nil, c=nil. Я так понял, что всё что между '(' и' )' будет выводиться отдельно.
#2249
Написал 08.07.2013 - 19:34
В первом параметре имя игрока, а во втором таблица с данными игрока, в которой первой строчкой идет кол-во жизни. Спасибо конечно, но это я пробовал не помогло. У меня тут в общей логике ошибка. Я сделал инкапсуляцию сравнения, но это не сильно помогло. тут надо саму логику работы смотреть, проверка у меня проходит всего 1 раз, и всё, как вариант искусственный сброс по таймеру, но это хреново работает двери открываются и закрываются если я рядом стою. А ошибки в коде это фигня, код переписывал по памяти перед сном.И еще. На сколько я понял, getTargets() возвращает таблицу, ключи в которой целочисленные, а значения - имена целей. В твоем же примере
local targets = sensor[paste][/paste]wrap(sideSensor)[paste][/paste]getTargets() local s = 1 for name in pairs(targets) do nameT[s] = tostring(name) s = s + 1 endобрабатываются только ключи, а не значения. Попробуй так:[paste][/paste][paste][/paste][paste][/paste]for i,name in pairs(targets) do[paste][/paste][paste][/paste][paste][/paste]
#2250
Написал 08.07.2013 - 21:00
Я сделал инкапсуляцию сравнения
Инкапсуляция - сокрытие механизма реализации, тоесть ограничение видимости переменных и методов только внутри класса, обьекта.
И да, тебе никто не поможет, пока ты не дашь инфы. Я даже пытаться не буду. Твое описание проблемы крайне туманно - не понятно как именно и что именно не работает.
#2251
Написал 09.07.2013 - 10:53
Дело в том, что в первом примере шаблон содержит захваты (выражения в круглых скобках). В этом случае match возвращает захваченные значения (в примере их три - цифра, пробел и цифра). Если шаблон захватов не содержит, то match возвращает только одно значение - подстроку, удовлетворяющую шаблону. Поэтому то b=nil, c=nil Лично я начитался про шаблоныИ забавно, если: a,b,c = string.match("2 4", "(%d)(%s)(%d)") То будет: a="2", b=" ", c="4". А если написать так: a,b,c = string.match("2 4", "%d%s%d") То будет: a="2 4", b=nil, c=nil.
#2253
Написал 09.07.2013 - 13:51
Да, я понял.Дело в том, что в первом примере шаблон содержит захваты (выражения в круглых скобках). В этом случае match возвращает захваченные значения (в примере их три - цифра, пробел и цифра). Если шаблон захватов не содержит, то match возвращает только одно значение - подстроку, удовлетворяющую шаблону. Поэтому то b=nil, c=nil
Ссылка очень кстати. Подробно всё расписано, благодарю.Лично я начитался про шаблоны тут
Смена власти?)Отдаю тему Apokalypsys'у. Зодиак, сделаешь?
#2254
Написал 09.07.2013 - 16:16
Извиняюсь перепутал термины, надо написать законтейнерил, так как пост писал я когда глаза закрывались. Ну да пофиг.Я сделал инкапсуляцию сравнения
Инкапсуляция - сокрытие механизма реализации, тоесть ограничение видимости переменных и методов только внутри класса, обьекта.
И да, тебе никто не поможет, пока ты не дашь инфы. Я даже пытаться не буду. Твое описание проблемы крайне туманно - не понятно как именно и что именно не работает.
Проблема в том что алгоритм срабатывает 1 раз, и всё. То есть дверь открывается и не закрывается. И я не могу понять что я сделал не так. Логика работы вроде верная, но не работает.
Щас сяду дальше мучат.
#2255
Написал 09.07.2013 - 16:39
local nameT = {}и вставь после
local s = 1тоесть
local s = 1local nameT = {}Таблица не сбрасывалась и "засветившиеся" пользователи оставались там навсегда, вот и не закрывается. Сбросилось бы только если бы он обнаружил столько же неавторизированных пользователей, сколько авторизированных до этого.
#2257
Написал 09.07.2013 - 20:35
#2259
Написал 09.07.2013 - 20:43
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных