Перейти к публикации
Форум - ComputerCraft

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

Как же я люблю писать программы которые не возможно использовать на наших серверах.

Для работы данного кода нужен  OpenComputers Stargate Interface у которого на сервере нет крафта.

 

Представляю вашему вниманию SGCP (StarGate control panel).

Эта программа позволяет управлять вашими звёздными вратами через keypad из мода OpenSecurity.

Программа написана таким образом что бы не мешать работе компьютера.

То есть можно использовать компьютер в своих целях даже когда программа работает.

 

вот так выглядит наша панель:

R1Yu4ef.png

Желтая кнопка - врата с которыми мы уже связаны. 

Красные кнопки - врата для связи с которыми недостаточно энергии.

Голубые кнопки - врата связь с которыми не возможна.

Белые кнопки - врата связь с которыми возможна.

 

Сверху дисплей с информацией.

 

некоторые возможности:

  • Когда с нашими вратами связываются чужие врата создаётся новая кнопка с адресом чужих врат.
  • Каждые 30 секунд проверяется доступность врат в плане энергии.
  • Адреса новых врат записываются в файл. после перезапуска компьютера новые кнопки не пропадают.

установка:  patebin get Gb2tkzXs /bin/sgcp.lua

 

 

  • Like 8

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


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

Какова разница между красным и голубым?

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


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

Какова разница между красным и голубым?

синие показывают врата с которыми невозможно связаться в принципе. например потому что их нет.

красные показывают врата для связи с которыми нехватает энергии.

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


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

 

а откуда врата вообще знают, с кем возможна связь, а с кем нет? Может тех врат там уже давным-давно не существует в природе и их выключили или сломали вообще? Их  прога пингует как-то что-ли? Чего-то я не нашел намека в программке на sg.sendMessage

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


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

а откуда врата вообще знают, с кем возможна связь, а с кем нет? Может тех врат там уже давным-давно не существует в природе и их выключили или сломали вообще? Их  прога пингует как-то что-ли? Чего-то я не нашел намека в программке на sg.sendMessage

Полагаю, sg.energyToDial что-то знает об этом.

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


Ссылка на сообщение
Поделиться на других сайтах
Полагаю, sg.energyToDial что-то знает об этом.

 

а разве оно не возвращает просто величину энергии, необходимую на прыжок (точнее коннект) к этой координате и к воображаемым вратам, не зависимо от того, есть ли они там или нет? Или оно все-таки их там проверяет, что они там есть? 

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


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

а разве оно не возвращает просто величину энергии, необходимую на прыжок (точнее коннект) к этой координате и к воображаемым вратам, не зависимо от того, есть ли они там или нет? Или оно все-таки их там проверяет, что они там есть?

Возвращает nil, "No stargate at address" при отсутствии врат, требует тик времени на проверку. Выжирает ли память сервера такой пинг врат, не знаю.

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


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

 

 

Возвращает nil, "No stargate at address"

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

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


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

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

 

По идее, компонент написан на уровне мода. А мод должен без подгрузки чанков знать, где у него и сколько миров по каким адресам.

Хз как на самом деле оно там сделано.

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


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

Честно говоря, не понятно, как мод может знать, есть ли где-то Врата в непрогруженных чанках. Вряд ли это возможно. Что-то оно должно наверно вызывать. Надо кстати, в сингле запустить "поиск врат от балды перебором". И поглядеть, растет ли потребление памяти. Там еще вопрос, грузят ли сами врата рабочие чанк по умолчанию, так как в конфине то я это оставил пока. Ну и есть подозрение, что именно на сервере плагин Multiverse инициализирует лоад каких-то несуществующих миров. В консоль, например, кидаются следующие эксепшины при dial координатах с потолка:

java.lang.IllegalArgumentException: Could not get provider type for dimension -795, does not exist
        at net.minecraftforge.common.DimensionManager.getProviderType(DimensionManager.java:108)
        at net.minecraftforge.common.DimensionManager.createProviderFor(DimensionManager.java:228)


java.lang.IllegalArgumentException: Could not get provider type for dimension 493, does not exist
        at net.minecraftforge.common.DimensionManager.getProviderType(DimensionManager.java:108)
        at net.minecraftforge.common.DimensionManager.createProviderFor(DimensionManager.java:228)

а где у нас 493-й или -799-й дименшн? Вот именно, что его нет и в помине.

 

1- энд

0 - овер

-1 ад

3 - майнерс

2- звездолет

 

Так что где там собака порылась - один крип знает. Но факт есть факт. Сервер после 5 минут переборов врат в цикле просто виснет и валится от переполнения памяти.

 

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


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

Вот то что оно эксепшнами спамит - это нехорошо. Уже какой-то говнокод там у автора мода.

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


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

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

 

А что там в том шифре 9-ти значном скрыто - один крип знает.

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


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

Алгоритм =)

  • Расшифровка координат чанка и id измерения из адреса врат.
  • Получение мира.
  • Загрузка чанка.
  • Получение списка тайлов в чанке.
  • Итератор по списку и коннект к тайлам врат.
  • Профит.
Изменено пользователем NEO
  • Like 1

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


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

 

 

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

 

это в опенсорсах глянул? 

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


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

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

  • Like 1

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


Ссылка на сообщение
Поделиться на других сайтах
Когда формируются врата, они заносятся в определенный реестр.

эх если бы оно так было, то не было бы беды, если бы только какой-то реестр врат созданных проверялся.

А на деле - строишь одни единственные врата на серве, запускаешь поиск врат от балды через опенКонтроллер в цикле генерируя случайные адреса, и начинается анал-карнавальный лоадчанкреквест, при котором генерятся чанки где попало, ищутся миры, выжерается вся озу и, как следствие, обваливается сервак за несколько минут.

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×