Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

Totoro

Members
  • Content Count

    35
  • Joined

  • Last visited

  • Days Won

    18

Reputation Activity

  1. Like
    Totoro reacted to Zen1th in Platformer game on OpenComputers   
    This is a working clone of Super Mario Bros. (with some missing features ). It was made thanks to the VRAM buffers feature (only available in experimental builds), the game runs quite smoothly and uses the Computronics Sound Card to play music on the same computer. It loads sprites from .bmp files, levels from Tiled (a free level editor) .json file and music is in some custom format that can be converted from MIDI files. This makes the game quite easily moddable.
    Source code
     
  2. Like
    Totoro reacted to Fingercomp in IRC library   
    There was no IRC library for OpenComputers, so I've made one. Here's a demo bot that uses it:
    local com = require("component") local event = require("event") local thread = require("thread") local gpu = com.gpu local irc = require("irc") local events = irc.events local env = setmetatable({ irc = irc, events = events, }, {__index = _G}) local client = irc.builder() :connection { host = "irc.esper.net:6667", throttling = { maxDelay = 2, maxThroughput = 5, }, } :auth { nickname = "oc-finger-irc", username = "fingercomp", realname = "OpenComputers IRC client library", } :bot { channels = {"#oc-finger-irc"}, tracking = { users = true, modes = true, account = true, userInfo = true, }, } :execution { threaded = true, reconnect = true, catchErrors = true, } :subscribe(events.irc.command, events.priority.high, function(self, client, evt) gpu.setForeground(0x00ff00) print("→ " .. evt.rawLine) gpu.setForeground(0xffffff) end) :subscribe(events.irc.write, events.priority.normal, function(self, client, evt) gpu.setForeground(0x00dbff) print("← " .. evt.line:gsub("[\r\n]*$", "")) gpu.setForeground(0xffffff) end) :subscribe(events.irc.message, irc.events.priority.normal, function(self, client, evt) if evt.source.nickname == "fingercomp" then if evt.message == "::quit" then evt:reply("Quitting.") evt.client:stop(("%s told me to quit."):format(evt.source.nickname)) elseif evt.message == "::spam" then evt:reply("1") evt:reply("2") evt:reply("3") evt:reply("4") evt:reply("5") elseif evt.message == "::longmsg" then local msg = {} for i = 1, 256 do if i == 128 then table.insert(msg, tostring(i) .. " ") else table.insert(msg, tostring(i)) end end evt:reply(table.concat(msg)) elseif evt.message == "::error" then (nil).test() elseif evt.message:sub(1, #"::exec ") == "::exec " then local code = evt.message:sub(#"::exec " + 1) local chunk, reason = load("return " .. code, "=irc", "t", env) if not chunk then chunk, reason = load(code, "=irc", "t", env) end if not chunk then evt:reply(("\x0304Error:\x0f %s"):format(reason)) else local result = table.pack(xpcall(chunk, debug.traceback)) local success = table.remove(result, 1) result.n = result.n - 1 for i = 1, result.n, 1 do if type(result) ~= "string" and type(result) ~= "number" and type(result) ~= "boolean" and type(result) ~= "nil" then result[i] = tostring(result[i]) else result[i] = ("%q"):format(result[i]):gsub("\\\n", "\n") end end if not success then evt:reply(("\x0304Error:\x0f %s"):format(result[1]:match("^[^\n]*"))) io.stderr:write(("%s\r\n"):format(result[1])) elseif result.n > 0 then evt:reply(table.concat(result, " ", i, result.n)) else evt:reply("\x0309Success") end end end end end) :subscribe(events.irc.ctcpRequest, irc.events.priority.normal, function(self, client, evt) if evt.ctcpCommand == "TIME" then evt:reply(os.date("%F %T")) end end) :subscribe(events.client.error, irc.events.priority.top, function(self, client, evt) print("Caught: " .. evt.traceback) evt:cancel() end) :build() local t = thread.create(function() repeat local evt = event.pull("interrupted") until evt end) env.client = client client:run() thread.waitForAny({t, client.thread}) client:stop("Quitting.") os.exit() I don't want to brag about it too much, but I think the code is pretty.
    Features
    Threaded execution. A nice API. IRCv3.2 capability negotiation. Throttling to prevent the bot from triggering anti-flood mechanisms. Tracks channel members, modes, nick changes, account names, etc. Automatically reconnects if it's disconnected from the IRC server. Splits long messages over multiple lines. The event bus can use coroutines as message handlers. Links
    The GitLab repository: https://gitlab.com/cc-ru/irc-oc Documentation: https://gitlab.com/cc-ru/irc-oc/-/wikis/home Demo programs: https://gitlab.com/cc-ru/irc-oc/snippets
  3. Like
    Totoro got a reaction from Log in Stem - easy internet bridge   
    What is STEM?
    Did you ever want to have a linked card, but without this pair-to-pair limitations?
    Well, you have internet card. And that is already half of the solution. The other half is to use Stem.

    Stem is a message transmitter for your OpenComputers devices with internet cards.
    Using a small OpenOS library you can use Stem to send and receive messages. Unlike the standard `modem` component, Stem-messaging uses not addresses, but `channels`. You can send messages to any channels, and you can subscribe to any number of channels to listen for messages from them.
    Installation
    The best way is to use HPM:
    hpm install stem If you do not have HPM, install it like this:
    pastebin run vf6upeAN If you do not want to use HPM repository, you can just use wget:
    wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua Example of a program using STEM
    local event = require('event') -- use STEM client library local stem = require('stem') -- open a connection to a STEM server -- the `stem.fomalhaut.me` is a default one local server = stem.connect('stem.fomalhaut.me') -- subscribe for messages from the channel with ID 'my-channel-id' server:subscribe('my-channel-id') -- then listen for events in a loop... while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...or register an event listener event.listen('stem_message', function(_, _, channel_id, message) print(channel_id, message) end) -- you can also send message to the channel -- (you do not need to be subscribed to this channel, to send a message) server:send('my-channel-id', 'hello there') -- unsubscribe from channel server:unsubscribe('my-channel-id') -- completely close the connection to the STEM server server:disconnect()  
    That is all.
    But there is more.
    Web client
    If you open the link to Stem server in your browser: https://stem.fomalhaut.me/
    You will see some statistics and the web client. Enter your channel ID into the form, and you can send messages to your robot in real time, right from your phone, without even starting Minecraft.

    The web client is limited with UTF-8 encoding, though.
    (Using OpenOS you can send literally anything, as long as the message fits in 64kb of data.)
    Security Questions
    The channels by default do not have any special security measures applied. They do not have any authentication mechanisms, the do not have any encryption.
    Anyone who knows the ID of a channel can send a message to it and can listen for responses. But.
    The length of ID is 256 bytes. And that can be any bytes - from 0 to 255. That means, that you have 256^256 possible combinations for your ID. And that is a giant number. If you need to secure your channel - just use something long and incomprehensible as your ID.
    As an additional measure you can use end-to-end encryption, or anything else - this is up to you.
    Default STEM server uses HTTPS, and does not store any information - message in, message out.
    Self-hosted STEM solution
    For those of you who are strong in spirit and computer knowledge - there is a self-hosted option. You can build Stem server from sources and run it on your machine.
    This is also pretty easy. Additional instructions can be found on GitLab.
    Useful links
    GitLab repository: https://gitlab.com/UnicornFreedom/stem
    Protocol description: https://gitlab.com/UnicornFreedom/stem/wikis/protocol
    Default server: https://stem.fomalhaut.me/
    HPM package: https://hel.fomalhaut.me/#packages/stem
     
    If I forgot something - feel free to ask here, or in IRC (my nickname is Totoro there). Also the project contains at least one "Easter egg" feature, that can offer some interesting options if you know HTML/CSS/JS.
    The Stem protocol is open - you can modify it, you can create your own clients in any programming language, etc.
  4. Upvote
    Totoro got a reaction from JackCarterSmith in Stem - easy internet bridge   
    What is STEM?
    Did you ever want to have a linked card, but without this pair-to-pair limitations?
    Well, you have internet card. And that is already half of the solution. The other half is to use Stem.

    Stem is a message transmitter for your OpenComputers devices with internet cards.
    Using a small OpenOS library you can use Stem to send and receive messages. Unlike the standard `modem` component, Stem-messaging uses not addresses, but `channels`. You can send messages to any channels, and you can subscribe to any number of channels to listen for messages from them.
    Installation
    The best way is to use HPM:
    hpm install stem If you do not have HPM, install it like this:
    pastebin run vf6upeAN If you do not want to use HPM repository, you can just use wget:
    wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua Example of a program using STEM
    local event = require('event') -- use STEM client library local stem = require('stem') -- open a connection to a STEM server -- the `stem.fomalhaut.me` is a default one local server = stem.connect('stem.fomalhaut.me') -- subscribe for messages from the channel with ID 'my-channel-id' server:subscribe('my-channel-id') -- then listen for events in a loop... while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...or register an event listener event.listen('stem_message', function(_, _, channel_id, message) print(channel_id, message) end) -- you can also send message to the channel -- (you do not need to be subscribed to this channel, to send a message) server:send('my-channel-id', 'hello there') -- unsubscribe from channel server:unsubscribe('my-channel-id') -- completely close the connection to the STEM server server:disconnect()  
    That is all.
    But there is more.
    Web client
    If you open the link to Stem server in your browser: https://stem.fomalhaut.me/
    You will see some statistics and the web client. Enter your channel ID into the form, and you can send messages to your robot in real time, right from your phone, without even starting Minecraft.

    The web client is limited with UTF-8 encoding, though.
    (Using OpenOS you can send literally anything, as long as the message fits in 64kb of data.)
    Security Questions
    The channels by default do not have any special security measures applied. They do not have any authentication mechanisms, the do not have any encryption.
    Anyone who knows the ID of a channel can send a message to it and can listen for responses. But.
    The length of ID is 256 bytes. And that can be any bytes - from 0 to 255. That means, that you have 256^256 possible combinations for your ID. And that is a giant number. If you need to secure your channel - just use something long and incomprehensible as your ID.
    As an additional measure you can use end-to-end encryption, or anything else - this is up to you.
    Default STEM server uses HTTPS, and does not store any information - message in, message out.
    Self-hosted STEM solution
    For those of you who are strong in spirit and computer knowledge - there is a self-hosted option. You can build Stem server from sources and run it on your machine.
    This is also pretty easy. Additional instructions can be found on GitLab.
    Useful links
    GitLab repository: https://gitlab.com/UnicornFreedom/stem
    Protocol description: https://gitlab.com/UnicornFreedom/stem/wikis/protocol
    Default server: https://stem.fomalhaut.me/
    HPM package: https://hel.fomalhaut.me/#packages/stem
     
    If I forgot something - feel free to ask here, or in IRC (my nickname is Totoro there). Also the project contains at least one "Easter egg" feature, that can offer some interesting options if you know HTML/CSS/JS.
    The Stem protocol is open - you can modify it, you can create your own clients in any programming language, etc.
  5. Like
    Totoro reacted to Izaya in realtime - Real world time in OpenComputers   
    Ever needed real-world time in OpenComputers? I did today, so I did something about it.
    realtime
    realtime is a set of libraries and protocols designed to let you synchronise your computers with the real world, and includes:
    The realtime library, for taking and keeping time. The realtime-sync daemon, for synchronising your realtime library with the real world The realtime-relay daemon, for synchronising your realtime across the local network. All of these can be downloaded via oppm, or from the Minitel GitHub repository.
    Additionally, all of these come with manual pages describing their functionality and usage, all of which can be found here.
  6. Like
    Totoro reacted to tpzker in [WIP] TritonLang - A C++-styled language that compiles to Lua [Continuation of KLang]   
    Overview
    Hello there. Some of you may remember KLang. I decided that I should you know, actually work on it. Therefore, I present Triton/TritonLang. Triton is the continuation of KLang, a C++-styled programming language that compiles to Lua. I have no ETA on when it will be done as of the moment, but it is work in progress and I would possibly like to get feedback on my current project status.
    Hello, world! [Pseudocode]
    #include <io> int main() { io::info("Hello, world!"); return 0; } Advantages to Lua
    Headers/easily include libraries Statically and dynamically compiled libraries for programs C++-style syntax and easier OOP Helpful Links
    WIP Documentation
    GitHub Repository
     
     
  7. Like
    Totoro reacted to Adorable-Catgirl in OpenSolidState   
    OpenSolidState
    for Minecraft 1.12.2
    ____________________________________________________
    Source Code and builds can be found on Github.
    Note: Requires Forgelin.
     
    General Purpose (E)EPROMs?
    Have you ever wanted fast storage? How about wanting to boot PsychOS 2 on a uC? Well, now you can! There are two main variants: The card and the drive.
     
    The Card!

     
    The Drive!

     
    Tiers:
    Tier 1 - Manually erased EPROM, erased with the assembler. 64KiB Tier 2 - Electronically erased! Still 64KiB Tier 3 - Bigger EEPROM! 128KiB!  
    But how do I craft them?
    Just use JEI, trust me.
     
    What else is included?
    A utility floppy and ROMFS boot EEPROM are included with the mod!
     
    Feel free to ask more questions!
     
    i need to make docs
  8. Like
    Totoro got a reaction from Fingercomp in Stem - easy internet bridge   
    What is STEM?
    Did you ever want to have a linked card, but without this pair-to-pair limitations?
    Well, you have internet card. And that is already half of the solution. The other half is to use Stem.

    Stem is a message transmitter for your OpenComputers devices with internet cards.
    Using a small OpenOS library you can use Stem to send and receive messages. Unlike the standard `modem` component, Stem-messaging uses not addresses, but `channels`. You can send messages to any channels, and you can subscribe to any number of channels to listen for messages from them.
    Installation
    The best way is to use HPM:
    hpm install stem If you do not have HPM, install it like this:
    pastebin run vf6upeAN If you do not want to use HPM repository, you can just use wget:
    wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua Example of a program using STEM
    local event = require('event') -- use STEM client library local stem = require('stem') -- open a connection to a STEM server -- the `stem.fomalhaut.me` is a default one local server = stem.connect('stem.fomalhaut.me') -- subscribe for messages from the channel with ID 'my-channel-id' server:subscribe('my-channel-id') -- then listen for events in a loop... while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...or register an event listener event.listen('stem_message', function(_, _, channel_id, message) print(channel_id, message) end) -- you can also send message to the channel -- (you do not need to be subscribed to this channel, to send a message) server:send('my-channel-id', 'hello there') -- unsubscribe from channel server:unsubscribe('my-channel-id') -- completely close the connection to the STEM server server:disconnect()  
    That is all.
    But there is more.
    Web client
    If you open the link to Stem server in your browser: https://stem.fomalhaut.me/
    You will see some statistics and the web client. Enter your channel ID into the form, and you can send messages to your robot in real time, right from your phone, without even starting Minecraft.

    The web client is limited with UTF-8 encoding, though.
    (Using OpenOS you can send literally anything, as long as the message fits in 64kb of data.)
    Security Questions
    The channels by default do not have any special security measures applied. They do not have any authentication mechanisms, the do not have any encryption.
    Anyone who knows the ID of a channel can send a message to it and can listen for responses. But.
    The length of ID is 256 bytes. And that can be any bytes - from 0 to 255. That means, that you have 256^256 possible combinations for your ID. And that is a giant number. If you need to secure your channel - just use something long and incomprehensible as your ID.
    As an additional measure you can use end-to-end encryption, or anything else - this is up to you.
    Default STEM server uses HTTPS, and does not store any information - message in, message out.
    Self-hosted STEM solution
    For those of you who are strong in spirit and computer knowledge - there is a self-hosted option. You can build Stem server from sources and run it on your machine.
    This is also pretty easy. Additional instructions can be found on GitLab.
    Useful links
    GitLab repository: https://gitlab.com/UnicornFreedom/stem
    Protocol description: https://gitlab.com/UnicornFreedom/stem/wikis/protocol
    Default server: https://stem.fomalhaut.me/
    HPM package: https://hel.fomalhaut.me/#packages/stem
     
    If I forgot something - feel free to ask here, or in IRC (my nickname is Totoro there). Also the project contains at least one "Easter egg" feature, that can offer some interesting options if you know HTML/CSS/JS.
    The Stem protocol is open - you can modify it, you can create your own clients in any programming language, etc.
  9. Like
    Totoro got a reaction from CptMercury in Stem - easy internet bridge   
    What is STEM?
    Did you ever want to have a linked card, but without this pair-to-pair limitations?
    Well, you have internet card. And that is already half of the solution. The other half is to use Stem.

    Stem is a message transmitter for your OpenComputers devices with internet cards.
    Using a small OpenOS library you can use Stem to send and receive messages. Unlike the standard `modem` component, Stem-messaging uses not addresses, but `channels`. You can send messages to any channels, and you can subscribe to any number of channels to listen for messages from them.
    Installation
    The best way is to use HPM:
    hpm install stem If you do not have HPM, install it like this:
    pastebin run vf6upeAN If you do not want to use HPM repository, you can just use wget:
    wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua Example of a program using STEM
    local event = require('event') -- use STEM client library local stem = require('stem') -- open a connection to a STEM server -- the `stem.fomalhaut.me` is a default one local server = stem.connect('stem.fomalhaut.me') -- subscribe for messages from the channel with ID 'my-channel-id' server:subscribe('my-channel-id') -- then listen for events in a loop... while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...or register an event listener event.listen('stem_message', function(_, _, channel_id, message) print(channel_id, message) end) -- you can also send message to the channel -- (you do not need to be subscribed to this channel, to send a message) server:send('my-channel-id', 'hello there') -- unsubscribe from channel server:unsubscribe('my-channel-id') -- completely close the connection to the STEM server server:disconnect()  
    That is all.
    But there is more.
    Web client
    If you open the link to Stem server in your browser: https://stem.fomalhaut.me/
    You will see some statistics and the web client. Enter your channel ID into the form, and you can send messages to your robot in real time, right from your phone, without even starting Minecraft.

    The web client is limited with UTF-8 encoding, though.
    (Using OpenOS you can send literally anything, as long as the message fits in 64kb of data.)
    Security Questions
    The channels by default do not have any special security measures applied. They do not have any authentication mechanisms, the do not have any encryption.
    Anyone who knows the ID of a channel can send a message to it and can listen for responses. But.
    The length of ID is 256 bytes. And that can be any bytes - from 0 to 255. That means, that you have 256^256 possible combinations for your ID. And that is a giant number. If you need to secure your channel - just use something long and incomprehensible as your ID.
    As an additional measure you can use end-to-end encryption, or anything else - this is up to you.
    Default STEM server uses HTTPS, and does not store any information - message in, message out.
    Self-hosted STEM solution
    For those of you who are strong in spirit and computer knowledge - there is a self-hosted option. You can build Stem server from sources and run it on your machine.
    This is also pretty easy. Additional instructions can be found on GitLab.
    Useful links
    GitLab repository: https://gitlab.com/UnicornFreedom/stem
    Protocol description: https://gitlab.com/UnicornFreedom/stem/wikis/protocol
    Default server: https://stem.fomalhaut.me/
    HPM package: https://hel.fomalhaut.me/#packages/stem
     
    If I forgot something - feel free to ask here, or in IRC (my nickname is Totoro there). Also the project contains at least one "Easter egg" feature, that can offer some interesting options if you know HTML/CSS/JS.
    The Stem protocol is open - you can modify it, you can create your own clients in any programming language, etc.
  10. Like
    Totoro got a reaction from BrightYC in Stem - easy internet bridge   
    What is STEM?
    Did you ever want to have a linked card, but without this pair-to-pair limitations?
    Well, you have internet card. And that is already half of the solution. The other half is to use Stem.

    Stem is a message transmitter for your OpenComputers devices with internet cards.
    Using a small OpenOS library you can use Stem to send and receive messages. Unlike the standard `modem` component, Stem-messaging uses not addresses, but `channels`. You can send messages to any channels, and you can subscribe to any number of channels to listen for messages from them.
    Installation
    The best way is to use HPM:
    hpm install stem If you do not have HPM, install it like this:
    pastebin run vf6upeAN If you do not want to use HPM repository, you can just use wget:
    wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua Example of a program using STEM
    local event = require('event') -- use STEM client library local stem = require('stem') -- open a connection to a STEM server -- the `stem.fomalhaut.me` is a default one local server = stem.connect('stem.fomalhaut.me') -- subscribe for messages from the channel with ID 'my-channel-id' server:subscribe('my-channel-id') -- then listen for events in a loop... while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...or register an event listener event.listen('stem_message', function(_, _, channel_id, message) print(channel_id, message) end) -- you can also send message to the channel -- (you do not need to be subscribed to this channel, to send a message) server:send('my-channel-id', 'hello there') -- unsubscribe from channel server:unsubscribe('my-channel-id') -- completely close the connection to the STEM server server:disconnect()  
    That is all.
    But there is more.
    Web client
    If you open the link to Stem server in your browser: https://stem.fomalhaut.me/
    You will see some statistics and the web client. Enter your channel ID into the form, and you can send messages to your robot in real time, right from your phone, without even starting Minecraft.

    The web client is limited with UTF-8 encoding, though.
    (Using OpenOS you can send literally anything, as long as the message fits in 64kb of data.)
    Security Questions
    The channels by default do not have any special security measures applied. They do not have any authentication mechanisms, the do not have any encryption.
    Anyone who knows the ID of a channel can send a message to it and can listen for responses. But.
    The length of ID is 256 bytes. And that can be any bytes - from 0 to 255. That means, that you have 256^256 possible combinations for your ID. And that is a giant number. If you need to secure your channel - just use something long and incomprehensible as your ID.
    As an additional measure you can use end-to-end encryption, or anything else - this is up to you.
    Default STEM server uses HTTPS, and does not store any information - message in, message out.
    Self-hosted STEM solution
    For those of you who are strong in spirit and computer knowledge - there is a self-hosted option. You can build Stem server from sources and run it on your machine.
    This is also pretty easy. Additional instructions can be found on GitLab.
    Useful links
    GitLab repository: https://gitlab.com/UnicornFreedom/stem
    Protocol description: https://gitlab.com/UnicornFreedom/stem/wikis/protocol
    Default server: https://stem.fomalhaut.me/
    HPM package: https://hel.fomalhaut.me/#packages/stem
     
    If I forgot something - feel free to ask here, or in IRC (my nickname is Totoro there). Also the project contains at least one "Easter egg" feature, that can offer some interesting options if you know HTML/CSS/JS.
    The Stem protocol is open - you can modify it, you can create your own clients in any programming language, etc.
  11. Like
    Totoro got a reaction from Molinko in Stem - easy internet bridge   
    What is STEM?
    Did you ever want to have a linked card, but without this pair-to-pair limitations?
    Well, you have internet card. And that is already half of the solution. The other half is to use Stem.

    Stem is a message transmitter for your OpenComputers devices with internet cards.
    Using a small OpenOS library you can use Stem to send and receive messages. Unlike the standard `modem` component, Stem-messaging uses not addresses, but `channels`. You can send messages to any channels, and you can subscribe to any number of channels to listen for messages from them.
    Installation
    The best way is to use HPM:
    hpm install stem If you do not have HPM, install it like this:
    pastebin run vf6upeAN If you do not want to use HPM repository, you can just use wget:
    wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua Example of a program using STEM
    local event = require('event') -- use STEM client library local stem = require('stem') -- open a connection to a STEM server -- the `stem.fomalhaut.me` is a default one local server = stem.connect('stem.fomalhaut.me') -- subscribe for messages from the channel with ID 'my-channel-id' server:subscribe('my-channel-id') -- then listen for events in a loop... while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...or register an event listener event.listen('stem_message', function(_, _, channel_id, message) print(channel_id, message) end) -- you can also send message to the channel -- (you do not need to be subscribed to this channel, to send a message) server:send('my-channel-id', 'hello there') -- unsubscribe from channel server:unsubscribe('my-channel-id') -- completely close the connection to the STEM server server:disconnect()  
    That is all.
    But there is more.
    Web client
    If you open the link to Stem server in your browser: https://stem.fomalhaut.me/
    You will see some statistics and the web client. Enter your channel ID into the form, and you can send messages to your robot in real time, right from your phone, without even starting Minecraft.

    The web client is limited with UTF-8 encoding, though.
    (Using OpenOS you can send literally anything, as long as the message fits in 64kb of data.)
    Security Questions
    The channels by default do not have any special security measures applied. They do not have any authentication mechanisms, the do not have any encryption.
    Anyone who knows the ID of a channel can send a message to it and can listen for responses. But.
    The length of ID is 256 bytes. And that can be any bytes - from 0 to 255. That means, that you have 256^256 possible combinations for your ID. And that is a giant number. If you need to secure your channel - just use something long and incomprehensible as your ID.
    As an additional measure you can use end-to-end encryption, or anything else - this is up to you.
    Default STEM server uses HTTPS, and does not store any information - message in, message out.
    Self-hosted STEM solution
    For those of you who are strong in spirit and computer knowledge - there is a self-hosted option. You can build Stem server from sources and run it on your machine.
    This is also pretty easy. Additional instructions can be found on GitLab.
    Useful links
    GitLab repository: https://gitlab.com/UnicornFreedom/stem
    Protocol description: https://gitlab.com/UnicornFreedom/stem/wikis/protocol
    Default server: https://stem.fomalhaut.me/
    HPM package: https://hel.fomalhaut.me/#packages/stem
     
    If I forgot something - feel free to ask here, or in IRC (my nickname is Totoro there). Also the project contains at least one "Easter egg" feature, that can offer some interesting options if you know HTML/CSS/JS.
    The Stem protocol is open - you can modify it, you can create your own clients in any programming language, etc.
  12. Like
    Totoro reacted to ben_mkiv in OCDevices (FlatPanel, Cases and external CardDock)   
    Features:
    FlatScreen Panel 
    frameless screen which can be configured to be "rotated/tilted" on the x/y axis and can render transparent (they work as normal Screens, Touchinput will be improved in the final release)
    CardDock 
    external housing for OpenComputer Cards which can be bound to any machine in the Network
    Cases
    additional Tier3 computer cases from ZefTheFox
     
    Download on curseForge for Minecraft 1.12.2
    https://minecraft.curseforge.com/projects/ocdevices
     



  13. Like
    Totoro reacted to Haybale100 in BloodCtrl v0.1 - Automated Blood Magic slate creation   
    Greetings Blood Mages and mortals,
    Are you like me? Trying to keep stock of your blood slates without fear of running out mid-operation? Or just simply don't have time while working on other forms of alchemy, thaumaturgy and technology?
    Then you are in luck! For I have managed to wrangle the beast of our Altar into a handy program!
    OK. I'll stop that now...

    While working on my altar setup, I wanted a way to automate slate creations, and the best my google-fu could do was finding a mod called Sanguimancy, left behind back in MC 1.10.2.
    I wanted a way to automate slates that did not require constant management, like a filtered pipe or conduit system would need. So I began to think...
    Of all the mods I had (in the FTB Revelations pack at least) OpenComputers seemed the most likely to work. So I got to work researching and experimenting with Blood Magic and OpenComputers, until now...

    I present to you BloodCtrl! (alpha...)

    Main Features
    Automated Blood Slate creation Active monitoring of Blood levels in Altar and reserve tank Possibly Many Bugs... wait... Minimum Requirements
    Please be aware that this program was written on all Tier 3 components and is optimized for them.
    Tier 2 Computer Case Tier 1 CPU or Tier 2 APU 1x Tier 1 Memory Tier 1 GPU (if using CPU) Tier 1 Hard Disk Drive Tier 1 Redstone Card Internet Card (temporarily) Lua BIOS EEPROM Tier 1 Screen Keyboard Transposer Installation
    Install OpenOS Run "pastebin get NpeViDMT BloodCtrl" Setup and Use
    Place Transposer behind your Blood Altar Place a Chest on top of the Transposer Place a Stone storage block to the Left of the Transposer Place your computer and screen to the Right of the Transposer, any configuration you would like (Optional) Place any type of fluid tank behind the Transposer Power and Turn on computer Edit and Run BloodCtrl Before BloodCtrl will work correctly, you will need to specify which sides everything is on. By default, I have included my setup but this may not work for everyone
    Take your time and find out which sides are connected to which blocks. For example: The Chest would be above the Transposer, so its side would be 1 as part of the Sides API
    Once you have all the sides configured, change any other Variables you may wish. Your desired slate counts,  your altar tier level, etc.
    You will need to provide either a chest or some form of autocrafting of Stone for BloodCtrl to use. By Default and what I have used is a Refined Storage Interface with a crafting card and 3-8 Stone in the first Output Slot (See Pictures below)
    Please be aware that BloodCtrl does not produce or control Blood Creation, it only monitors and displays Blood levels and redstone at this time. You will need to provide blood by your own means.
    Bugs
    If any slate stack is empty or in the wrong slot, the program will crash (Workaround: make sure there is at least one of each slate at all times) If there is no stone available when crafting a Blank Slate, the program will crash (Workaround: make sure there is at least one stone at all times) There is no way to close the program without restarting the computer Planned Features
    Better UI Bar for blood levels Color (if supported by screen) More overall stability Media
    Pastebin Link: https://pastebin.com/NpeViDMT
    Images: https://imgur.com/a/CtIdUXY
    Video: Comming soon?
     
    Have Fun Blood Mages!
    Haybale100
     
    Credits and License stuff
    Thanks to WayOfTime and everyone who works on Blood Magic
    Thanks to Sangar and everyone who works on OpenComputers
    I distribute this program with a CC BY 4.0 License. Feel free to edit it as you wish
  14. Like
    Totoro reacted to payonel in Are there any tutorials or doumentations for plan9k OS?   
    OpenOS has absolutely proper pipes now, such as those  you invoke with `cat file | grep foobar`, and a kick butt threading library (read https://ocdoc.cil.li/api:thread )
    As for virtual components? No, there is nothing built into OpenOS for virtual components, but gamax92 has written a nice vcomponent library you can add via oppm, `oppm install vcomponent`
    Plan9k is retired, to be honest. It was ahead of its time, but is now outdated. OpenOS is faster, lower memory, has gobs of great libraries, super awesome command line parsing, and is ACTIVELY developed. I might be biased....
  15. Like
    Totoro reacted to TetraSource in Bundle - allows to use multiple filesystems as a single one   
    I just finished the first version of bundle - a rc application which virtually merges multiple filesystems into a bigger one. You can use it whenever a RAID full of tier 3 HDD isn't enough for your needs. On the picture above, for example, you can see 10 RAIDs with 30 tier 3 HDDs which yield a virtual HDD that can store over 200MB of data. You can also use filesystems of different size and create files bigger than any of the used filesystems since bundle is capable of storing a file on multiple HDDs.
    If you encounter any bug, please report it on my github repository. Also check out the wiki page.
    How to use it
    First of all you can download it from pastebin (id: TmeSNidd) or my github repository and install the file in the directory for rc script (/etc/rc.d/bundle.lua). Before using it you should configure the constants at the top of the script in accordance with their descriptions. Otherwise Bundle might work incorrectly. Then you need to add some filesystems by executing
    rc bundle add [address] in the shell. Please replace [address] by the address of the desired filesystem. Doing so wipes the added filesystem. However, Bundle never incorporates filesystems automatically. Next you should allow bundle to run in background by executing
    rc bundle enable Just reboot the computer and it should be listed by
    df
    Note that the label of the first added filesystem and the filesystem provided by Bundle are always equal since that's the way how bundle stores it. You can also view the added filesystems by executing
    rc bundle list You can also remove added filesystems by
    rc bundle remove [forcefully] Currently, this just removes the last added filesystem, however. If the removal causes the lose of data this fails except you set [forcefully].
    Usage notes
    Don't install the OS on a Bundle filesystem since Bundle requires some functions of OpenOS. Bundle uses a virtual copy of the file structure. On the one hand this makes "hardware" operations faster, on the other hand it might lead to errors when running out of memory. Bundle works with Lua 5.2 as well as Lua 5.3. Known bugs
    Seek operations that set the current position to a value that is bigger than the size of the file cause the file the become bigger than its actual physical size. This is also the case on filesystem components of Open Computers but with bundle it might cause internal errors. That is it for now, have fun using Bundle.
  16. Like
    Totoro reacted to Elektron72 in Cell - A graphical file manager for OpenComputers   
    Cell is a graphical file manager for OpenComputers that allows you to browse files and open them in other programs, such as the editor or simply running .lua files.

    You can also customize what programs can be used to open files through the programs.cfg file.
    Tutorials:
    Browsing files/directories Select files/directories by clicking on them in the panel on the right side of the screen If a directory contains a large amount of files or sub-directories, use the arrow buttons to scroll through pages To go up a sub-directory, click the up arrow To change directory to a sub-directory, select the sub-directory, and click on "Open..." in the options panel (bottom left) Using programs Select file/directory Select an option from the options panel (Run, Edit, Delete, etc.) Creating files/sub-directories Navigate to the directory where the file/sub-directory will be created Select "New File..."/"New Directory..." from the functions panel (top left) A prompt for the name will appear at the bottom of the screen. Enter the name for the file/directory Adding programs Open the programs.cfg file in the editor Add a new line for your program Warning: The syntax for the programs.cfg is very strict, and will not accept extra spaces/empty lines Enter this info separated by semicolons: Program name Text for the options menu File types (separated by commas, for all files put "all", for directories put "dir", for specific file types, put the extension including the ".") Command that runs the program ("?file?" is a wildcard for the selected file/directory) Additional options (separated by commas, does not require semicolon or comma at the end) "s" prevents Cell from erasing the screen before running the program For example, the line that add the editor is:  OpenOS Editor;Edit...;all;edit ?file?;  
    Minimum Requirements:
    Tier 2 Graphics Card Tier 2 Screen Tier 1 CPU 2x Tier 1 Memory Internet card only required for installation To install, run 
    wget https://raw.githubusercontent.com/Elektron72/Cell/master/installer.lua installer.lua installer.lua At the prompt, enter the path where Cell should be installed.
    Since this is currently in beta, report bugs at https://github.com/Elektron72/Cell
  17. Like
    Totoro reacted to Luca_S in advancedLoader - Better BIOS   
    This BIOS allows you to choose the boot device by either using the arrow keys or clicking/touching the monitor.
    When using the keyboard use Enter to boot, when using clicking/touching click an unselected entry to select it, click a selected entry to boot it.
    If there is only one bootable medium, that medium is autobooted.
    The default selected option is the last booted device.
    This supports booting from filesystems, using /init.lua as an entry point or from drives(HDDs or Floppys in unmanaged mode), by loading code from the first sector until the first \0 character appears as lua code. (From what I've seen unmanaged drives are mostly ignored in OC, which is kinda sad.)
    Screenshots:

    To install: (This file contains the code needed to flash the BIOS as well as the BIOS code itself, it will ask before flashing it to the EEPROM)
    pastebin run Cx4aTipt  
  18. Like
    Totoro reacted to ben_mkiv in Hologram Editor   
    i've made another little change which adds a 2nd output file when saving the hologram. the format contains an table with subtables for each color with stroke instructions to use with the fill render method of the projector, for some usecases this is faster than setting the voxels one by one.
    the rendering function is at line 352 and can be used pretty easy in other projects. the outputfile has ".raw" suffix
    also this script uses the renderfunction, which can be changed in line 100
    https://pastebin.com/6EJV1CbX
  19. Like
    Totoro reacted to IlynPayne in SGCX - SGCraft Stargate Controller   
    SGCX - SGCraft Stargate Controller
    Stargate controller based on GML library.
     
    Showcase:




     
    Installation steps:
    First download the package manager that will be used to download the application and all required dependencies: wget https://gitlab.com/d_rzepka/oc-equipment/raw/master/installer/arpm.lua Use the package manager do download SGCX: arpm install sgcx  
    Run SGCX with an additional argument - init. This will allow you to pick a stargate interface address from list. It is required only during the first startup - address will be saved in a configuration file. sgcx init  
    Optionally you can install the irisAuth package (remote iris management) using the previously mentioned package manager.  
    Features:
    Displaying Stargate status Storing gate addresses Grouping and searching addresses Disconnecting wormhole after specified time Automatic iris control (see installation steps, step 4) Displaying distance to the selected destination Address calculator: convert addresses within one dimension into chunk (and estimated block) coordinates and vice versa Animated dialing sequence with chevron drawings Future plans:
    Dialing history Iris authorization usage history Requirements:
    Tier 3 screen and GPU At least 1 MB RAM Network card Keyboard  
    (GitLab repository)
     
  20. Upvote
    Totoro reacted to Nexarius in Tank Display Program | now with energy and essentia too !   
    This program can display the contents of tanks on a big screen with a colored bar that can dynamically change its size.
    It can show up to 256 128 64 different liquids which are sorted from highest amount to lowest.
    5x8 is the optimal size for the screen.
    Multiple tanks with the same liquids are automatically added together and empty tanks are ignored.
    This display is split into 2 programs.
    1) Server - this receives the tank information and displays it
    2) Client - this has the adapter with the tank controller (you can have as many as you like)

    optimal screen sizes: 8x5; 8x2; 4x1
    pastebin run -f cyF0yhXZ installation guide:
    https://www.youtube.com/watch?v=avvYO2xSxGw
    github: https://github.com/Nex4rius/Nex4rius-Programme/tree/master/Tank#start
    server / display components:
    Internet Card (to install) Network Card Graphics Card T3 Screen T3 client / adapter + tank components:
    Internet Card (to install) (Wireless-) Network Card It supports now the following blocks:
    Adapter + Tank Controller Upgrade Transposer Batbox CESU MFE MFSU Gregtech Batterybuffer Capacitor Bank ALL RF storage blocks ME Interface ME Controller Warded Jar Void Jar  
    Big Update version 2
    The screen scales better to utilize the "room" to the fullest.
    Thaumcraft:
    I've added support for jars and essentia (Thaumcraft 6 needs the Thaumic Computers mod)
    ExtraCells:
    It's now possible to connect this to the ME System and read all liquids from it.
    Thaumic Energistics:
    Additionally it can read essentia from the system if you have Thaumic Energistics installed.
    Energy EU:
    You can connect EU storage devices and it will show it on the screen.
    Energy RF:
    Furthermore you can also connect any RF storage block and it will work too.
     
    The version 2 is not compatible with the version 1. You will have to update the server and all clients.
     



    I've double the limit from 64 to 128 and doubled it again to 256!

  21. Upvote
    Totoro got a reaction from Rhah in Hologram Editor   
    1) Install
    0.7.1: http://pastebin.com/LPb4FEv4
    0.7.0: http://pastebin.com/2kG4V3tB
    0.6.0: http://pastebin.com/bR33cXDU
    You can use internet card, and command:
    pastebin get LPb4FEv4 holo 2) What do you need
    a) Diamond Screen and Graphics card (for good resolution). Beginning from version 0.7.0 you can use a golden GPU card.
    Diamond processor (just faster; before OC 1.4 it's not important) 
    c) 2 Golden memory planks.
    d) Internet card (to get program from pastebin)
    e) Hologram projector (to preview your creation)
    f) other parts, any levels
     
    3) What can it do?
    This is a simple tool for hologram edition, viewing, saving and distribution (as `*.3d` or `*.3dx` files).
    You create hologram in layers. (48x32x48 voxels). You can switch between "Top", "Front" and "Side" projections. The editor can show additional layer as "ghost", for comparison between layers. By default this is layer "below" or "above" current.
    Also the editor allow you to use some hotkeys: '~' '1' '2' '3' for eraser tool or brushes, 'Del' to clear layer.
    3DX format is quite lightweight (around 1.4 kB for a complex model). Old 3D format is around 19kB per model, but is easier to parse.
     
    4) What does this look like?

     
    5) I just want to show my model, do I need a full editor tool for this?
    To "deploy" hologram (any computer, any components), you cant use small `show` tool:
    0.7.1: http://pastebin.com/1iW9fX7i
    0.7.0: http://pastebin.com/vvxKKGff
    0.6.0: http://pastebin.com/ggwXr81P
    pastebin get 1iW9fX7i show Usage:
    show filename[.3d/.3dx] [scale] 6) What do you think?
  22. Upvote
    Totoro got a reaction from Fingercomp in Hologram Editor   
    1) Install
    0.7.1: http://pastebin.com/LPb4FEv4
    0.7.0: http://pastebin.com/2kG4V3tB
    0.6.0: http://pastebin.com/bR33cXDU
    You can use internet card, and command:
    pastebin get LPb4FEv4 holo 2) What do you need
    a) Diamond Screen and Graphics card (for good resolution). Beginning from version 0.7.0 you can use a golden GPU card.
    Diamond processor (just faster; before OC 1.4 it's not important) 
    c) 2 Golden memory planks.
    d) Internet card (to get program from pastebin)
    e) Hologram projector (to preview your creation)
    f) other parts, any levels
     
    3) What can it do?
    This is a simple tool for hologram edition, viewing, saving and distribution (as `*.3d` or `*.3dx` files).
    You create hologram in layers. (48x32x48 voxels). You can switch between "Top", "Front" and "Side" projections. The editor can show additional layer as "ghost", for comparison between layers. By default this is layer "below" or "above" current.
    Also the editor allow you to use some hotkeys: '~' '1' '2' '3' for eraser tool or brushes, 'Del' to clear layer.
    3DX format is quite lightweight (around 1.4 kB for a complex model). Old 3D format is around 19kB per model, but is easier to parse.
     
    4) What does this look like?

     
    5) I just want to show my model, do I need a full editor tool for this?
    To "deploy" hologram (any computer, any components), you cant use small `show` tool:
    0.7.1: http://pastebin.com/1iW9fX7i
    0.7.0: http://pastebin.com/vvxKKGff
    0.6.0: http://pastebin.com/ggwXr81P
    pastebin get 1iW9fX7i show Usage:
    show filename[.3d/.3dx] [scale] 6) What do you think?
  23. Upvote
    Totoro got a reaction from oleg2345 in Hologram Editor   
    1) Install
    0.7.1: http://pastebin.com/LPb4FEv4
    0.7.0: http://pastebin.com/2kG4V3tB
    0.6.0: http://pastebin.com/bR33cXDU
    You can use internet card, and command:
    pastebin get LPb4FEv4 holo 2) What do you need
    a) Diamond Screen and Graphics card (for good resolution). Beginning from version 0.7.0 you can use a golden GPU card.
    Diamond processor (just faster; before OC 1.4 it's not important) 
    c) 2 Golden memory planks.
    d) Internet card (to get program from pastebin)
    e) Hologram projector (to preview your creation)
    f) other parts, any levels
     
    3) What can it do?
    This is a simple tool for hologram edition, viewing, saving and distribution (as `*.3d` or `*.3dx` files).
    You create hologram in layers. (48x32x48 voxels). You can switch between "Top", "Front" and "Side" projections. The editor can show additional layer as "ghost", for comparison between layers. By default this is layer "below" or "above" current.
    Also the editor allow you to use some hotkeys: '~' '1' '2' '3' for eraser tool or brushes, 'Del' to clear layer.
    3DX format is quite lightweight (around 1.4 kB for a complex model). Old 3D format is around 19kB per model, but is easier to parse.
     
    4) What does this look like?

     
    5) I just want to show my model, do I need a full editor tool for this?
    To "deploy" hologram (any computer, any components), you cant use small `show` tool:
    0.7.1: http://pastebin.com/1iW9fX7i
    0.7.0: http://pastebin.com/vvxKKGff
    0.6.0: http://pastebin.com/ggwXr81P
    pastebin get 1iW9fX7i show Usage:
    show filename[.3d/.3dx] [scale] 6) What do you think?
  24. Upvote
    Totoro got a reaction from DCDylanc123410 in Hologram Editor   
    1) Install
    0.7.1: http://pastebin.com/LPb4FEv4
    0.7.0: http://pastebin.com/2kG4V3tB
    0.6.0: http://pastebin.com/bR33cXDU
    You can use internet card, and command:
    pastebin get LPb4FEv4 holo 2) What do you need
    a) Diamond Screen and Graphics card (for good resolution). Beginning from version 0.7.0 you can use a golden GPU card.
    Diamond processor (just faster; before OC 1.4 it's not important) 
    c) 2 Golden memory planks.
    d) Internet card (to get program from pastebin)
    e) Hologram projector (to preview your creation)
    f) other parts, any levels
     
    3) What can it do?
    This is a simple tool for hologram edition, viewing, saving and distribution (as `*.3d` or `*.3dx` files).
    You create hologram in layers. (48x32x48 voxels). You can switch between "Top", "Front" and "Side" projections. The editor can show additional layer as "ghost", for comparison between layers. By default this is layer "below" or "above" current.
    Also the editor allow you to use some hotkeys: '~' '1' '2' '3' for eraser tool or brushes, 'Del' to clear layer.
    3DX format is quite lightweight (around 1.4 kB for a complex model). Old 3D format is around 19kB per model, but is easier to parse.
     
    4) What does this look like?

     
    5) I just want to show my model, do I need a full editor tool for this?
    To "deploy" hologram (any computer, any components), you cant use small `show` tool:
    0.7.1: http://pastebin.com/1iW9fX7i
    0.7.0: http://pastebin.com/vvxKKGff
    0.6.0: http://pastebin.com/ggwXr81P
    pastebin get 1iW9fX7i show Usage:
    show filename[.3d/.3dx] [scale] 6) What do you think?
  25. Upvote
    Totoro got a reaction from Alissa in Hologram Editor   
    1) Install
    0.7.1: http://pastebin.com/LPb4FEv4
    0.7.0: http://pastebin.com/2kG4V3tB
    0.6.0: http://pastebin.com/bR33cXDU
    You can use internet card, and command:
    pastebin get LPb4FEv4 holo 2) What do you need
    a) Diamond Screen and Graphics card (for good resolution). Beginning from version 0.7.0 you can use a golden GPU card.
    Diamond processor (just faster; before OC 1.4 it's not important) 
    c) 2 Golden memory planks.
    d) Internet card (to get program from pastebin)
    e) Hologram projector (to preview your creation)
    f) other parts, any levels
     
    3) What can it do?
    This is a simple tool for hologram edition, viewing, saving and distribution (as `*.3d` or `*.3dx` files).
    You create hologram in layers. (48x32x48 voxels). You can switch between "Top", "Front" and "Side" projections. The editor can show additional layer as "ghost", for comparison between layers. By default this is layer "below" or "above" current.
    Also the editor allow you to use some hotkeys: '~' '1' '2' '3' for eraser tool or brushes, 'Del' to clear layer.
    3DX format is quite lightweight (around 1.4 kB for a complex model). Old 3D format is around 19kB per model, but is easier to parse.
     
    4) What does this look like?

     
    5) I just want to show my model, do I need a full editor tool for this?
    To "deploy" hologram (any computer, any components), you cant use small `show` tool:
    0.7.1: http://pastebin.com/1iW9fX7i
    0.7.0: http://pastebin.com/vvxKKGff
    0.6.0: http://pastebin.com/ggwXr81P
    pastebin get 1iW9fX7i show Usage:
    show filename[.3d/.3dx] [scale] 6) What do you think?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.