Перейти к содержимому


Фотография

[1.7.10] ComputerCraft [1.74]


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2863

#2281 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 12.07.2013 - 13:34

Передавать команды по реднет. Компьютер:
rednet[paste][/paste]open("сторона")while true do    local com = read()    rednet[paste][/paste]send(id_черепахи, com)    local succ, id    repeat        succ, id = rednet[paste][/paste]receive()    until id == id_черепахи    print(succ)end
Черепаха:
rednet[paste][/paste]open("сторона")while true do    local com, id = rednet[paste][/paste]receive()    if id == id_компьютера then        local foo = loadstring(com)        local succ = { pcall(foo) }        rednet[paste][/paste]send(id_компьютера, succ)    endend
Самое простое.

#2282 battlekruiser

battlekruiser

    Зачарователь

  • Пользователи
  • Сообщений: 1857
  • Ник в Minecraft:
    battlekruiser
  • Откуда: С той стороны монитора

Написал 12.07.2013 - 14:34

Аккумулятор из NEI?

Нет, сам крафтил, заряжал в МФЭ

Нажми, чтобы узреть мою подпись:

Скрытый текст

76561198061907053.png

Такие дела, да. А теперь возьми же коробку запятых да расставь по посту своему там, где надо!

Скрытый текст

#2283 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 12.07.2013 - 19:53

Добавил гайд по добавлениию ресурспака. теперь можно менять и добавлять файлы в /rom/. А также добавлять help'ы (у кого-то была проблема).Добавил пример.battlekruiser, проблема либо в MiscPeripherals, либо в сборке. Попробуй батарейки из GregTech, еще из каких-то модов, попробуй собрать такой же (именно CC и MiscPeripherals) клиент сам или попроси друзей потестить этот клиент FTB.Добавил API "io".

#2284 Zaxdo

Zaxdo

    Добытчик алмазов

  • Пользователи
  • Сообщений: 650
  • Откуда: Jita IV/ Moon 4/ Caldari Navy Assembly Plant

Написал 12.07.2013 - 22:23

ЕМНИП возможность зарядки от батарей вообще в одном из апдейтов убрали.
Quidquid latine dictum sit, altum videtur.
Omnis Vestri Substructio Es Servus Ad Nobis.

#2285 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 12.07.2013 - 23:02

Нет.Попытался разобрать игру adventure. 1346 строк О_О. Вот это challenge. Может кто-тотак расскажет? :)

#2286 Ukrainian

Ukrainian

    Странник

  • Пользователи
  • Сообщений: 83

Написал 13.07.2013 - 00:45

У меня ничего не листает. Код. Кстати, новые функции раньше были в возвращаемом хэндлере файла. Я собирался написать это в API. Та же io.lines:

local file = io[paste][/paste]open("test", "r")for line in file[paste][/paste]lines() do    print(line)end

Разобрался, был лишний перевод строки, и когда отдельно тест делал, то не учёл что print, тоже переводить строку. Проблема решена, теперь я использую все 13 строк! А что насчёт io я не понял, мне ведь читать нужно не из файла, а из массива) Возник ещё вопрос, как реализовать комбинации? Например: Ctrl+D? Я не знаю, как следить за тем, что клавиша ещё нажата.

#2287 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 13.07.2013 - 01:11

local function equal(a, b)  for k,v in pairs(a) do    if b[k] ~= v then      return false    end  end  return trueendlocal function pullEvent_with_timer(filter, timer)  local _timer = os[paste][/paste]startTimer(timer)  event, p1, p2, p3, p4, p5 = os[paste][/paste]pullEvent(filter)  if event == "timer" and p1 == _timer then    return nil  end  return event, p1, p2, p3, p4, p5endwhile true do  if equal({ os[paste][/paste]pullEvent() }, {"key", 29}) and  equal({ pullEvent_with_timer(nil, 0[paste][/paste]5) }, {"key", 17}) then    print("OK!")  endend
Если что-то непонятно - жди до завтра. :P По поводу io.lines - я не тебе :). Просто комментирую обновление.

#2288 mistaqur

mistaqur

    Алхимик

  • Главные модераторы
  • Сообщений: 4230
  • Откуда: Санкт-Петербург

Написал 13.07.2013 - 01:47

А что за золотые черепашки? У них цветной экран что ли?

#2289 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 13.07.2013 - 01:55

Агась, не очень интересно. Жду алмазных компов/черепах.

#2290 Vobraz

Vobraz

    Добытчик дерева

  • Пользователи
  • Сообщений: 156

Написал 13.07.2013 - 09:47

        succ, id = rednet[paste][/paste]receive()
Черепаха:
    local com, id = rednet[paste][/paste]receive()

Спасибо! Только вот здесь нужно поменять местами id и текст сообщения, id ведь первым принимается. Теперь работает! P.S. А можно таким образом запустить программу на черепахе?

#2291 Zodiak69

Zodiak69

    Убийца драконов

  • Модераторы
  • Сообщений: 13452
  • Ник в Minecraft:
    Zodiak69

Написал 13.07.2013 - 10:36

Примечание модератора [Zodiak69]
Тема закреплена в связи с откреплением RP2 (следующая по рейтингу).

8g3ZeiD.png


#2292 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 13.07.2013 - 10:53

Можно, конкретно для этого кода
shell[paste][/paste]run("prog", "arg1", [paste][/paste][paste][/paste][paste][/paste])
Zodiak, туц туц туц

#2293 semoro

semoro

    Странник

  • Пользователи
  • Сообщений: 28

Написал 13.07.2013 - 12:34

Нет. Попытался разобрать игру adventure. 1346 строк О_О. Вот это challenge. Может кто-тотак расскажет? :)

[steve] Пффф... MineX OS - 4462 строки, из них 3103 - ядро на чистом Lua, 1359 - сама система на XLua
CraftOs уже не торт? Ставь MineX!
Тысяча ошибок против одного моддера - суровая правда жизни!

#2294 Ukrainian

Ukrainian

    Странник

  • Пользователи
  • Сообщений: 83

Написал 13.07.2013 - 18:31

Скрытый текст

У меня почему то не работает твой код, "ok" выдает только когда нажимаю один Ctrl. Я написал свой вариант с твоей идеей использовать таймеры. И ещё в твоей версии не получится сделать несколько комбинаций с Ctrl, так как os.pullEvent() вызывается внутри проверки...
Мой вариант:
Скрытый текст

нажимаю a:
> A
нажимаю ctrl и a:
> Ctrl+A
И так с остальными: s, d, w. В общем всё работает, кроме того чего я хотел. А хотел я, что-бы:
зажал a:
> A
> A
> A
...
зажал ctrl и a:
> Ctrl+A
> Ctrl+A
> Ctrl+A
...
Но в обеих случаях, после завершения таймера(0.5), выводится A :(
Так же будет интересно, узнать почему твой код не работает.

#2295 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 13.07.2013 - 21:31

local function pullCtrlPlusKey(key)  local e1, p1 = os[paste][/paste]pullEvent()  if e1 ~= "key" or p1 ~= key then    return false  end  local _time = os[paste][/paste]startTimer(0[paste][/paste]015)  local e2, p2 = os[paste][/paste]pullEvent()  if e2 == "char" then    return false  end  return trueend
Не говори что не работает. Передавай в функию код кнопки. Желательно функцию в цикл. Не все успеют нажать кнопку за 0.015 с. Можно цикл прям в функции запилить. З.Ы. у меня всё работает как часы. Хотя самый лучший пример получится, если ты скажешь где и как именно это используется.

#2296 Ukrainian

Ukrainian

    Странник

  • Пользователи
  • Сообщений: 83

Написал 14.07.2013 - 01:05

Хотя самый лучший пример получится, если ты скажешь где и как именно это используется.

Перемещение курсора, так он на одну клетку, а с ctrl будет на 3, просто карта может быть большой.

#2297 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 15.07.2013 - 04:22

local function test()	local e1, e2, p1, p2, _timer	repeat		e1, p1 = os[paste][/paste]pullEvent()	until e1 ~= "key" or p1 ~= 29	_timer = os[paste][/paste]startTimer(0[paste][/paste]015)	e2, p2 = os[paste][/paste]pullEvent()	if e2 == "char" and p2 == keys[paste][/paste]getName(p1) then		return p2	else		return "CTRL+"[paste][/paste][paste][/paste]keys[paste][/paste]getName(p1)	endend


#2298 Ukrainian

Ukrainian

    Странник

  • Пользователи
  • Сообщений: 83

Написал 16.07.2013 - 16:36

Я так понял, нужно написать:
while true do	print(test())	end
Но тогда выводится что-то непонятное, нажимаю a, оно мне пишет ctrl+one.
Можешь объяснить, как это работает?

#2299 Apokalypsys

Apokalypsys

    Добытчик дерева

  • Пользователи
  • Сообщений: 183

Написал 16.07.2013 - 16:48

Я не знаю, у меня всё работает. И с контролом и без него.Суть:Клавиша возвращает 2 события: key и char. Если есть key, но нет char - значит зажат ctrl.

#2300 kirill51902

kirill51902

    Странник

  • Пользователи
  • Сообщений: 14
  • Откуда: Беларусь Минск

Написал 18.07.2013 - 11:15

Черепаха-автошахтёр v2.0

Скрытый текст

У меня черепаха стоит на месте и крутится просто если зарнаие команду refuel пропишу она немного поработет а потом опять стопится как это исправить??


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных