summaryrefslogtreecommitdiff
path: root/mesecons_luacontroller
AgeCommit message (Collapse)Author
2014-10-07Improve the LuaControllerShadowNinja
Changes: * Stops code after a certain number of instructions. * Allows functions, due to instruction counting. * Allows loops and goto with non-JIT Lua (LuaJIT doesn't count looping as an instruction, allowing infinite loops), due to instruction counting. * Removes string matching functions as they can be slow. * Adds some safe functions. * Limits the amount of printing that can be done (to prevent console flooding). * Code cleanup. * More...
2014-04-20Fix #155 (option 2 used). Remove non-ActionQueue system. Enable overheat for ↵Jeija
more than 20 actions per second on lua- / microcontrollers and gates. Fix a bug where a burnt luacontroller didn't have the correct pin-states as the burnt controller does not register any changes from outside.
2014-03-19Fix #83 (experimental)Jeija
Why did we actually put the update action in a queue again? Whatever issue it that was for, I couldn't reproduce it. Propably the ActionQueue fixed that...?
2014-03-19Remove timer() from LuaController and make interrupt() use the ActionQueue ↵Jeija
so that it will keep working when restarting the server
2014-03-19Improve and clean up luacontroller digiline_send on globalstep featureJeija
2014-03-16Merge branch 'digiline-non-reentrant' of ↵Jeija
https://github.com/CiaranG/minetest-mod-mesecons into CiaranG-digiline-non-reentrant Conflicts: mesecons_luacontroller/init.lua
2014-03-16Merge pull request #152 from CiaranG/timerJeija
Add timer() function/event (node timer based) to luacontroller
2014-03-11Add timer() function/event (node timer based) to luacontrollerCiaran Gultnieks
This adds a timer(<seconds>) function, which causes an event of type "timer" to be fired after that many seconds has elapsed. Because it's node timer based, it works properly across server restarts and block unloading. Thus, simplest example, a blinky plant replacement with a 10 second period: if event.type == "program" then timer(10) elseif event.type == "timer" then port.a = not port.a timer(10) end
2014-03-11Handle luacontroller formspec events correctlyCiaran Gultnieks
Example of problem fixed by this: Edit lua code, press Execute. Now (execute button has focus), hold down a key. Zillions of "program" events are generated.
2014-03-11Send digiline messages after luacontroller executionCiaran Gultnieks
In the same way as for port settings, this queues up digiline messages sent during the luacontroller's execution, and sends them afterwards. This solves many problems, but one example: 1. Send a message, and receive a reply from another device. 2. While handling the reply event (effectively a nested invocation on the same luacontroller) make a change to memory 3. Notice that the memory change has no effect, because after completion of the reply handling, it stores the memory, but then the original invocation completes and overwrites it with it's own earlier copy of the same memory.
2014-02-16Add missing string.upper to luacontrollerCiaran Gultnieks
2014-01-19Merge branch 'actionqueue'Jeija
This introduces the ActionQueue, a new kind of MESECONS_GLOBALSTEP. Circuits using delayers will now resume when restarting the server. Also, large circuits should automatically resume if parts of them are in unloaded chunks. Old circuits e.g. using gates will not resume when mesecons is updated, which means you have to restart them once. But after that, it should work just like it used to. This will fix a lot of stuff but may also introduce some new bugs. So please report them!
2014-01-11Try to fix gateswith serverstep code.Novatux
2014-01-10Move textures into their modsShadowNinja
2013-12-18Change field receipt handling to work properly with Minetest 0.4.8.Uberi
2013-11-30Update code to standards of Minetest 0.4.8.Uberi
2013-11-30Use minetest.swap_node() instead of mesecons' version, Minor code changesVanessa Ezekowitz
here and there to facilitate this.
2013-08-27Merge pull request #112 from khonkhortisan/multi_ruleskhonkhortisan
Multi rules Merged for near-future textures to be merged cleanly.
2013-06-22Merge remote-tracking branch 'refs/remotes/origin/master'Anthony Zhang
2013-06-22Descend µ in commentkhonkhortisan
2013-06-20Crossoverkhonkhortisan
2013-06-10Support cyclic references in luacontroller memory tables, prohibit usage of ↵Anthony Zhang
goto statement (bugs reported by Nore).
2013-06-06Fix bug where functions in Luacontroller EEPROM crashes the server (fixes #107).Anthony Zhang
2013-06-05Add an ABM function which resets heat to 0, since gates/controllers won't be ↵Novatux
cooled normally if they are moved (piston, etc...) during the cooling delay.
2013-05-21Silly mistake, interrupts should work better now.Anthony Zhang
2013-05-15Add burnt luacontroller (so you don't lose your program after an overheat) ↵Anthony Zhang
and prevent interrupts from piling up (fixes #101, metadata trashing). Idea for burnt luacontroller comes from ShadowNinja.
2013-04-01Experimental fix for issue #85 by removing ignored ports from the luacontrollerJeija
2013-03-26Add table.* to luacontroller sandboxJeija
2013-03-23Explicit tables of luacontroller environment.Anthony Zhang
2013-03-23Add math library to luacontroller, and make sure to copy stuff so code can't ↵Anthony Zhang
get out of the sandbox.
2013-03-15Avoid corrupting metadata.Anthony Zhang
2013-03-15Use formspec_escape when available.Anthony Zhang
2013-03-15Avoid borking the luacontroller if the code uses square brackets. When the ↵Anthony Zhang
next stable MT is released, uncomment the formspec_escape call to take advantave of formspec escaping.
2013-03-06Digging and footstep sounds for everything that needs them! Plus, pushing ↵Anthony Zhang
buttons, punching switches, and flipping levers all make sounds.
2013-02-19More distinguishable inventory image for the luacontroller (not wieldJeija
item, just top)
2013-02-12Fix a dumb bug that conflicted with different things in the luacontrollerJeija
2013-02-12Fix odd behaviour when using interrupts in the luacontrollerJeija
2013-02-10LuaController: Queue setting the ports (wait for pending operations)Jeija
2013-01-22Add tostring, tonumber, string to luacontroller, prohibit 'function'Jeija
2013-01-22Bugfix for the luacontroller that occured when two events occur at theJeija
same time (output connected to input). The behaviour of the controller can now be described this way: The luacontroller sets port A, then B, then C, then D; if it is interrupted by another event during that time it stops and let the second event do the job.
2013-01-20Lots of bugfixes concerning the luacontrollerJeija
- Bug when using NOT-Gates - Moved error label a little downwards - On digiline event, msg and channel are now in event.*, not in event.iid.*
2013-01-19Fix Bug: Wrong usage of action_on/action_off instead of action_changeJeija
2013-01-19Add support in luacontroller for a not yet released mod called 'digilines'Jeija
2013-01-19Remove unused variableJeija
2013-01-19Texture the LuaController formspecJeija
2013-01-14Bugfixes and improved stability of the luacontrollerJeija
2013-01-13Implement interrupt(time, iid): The whole code is called again after aJeija
certain amount of time. Whenever it is called, an event is set. Possible events are: program, interrupt, on and off It also contains additional information (on/off -> event.in; interrupt -> event.iid) iid must be an integer or string value, otherwise the interrupt is not active
2013-01-13Implement a memory for the controller (accesible via mem.) and cleanup codeJeija
Based on PilzAdam's code.
2013-01-13Add luacontroller, a microcontroller that you can code in lua.Jeija
It still misses some functionality such as a persistent memory and a timer, but that is subject to change. The code runs in a sandbox. Speaking long term this will hopefully replace the old controller.