Перейти к содержанию

Doob

Гуру
  • Публикаций

    776
  • Зарегистрирован

  • Посещение

  • Победитель дней

    78

Весь контент Doob

  1. Хорошая идея, игроки будут хоть за справедливость воевать, а не так как раньше - поставил робота, землю разровнять, так понабижало дятлов и разорвало в клочья.
  2. Вообще, с дроблением алмазов не удобно, т. к. придется собирать/разбирать руками, а это 11 новых рецептов и предметов, при делении на 9 или 9-10 при делении на 64. Но с кредитами тоже не очень, если бы они были виртуальные и легко преобразовывались в предметы и обратно, было бы лучше некуда. А если всё состояние может хранится в одном кошельке, то по закону подлости, легко будет теряться.
  3. Кстати, да, если привязать деньги к UU, то все будет просто замечательно, и игрокам хорошо, и серверу. Жизни это жизни, когда они кончаются должен быть полный вайп. Правда, я не думаю, что кто-то будет этим заниматься (потому-что кроме дома в соте, игрок может сделать бесконечное количество кладов в других местах), поэтому, бан с возможностью воскрешения за UU выглядит интересней. И чтобы воскрешать могли только те, кто не в бане. Хотим как лучше, но получим как всегда, чем отличается деньга, основанная на алмазе от самого алмаза? Можно просто добавить рецепт дробления алмаза до атомов и будет то же самое, все предметы будут иметь цены, так же основанные на алмазах. И никаких обменников не надо.Мы ведь это уже проходили, наклепали валют много и разных, но сервер загнулся в том же темпе, что и всегда. Если майн не имеет с жизнью ничего общего, то в него никто не должен играть. Если общеизвестные законы логики в майне не работают, то как тогда жить? NEO в своем моде здраво делал обналичку чеками - никаких стаков и крафтов, есть виртуальный счет и есть возможность получить энную сумму в виде предмета.
  4. Ну вот, жизнь игроков и облегчится. Чем больше вложено труда, тем комфортней условия для всех, вне зависимости от количества убитого времени на махание лопатой. Иначе будет традиционный дисбаланс - вначале игрок затрачивает уйму времени и ему постоянно не хватает ресурсов, а потом забивает сундуки и уходит. А новым игрокам приходится затрачивать одинаковое количество труда, вне зависимости от состояния экономики. Меня больше веселят порядки на некоторых серверах, где админы указывают минимально допустимые цены. Или единая торговая площадка для нескольких серверов, устанавливающая такую жесткую конкуренцию, что "папка", играющий с запуска сервера, может перебить цены всех остальных игроков.
  5. Почему обязательно алмы? Моды меняют баланс, торговля меняет приоритеты. Для многих жизненно важных крафтов нужны алмы, а тут их придется распылять. Эта проблема с валютой в майне существовала всегда. И никак не решается без сторонних модов/плагинов. Алмы, конечно, довольно ходовой товар, но с индустриальными модами, железо более востребовано. Либо каждый ресурс имеет стоимость в кредитах, либо все ресурсы идут через один рынок, иначе никак. Если игрок может конвертировать один товар в кредиты, а все остальные лежат мертвым грузом, то экономики никакой нет, только прямой бартер. (Даже если игроков было бы больше 100k, некоторые ресы все-равно не могли бы участвовать в обороте) Разве это плохо? Вполне справедливый сценарий, хоть для игрового, хоть для реального мира. Цены будут задавать игроки, это их право. От объективной экономики не убежать, если люди могут взаимодействовать напрямую. Если обменник нужен только для одного реса, то вообще никаких бросаний не требуется - две команды в чат и всё. Просто и надежно.
  6. Так себе идея с кредитами, не по-программистски. Лучше стакать как обычно, степенями. Например, набор из каких-нибудь степеней на основе тройки, позволит использовать меньше единиц, ну да ладно. Привязывать валюту к одному предмету бессмысленно, а чтобы привязать к большему количеству - придется каким-то образом их обнаруживать, считать и корректировать. Будет та же фигня, что и с трейдмодом, когда кристаллы прибывали в неограниченных количествах. Есть идея, выдавать кредиты только при первом заходе на сервер, т. е. инфляция новыми игроками. Количество кредитов в обороте будет относительно ограничено и они будут иметь ценность. Если кредиты можно будет дюпать, то будет коллапс, который не сразу обнаружится. Самая защищенная экономика может быть основана только на плагине с безналичкой, либо скорбордами/компами, потому-что кроме защиты от дюпов можно контролировать кучу важных параметров. Компы в любом случае, слишком медлительные, плагин писать ради одного сервера никто не будет. А кредиты кэшем - довольно опасная штука.
  7. oppm install nn Правда не стабильно работает это дело на лагающем севере.
  8. Тоже вариант, но не для всех ресурсов. Например, ломазы могут скупить быстро, а бревна будут висеть, если игроков мало, то будет большая инерция из-за того, что всем лень мониторить цены.
  9. Начальную цену можно выставить любую, в процессе работы, она всё равно будет калиброваться. По просьбе трудящихся убрал падение цены до 0. Даже если продают, чем покупают бесконечно больше, цена будет = 1. Тут оператор должен сам решать, какие товары будет добавлять в базу данных. В дефолтной сейчас ванильные предметы, которые нельзя получить из имеющихся, без потерь (кроме коблы и грязи).
  10. Представляю вам прoграмму умнoгo бартера, кoтoрая пoзвoляет oбменивать джинсы/бусы на зoлoтo/алмазы, пo справедливым ценам. Принцип рабoты Тoргoвый терминал пoкупает и прoдает предметы, устанавливая цены, oснoвываясь на закoне спрoса и предлoжения. Вычисление цены сoстoит из трех фoрмул: O/(I-O[+1])/I*M - пoлучение реальнoй стoимoсти предмета. (I - купленo, O - прoданo, M - мнoжитель) I-O этo разница между купленными и прoданными предметами, т. е. текущее кoличествo. Чтoбы пoлучить нoрмальнoе oтнoшение при I=O, всегда прибавляем 1. Далее, пoлучаем oтнoшение всех прoданных предметoв к текущему кoличеству - O/(I-O+1). Затем, делим результат на кoличествo купленных предметoв, чтoбы пoлучить oбратную прoпoрцию и умнoжаем на некoтoрoе числo, кoтoрoе пoзвoлит представить кoэффициент спрoса/предлoжения в виде натуральнoгo числа. ((R-C)/R)*C+C - если реальная стoимoсть бoльше текущей. (R - реальная стoимoсть, C - текущая) Пoлучаем разнoсть между реальнoй и текущей, делим на реальную, для пoлучения натуральнoй oснoвы. Далее, умнoжаем на текущую, и увеличиваем текущую стoимoсть на пoлученнoе значение. (C-R)/3+R - если реальная ниже текущей. Пoлучаем oбратную разницу, делим на кoэффициент падения цены (мoжет быть случайным значением oт 1 дo inf или oтнoшением C/R, лучше втoрoе, нo пoлучается слишкoм маленькая инерция) и дoбавляем этo делo к реальнoй стoимoсти. Уcтрoйствo Тoргoвый терминал сoстoит из кoмпьютера, рoбoта и прoизвoльнoй сети хранения предметoв AE2. Рoбoт, пo кoманде терминала, загружает и выгружает предметы, кoтoрые нахoдятся в буфере. К буферу пoдключен терминал через адаптер с кoнтрoллерoм инвентаря, кoтoрый пoзвoляет пoдсчитывать пoкупаемые у пoльзoвателя предметы. Терминал управляет перемещением предметoв между буферoм и МЕ сетью, через адаптер у МЕ-интерфейса. (На MC 1.7.10 нужен аддoн OpenPeripheral, дoбавляющий неoбхoдимые драйвера) Кoмпoненты Для терминала пoтребуется: алмазный кoрпус с алмазным мoнитoрoм, интернет-карта, беспрoвoдная карта, алмазная графическая карта, Lua BIOS, жесткий диск с OpenOS, прoцессoр и максимум ОЗУ. Периферия: редстoун-I/O (для включения и перезагрузки), 2 адаптера, кoнтрoллер инвентаря, кoнвертер энергии, клавиатура, зарядник для рoбoта, ME-интерфейс и ME-дискoвoд с дискетами. Для рoбoта: зoлoтoй кoрпус, инвентарь, EEPROM, беспрoвoдная карта, прoцессoр и минимум OЗУ. Устанoвка и настрoйка wget https://raw.githubusercontent.com/DOOBW/automarket/master/terminal.lua wget https://raw.githubusercontent.com/DOOBW/automarket/master/style.gss wget https://raw.githubusercontent.com/DOOBW/automarket/master/start.lua wget https://raw.githubusercontent.com/DOOBW/automarket/master/market.db wget https://raw.githubusercontent.com/DOOBW/automarket/master/robot_bios.lua wget https://raw.githubusercontent.com/DOOBW/automarket/master/gml.lua /lib/gml.lua echo start >> .shrcВ файле robot_bios.lua задать переменнoй address первые 4 симвoла адреса сетевoй карты терминала. Прoшить этoт файл в EEPROM рoбoта.В файле terminal.lua, в таблице cfg задать стoрoны: ic_side - стoрoна, с кoтoрoй нахoдится буфер пo oтнoшению к адаптеру с кoнтрoллерoм инвентаря. mei_side - стoрoна, с кoтoрoй нахoдится буфер oтнoсительнo адаптера. Перезагрузить терминал, включить рoбoта и мoжнo пoльзoваться. База данных устроена так: db = { users = { ['Ник_пользователя'] = { balance = счет, count = количество совершенных операций, lastlogin = время последней операции } }, items = { ['название_мода:название_предмета|метаданные'] = { label = Лейбл_предмета, i = куплено, o = продано, cost = текущая_стоимость } } } Пример работы (старая версия)
  11. На максимальном разрешении (160x50) один кадр рендерится 5-8 компами как-раз за 1 тик. 20 фпс на полный кадр это хорошо. Но если нужна цветная картинка 320x200, то объем данных увеличивается и обычный модем для этой цели не подходит. Помимо ограничений скорости обработки файловой системы и интернет-сокетов, есть ограничение рендера майна - при низком тпс видны ощутимые подлагивания. Это дело надо обстоятельно затестить на нормальном железе, чтобы определить технический предел.
  12. Все прекрасно биндится, в порядке живой очереди. Я тестил это дело в одиночке. Скорость вывода увеличивается примерно пропорционально количеству видеокарт. То есть: пришло сообщение, все видеокарты одновременно биндят монитор и спокойно выводят на него инфу. Здравая идея с сервером, в модемах я разочаровался еще при компутеркрафте, когда делал многопользовательские игры. Если взять либу MoviePy, то можно запилить сервер конвертирующий видео (с ютуба, например) в соответствующий формат для опенкомпов и рендерить с вполне реальной скоростью. Я за это дело брался, но бросил т. к. не придумал, как синхронизировать звуковую дорожку. Самый главный плюс внешнего сервера это даже не скорость передачи, а возможность моментально определить ключевые кадры с дельтами и все это в опенкомповских 256 цветах вещать потоком. Оперкомпам не приходится напрягаться ни на что, кроме вывода кадров.
  13. Одна локация? Мало питомцев, маленькие комнаты. Как-то скучно, да и лагает дико.
  14. Люди, которых что-то отпугивает, это непотенциальные игроки, кому они нужны? Мой клан несколько лет творил полный фарш на многих серверах DayZ Epoch (например, однажды хакнули сейф админов и увели технику из гаража, после того, как все раздарили, на сервере два дня шла безумная война). Кто-то строился, кто-то стрелялся, иногда собирались толпой выполнять миссии/мочить игроков. Никто не обижался, даже одиночки, которых преследовали несколько кланов. Наверное, потому-что каждый начинал с обычного DayZ, где убить голого новичка в черно/электро - святое дело. Да и без читеров было-бы скучно. А вот игры со смесью казуальщины и пострелушек рождают соответственных игроков, которые ни рыба, ни мясо.
  15. Отнять аптайм компутера при запуске проги и добавлять его каждый раз перед выводом. Собственно, по ссылке оно и есть.
  16. Ну да, если не искать, то много не найдешь. Даже на форуме.
  17. Ало, это клон DayZ, который арма, геймплей перенесен полностью. Тому, кто не бегал на перегонки с пулями по Электро, не кемперил ВПП, не ползал по кустам с двумя патронами и переломом по лесу, после неожиданной встречи с другим игроком, геймплей объяснять бесполезно. В DayZ Epoch и его производных есть приваты, сейфы, виртуальные гаражи, но там, как говорится, анал-карнавал: админ это царь ибох, донатные бессмертные танки и самолеты, т. к. арма состоит из багов чуть более, чем полностью, то вводятся бредовые правила вроде "не взламывать сейфы", "не взрывать заприваченный забор", "не стрелять", "не чесаться" и т. д. И какой же это зомби-апокалипсис, если можно сказать "чик-чик, я в домике", тут у нас война за выживание, а не симулятор карапуза в песочке. DayZ это весело, интересно и познавательно, хотя, у некоторых личностей пукан бомбит по любому поводу и это не лечится. А вообще, лучший мод для армы - ACE, тут и нормальная физика, и дисциплина среди игроков, и хороший отдых от бомбящих ололошек.
  18. Игроки хоть есть? Как по мне, Unturned намного увлекательней и красивей.
  19. Doob

    Фильтр мата!

    Вот где бы пригодились нейросети. Каждое слово можно завуалировать кучей разных способов, поэтому придется составить огромный соварь и постоянно читать логи, чтобы его обновить. Вроде есть сервисы по анализу контекста сообщений, на их основе можно выбирать подозрительные куски текста и руками добавлять в фильтр. Если создавать нейросеть, способную определять мат в сообщении, хотя-бы для одного языка, то придется неплохо вложиться, хотя задача довольно простая.
  20. Для любителей тыкать логические блоки, есть StarMade, можно почти полностью автоматизировать полеты. Космический корабль можно переделать в межпланетный лифт, который, например, будет сам обороняться от пиратов.
  21. Doob

    Время в гуи

    Вот, давно бы так, чтоб все как у людей.
  22. Doob

    Время в гуи

    Делается это точно так же, как и без гуи, только с гуи. В качестве гуи взял forms: local component, uptime, internet = require('component'), require('computer').uptime -- получаем компоненты и аптайм local forms = require('forms') -- подключаем библиотеку local W, H = component.gpu.getResolution() -- получаем размер экрана if component.isAvailable('internet') then -- проверяем наличие интернета internet = component.internet else error('No internet card available.', 0) end if not internet.isHttpEnabled() then -- проверяем доступ по http error('HTTP is disabled.', 0) end local args, tz = {...}, 10800 -- получаем аргументы и задаем дефолтную тайм-зону if args[1] then -- если есть аргумент tz = tonumber(args[1])*3600 -- получаем разницу от UTC0 в секундах end local req, reason = internet.request('https://time100.ru/api.php') -- запрашиваем таймштамп if not req then error('Failed to issue request: '..reason, 0) end -- проверяем на ошибки local timestamp = '' while true do -- получаем таймштамп из потока local data, reason = req.read() if not data then req.close() if reason then error(reason, 0) end break end timestamp = timestamp..data end local b_time = timestamp-uptime()+tz -- получаем разницу от аптайма forms.ignoreAll() -- чистка листенеров local main = forms.addForm() -- создаем форму main.W = 20 -- ширина и main.H = 6 -- высота главного окна main.left = (W-main.W)/2 -- размещаем окно по центру экрана main.top = (H-main.H)/2 main.border = 2 local l_time = main:addLabel(2,2,'') -- добавляем к форме зародыш времени local l_date = main:addLabel(2,3,'') -- и даты local btn_exit = main:addButton((main.W-7)/2,5,'exit', forms.stop) -- добавляем кнопку выхода local timer = main:addTimer(1, function() -- создаем таймер local c_date = os.date('*t', b_time+uptime()) -- получаем время из текущего таймштампа l_time.caption = ('time: '..c_date.hour..':'..c_date.min..':'..c_date.sec) -- задаем текст с текущим временем l_date.caption = ('date: '..c_date.day..'/'..c_date.month..'/'..c_date.year) -- задаем текст с датой l_time.W = #l_time.caption -- получем длину текста времени l_date.W = #l_date.caption -- и даты l_time.left = (main.W-l_time.W)/2+1 -- размещаем по центру окна l_date.left = (main.W-l_date.W)/2+1 main:redraw() -- перерисовываем end) timer:run() -- запускаем таймер forms.run(main) -- запускаем окно
  23. Нечего тут тестировать, если нет мода отрубающего руки. Запускаем сервер, кидаем моды и играем, все. Замысел как-раз в обратном - игроки сами пишут скрипты в процессе игры, кто лучше написал, тот и молодец.
  24. Средствами OC и CX, без использования дебаги или комблока это невозможно. Радиус 50 килоблоков это pi(50k^2) - почти 8 миллиардов блоков, умножим это хотя-бы на высоту самых высоких гор, получим больше триллиона блоков. Следовательно, не имея файла мира или доступа к командам оператора, ничего сделать нельзя.
×
×
  • Создать...