Asior
-
Публикации
570 -
Зарегистрирован
-
Посещение
-
Победитель дней
70
Сообщения, опубликованные пользователем Asior
-
-
Только что, vford сказал:Хм, а разрешено/запрещено ли выкладывать на форум программы с закрытым исходным кодом?
Если есть исходный код, то маловероятно что оно закрыто. У меня не хватает идей, как это сделать.
Из разряда "у меня вот есть такая вот программа, но я вам не дам её"
-
1
-
1
-
1
-
-
17 минут назад, rootmaster сказал:поч все всегда сливают мои исходники, я то не против но я не давал вам на это разрешения
Потому-что нет ничего слаще, чем вскрыть "защищенный" код и разобраться как оно работает.
4 часа назад, rootmaster сказал:dick menager
кстати это слово пишется иначе.
-
1
-
2
-
-
Для тех, кому охота поглядеть на примерный код. (спс bpm140)
Скрытый текстlocal function a(type) return component.proxy(component.list(type)() or "") end local b = a("eeprom") local c = a("internet") local d = component.invoke; computer.setArchitecture = nil; local component, error, xpcall, assert, e, checkArg, pairs, type, f, g = component, error, xpcall, assert, computer.shutdown, checkArg, pairs, type, table.unpack, debug.traceback; local h = { makeReadonly = false, get = "", set = {nil, "storage is readonly"}, setData = {nil, "storage is readonly"}, getData = "", getChecksum = "" } local function i(j, k, ...) checkArg(1, j, "string") checkArg(2, k, "string") if j == b.address then for l, m in pairs(h) do if l == k then local n = type(m) if n == "table" then return f(m) elseif n == "function" then return m(...) else return m end end end return d(j, k, ...) else return d(j, k, ...) end end local function o() component.invoke = i end local function p() component.invoke = d end local q = a("gpu") local r; local s; local t, u; local function v() q = {} setmetatable(q, {__index = function() error("gpu and screen required") end}) end if not q then v() else r = component.list("screen")() if r then q.bind(r) t, u = q.getResolution() s = component.invoke(r, "getKeyboards")[1] else v() end end local function w() q.setForeground(q.setBackground(q.getForeground())) end local function x() q.fill(1, 1, t, u, " ") end local function y(z, A) q.setBackground(z or 0xFFFFFF) q.setForeground(A or 0) end local function B(z, A) y(z, A) x() end local function C(D, E) q.set(math.ceil(t / 2 - unicode.len(D) / 2), E, D) end local function F(G, H, I) local J = I or 1; local E = u // 2 - #H // 2 - 1; if E < 0 then E = 0 end while true do B() local K = J // u * u; local L = E; if K == 0 then if q.getDepth() == 1 then w() C(G, 1 + L) w() else C(G, 1 + L) y(nil, 0x888888) end else L = 0 end for M = 1, #H do local N = M + 1 + L - K; if N >= 1 and N <= u then if s and J == M then w() end C(H[M], N) if s and J == M then w() end end end local O, P, Q, R, S = computer.pullSignal() if O == "key_down" and P == s then if R == 200 and J > 1 then J = J - 1 end if R == 208 and J < #H then J = J + 1 end if R == 28 then return J end elseif O == "touch" and P == r and S == 0 then R = R + K - L; R = R - 1; if R >= 1 and R <= #H then return R end elseif O == "scroll" and P == r then if S == 1 and J > 1 then J = J - 1 end if S == -1 and J < #H then J = J + 1 end end end end local function T(G) return F(G, {"no", "no", "yes", "no"}) == 3 end local function U(V, E) if not s then error("keyboard required") end local W = "" while true do q.set(V, E, "_") local O, P, X, R = computer.pullSignal() if O == "key_down" and P == s then if R == 28 then return W elseif R == 14 then if unicode.len(W) > 0 then W = unicode.sub(W, 1, unicode.len(W) - 1) q.set(V, E, " ") V = V - 1; q.set(V, E, " ") end elseif X ~= 0 then W = W .. unicode.char(X) q.set(V, E, unicode.char(X)) V = V + 1 end elseif O == "clipboard" and P == s then W = W .. X; q.set(V, E, X) V = V + unicode.len(X) if unicode.sub(X, unicode.len(X), unicode.len(X)) == "\n" then return unicode.sub(W, 1, unicode.len(W) - 1) end end end end local function Y(Z) if not r then return end B() q.set(1, 1, Z) q.set(1, 2, "press enter to continue...") while true do local O, P, Q, R = computer.pullSignal() if O == "key_down" and P == s then if R == 28 then break end elseif O == "touch" and P == r then break end end end local function _(D) B() q.set(1, 1, D .. ": ") return U(unicode.len(D) + 3, 1) end local function a0(Z, a1) local parts, a2 = {}, 1; for M = 1, #Z do local X = Z:sub(M, M) if not parts[a2] then parts[a2] = "" end if X == a1 then a2 = a2 + 1 else parts[a2] = parts[a2] .. X end end return parts end local function a3(a4, a5) local a6, a7 = a4.open(a5) if not a6 then return nil, a7 end local W = "" while true do local a8 = a4.read(a6, math.huge) if not a8 then break end W = W .. a8 end a4.close(a6) return W end local function a9(a4, a5, aa) local a6, a7 = a4.open(a5, "w") if not a6 then return nil, a7 end a4.write(a6, aa) a4.close(a6) return true end local function ab(ac) return a0(b.getData(), "\n")[ac] or "" end local function ad(ac, ae) if ae:find("\n") then error("\\n char") end parts = a0(b.getData(), "\n") for M = ac, 1, -1 do if not parts[M] then parts[M] = "" end end parts[ac] = ae; b.setData(table.concat(parts, "\n")) end local function af(G, P) local aa = {n = {}, a = {}} for j in component.list("filesystem") do aa.n[#aa.n + 1] = table.concat({ j:sub(1, 6), component.proxy(j).getLabel() }, ":") aa.a[#aa.a + 1] = j end aa.n[#aa.n + 1] = "back" local I = 1; for M = 1, #aa.a do if aa.a[M] == P then I = M; break end end local J = F(G, aa.n, I) local j = aa.a[J] return component.proxy(j or "") and j end local function ag() if r then q.setResolution(q.maxResolution()) end end local function ah(j) local a4, aa = component.proxy(j) if a4.exists("/init.lua") then computer.getBootAddress = function() return j end; computer.setBootAddress = function(j) p() ad(1, j) o() end; aa = a3(a4, "/init.lua") elseif a4.exists("/OS.lua") then h.getData = j; h.setData = function(j) p() ad(1, j) o() end; aa = a3(a4, "/OS.lua") else error("boot file not found") end o() ag() assert(xpcall(assert(load(aa, "=init")), g)) e() end local function ai(aj) if not c then return nil, "internet card is not found" end local ak, aa, al, am = c.request(aj), "" if ak then while true do al, am = ak.read(mathHuge) if al then aa = aa .. al else ak.close() if am then return nil, am else return aa end end end else return nil, "unvalid address" end end local function an(ao) if not c then if not ao then Y("internet card is not found") end return true end end local function ap() return r and (s or math.floor(computer.getDeviceInfo()[r].width) ~= 1) end local function aq() local j = af("select", ab(1)) if j then p() ad(1, j) end end local function ar() local j = af("fastboot") if j then ah(j) end end local function as(at) if an() then return end local aj = at; if not aj then aj = _("url") if aj == "" then return end end local W, a7 = ai(aj) if not W then Y(a7 or "unkown") return end o() computer.getBootAddress = function() return aj end; ag() assert(xpcall(assert(load(W, "=init")), g)) e() end local function au() while true do B() q.set(1, 1, "lua: ") local a8 = U(6, 1) if a8 == "" then return end local R, a7 = load(a8, nil, "=lua") if not R then Y(a7 or "unkown") else o() local av, a7 = pcall(R) Y(tostring(a7 or "nil")) end end end local function aw() local function ax() local function ay(j) if component.proxy(j).isReadOnly() then Y("drive is read only") return true end end while true do local J = F("disk menager", {"rename", "format", "install", "clone", "back"}) if J == 1 then local j = af("renamer") if j then if ay(j) then break end B() q.set(1, 1, "new name: ") local a8 = U(11, 1) if a8 ~= "" then component.proxy(j).setLabel(a8) end end elseif J == 2 then local j = af("formater") if j then if ay(j) then break end if T("format? " .. j:sub(1, 6)) then component.proxy(j).remove("/") end end elseif J == 3 or J == 4 then local az = af("drive1") if az then local aA = af("drive2") if aA and T( (J == 3 and "install" or "clone") .. " from " .. az:sub(1, 6) .. " to " .. aA:sub(1, 6) .. "?") then local az = component.proxy(az) local aA = component.proxy(aA) if J == 4 then aA.remove("/") end local function aB(a5) local aa = "" for aC in a5:gmatch("[^/\\]+") do aa = aC end return aa end local function aD(aE, aF, a5, aG) for Q, aa in ipairs(aE.list(a5)) do local aH = a5 .. aa; if aB(aH):sub(1, 1) ~= "." or not aG then if aE.isDirectory(aH) then aF.makeDirectory(aH) aD(aE, aF, aH, aG) else assert(a9(aF, aH, assert(a3(aE, aH)))) end end end end aD(az, aA, "/", J == 3) end end elseif J == 5 then return end end end local av, a7 = pcall(ax) if not av then Y(a7 or "unkown") end end local function aI() while true do local J = F("apps", { "fastboot", "internet boot", "lua", "disk menager", "back" }) if J == 1 then ar() elseif J == 2 then as() elseif J == 3 then au() elseif J == 4 then aw() elseif J == 5 then return end end end local function aJ() while true do local J = F("top recovery", {"select", "apps", "shutdown", "back"}) if J == 1 then aq() elseif J == 2 then aI() elseif J == 3 then e() elseif J == 4 then return end end end p() if component.proxy(ab(1)) then if ap() then B() q.set(1, 1, "RECOVERY MENU") q.set(1, 1, "boot: " .. ab(1):sub(1, 6)) q.set(1, 2, "alt-menu") q.set(1, 3, "enter-boot") for M = 1, 50 do local O, P, Q, R, S = computer.pullSignal(0.1) if O == "key_down" and P == s then if R == 56 then aJ() break elseif R == 28 then break end elseif O == "touch" and P == r and S == 0 then if R == 2 then aJ() break elseif R == 3 then break end end end end else if ap() then while not component.proxy(ab(1)) do aJ() end else for j in component.list("filesystem") do if component.invoke(j, "exists", "/init.lua") or component.invoke(j, "exists", "/OS.lua") then ad(1, j) break end end end end p() if not component.proxy(ab(1)) then error("boot file in not found") end ah(ab(1))
-
Хмм, мне кажется ... или кодировка улетела
Скрытый текст
-
Предложение
Добавить мод OpenBlocks-1.6 нужны могилки для сохранения вещей после смерти.
-
6 часов назад, prop сказал:https://drewdevault.com/2021/12/28/Dont-use-Discord-for-FOSS.html
Щас бы шуршать под ковром в личке дискорда, чтобы решать проблемы сервера, главной целью которого была открытость и репродуцируемость
И зачем мне эта статья? Не нравится ДС, есть IRC, которая опять таки связана с ДС. Смысл в том, что необходима связь быстрая, а не как на форуме, 1 ответ в сутки и то если человек заглянет.
6 часов назад, prop сказал:То что кто-то кому-то там наугад подсказывает как фиксить - это вообще какой-то детский сад.
Так подскажи, в чем проблема то? Зайди на сервер, пощупай его, пойми его проблемы с точки зрения игрока, предложи варианты исправления и вступи в наш клуб детского сада.
6 часов назад, prop сказал:Форум конечно кривой местами
А я вот все это пишу с телефона. Нормально оно все работает.
-
1
-
-
35 минут назад, RasonGame сказал:Мне кажется, он про то, что Вольфрамовый своими лапками регулярно лазит к серверу.
Ручками лазиет по серверу с подачи и информации от игроков которые там играют и по мере возможности пытаются подсказать варианты правки косяков. Нужна оперативная связь? У нас работает ДС сервер, там можно быстро пропинговать нужных людей, в лс обсудить проблемы и т.д.
А проблем у сервера много, а как их решать никто не знает так как сервероводством никто не занимался углубленно.
Обозначу текущие проблемы:
- ОС не видит сундуки. Вообще и нигде. (подозрение на wg)
- ОС отрубает роботов на eeprom и компы (косяк мода)
-
OC не видит инвентарей. В адаптере стоит контроллер инвентаря.
ОС не видит сундуков. Должен быть component.chest или как то так
Скрытый текст
Проверил в одиночке, там работает только отображение инвентаря.
Проблема в неправильной установке OpenPeripheral. Кто-то уже писал, что у него не хочет оттуда ничего работать, надо ставить другую версию, которая воедино все сливает. OpenPeripheral-1.7.10-AIO-8
-
Благополучно крашнуло под песенку. Войти не могу теперь.
-
Предлагаю добавить еще модов.
- TConstruct
- OpenSecurity
- enderio
- Computronics
-
В 16.02.2022 в 11:32, rootmaster сказал:устоновка:
ради одного этого правильный руссишь отпадает желание ставить. Но код потыкаю
Блин а хорошо система то защищена! Я б никогда не додумался заглянуть туда и вытащить пароль
https://github.com/igorkll/fastOS/blob/main/start.lua#L23
и да, название темы вообще ни о чем. Я думал тут реально мод, а тут всего то навсего немного навеса на базовую ОС.
-
Ну пока все без изменений. Вроде работает, но приват поставить нельзя, в чате кроме логина и локалки, где меня никто не слышит, больше написать ничего нельзя
-
9 минут назад, ProgramCrafter сказал:Итак, сервер открыт!
Скрытый текст
-
1
-
-
-
Просто перешел, и заглянул сюда
Какая блин новая система? Оболочка это. Причем с ужасным видом и реализацией.
Хотя чего я еще то ждал ...
-
В 03.02.2022 в 13:01, eu_tomat сказал:А ты можешь воспроизвести этот эксперимент на том сервере, где список пользователей слетает? И что за сервер, если не секрет?
Так, эксперимент провел на сервере кристаликса. Да, действительно useradd не слетает. И я собственно вспомнил, почему я считал, что такая защита не имеет смысла. Если заприватить компьютер, он становится практически нерушимым. А приват робота не дает только открыть его, а срубить и упереть может любой игрок. Ну а при разрушении собственно useradd слетает.
Так что да, придется городить защиту.
-
1
-
-
В 03.02.2022 в 19:50, rootmaster сказал:у меня на ведре 2 гига 2 ядра работает в 30 фпс норм играеться
ну незнаю, я играл на ноуте 2 ядра 3.5 Ггц, 8 Гигов ОЗУ, видеокарта встройка из характеристик знаю что там только 512 Мб видеопамяти. И играть на таком было жестко и больно.
За 2к я даже не знаю чего тебе посоветовать.
-
2 часа назад, rootmaster сказал:хочу играть в scrap mechanic в дороге
Фига у вас запросы
2 часа назад, rootmaster сказал:на видео с навигатором с windows
Да на таком разве что пасьянс разложить и это предел возможностей.
Купи смартфон и не парься, там есть такое полезное приложение GooglePlay или AppGallery там игр огого.
А по сути просто погляди на характеристики своей игры
Скрытый текст
Мне как-то на ум ничего из дешевого сегмента навигаторов, да и даже телефонов, блин да даже ноутбуков не приходит в голову с такими характеристиками.
Так то сделать то возможно, но вот играть ... маловероятно.
-
У них идет дополнительный мод на командный блок, только сильно урезанный по функционалу и который с ОС сразу стыкуется. Так же там стоит дополнительный плагин который работает с монетами игровыми и временем онлайн игрока. Это можно поправить и перевести на простой командный блок, или вообще на дебаг карту. Но возни там очень много. По факту тут надо редактировать и эту программу и библиотеку. Я когда-то такое делал, пришлось сильно повозиться.
А, к слову плагин доступен в интернете, при желании можно его найти (я не знаю название), но на мскиле его изменили и он выдает данные в иной последовательности, тоесть не как в оригинале. Так что придется порядок разбора времени всеравно править
-
38 минут назад, hohserg сказал:Есть же computer.addUser
Если это робот, то оно при движении слетает. Так что да, как вариант такой способ вполне себе рабочий. Хотя достаточно зажать ctrl+alt+c и вся защита пропадает. А блокировать комбинацию не всегда надо.
-
1
-
-
3 часа назад, eu_tomat сказал:Но другие реакторные схемы также можно разгонять микроконтролем. Жидкостный реактор, думаю, станет ближайшим кандидатом на разгон. Вот где игроки захотят обмазаться трубами. Хотя, и здесь всё можно решить одними лишь компьютерами.
Подкидываю идею. Если нарушить структуру жидкостного реактора, то в него можно пихать охлаждающие стержни, которые нагретые. Восстановив структуру получим резкий выброс тепла, причем довольно стабильный. Чисто в теории мжно создать схему которая будет работать бесконечно гоняя эти самые стержни. Ну или копить их, про запас
-
1
-
-
https://computercraft.ru/topic/5245-servera-s-oc/
СС вообще не найдешь. ОС есть, на всех клонах мскила версия 1.6.1 тоесть старинная. Чанклодеры логично что везде запрещены
-
local text = 'Hello world' local tbl = {} for part in string.gmatch(text,"[^ ]+") do table.insert(tbl, part) end print(tbl[1]) print(tbl[2])Разбитие чисто по пробелам, если я правильно понял задачу
-
1
-
-
11 час назад, eu_tomat сказал:Как без ретрансляторов передать сигнал на расстояние, превышающее силу сигнала передатчика?
Интернет карта. Дублированный диск. Связанные сундуки. Хотя это уже будет не совсем карта и не совсем то что требуется по условию. Если чанки прогружены, можно даже морзянкой через турель настучать сообщение
Ну и самый простой способ, тупо сдвинуть эту самую карту ближе.

удалите пожалуйста :)
в Корзина
Опубликовано:
Перепроверь все ссылки, некоторые выдают 404.