we need macros! - Printable Version +- Aliquam Creative Forums (https://forum.aliquam.studio) +-- Forum: General (https://forum.aliquam.studio/forumdisplay.php?fid=3) +--- Forum: Suggestions and Support (https://forum.aliquam.studio/forumdisplay.php?fid=24) +--- Thread: we need macros! (/showthread.php?tid=660) |
we need macros! - Tooster - 14 Jul 2017 Yo, T3s here. Idea is simple, yet powerful: we need a plugin, that allows us to record macros. How should it work? 1. typing /macro <name> record should start new macro 2. you start typing commands 3. you type /macro <name> end to stop recording macro - now your macro should be saved! 4. type /macro <name> run to play given macro what the plugin should support: /macro <name> - to show info about macro and help for plugin /macro <name> record - to start recording /macro <name> end - to finish recording /macro <name> run - to finish recording /macro <name> delete - to delete saved macro /macro <name> edit - to edit macro in-game without need to rewrite it from the beginning. /macro list - to show a list of your and global macros /macro <name> [un]bind - to [un]bind a macro to currently held item and play it using SHIFT+LMB /macro <name> share - to publish given macro so that other players can use it (must be accepted by administration) operators: =, +, -, *, /, %, ^, sqrt(), and (, ) for math grouping tags: &RANDOM, &AIMPLAYER, &AIMID, &AIMX, &AIMZ, &AIMZ and others you could think of -_- variables created and accessed via '#' while recording, all command execution and chat writing event's should be canceled Variables and tags system: By typing /#<var>=<string> everything that stands after equation mark would be assigned to #var. You acces variables in macros the same way you create them - by #<varname>. Should be very simple to implement using regex or something. Use &RANDOM (the predefined variable you cannot override) to supplement it with random number generated on the go. Make complex macros using math functions - #treeheight=&RANDOM%5+#mintreeheight*#swampconstant Details: the simplest way to do this would be to save macros as <macroname>.txt files for each player. Structure of the file might be: Code: @DESCRIPTION Labels with @ in front should mark different parts of the macro each variable/command takes one line. each &TAG is a tag for "pseudomacrocompiler". Each command in macro should be executed as if the player himself executed it (maybe player.chat("/somecommand"); ?). No worry about spamming macros cuz you have AlqChat flood control. Additionaly, to avoid bugs, escape characters are needed. To avoid reference loop with nested macros you can have one "macroRelations.txt" file and each time a macro is created add it to the file and perform a fast analysis by building a directed graph of relation and finding cycles. Challenging plugin, it's almost like writing new scripting language :P But i think it might be very useful. and at least HOW USEFUL WOULD IT REALLY BE?! imagination is your only limitation. For admins - /macro meeting - would teleport all staff to the server owner For players - save your brush presets in voxelsniper, and don't ever repeat endless cycle of /b b mm /b 10 /v 15 /vr 12 ... binding macro to item = easy brush selection For advanced world edit users - create complex structures with one click - Do you want to generate predefined towers with varying heights using only right click? maybe place random buildins from your schematics? what about big, fancy trees? AND IT WOULD HAVE LOTS OF APPLICATION - you can think of many clever ways to "exploit" this plugin - if you play with your friends or build often together - write a script that sends them all a private message and invites them all to teleport to you. bind /ptime day and /ptime night to different items so you can fast cycle between them with just one click. Rightclick on somebody to write him an automated msg and invite to friends. AUTOMATION. If this is too complicated or you think unneded feel free to criticize |