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


Фотография

[1.7.10] ComputerCraft [1.74]


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

#2421 Minik

Minik

    Опечаленный гастами

  • Пользователи
  • Сообщений: 2908
  • Откуда: Rivendell

Написал 14.08.2013 - 17:32

Уу..тогда оставлю эту идею. Я черепах то знаю на уровне взять/положить/накопать/построить коробку. Остальное темный лес.

#2422 Vitduo

Vitduo

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

  • Пользователи
  • Сообщений: 168
  • Откуда: Город Черепашкино

Написал 15.08.2013 - 00:03

Как использовать черепашки с кранниками, лазерами, ведрами, сканерами? Какая команда на использование инструмента? P. S. КомпуторКрафт не использует лук из комбо арморс... Жаль, было бы веселье
Добра вам!
)=/

#2423 Lexor

Lexor

    Добытчик угля

  • Пользователи
  • Сообщений: 399
  • Откуда: Иркутская область

Написал 15.08.2013 - 02:21

Как использовать черепашки с кранниками, лазерами, ведрами, сканерами?

С большинством инструментов все весьма просто - команды стандартные: "копать" и "атаковать". Со сканерами чуть сложнее их апи смотри там, где взял аддон их добавляющий.

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

Была у меня подобная идея, даже протокол собственный для связи имеется, остался от карьера, копаемого несколькими черепахами по определенному плану, задаваемому сервером. Но так и не реализовал - лень :) Одну черепаху, путешествующую за мной (но не атакующую) делал. А вообще радиус сенсора не такой уж и большой - 28 блоков, т.е возможно и не хватит одного сенсора на базу. Ну и не трудно догадаться, что такая оборона весьма уязвима к криперам.

#2424 Vitduo

Vitduo

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

  • Пользователи
  • Сообщений: 168
  • Откуда: Город Черепашкино

Написал 15.08.2013 - 09:46

Хм... Я даже не знаю откуда я ее взял... Юзает сканеры ИК2... Вроде OV сканер. З. Ы. Тут еще черепаха с компасом. А вообще, у кого КК и НЕИ, клацните ПКМ по черепахе в меню предметов...UPD. Кто потер пост апокалипсиса? Чуть дабл не сделал =/ и как юзать компасную черепаху, расскажите юному паданеофиту
Добра вам!
)=/

#2425 Apokalypsys

Apokalypsys

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

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

Написал 15.08.2013 - 21:23

Я стер. Уже не надо :). А что в описании мода не написано?
turtle[paste][/paste]getFacing()
Стороны как по F3 Вот вам задачка. Для реализации функции хеша md5 необходимо API "bit", но не то кторое в CC. Почему
Скрытый текст
Следовательно нужно писать самому. И это на языке сценариев! И реализация md5 уже не такая простая :). Балуйтесь:
Скрытый текст
По мне так интересно. 150 сообщение. Тест bit._bor()
ВводРезультатПравильный результат
271733878, -2004318073-1732584201-1732584201
271733878, -2004318074-1732584202-1732584202
271733878, -2004318072-1732584202-1732584194
Эта железяка надо мною издевается.

#2426 Dimus

Dimus

    Странник

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

Написал 16.08.2013 - 13:01

Функцию bit.add напиши так
function bit[paste][/paste]add(x, y)   local remember_bit = 0   local z = ""   x, y = to_equal_length(x, y)   for i = x:len(),1,-1 do      z = bit[paste][/paste]bxor(bit[paste][/paste]bxor(tonumber(x:sub(i, i)), tonumber(y:sub(i, i))), remember_bit)[paste][/paste][paste][/paste]z      remember_bit =bit[paste][/paste]brshift( (tonumber(x:sub(i, i)) + tonumber(y:sub(i, i)) + remember_bit) , 1 )   end   if remember_bit == 1 then      if z:len() == 64 then         z = string[paste][/paste]rep("0", 64)      else         z = tostring(1)[paste][/paste][paste][/paste]z      end   end   return zend
и будет счастье.
(Обратить внимание на расчет remember_bit)

#2427 Apokalypsys

Apokalypsys

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

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

Написал 16.08.2013 - 14:03

Да, теперь хеширует. Я там даже не искал. Уважуха. :). Оптимизирую и выложу код. Скрытый текст
Я опробывал другой вариант: с помощью API "http" делаю запрос на свой сервер, который считает и возвращает текст в виде строки.
ТипВремя, с
offline2.3
online0.2
А еще online-вариант поддерживает
Скрытый текст
local tArgs = { [paste][/paste][paste][/paste][paste][/paste] }if #tArgs == 1 then	local respond = http[paste][/paste]get("http://bps[paste][/paste]p[paste][/paste]ht/scripts/hash_algos[paste][/paste]php")	if respond then		print(string[paste][/paste]gmatch(respond[paste][/paste]readAll(), '', '\n')	endendif #tArgs ~= 2 then	print("Usage "[paste][/paste][paste][/paste]os[paste][/paste]getRunningProgramm()[paste][/paste][paste][/paste]" <type> <text> or -a for look at all supports algos")	returnendlocal keys = "type="[paste][/paste][paste][/paste]tArgs[1][paste][/paste][paste][/paste]			 "&text="[paste][/paste][paste][/paste]tArgs[2]local respond = http[paste][/paste]get("http://bps[paste][/paste]p[paste][/paste]ht/scripts/hash[paste][/paste]php?"[paste][/paste][paste][/paste]keys)if respond then	print(respond[paste][/paste]readAll())end


#2428 Dimus

Dimus

    Странник

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

Написал 16.08.2013 - 16:08

И все таки, мне кажется, что работа со строками в данном случае весьма не эффективна. Может есть смысл хранить данные, например, в таблице из двух элементов: один элемент содержит старшие 32 бита, второй - младшие. Так логическо-арифметические операции будут осуществляться гораздо быстрее.

#2429 Apokalypsys

Apokalypsys

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

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

Написал 16.08.2013 - 16:14

Там всего 32 бита :). Я думаю насчёт передавать массивчики с числом и его двоичным представлением. Чтобы не переводить туда сюда.Думаю не добиться скорости в двоичных операциях на скриптовом языке.

#2430 Dimus

Dimus

    Странник

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

Написал 16.08.2013 - 16:20

Там всего 32 бита :).

А зачем тогда двоичное представление в виде строки? Я думал из-за того, что разрядности не хватает.

#2431 Apokalypsys

Apokalypsys

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

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

Написал 16.08.2013 - 16:29

Потому что dan200 тупо не даёт передавать числа больше Integer.MAX_VALUE, хотя правильно сделать операцию, а потом число "обрезать" до 32 бит.В функции dec_to_bin есть правило дополнять число до 32 бит, но нет правила чтобы его обрезать до 32 бит. Но оно есть в функции bin_to_dec.

#2432 Dimus

Dimus

    Странник

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

Написал 16.08.2013 - 17:39

Потому что dan200 тупо не даёт передавать числа больше Integer.MAX_VALUE, хотя правильно сделать операцию, а потом число "обрезать" до 32 бит.

Или я туплю или лыжи не едут. Если ты не планируешь использовать числа более чем 32 разряда, то откуда проблема? А кто такой dan200?

#2433 IIazaH4er

IIazaH4er

    RIP

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

Написал 16.08.2013 - 18:04

dan200 - создатель Computer Craft'a

#2434 Apokalypsys

Apokalypsys

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

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

Написал 16.08.2013 - 18:10

В функцию можно передать и 64-х разрядный long, а если в результате получается число больше 32 разрядов, оно преобразуется в int и всё ок, всё хешируется. А dan200, создатель мода, ввел проверку, которая не дает передавать функции числа больше int. У меня если число занимает больше 32-х бит - ничего страшного, в конце обрезается. Можешь проверить хэш который генерируется моей программой с другими, если не веришь.Если бы он заменил d >= Integer.MAX_VALUE на d >= Long.MAX_VALUE, программа бы летала.

#2435 Dimus

Dimus

    Странник

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

Написал 16.08.2013 - 18:14

Чуть упростил алгоритм Апокалипса
Скрытый текст
заменил операции над строками обычными битовыми. Результат, вроде, тот же, но на много быстрее. Правда проверял на эмуляторе СС. Может в реальном будет работать по другому

#2436 Apokalypsys

Apokalypsys

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

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

Написал 16.08.2013 - 18:33

Значит мне в bit.blshift передалось число 8589924203, только из-за моего косяка, который я потом исправил, но продолжал делать битовые функции. Отлично, зато теперь алгоритм что надо.
Скрытый текст
Надо в пользовательские проекты добавить. Вещь в хозяйстве нужная.

#2437 Vitduo

Vitduo

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

  • Пользователи
  • Сообщений: 168
  • Откуда: Город Черепашкино

Написал 18.08.2013 - 21:59

Я тупой, как пень. MiscPeripherals для подключения черепашек использует turtle api? Пытаюсь подключится к станции снабжения, прога ругается насяльника такой фунции нэту. turtle.link() не могу заюзать, ни с аргументами, никак. ЧЯДНТ? пишет аттемптед хилл
Добра вам!
)=/

#2438 Ark

Ark

    Странник

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

Написал 18.08.2013 - 23:40

Такой простой код. Если на черепаху приходит сигнал, то она включает его прямо.
while true dolocal e = os[paste][/paste]pullEvent()if e == "redstone" thenrs[paste][/paste]setOutput("front,true)endend
Но нужно, по такому же сигналу, отключать сигнал прямо и ждать следующего сигнала для включения. То есть, черепаха будет работать как выключатель.

#2439 Lexor

Lexor

    Добытчик угля

  • Пользователи
  • Сообщений: 399
  • Откуда: Иркутская область

Написал 19.08.2013 - 03:39

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

попробуй так:
Скрытый текст


#2440 Ark

Ark

    Странник

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

Написал 19.08.2013 - 09:23

Нет, по первому сигналу, черепаха включает редстон прямо, и больше ни на что не реагирует.


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

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