Alex
-
Публикации
3 168 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем Alex
-
-
Это что-то интересное! Не понятен механизм, каким строителям, какие чертежи, можно точнее описать процесс. И как у Вас на гифке строится Зиккурат, кто его строит?Wiah: Могу смоделировать здание по кубикам в 3d редакторе, отрендерить в любой проекции, разделить его на понятные чертежи и выдать строителям.
Только вчера думал над вопросом постройки чего либо в майне по 3D моделям. Есть даже плагин какой-то. Эти все драконы на пол карты, замки и прочее в интернете. Кто и как их строит?
Так вот. Вчера наш идеолог и основатель проекта Рид (1Ridav кто не знает) поделился замечательной идеей создать на сервере божество (храм с божеством) которое бы влияло на мир (погода, день ночь, бури, случайные события, убийства и телепорты игроков, "манна небесная", алмазы с неба и прочее прочее), кто знаком немного с командными админблоками и Computercraft может представить, что можно творить. Божеству можно(а самое главное нужно) преподносить жертвоприношения, чтобы его задобрить. То есть будет воронка и и система обработки брошенных предметов. У божества будет плавно(иногда рандомно) меняться настроение. И вот главная фишка:
Без должного внимания божество сделает игру для игроков на сервере невыносимой и с неба молнии метать начнет и хаос приносить!:p:D.
Задачка - как красиво построить какое-то животное, идола. Может с какой карты перенести из интернета?
По божеству пишите, пожалуйста в отдельной теме. А здесь прайсы, только прайсы.
Тема про божество.
-
Krutoy: Да, это отличная идея. Я тоже за рынок предложения\спроса, где ордеры выставляют игроки.
Вооу-Вооуу парни, не мешайте все подряд в один проект. Задача этого топика - создать адекватный прайс для банка. EVE, Lineage2, WoT это все интересно. Вы молодые и полет фантазии - это хорошо. Но давайте о насущном. Нам нужен прайс для банка. Вопрос ценообразования уже описан выше. Его смысл - эквивалентный обмен товарами через банк и систему аккаунтов и денежных электронных преобразований. Подчеркиваю - эквивалентный обмен товарами! Кто давно играет в майн, тот помнит, что был когда-то мод Equivalent Exchange, в котором с помощью философских камней и алтаря какого-то одни айтемы преобразовывались в другие и обратно (у каждого предмета была "цена" сколько-то единиц очков EMC).Nick_Alps: Отличная идея, а почему бы не создать, грубо говоря, аукцион?
Вот если бы не было банка, а у Васи много паутины, а ему нужны яблоки, он идет к соседу и договаривается про обмен, например: Изя, поменяй у меня паутину на яблоки. Изя говорит: Даю три яблока за твою одну паутинку. Вот и все. Это бартер, черный рынок - как хотите, назовите. Но беда в чем - "кинуть" могут, найди еще этого Изю на карте и прочее. У нас это все в банке через ваш счет. Все! Что может быть проще!? Цены немного колеблются -+. Ну и при обмене через банк Вы со 100 яблочек одно дарите банку (кассирам кушать тоже надо), плата за услуги, скажем так. Это же старо, как мир!

А биржевые торги, скупка и продажи, слежение за курсом, перенасыщением рынка, графики, слежение за пиками, когда начать скупать или продавать какой-то вид товара - это немножко не то, что я делал в этом проекте. Нам бы хоть пока один этот вшивый проект закончить:cool:
Система лотов - интересная задумка, но ее можно будет сделать отдельно когда-то или как аддон к банковской системе. В любом случае та же система аккаунтов, таблица лотов игроков с ценами, покупка конкретного лота. Разница лишь в том, что лот - это вид товара фиксированного объема по фиксированной цене.
Реализацию же бартерных лотов (например 100 иридий/300 алмазов) надо будет подумать, как реализовать, когда-то.
Нубский способ - обменники ИК.Я же хотел сделать, чтобы кассиры-черепашки суетились, электронные денежки были, в сундуках в банковских хранилищах ресы лежат и прочее.
П.С. Вот кстати для любителей бирж всяких видеоролик, где ребята-трейдеры демонстрируют программку для торговой системы QUIK
, которая сообщает, когда покупать или продавать. Они приняли, что когда общие объемы продажи и покупки чего либо приблизительно равны - рынок не интересен - это 50. Если же +-20 и более % перекупленость или перепроданость какого-то товара, акции и прочего - торговая программка-робот сообщает об этом. Написан, кстати, заметьте - на Lua!:cool: Торговать, конечно, можно не только на пиках графика, но и, видимо, как я понял, на мувингах, когда цены растут или падают стремительно. -
Tут нечего брать за основу, как бы печально это не звучало. У них алмаз стоит 9 кусочков угля. У нас алмаз крафтится из трех стаков минимум, плюс абсидианы всякие и немерено электроэнергии. Повторюсь, что на донатных сайтах им пофиг на цены, так как пользователи только покупают что-то и за реал и ничего не продают. Они раскидали цены от 10 до 200 монет на все приблизительно, им практически не важно, что купит юзер. У меня мечта - точно посчитать, что входит в квантовою броню и вывести реальную цену.
Возможно, будет только на начальном этапе какой-то креативный объем товара. При нормальном управлении банком, должной охраной и контролем за безопасностью ПО банк будет функционировать реально отображая экономику сервера на собственном обеспечении. (Если хакеры не крякнут егоВопрос: ресурсы, которыми ведется торговля, будут садминены или добыты игровыми средствами?

)
Абсолютно верно! Админ(банкир) глянул на экраны АЕ - угля завались - алмазов нет в хранилище - взял и взвинтил цены на них. В этом вся и изюмина торговли. Можно автоматически(система должна тогда как-то знать общий запас айтема). Но лучше руками регулировать цены(зачем тогда в мире столько биржевых служащих). И писать в чат, парни - завтра скидка на иридий! Кто не успел, извините. Тем более, кто видел мои ролики, у меня банк берет цены с pastebin.com с прайса, цены можно менять, не заходя в игру. На пастебин можно принтить и количество в системе. Вот за что я борюсь.ZeroGalaxy: А по поводу цен, по моему, цены должны определяться не столько редкостью и полезностью сколько спросом и предложением. Например, если все сдают уголь и берут алмазы, цена на уголь должна падать, а на алмазы расти. Может даже автоматически.
Из переписки в скайпе: Ну а вообще не вижу ничего плохого, если человек забьет банк золотом и железом (землю покупать вряд ли будем
), и попадет в список Форбс. Что нам, жалко
Он же себе не будет скупать 100500 квантовых сетов в банке потом за вырученые деньги. Тем более, что продать их удастся по меньшей цене. ...... Если товара вообще нет в банке, ну на нет и спроса нет, черепаха кладовщик скажет об этом покупателю и запишет об этом в логи и в консоль сервера - вывод, товар ходовой и пора бы на него поднять цену продажи и уменьшить цену покупки.П.С. Не откидываю возможности наличия в банке мазераторов, молекулярной кравтящей машины АЕ и реактора.
-
-
Старожилы помнят, что до аварии на VDS у нас на сервере был банк. Он был построен и почти готов к работе после закрытия некоторых уязвимостей в ПО.
Вот скрины, кто не застал банк на сервере:
http://puu.sh/8Va8i/a009ad102f.jpg
http://puu.sh/8VafM/db105507c9.jpg
http://puu.sh/8Vajm/4f582964c4.jpg
http://puu.sh/8VaS8/826f82a11c.jpg
https://www.youtube.com/watch?v=XpdvatZMwCk&list=PLrGgY-Jtfx4y41YN_ltrFijEy-y9k3IQt&index=14
Хочется его построить заново. Дизайн не знаю пока, похожий будет или другой. Но важнее другое. После постройки опять встанет вопрос в прайсах на предметы.
Крайне нуждаюсь в помощи при расчете цен на предметы. Основные ресурсы для купли продажи- это ископаемые, дроп мобский, инструменты, дорогие и редкие камни, машины с безумным крафтом, солнечные панельки, броня всякая. Хватит на первое время 30-50 айтемов. Важно рассчитать соотношения цен.
То есть, например - кусочек угля стоит 100 mcr. C него получаем 4000 EU в печке в ИК. Нужно рассчитать цену на электроэнергию, и другие ресурсы. Если например, для крафта алмаза нужно 128 кусочков угля - то алмаз будет стоить +- 12 800 mcr. Сколько будет стоить железо и золото, нужно исходить из частоты нахождения его в земле и востребованности. В цену можно добавлять затраты электроэнергии и нервов
. Можно также завысить(не занизить) цены на какие-то дорогие редкие камни(это же банк
). Посчитать цену на микросхемы.
Также приложу файлик, нашел его на каком-то форуме, в нем тоже интересный подход на ценообразование в зависимости от количества и соотношения ресов в чанке. Разницу на куплю-продажу (%) добавлю и сам немножко в пользу банка. То есть смысл задать цены на первичные ресурсы майна (которые есть в природе), и исходя из цен на них+затраты+нервы+востребованность*кол-во в рецепте и прочее посчитать цены на ходовые айтемы (сколько стоит квант, допустим).
Цель - шахтер или пчеловод игрок, он может продать избыток одних ресурсов и купить другие, которые не может скрафтить. Также деньги на счете будут в будущем капитализироваться. Есть также мысль о кредитовании, но только в частном порядке на аккаунт в банке, который знает админ и под большой процент(будет выгодно игрокам, которые умеют быстро развиваться в майне)
Всем, кто окажет ощутимую помощь в данном вопросе, выдам виллу трехэтажную из кварца с золотой каемочкой, с джакузи и фонтанами в любом месте карты и др. награды.
-
Semoro, буду Вам очень благодарен. Важно именно базовое ядро, а дальнейшее развитие и модернизацию программы оставим для участников соревнований!Готов подготовить базовое ядро для системы черепах на основе моих идей
-
Пропал интерес и угас огонь в глазах.Тему я закрываю и начинаю другую которая будет посвящена не только маршрутизатору , а всей технологии передачи пакетов.Кстати ты зайдешь в RC или скайп поговорить надо

А мне интересно почитать, как Зеро подходит к вопросу. Тут есть и топология сети, уровни, шлюзы по умолчанию и прочее. Темы закрывают модераторы, кстати.
-
Покопавшись в методах трассировки считаю, что для наших целей оптимальным будет реализовать волновой алгоритм (http://ru.wikipedia.org/wiki/Алгоритм_Ли)
Так как черепашке после спавна карта не известна совсем, она в начале всю таблицу (ДРП) заполняет значениями, соответствующими непроходимым участкам (то есть стена). В процессе разведки карта уточняется, то есть стена заменяется на пустоту там, где действительно пустота. Карта обрабатывается всеми черепахами и является единым объектом. То есть, что разведала одна черепаха, должно стать известно всем остальным. Карт две (т.к. у нас два слоя). Трассировать можно только путь между двумя пустыми координатами карты в пределах одного ДРП. Трассировка на ранних стадиях разведки не целесообразна.
Остается вопрос, который я пока не до конца понимаю, как оптимально реализовать. Это простая разведка с постепенным смещением по карте, изменение слоя карты. Как черепахе задавать оптимально приращение dx dy, в сторону ли врага, в сторону ли большого неисследованного массива карты или еще как-то. Если она, допустим, решила сменить область исследования, она трассирует путь в известной зоне, перебазируется туда, а там опять планомерно приступает к разведке. Примерно так, как мы копаем руду в пещере - копаем как-то рандомно по блоку, потом нас что-то дернуло, пробежали в соседнюю пещеру и копаем там. Вот этот момент, как мы бежим в другую пещеру - это реализация перемещения по кратчайшему пути, так как мы его знаем. Но что нас побуждает копать тут или там, это вопрос.
И его надо решить. Ну и естественно, что задача разведки будет актуальной для черепах до тех пор, пока в нижнем, или верхнем слое есть неизвестные элементы, а бой еще не закончен(захвачены все флаги или весь противник уничтожен) Кстати о потерях мы и враг будет узнавать от арбитра по признаку прекращения периодического пинга от бойца. Почему через арбитра решил (а как мы узнаем, что враг съел врага
) То есть одним из условий игр - пинг сервера бойцами обеих команд. -
Отвечу в такой же дерзкой манере:ты хоть знаешь как работают таблицы,и вообще маршрутизацию?? я так вижу что нет. если хочешь по расуждать заходи в RC
Мне совершенно не интересно, что
Выты знаешь о маршрутизации, мое замечание касалось лишь программы. Открою тайну, любой школьник с мозгами при нашем доступе к информации может ознакомиться с основными понятиями , положениями и принципами в течении получаса по любым вопросам науки и техники, ну а человек с высшим техническим образованием и подавно. Нюансы, конечно, можно изучать годами.Если ты не собираешься модернизировать программу и свято веришь, что она справляется со всеми задачами маршрутизации, спорить не стану. Не надо так болезненно реагировать на критику, и указывать, где и что писать людям. Форум для того и существует, чтобы что-то обсудить и выслушать любую критику.
Р.S. Сам как думаешь, когда случайный человек скачает твою программу, сможет ли он настроить передачу данных между различными сегментами сети ?
-
Ну это не сильно похоже на таблицы маршрутов.
-
(Т.е. поиск маршрута осуществляется методом волны. Если терминал А отправляет пакет терминалу Б, тот пакет этот обойдет ВЕСЬ Интернет. Причем распространяться будет равномерно во все стороны, отражаясь и переотражаясь. Количество пакетов множиться будет в геометрической прогрессии пока не завалит своей массой игровой сервер.
Так именно и будет! Сам смысл, для чего предназначен роутер, здесь пока не реализован. Без таблиц, статических или динамических, не обойтись. А про них нет никакого упоминания.
-
Карта - бомба. Только, как я понял, она читает карту из рисунка. Можно ли считывать живую карту из камня. Все таки совместить два слоя удобнее вживую, какие-то туннели и бойницы сделать, на однослойном рисунке как это совместить из двух слоев, не хочется фантазировать в уме, как они наложатся друг на друга. Текстурка бэдрока - не ахти, согласен, но иначе игроки будут хитрить
. В новых майнкрафтах я даже не знаю, где текстурки хранятся, чтобы заменить. -
Я тоже смотрю, что почему-то все начинают в КК писать сразу программы, связанные с роутерами, серверами клиентами и базами данных, а это не самые легкие задачи. При всех тех дырах сетей и прочее. Зачем сразу пытаться написать аналог Одноклассников и ВК. Можно пока поработать с файлами, таблицами, циклами, подать простую команду по сети черепашке, повернуться например. Немножко код научиться разбивать на смысловые блоки и записывать их в функции, как передавать аргументы. Тогда намного легче будет ориентироваться в своем и чужом коде. Ну и АПИ конечно почитать надо.
-
Может как-то переделать функцию, чтобы она не пыталась выполнить строку, как функцию. И длину #s сразу проверять, чтобы не слали строки в приемник бесконечные (надо знать максимальную длину своих строк). И переписать весь сериалайз/ансериалайз в какой-то отдельный пользовательский общедоступный функционал.
Это опасная функция!
:mad:function unserialize( s ) local func = loadstring( "return "..s, "unserialize" ) if func then setfenv( func, {} ) local ok, result = pcall( func ) if ok then return result end end return nil endПодредактировал код, получилось не очень...
function Reception() local id,message = rednet.receive() if RednetProtect(id) then local temp_array= textutils.unserialize(message) if temp_array[1] == 'register' then AccountCreate(temp_array) end end end function AccountCreate(temp_array) login = temp_array[2] pass= temp_array[3] name= temp_array[4] ......... endОтправляете по сети так:
Логин = qwerty
Пароль = 1111
Имя = Вася
SendCommand(id_server, {"register", login, password, name} )
Вот функция отправки:
function SendCommand(ID, data_pre_send) data_send = textutils.serialize(data_pre_send) rednet.send(ID, data_send) end -
смотреть с 17 минуты, можно включить русские субтитры с переводом.Дэн200 (это один из разработчиков мода) рассказывает о некотором подобии сетей интернет, протоколах и подобии маршрутизации. Механизм, конечно совсем другой, но так, для кругозора посмотреть можно.
Вот новый АПИ rednet ,для версии 1.63:
CHANNEL_BROADCAST = 65535 CHANNEL_REPEAT = 65533 local tReceivedMessages = {} local tReceivedMessageTimeouts = {} local tHostnames = {} function open( sModem ) if type( sModem ) ~= "string" then error( "expected string", 2 ) end if peripheral.getType( sModem ) ~= "modem" then error( "No such modem: "..sModem, 2 ) end peripheral.call( sModem, "open", os.getComputerID() ) peripheral.call( sModem, "open", CHANNEL_BROADCAST ) end function close( sModem ) if sModem then -- Close a specific modem if type( sModem ) ~= "string" then error( "expected string", 2 ) end if peripheral.getType( sModem ) ~= "modem" then error( "No such modem: "..sModem, 2 ) end peripheral.call( sModem, "close", os.getComputerID() ) peripheral.call( sModem, "close", CHANNEL_BROADCAST ) else -- Close all modems for n,sModem in ipairs( peripheral.getNames() ) do if isOpen( sModem ) then close( sModem ) end end end end function isOpen( sModem ) if sModem then -- Check if a specific modem is open if type( sModem ) ~= "string" then error( "expected string", 2 ) end if peripheral.getType( sModem ) == "modem" then return peripheral.call( sModem, "isOpen", os.getComputerID() ) and peripheral.call( sModem, "isOpen", CHANNEL_BROADCAST ) end else -- Check if any modem is open for n,sModem in ipairs( peripheral.getNames() ) do if isOpen( sModem ) then return true end end end return false end function send( nRecipient, message, sProtocol ) -- Generate a (probably) unique message ID -- We could do other things to guarantee uniqueness, but we really don't need to -- Store it to ensure we don't get our own messages back local nMessageID = math.random( 1, 2147483647 ) tReceivedMessages[ nMessageID ] = true tReceivedMessageTimeouts[ os.startTimer( 30 ) ] = nMessageID -- Create the message local nReplyChannel = os.getComputerID() local tMessage = { nMessageID = nMessageID, nRecipient = nRecipient, message = message, sProtocol = sProtocol, } if nRecipient == os.getComputerID() then -- Loopback to ourselves os.queueEvent( "rednet_message", nReplyChannel, message, sProtocol ) else -- Send on all open modems, to the target and to repeaters local sent = false for n,sModem in ipairs( peripheral.getNames() ) do if isOpen( sModem ) then peripheral.call( sModem, "transmit", nRecipient, nReplyChannel, tMessage ); peripheral.call( sModem, "transmit", CHANNEL_REPEAT, nReplyChannel, tMessage ); sent = true end end end end function broadcast( message, sProtocol ) send( CHANNEL_BROADCAST, message, sProtocol ) end function receive( sProtocolFilter, nTimeout ) -- The parameters used to be ( nTimeout ), detect this case for backwards compatibility if type(sProtocolFilter) == "number" and nTimeout == nil then sProtocolFilter, nTimeout = nil, sProtocolFilter end -- Start the timer local timer = nil local sFilter = nil if nTimeout then timer = os.startTimer( nTimeout ) sFilter = nil else sFilter = "rednet_message" end -- Wait for events while true do local sEvent, p1, p2, p3 = os.pullEvent( sFilter ) if sEvent == "rednet_message" then -- Return the first matching rednet_message local nSenderID, message, sProtocol = p1, p2, p3 if sProtocolFilter == nil or sProtocol == sProtocolFilter then return nSenderID, message, sProtocol end elseif sEvent == "timer" then -- Return nil if we timeout if p1 == timer then return nil end end end end function host( sProtocol, sHostname ) if type( sProtocol ) ~= "string" or type( sHostname ) ~= "string" then error( "expected string, string", 2 ) end if sHostname == "localhost" then error( "Reserved hostname", 2 ) end if tHostnames[ sProtocol ] ~= sHostname then if lookup( sProtocol, sHostname ) ~= nil then error( "Hostname in use", 2 ) end tHostnames[ sProtocol ] = sHostname end end function unhost( sProtocol ) if type( sProtocol ) ~= "string" then error( "expected string", 2 ) end tHostnames[ sProtocol ] = nil end function lookup( sProtocol, sHostname ) if type( sProtocol ) ~= "string" then error( "expected string", 2 ) end -- Build list of host IDs local tResults = nil if sHostname == nil then tResults = {} end -- Check localhost first if tHostnames[ sProtocol ] then if sHostname == nil then table.insert( tResults, os.getComputerID() ) elseif sHostname == "localhost" or sHostname == tHostnames[ sProtocol ] then return os.getComputerID() end end if not isOpen() then if tResults then return unpack( tResults ) end return nil end -- Broadcast a lookup packet broadcast( { sType = "lookup", sProtocol = sProtocol, sHostname = sHostname, }, "dns" ) -- Start a timer local timer = os.startTimer( 2 ) -- Wait for events while true do local event, p1, p2, p3 = os.pullEvent() if event == "rednet_message" then -- Got a rednet message, check if it's the response to our request local nSenderID, tMessage, sMessageProtocol = p1, p2, p3 if sMessageProtocol == "dns" and tMessage.sType == "lookup response" then if tMessage.sProtocol == sProtocol then if sHostname == nil then table.insert( tResults, nSenderID ) elseif tMessage.sHostname == sHostname then return nSenderID end end end else -- Got a timer event, check it's the end of our timeout if p1 == timer then break end end end if tResults then return unpack( tResults ) end return nil end local bRunning = false function run() if bRunning then error( "rednet is already running", 2 ) end bRunning = true while bRunning do local sEvent, p1, p2, p3, p4 = os.pullEventRaw() if sEvent == "modem_message" then -- Got a modem message, process it and add it to the rednet event queue local sModem, nChannel, nReplyChannel, tMessage = p1, p2, p3, p4 if isOpen( sModem ) and ( nChannel == os.getComputerID() or nChannel == CHANNEL_BROADCAST ) then if type( tMessage ) == "table" and tMessage.nMessageID then if not tReceivedMessages[ tMessage.nMessageID ] then tReceivedMessages[ tMessage.nMessageID ] = true tReceivedMessageTimeouts[ os.startTimer( 30 ) ] = nMessageID os.queueEvent( "rednet_message", nReplyChannel, tMessage.message, tMessage.sProtocol ) end end end elseif sEvent == "rednet_message" then -- Got a rednet message (queued from above), respond to dns lookup local nSenderID, tMessage, sProtocol = p1, p2, p3 if sProtocol == "dns" and tMessage.sType == "lookup" then local sHostname = tHostnames[ tMessage.sProtocol ] if sHostname ~= nil and (tMessage.sHostname == nil or tMessage.sHostname == sHostname) then rednet.send( nSenderID, { sType = "lookup response", sHostname = sHostname, sProtocol = tMessage.sProtocol, }, "dns" ) end end elseif sEvent == "timer" then -- Got a timer event, use it to clear the event queue local nTimer = p1 local nMessage = tReceivedMessageTimeouts[ nTimer ] if nMessage then tReceivedMessageTimeouts[ nTimer ] = nil tReceivedMessages[ nMessage ] = nil end end end endКстати сети так и остались уязвимы, что печально.
А может и нет.Ходишь с планшетом, играешь на нем в тетрис или просто он в кармане валяется, и он в фоновом режиме пишет весь радиоэфир 
-
-
print("Enter Side :") side= read() rednet.open(side)Так лучше не делать. Представьте, что Вы вставили мышку в USB разъем, а вам Windows говорит, введите стандарт USB, скорость передачи данных, введите имя драйвера для мыши... Я бы комп вместе с таким Windows в окно сразу запустил.
Используйте стандартную функцию, где пользователю не надо думать, с какой именно стороны присобачить модем:
function RednetOpen() local sModemSide = nil for n,sSide in ipairs( rs.getSides() ) do if peripheral.getType( sSide ) == "modem" then sModemSide = sSide rednet.open(sModemSide) break end end if sModemSide == nil then print( "Program stopped.") print( "No modem attached." ) error() end endДобавьте, пожалуйста описание, что конкретно должна делать программа. Если это маршрутизатор, то где разделение сетей на уровни, как он общается с другим маршрутизатором, как ищет в таблицах путь к нему (причем оптимально короткий). И программку разбейте, пожалуйста, на какие-то кусочки. Чтобы отдельно функция что-то принимала, другая функция занималась буфером, третья что-то отправляла.
-
Отличная программка и очень полезная. Просьба, хотелось бы после входа в аккаунт смену меню, то есть при активной сессии должны убираться лишние кнопки. Немножко где-то баг при удалении сообщений, одно всегда остается, а стирается после добавления новых. Хотелось бы дату смс видеть, и циклично месседжи крутить, то есть с последнего на первую перескакивает запись. И кнопку "удалить все месседжи"! Понравилось, как на сервере можно посмотреть пользователей (активных, всех). Нельзя ли по какой-то кнопке добавлять новости, что-бы не лезть в папки. С модемом повозился, функция его видит, но просит открыть (стоял с самого начала WiFi) надо бы еще проверку всунуть на тип модема, видимо.
Можно будет на спавне поставить и штук 3-5 терминалов, игроки смогут друг-другу мессаги оставлять и прочее, новости писать можно игрокам, ходя для админов есть плагин automessage в чат.
Вот функция получения времени на сайте http://www.timeapi.org. Вместо /now можно указать часовой пояс /pdt/7+hours+before или /pdt/3+hours+after и прочее. Там куча аргументов.
Ну а уже строку 2014-05-05T17:33:48+01:00 функцией string.sub() повыкусывать себе дату, время в любом формате можно.
function getWorldTime() if not http then print("Pastebin requires http API!!!") print("Set enable API_http in ComputerCraft.cfg") return false end local response = http.get("http://www.timeapi.org/utc/now") --change args if response then local time_mess = response.readAll() response.close() return time_mess else return false end end print(getWorldTime())На спавн надо будет однозначно поставить, супер почтовичок, единственное, что интерфейсик бы допилить чуть-чуть.
-
Так, как черепашка начинает строить с нижнего левого угла, карты будут симметричны диаметрально, что очень хорошо. Сама половинка может быть любой формы, не обязательно симметричной. Но вот вопрос, если черепашка исследовала свою половинку поля, она автоматом может пересчитать и карту врага. А нужно ли нам это, надо подумать, хотя страшного в этом ничего вроде нет. Но не хочется сидения на своей карте, программу будут менять так, чтобы сначала исследовать свою карту, пересчитать вражескую, а потом только атаковать всеми силами. Надо подумать. Может разные карты строить для команд, не будет ли тактического преимущества у кого-то из-за этого. Но это легко меняется при обширной базе карт, из 30-40 карт можно выбрать просто похожие. Материал карт - бэдрок однозначно, завалы - случайно из песка, гравия или еще чего-то, не важно, но предпочтительнее сыпучий материал. Флаги и сундуки с углем и прочее ставят админы (арбитры и организаторы чемпионатов). Строитель должен построить только лабиринт, немного отступив от спавна до центральной линии арены (мои скрины выше)Zer0Galaxy
Хочу уточнить такие вопросы:
1. Половинки карт всегда симметричны?
2. Если да, то симметрия зеркальная или осевая?
3. Из какого количества типов блоков должна состоять карта? Пока предполагается три типа строительных блоков плюс один специальный (сундук, лампа и т.д.)
-
Черепахи бедрок бить то не могут. Мы строим изначально карту из камня обычного, черепашка ее один раз считывает, а в дальнейшем строит из бэдрока, а рэндомно, если видит пустоту при постройке, пусть с какой-то малой вероятностью кидает песок между лабиринтом или еще что-то, типа завалы какие-то. Их черепашки-бойцы с легкостью расчистят в процессе разведки карты и боя. При необходимости постройки новой карты, схема которой у нас есть, админ просто сносит бэдрок на арене в ручном режиме.
Мы кидаем бэдрок и прочее в сундуки на базе, выбираем карту, открываем окно(блок бэдрока) для строителя на арене, это можно сделать только амину в креативе, черепаха по команде по змейке строит карту и приезжает обратно на исходную точку. Окно закрываем. Все.
По поводу спавна. На скрине видны разные цвета шерсти (1,2,3,4,5 цвета по порядку от белого, это стандартный порядок цветов в майнкрафт). Анализируя цвет (в инвентаре у черепахи есть на начало боя эти блоки шерсти) черепаха не только узнает свое место на арене, но и свою задачу. Например мы в программу можем заложить уже "роль" бойца при спавне. Например, белый и оранжевый - дэферы, остальные цвета - атакеры.
Разработчики, программисты и игроки - это одни и те же люди изначально. Когда мы создадим программу, которая более менее управляет черепахой и позволяет достигнуть победы в бою(найти и украсть флаг врага или убить всех вражеских черепах) тогда уже каждый игрок в отдельности может по своему желанию модернизировать программу и попробовать сразиться с другим игроком. И только тогда уже будут нужны админы, судьи, объявления на форуме о турнирах и прочее. По моему, тут все прозаично. А пока в разработке программы принять участие может каждый. Нет сейчас никакой администрации проектаMalvina
Я немного не наблюдаю грань где кончается работа разработчиков проекта и начинаются действия командных программистов. Выше был выделен такой аспект: Механизм принятия решений черепахой (с учетом коэффициентов "стоимости" и важности того или иного решения с учетом обстановки на поле боя).На мой взгляд это уже дело той и другой команды как будет рассчитывать черепашка приоритетность задач. То же самое по сути относится и к стимулу для черепахи. Как по мне так это должна решать команда сколько черепашек назначить на поиск флага\исследования местности и.т.д. Вот только далеко не все смогут качественно запрогать черепаху так код тут довольно сложный выйдет. Если в чём то не прав то прошу поправить.o_O
P.S У меня почему то данная задумка ассоциируется со старой игрулькой в танчики на dendy


И еще раз повторю. Когда начнется бой, человек не будет вмешиваться в действие роботов. То, что вы в них заложите, это все что у них будет, они смогут рассчитывать только на себя. чтобы победить. Как в футболе, указали тактику (2-2-4-2), и вперед. Так и здесь. В том и вся изюминка - написать хоть какое то подобие ИИ. Нужен генератор задач, анализатор приоритетов, анализатор ситуации и прочее. У черепашки в процессе боя будет накапливаться информация о карте, количестве своих и вражеских потерь, времени до конца боя, количестве захваченных флагов, остатке топлива. При обработке всех этих переменных и будут выбираться роли и действия, тактика и приоритеты.
Можете это конечно ничего и не учитывать, а кататься по змейке, пока не наткнетесь на флаг, как в Ваших танчиках на Денди, но будет ли Вам интересно наблюдать за такими действиями программы, вот вопрос

-
Отлично, очень оперативно, с программой решили!
По поводу первого, думаю не критично, справится одна черепаха на половину поля.Над чем еще следует подумать:
- работа одновременно нескольких черепах на одной территории для сокращения времени работы;
- координация работающих черепах с компьютера.
А вот с координацией согласен. Нужен простенький графический интерфейс что-то типа:
- показать список карт
- построить карту - [выбор карты] - [приступить]
- считать карту - [введите имя] - [приступить]
- ....
То есть картограф должен получить команду, построить или считать карту и отправить массив в память координационного компа. Строители могут там жить вечно, сундучки, как Вы их там правильно показали, только иногда пополнять углем и бэдроком. Там их, правда, несколько, 2-3, поставить нужно, с разными предметами, допустим снизу, сверху и слева. После постройки/считывания, черепашка возвращается по правой линии назад на исходно положение.
рис.1 Общий вид, вражеская половина карты не достроена.

рис.2 Спавн
рис. 3
рис. 4 Варианты лабиринтов. Карта "Кровавая резня" Здесь мы заведомо пихаем черепах в узкое место, в "кровавую баню" и т.п. Вариантов масса.
-
Спасибо за исчерпывающий ответ, по "теорверу" в универе 5-ка была, но почти 15 лет прошло, забывается все.

-
Выкладывать обязательно, только оформить аккуратно, пояснить нюансы, или трудно воспринимаемые участки кода, какие-то скрины прикрепить, ссылки на источники, на видеообзор, Википедию, может какая-то литература использовалась, каких авторов. Рабочие и красиво оформленные работы будут увековечены в разделах проекты или в зале славы на радость их авторам и читателям форума!
-
Ой, Дмитрий! Чувствую, где-то подвох, не пойму пока гдеbonus={2,20,200}
M=B1*P1+B2*P2+B3*P3
Где B1, B2, B3 – выигрыш в случае выпадения одной, двух или трех семерок;
P1, P2, P3 – вероятность соответствующего события.
Вероятность выпадения только одной семерки равна 0,243. Вероятность выпадения двух семерок – 0,027. Трех семерок – 0,001. Кто силен в комбинаторике, проверьте меня.
Таким образом, матожидание выигрыша равняется: M=2*0,243+20*0,027+200*0,001=1,226
Что это значит? Это значит, что на тысячу принятых слитков автомат выдаст в качестве призов 1226.
. Играл, и разорился до нитки
У меня такое чувство,что М на 3 разделить что ли. А то получается, прибыльность 123%. Отбросим ничтожный вариант выпадения один из тысячи - где платят 200 кусочков(то есть на тысячу ставок по 1 кусочку железа в среднем выигрываем 200) Та же история и с двумя семерками.
На сотне семерка встречается 20 раз (19 раз по одной и раз в числе 77 две). Верю, что от 000 до 999 - 243 числа с одной семеркой, не помню уже формул комбинаторики, киньте формулу, пожалуйста. Ну так вот - за вероятность 0,243 выигрыш всего один к одному, как на красное-черное, где вероятность 0,5!:p Что-то не сходиться. Как по мне, строку бонуса увеличить надо ~ до 4, 37, 1000!
С каверами автоматик вообще конфетка, эстетично очень смотрится. Настроить бы у нас на сервере таких в казино, а рулетку по центру поставить!
P.S. Тема была перемещена в этот раздел, как готовый и оформленый проект. (Администрация форума)

Божество на сервере!
в Корзина
Опубликовано:
Вчера наш идеолог и основатель проекта Рид (1Ridav кто не знает) поделился замечательной идеей создать на сервере божество (храм с божеством) которое бы влияло на мир (погода, день ночь, бури, случайные события, убийства и телепорты игроков, "манна небесная", алмазы с неба и прочее прочее), кто знаком немного с командными админблоками и Computercraft может представить, что можно творить. Божеству можно(а самое главное нужно) преподносить жертвоприношения, чтобы его задобрить. То есть будет воронка и и система обработки брошенных предметов. У божества будет плавно(иногда рандомно) меняться настроение и со временем сформируется свой характер. И вот главная фишка:
Без должного внимания божество сделает игру для игроков на сервере невыносимой и с неба молнии метать начнет и хаос приносить!:p:D.
Будет оно доброе или злое, решать вам!!!
Задачка - как красиво построить какое-то животное, идола. Может с какой карты перенести из интернета? Может просто черепаху в масштабе 1:16 (1:32) с мечем построить (строили кстати уже на старом сервере)