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


Фотография

Телепорты

конкурс программирование

  • Закрытая тема Тема закрыта
Сообщений в теме: 21

#1 Онлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 28 Август 2014 - 00:26

aDlmQYT.jpg?1

Суть почти понятна из рисунка, я думаю. Радарчик пока прилепил для понта(можно сделать отслеживание для полиции ТП игроков), на него не обращайте внимание он будет спрятан в земле с ПК и КБ.

Напомню, то на новом игровом сервере не будет всяких tp, multihome, spawn и прочей ерунды из любой точки, только реальные телепорты и реальное физическое перемещение. Так же мечта понерфить джеты (как-то уменьшить время полета или заряд немного)
И так. Задача - нужен телепортик на новый сервер. Игрок щелкает по сенсорному мониторчику, выбирает место, куда ему нужно и при нажатии на кнопочку GO телепортируется на место назначения. Исполнительным элементом является командный блок. Список станций и их координаты хранятся в таблице. Есть платный вариант, когда нет кнопочки GO. Тогда игрок, выбрав станцию, кидает индастриаловскую монетку в хопер. Дальше принцип тот же, ред.сиг. на КБ (какой-то простенький фильтр из БК и подача импульса при пролете монетки).
Я думаю вы понимаете, что команда /tppos @p x y z и есть ключевой, где x y z - координаты станции. Должна быть цикличность(то есть промотка по кругу). Номер i-го элемента списка вверху, две три строки для названия станции. Допускаю и приветствую размер монитора в 2 или максимум три блока, в ширину, но только один в высоту, если будет реализована система кнопок фильтров для более быстрого поиска по списку(например острова, сервисы, или просто латинский алфавит, как придумаете сами). Большим плюсом будет функция для обновления всех телепортов по сети Крафтнет , например, новой единой изменившейся таблицей(пока в отключенном состоянии, опционально) Эх, если бы были админ-частоты RedNet в КК, которые запрещены игрокам, мечты мои мечты. :) Хакеров с этой сетью CraftNet и планшетами чувствую, разведется не мало.

И так, призы 2 из 6 на выбор (сразу при открытии нового сервера):
1. 5 машин из ИК и 3 машины из ГТ на выбор (кроме запрещенных)
2. Пистолет из АЕ (заряд 100% , в магазине 512 голдовых нагитов)
3. Подтверждение нового клана сразу при создании
4. Двойной размер привата.
5. Личный (вечный при желании) префикс на выбор.
6. Админ якорь, замурованный в бэдрок в любом месте.

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

П.С. Если сделаете, что телепорты будут слушать эфир на предмет события добавления новых станций, подумайте, как сделать так, чтобы хакер потом чёрти какие координаты не забил во все компы, если перехватит сообщение с апдейтом станций и узнает частоту приема телепортов. Пешком будете потом по миру бегать:cool: :) Нужно всего 512 ПК, чтобы на каждом слушать по 128 каналов одновременно, ведь всего-то 65536 каналов. Хотя если на каждый ПК прилепить по 4 модема и на каждом слушать эфир, то нужно всего 128 ПК - в маленькую хакерскую комнатку они влезут, я думаю))) Это для статической сниффер-системы. С динамикой и отсевом - еще меньше.



#2 Онлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 188
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

5                                 

Отправлено 28 Август 2014 - 10:27

П.С. Если сделаете, что телепорты будут слушать эфир на предмет события добавления новых станций, подумайте, как сделать так, чтобы хакер потом чёрти какие координаты не забил во все компы, если перехватит сообщение с апдейтом станций и узнает частоту приема телепортов.

Думаю, шифрование спасет отца русской демократии.
Алекс, а как тебе удалось такой шрифт на мониторе установить?

#3 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 28 Август 2014 - 18:03

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

2. К сожалению, это шрифт фотошопа, такого интерфейса пока не существует:) Это я изобразил, как должен выглядеть GUI телепорта.


#4 Онлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 188
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

5                                 

Отправлено 28 Август 2014 - 18:26

Шифрование данных для меня последние несколько месяцев имеет самый высокий приоритет на сервере

Я предлагал в теме Размышления о шифровании и безопасной передаче данных алгоритмик симметричного шифрования. Может его попробовать?

#5 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 28 Август 2014 - 20:29

Я предлагал в теме Размышления о шифровании и безопасной передаче данных алгоритмик симметричного шифрования. Может его попробовать?

Именно он и нужен. Странно, вроде внимательно просматриваю форум, не видел последнего поста.Убить себя


#6 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 29 Август 2014 - 12:51

Чуть не забыл. Сразу после выполнения процедуры телепортации на мониторе должно появиться сообщение:
-----------------

Сooldown
[30] sec

-----------------
то есть время перезарядки телепорта. Кнопок в это время нет и с телепортом взаимодействовать нельзя. Команда из командного блока тоже должна очиститься, так как будет возможность бросать монетки и тпшиться во время "зарядки".:)

Это скроет целевую точку ТП игрока от других игроков и не даст возможности непосредственного преследования. Секунды в скобках должны уменьшаться до [0], после этого должен появиться стандартный кнопочный интерфейс со случайной или первой станцией из списка. Это обязательное условие механики работы телепорта!

П.С. Поднял призовой фонд (не один приз из шести на выбор, а два из списка выше!)


#7 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 29 Август 2014 - 15:55

Кому как удобнее конечно, но я бы сделал табличку в таком виде:

list_stantions = {
{"Bank", " "," ",true,"Service", 100,64,250},
{"Casino", " ROYAL"," Wellcome 7:24",true,"Service", 200,66,1250},
{"Okinawa", " port N1"," ",true,"Island", 900,62,850},
{"Creeper-Town", " city center"," ",false,"City", 1200,68,1850},
...
}

Первые три элемента - строковые значения названия станции (2-3 могут быть пустыми), печатаются с новой строки посередине после номера станции. Четвертый элемент(true/false)- признак того, что телепортация к данной станции платная и кнопка GO не подсвечивается, а телепорт будет ожидать редст. сигнала от брошеной монетки. Пятый элемент - категория, может быть использована как фильтр. 6,7,8 -координаты станции. Категории можно вынести в отдельную таблицу, а здесь печатать только номер категории, так будет немного гибче.

Вот как я вижу предварительно сходу тельце программки
...

num_stantion= math.random(1,#list_stantions) - выбираем случайную станцию при загрузке программы
setDraw(num_stantion) - рисуем кнопки
setStantion(num_stantion) - печатаем на мониторе название i-й станции и забиваем координаты в командный блок

while true do
       local event , side, x, y = os.pullEvent("monitor_touch") - ждем щелчка мыши по монитору
       --теперь проверим, есть ли такие координаты кнопок, если есть, то вернем значение кнопки
       state, command = checkTouch(x,y, num_stantion)  - state имеет значение(true, false), command имеет значения ("Up", "Down", "GO", nil)
   
       if state then -- если state=false, блок будет пропущен
              -- если значения command "Up", "Down" прибавляем/убавляем на единицу num_stantion, если значение больше длины таблицы, сбрасываем на 1, если      меньше 1, то присваиваем максимальный индекс таблицы (прокрутка), принтим на экран и меняем координаты в КБ
                      setDraw(num_stantion) - перерисовываем кнопки
                      setStantion(num_stantion) - печатаем на мониторе новое название i-й станции и забиваем координаты в командный блок

            -- иначе если пришла команда "GO" то выполняем команду командного  блока
                               coolDown(t)  -- перезарядка
                               local random_stantion = math.random(1,#list_stantions)
                               setDraw(random_stantion) - рисуем кнопки
                               setStantion(random_stantion) - печатаем на мониторе название i-й станции и забиваем координаты в командный блок

       end
end

end
...
если функция checkTouch() увидит, что станция платная, а игрок щелкал в то место, где должны быть кнопка GO, она вернет state = false и ничего не будет выполняться, только монеткой можно тпшнуться.

Вам нужно только аккуратно дописать функции setDraw, setStantion, coolDown, функцию прослушки Реднет сети, проверки координат checkTouch. Возможно сделать функцию фильтра, то есть при нажатой кнопке Island, например, острова будут пропускаться при прокрутке. Нужно использовать API монитора, цвет бэкграунда, масштаб монитора, API для работы с ком. блоком и некоторые др.


#8 Онлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 188
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

5                                 

Отправлено 29 Август 2014 - 17:16

А что за API для ком.блока? Он разве определяется как периферия?

#9 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 29 Август 2014 - 17:54

А что за API для ком.блока? Он разве определяется как периферия?

Еще как!!! Это самая крутая вещь в КК для админа:):cool:

Например:
local commandBlock = peripheral.wrap("side")
command = "/любая команда консоли" например "/ban AlexCC":)

function execCommands(command)
    commandBlock.setCommand(command)
    commandBlock.runCommand()
end

Я даже задонатил 6$ на проекте КК, но в список пожертвовавших не попал почему-то пока :confused::), что-бы Dan200 быстрее пилил версию КК под 1.7.+
Там ком. блоками чудеса творить можно, создавать в любой точке летящий динамит активированый можно в любом направлении с любым отклонением и прочее;) Установка "Град" из ПК и КБ получится.


#10 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 29 Август 2014 - 18:34

Клиентик и сервер готовы. Есть поддержка шейдеров. Как только доделаю кастомную карту с инфраструктурой, телепортами и городами, банком и казино, программой управления вселенными (параллельными мирами), сможем поиграть на новом сервере.
Изображение

  • Netins это нравится

#11 Онлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 188
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

5                                 

Отправлено 29 Август 2014 - 18:36

Еще как!!!

Странно. В сингле делаю
commandBlock = peripheral.wrap("side")
получаю nil

#12 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 29 Август 2014 - 19:08

Надо в конфиге запретку снять:
# Enable Command Block support
B:enableCommandBlock=true

Дима, и посмотри будет ли так получать КБ через врапмодем
commandBlock = peripheral.wrap("command_свой номер wrap модема") , а то когда-то багулька была, не видел ПК ком.блок через него, только вплотную.

П.С. Команда в ком.блоке остается навечно, пока ее не изменит ПК, или оператор (OP) вручную или кто-то не сломает ком.блок, и соответственно при подаче редст. сигнала на ком.блок засеченая команда будет выполняться.


#13 Онлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 188
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

5                                 

Отправлено 29 Август 2014 - 19:51

Дима, и посмотри будет ли так получать КБ через врапмодем
commandBlock = peripheral.wrap("command_свой номер wrap модема") , а то когда-то багулька была, не видел ПК ком.блок через него, только вплотную.

Видеть то видит, но потрогать не может. В моем сингле команды выполняются только если КБ стоит вплотную.

Команда в ком.блоке остается навечно, пока ее не изменит ПК, или оператор (OP) вручную или кто-то не сломает ком.блок, и соответственно при подаче редст. сигнала на ком.блок засеченая команда будет выполняться.

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

#14 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 29 Август 2014 - 20:27

Видеть то видит, но потрогать не может. В моем сингле команды выполняются только если КБ стоит вплотную.

В ванили, чтобы выполнить команду КБ, на него нужно подать редст. сигнал. Подозреваю, что Ден200 видимо долго не парился и не стал делать это взаимодействие по локальной сети. Поэтому и ком.блок выполняет команды только вплотную к КБ. А может багулька какая, но она уже давно, сколько я на проекте, что очень печально в редких случаях, а еще самая страшная багулина, что КК ни в какую не дружит с бандлэдкейблами (многожильными редстоун-кабелями) из PR и RL.

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

Совершенно верно.


#15 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 30 Август 2014 - 03:29

Чего-то раньше не пришла мысль хранить таблицу со станциями на аккаунте pastebin.com list_stantions = { {"Bank", " "," ",true,"Service", 100,64,250}, {"Casino", " ROYAL"," Wellcome 7:24",true,"Service", 200,66,1250}, {"Okinawa", " port N1"," ",true,"Island", 900,62,850}, {"Creeper-Town", " city center"," ",false,"City", 1200,68,1850}, ... } и прямо там ее на сайте редактировать. Все ПК при старте сервера просто скачивают ее в отдельный файл и подгружают его с помощью os.loadAPI() У меня же так прайсы для банка подгружаются, только не при старте, а в параллельной функции периодически. Чего то я забыл совсем про pastebin. На нем можно же хранить все таблицы, конфиги и какие-то статичные данные и апдейты к своим программам, глобальные константы, библиотеки и прочее. Хоть это немного и не реалистично получение окна в реальный мир из майна, зато безопасно. Но предпочтение будет отдано программке-обновляшке с планшета всех телепортов по сети CraftNet. Если хардкор на сервере, то хардкор по полной. FullRealism & Hardcore - девиз нового сервера. А перемещение и добавление телепортов однозначно нужно будет делать при развитии цивилизации, и чтобы потом не бегать к каждому , система обновления однозначно должна быть, так как система телепортации будет единой. С любого телепорта можно тпшиться в любой другой. Не хочу делать "Метро с пересадками".


#16 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 621
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                      

Отправлено 17 Сентябрь 2014 - 04:25

Мой вариант на конкурс (OpenComputers и Applied Energistics): Quantum Link :cool:

  • Netins, Fingercomp и mdsanta это нравится

#17 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 05 Октябрь 2014 - 13:54

Сделал телепорты для нового сервера. Система предельно проста и надежна, практически не требует ресурсов для постройки и не громоздкая. В видео использованы элементы карты "Нашествие зомби!"

Обновление станций, их добавление и выборочная блокировка станций при необходимости пока корректируется в таблице на сайте pastebin.com. Телепорты сами периодически обращаются к сайту и обновляют таблицу, присутствие в игре администратора не требуется. Зарезервирована функция обновления станций через планшетный ПК по защищенному зашифрованному каналу. Планируется добавление логов для отслеживание и определения самых нагруженных транспортных линий, блокировка конкретных игроков (временный бан на использование телепортов, как один из видов наказания), добавление эффекта тошноты и слабости на 30 (или другое количество) секунд после процедуры телепортации, система фильтров для более быстрого поиска станции и другие функции.
В программе использовал GUI игрока Offline(1Ridav)



Конкурс закрыт. Так как конкурс не был реализован игроками по четко указанным требованиям конкурса, призы не достались никому. Единственный участник (Totoro), который делал телепорт на ОС , будет премирован отдельным призом на новом сервере(право на создание клана, полный набор программиста и мощный источник энергии).



#18 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 621
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                      

Отправлено 05 Октябрь 2014 - 14:06

Интересно. А телепорты могут иметь различную стоимость? P.S. Почему "триффиды" в метро такие беспомощные? =)


#19 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 05 Октябрь 2014 - 21:34

В программке предусмотрена загрузка файла-конфига, в котором прописан номер монитора и координаты самого телепорта. Он хранится в корне диска каждого телепорта. Можно при выборе станции вычислять разницу по x и по z станции назначения, и по знаменитой формуле взять корень из суммы квадратов - так мы получим гипотенузу, а значит и реальное расстояние на телепортационный бросок. Исходя из этой величины телепорт может ждать две, три и более монет для выполнения телепортации. Но это уже заморочки. Мы принимаем, что системе телепортации не важно, как далеко нужно забросить игрока, на 2 квартала, или на далекий остров. Так же всегда можно заменить цену (курс) монет в банке. Трифиды ватные, видимо, что они живут и агрятся в определенных биомах. А этих я наспавнил штук 5 вручную. И жизненки у них 5 сердечек, как у поросят. Там есть зомбачки по 50-100 сердечек, которые агрятся, мама не горюй, и еще и фаерболами кидают. Там у них еще настройки есть какие-то. Ребята еще предлагали потестить мод, который сильно ИИ зомбей повышает, они уже слышат звуки, шум от игрока, идут толпами на свет, и с огромного расстояния агрятся. Настройка зомбей, их спавн и количество еще будет тестироваться и изменяться. Сейчас главное скомпоновать все схемы на Луа на сервере и пересмотреть (доделать) ключевые моменты геймплея и правил. Зомби, музыка в игре и прочее - это вторично, хоть и тоже немаловажно.


#20 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 621
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Награды

                                      

Отправлено 05 Октябрь 2014 - 21:46

Зомби, музыка в игре и прочее - это вторично, хоть и тоже немаловажно.

Это понятно. Просто удивило несоответствие зверской внешности и флегматичного характера монстра.

Что касается цен - я представил себе постапокалиптический мир, где одной из главный ценностей является энергия.
Представил богатый клан, который желая облегчить жизнь своим членам, устанавливает телепорт-станцию на территории. Поддерживает энергию и т.д. Логично, что перемещение через него не будет дешевым для посторонных лиц.
С другой стороны - сеть транспортных телепортов - основное средство передвижения по материку, между городами. Их поддерживает правительство в лице админа и они бесплатны (или дешевы) =)


#21 Онлайн   Alex

Alex
  • Автор темы
  • Администраторы
  • Сообщений: 3 466
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.

Отправлено 05 Октябрь 2014 - 22:20

Можно сделать проще и интереснее, глава клана пишет на форум в топике своего клана в заявках, мол, хотим систему телепортов для своей деревушки внутри клановой земли (отдельного острова) независимую в количестве 5 штук. Весь клан скидывает на счет главы клана энную сумму(это внутри клана уже решается, в банке есть возможность перевода средств) и за каждый телепорт админ списывает со счета по 10 лямов, итого 50 лямов:) Деньги можно насобирать на счете собирая и таская ресы в банк, а так же как денежное вознаграждение за написание программок на форуме, статей на сайте, активности на проекте и прочее. А денежки со счета можно потратить на карьер, на еду, кока-колу, патроны, монеты для телепортов или как вам там вздумается. Можно конечно сделать ТП по отпечатку пальца, и списывать деньги с электронного счета игрока в центробанке, но нужно все делать через CraftNet и нужна стабильная работа всей системы (не заводить же базу данных в каждом телепорте, так ведь?) Вариантов миллиард. Были бы только люди, которым интересно этим заниматься и программировать. Пока система телепортов общая, как метро или трамвай.


#22 Оффлайн   DUIIIES

DUIIIES
  • Пользователи
  • Сообщений: 280
  • Уровень сигнала: 0%
  • В игре: 0 ч. 0 мин.
  • ГородКоролёв

Отправлено 20 Октябрь 2014 - 07:27

[user=2]Алекс[/user], а ты же вроде писал, что банковская система у тебя на пастбине повязана, так может тогда приделать к ТП био-сканер и при телепортации записывать сумму к оплате в лог и списывать деньги со счета. При нуле на счету оплата идет в счет кредита (+5-10% к примеру) и на уровне в <минус энная сумма> персонаж заносится в ЧС, что делает его невыездным (запрещает использование ТП с выводом сообщения типа "Вы находитесь в черном списке AlexCorpBank. Для использования телепорта погасите задолжность." при попытке ТП).





Темы с аналогичным тегами конкурс, программирование

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

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