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

заказ администрации Программа "Батарея! Огонь!"

Рекомендуемые сообщения

Если интересно, то направление из азимута можно задать так:

x = math.cos(a)*p

y = math.sin(a)*p

Где p это число для округления до целых блоков с необходимой точностью.

Чтобы управлять параболой, кажется, надо ее делить на квадратный корень из фокального расстояния и умножить на расстояние.

А лучше сделать пристрелку и вывести таблицу дальности, как в минометах.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если интересно, то направление из азимута можно задать так:

x = math.cos(a)*p

y = math.sin(a)*p

Где p это число для округления до целых блоков с необходимой точностью.

Чтобы управлять параболой, кажется, надо ее делить на квадратный корень из фокального расстояния и умножить на расстояние.

А лучше сделать пристрелку и вывести таблицу дальности, как в минометах.

Мне что-то кажется, что сделать определение x и z из места тычка будет проще, чем сначала перегонять место тычка в азимут, а затем обратно в x и z

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне что-то кажется, что сделать определение x и z из места тычка будет проще, чем сначала перегонять место тычка в азимут, а затем обратно в x и z

 

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

Изменено пользователем Doob
  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы там пишите программку для арт-САУ "Мста-2С" что ли? Вы еще буссоль возьмите для пристрелки :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо ещё решить, как сделать подбор гнилой плоти. Если ставить воронки в некоторых местах, то их снесёт взрывом, а дебаг-плата вроде на это не способна


Хотя tractor beam может и сработать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

реализую при помощи дрона


Идея: сделать креативного дрона с камерой и подправить через mcedit его nbt, сделав его неуязвимым

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно и без mcedit: дроны взрывоустойчивы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Радар может обнаруживать дроп, а удалять его можно через worldedit

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проблема: даже с креатив-корпусом дрон требует энергии. А зарядник уничтожается взрывом...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пушка уже стреляет очередями, зомби уже сбиваются в толпу, по которой весело стрелять, оплата уже принимается. Осталось сделать так, чтоб зомби держали в руках динамит, подбор лута - радар справится и анти-афк(таймер на 2 минуты, который сбрасывается при тыке на любую кнопку и, если никто его не тыкает, переносит всех игроков в радиусе 10 блоков к терминалу оплаты)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

evgkul, на сервере выключено уничтожение взрывом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отлично. Тогда можно и просто поставить камеру и радар

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дело было вечером, делать было нечего.
Реализовал свою версию.
Дальность рассчитана на 40 блоков (можно вести огонь в кругу радиусом 81 блок), комблок должен находится на уровне поверхности (поправку на высоту делает игрок).

Суть такова: вводим название программы, направление в Майнкрафтовских градусах (юг = 0, отсчет по часовой +, против часовой -), вводим дальность и жмем [Enter]
На короткой дистанции большие погрешности, но для TNT это не играет роли.

 

local cb = require('component').command_block

local tH = {0.02, 0.04, 0.08, 0.1, 0.12, 0.14, 0.18, 0.2, 0.22, 0.24, 0.26, 0.3, 0.32, 0.34, 0.38, 0.42, 0.44, 0.48, 0.5, 0.54, 0.6, 0.62, 0.68, 0.72, 0.76, 0.82, 0.86, 0.92, 1.0, 1.05, 1.11, 1.2, 1.26, 1.32, 1.4, 1.53, 1.56, 1.6, 1.71, 1.81}

local function azimuth(a)
  local x = math.sin(math.rad(a))
  local y = math.cos(math.rad(a))
  x = (x-(x*2))-0.0001
  y = y-0.0001
  return x, y
end

local tArgs = {...}

if tArgs and #tArgs == 2 then
  local angle = tonumber(tArgs[1])
  local distance = tonumber(tArgs[2])
  if type(angle) == 'number' and type(distance) == 'number' and distance <= #tH then
    local a, b = azimuth(angle)
    cb.setCommand('summon PrimedTnt ~ ~1 ~ {Fuse:100,Motion:['..a..','..tH[distance]..','..b..']}')
    cb.executeCommand()
  else
    print('Расстяние должно быть меньше '..#tH)
  end
else
  print('Использование:\nboom <направление> <дальность>')
end

 



Пример работы скрипта

for i = 0, 360, 10 do shell.execute('boom '..i..' 30') end

ZGXagnj.png

В тесте стрелял камнем FallingSand

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дальность рассчитана на 40 блоков (можно вести огонь в кругу радиусом 81 блок), комблок должен находится на уровне поверхности (поправку на высоту делает игрок).

Диаметром же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Диаметром же.

 

Действительно :facepalm:

 

К алгоритму можно прикрутить управление через чат и снятие денег со счета в банке, но не знаю где разместить игрока. Можно сделать телепортацию через чат на точку спавна TNT, а игроку выдавать инвиз.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...