[MECH] NeoScript v0.9 - Redstone scripts with functions, arrays, screens, more [1060]

Discussion in 'Inactive/Unsupported Plugins' started by furekusu, Apr 28, 2011.

  1. Offline

    furekusu

    NeoScript - plugin for programmable microchips: ICs.
    Version: v0.9

    It is a bit like MC5000 from CraftBook, but provides a lot more of functions.

    Supported builds: 1000, 1060

    [​IMG]

    Features:
    • Code writing via signs: Perlstone32-like syntax
    • Up to 10 inputs and outputs
    • Supports Boolean, Integer, Double and String + Arrays
    • Allows reading from and writing to signs
    • Reads chat messages from a certain place
    • Button sends money to a player - supporting all Economy plugins thanks to Register
    • Functions: set and detect blocks, send messages, detect players, and much more
    • Loops
    • Error output
    • Bukkit permissions support
    • Useful ICs
    Open the Wiki for documenation, instructions (quick start & SQL usage) and examples. There are pictures, too. Tutorials are in work!

    Download: v0.9 [JAR] v0.9 [SRC] v0.8.2 [JAR] v0.8 [SRC]


    Script related ICs:
    • [Script] - Main IC for scripting
    • [RScript] - Script IC for local files
    • [Chat] - Fetch chat messages (requires Script-IC)
    • [Money] - Sends money to a player (supports Script-IC)
    • [Screen] - Manages a screen made out of wool (requires Script-IC)
    • [Sign] - IC for editing Signs (requires Script-IC)
    Logic ICs:
    • [And] - And with 2 or 3 inputs
    • [Xor] - Xor with 2 or 3 inputs
    Misc ICs:
    • [Clock] - Changes its output at a set rate
    • [Counter] - Sets its lever on after a set number of pulses
    • [Delay] - Delays the signal
    • [Detect] - Detects players or creatures
    • [Pulse] - Activates the output for a set time, when input goes from low to high
    • [Rand] - Emits a random state
    • [Recv] - Receives power states
    • [Send] - Sends power states
    • [Spawn] - Spawns a creature
    • [Time] - Checks the time
    • [Trigger] - Sends its input state to a lever
    • [Toggle] - Toggles between on and off, when input goes from low to high
    • [Velocity] - Sets a players movement
    Permissions:


    Show Spoiler

    Code:
                - 'NeoScript.IC.Chat'
                - 'NeoScript.IC.Money'
                - 'NeoScript.IC.RScript'
                - 'NeoScript.IC.Screen'
                - 'NeoScript.IC.Script'
                - 'NeoScript.IC.Sign'
                - 'NeoScript.IC.And'
                - 'NeoScript.IC.Xor'
                - 'NeoScript.IC.Clock'
                - 'NeoScript.IC.Counter'
                - 'NeoScript.IC.Delay'
                - 'NeoScript.IC.Detect'
                - 'NeoScript.IC.Pulse'
                - 'NeoScript.IC.Rand'
                - 'NeoScript.IC.Recv'
                - 'NeoScript.IC.Send'
                - 'NeoScript.IC.Spawn'
                - 'NeoScript.IC.Time'
                - 'NeoScript.IC.Toggle'
                - 'NeoScript.IC.Trigger'
                - 'NeoScript.IC.Velocity'
                - 'NeoScript.Script.edit'
                - 'NeoScript.Script.ignoreSetBlockMax'
                - 'NeoScript.Script.ignoreSetBlockWhitelist'
                - 'NeoScript.Script.ignoreSetBlockMaxRange'
                - 'NeoScript.Script.ignoreDispMaxRadius'
                - 'NeoScript.Script.ignoreDetectMaxRadius'
                - 'NeoScript.Func.block'
                - 'NeoScript.Func.blockSign'
                - 'NeoScript.Func.player'
                - 'NeoScript.Func.screen'
    

    Changelog:
    Version 0.9
    • Clocks can now be triggered (Flag T~)
    • Added command /icstop. Stops the running [Script] or [RScript] you are looking at. Ops and and players who have the permission 'NeoScript.Command.icstop' can stop scripts from other players, too.
    • Added [Rand], [Detect], [Velocity] (set player movement)
    • All small ICs now have 3 inputs: in front of, to the left/right of the sign
    • Custom functions will see the calling script owner in the session as their owner, too. This is relevant if you call another players function which uses Disp. The text is now sent to you (was sent to the custom functions owner).
    • Syntax: added operator \_ - pops a value; added operator \null - pushes null
    • You can now call functions dynamically: {{"function"}}. This is very useful if you have indexed functions which get called together.
    • Added ` as comment char (remote edit / RScript)
    • Added functions:
      • Isset - checks if a variable / table value has been set
      • AExists - checks if an array exists
      • GetIn - dynamically reads an input
      • GetOut - Gets the state of an output
      • SetOut - dynamically sets an output
      • TGetAll - gets all lines from a sign with a custom separator
      • TSetAll - sets all lines of a sign
    Version 0.8.2
    • Updated Register, supported economy plugins: BOSE6, BOSE7 (?), Essentials, iConomy 4,5,6, Multicurrency
    • Fixed setup (SQLite)
    • Removed update support for v0.2 or lower
    Older versions (open)

    Version 0.8.1
    • New permissions will now work
    • Added command /icdebug. Point at an IC (main sign or the block where the main sign is attached to) and type the command or use /icdebug <ID>. The command gives information about permissions, flags and links between ICs (Chat, Money, Send/Recv, Sign). Its colorful, enjoy it!
    • [RScript] ICs can now really be called as functions
    Version o.8
    • Added functions: Time, FTime
    • [RScript] ICs can now be called as functions
    • There can now be several [Sign] ICs with the same name. TSet will change all signs while TGet will return the text of the first registered IC.
    • Fixed a permission bug from v0.7
    • Switched to bukkit permissions
    • Implemented function permissions (block, blockSign, player, screen)
    Version o.7
    • Improved stability. As a result of this, [Script]-Outputs will change a tick later.
    • Script-Syntax: \R will refresh inputs
    • Fixed [Sign]-Direction
    • Added math functions: ACos, ASin, Sqr
    • Added P~-Flag to Sign-ICs
    • Added string functions: Asc, Chr, Instr, Repeat
    • Added array function: AClear, AContains, ADestroy, AIndex, AIns
    • Added function: ConCmd: executes a player console command
    • Fixed function ASet
    • /urlscript no longer needs urls starting with 'http://' - it's added automatically
    • Line breaks, tabs and comments (starting with ยง, to the end of the line) will be removed from the code when using /urlscript
    • Added IC [RScript]: same as [Script], but executes a local file
    Version o.6
    • Script-ICs can now be called as functions!
    • Script: added command name parameter, use /scr <commandName> [<param1> [<param2> [<param3> ...]]]. Arguments will be pushed on the stack.
    • Script-Syntax: \stack will push the stack size on the stack
    • Script-Syntax: now has simple loops. Will be executed 5 times: 5:_( yourcode :_) (without _)
    • Screen: changed parameters, Ceiling / floor screens are now possible
    • Pulse: added parameters for generating more than one pulse
    • Added [Counter], [Spawn], [Trigger]
    • Sign: added location parameters. That means, you can now write to and read from post signs, too
    • Added option noDrops: if activated, block placed by Script-ICs won't drop items when destroyed.
    • Bugfix: R~ will work for cuboid
    Version o.5
    • Added function: Sleep (thread-safe)
    • Added option maxMillis: Timeout for scripts. If set to 0, there is no timeout (not recommended). Default is 2 minutes.
    • Added array functions: ACreate, AUse, ASize, AAdd, ASet, AGet, ARem, AGetJSON, ASetJSON
    • Added [Money] (supports all Economy plugins), [Screen] (out of wool), [Pulse], [Delay], [Clock]
    • Added screen functions: SUse, SSet, SGet, SGetW, SGetH, SPenW, SPenH, SPenSet, SPenNext, SCopy, SPaste
    • IC permissions will now work correctly
    Version o.4
    • Added flag R~ to Script-ICs. If set, coordinates are related to the main signs direction. Positive x means to the right, positive z means forwards.
    • Added command /urlscript for remote sign editing
    • Improved TSet's edit handling
    • Added [Time], [Toggle], [Send], [Recv], [Chat]
    • Added persistent variables (stored in the database)
    Version 0.3
    • Switched to MySQL / SQLite: with the possibility to load ICs into / from databases
    • All edited signs will be updated
    • Added permissions to ICs (when created, ICs will get some permissions from the player) to override options below
    • Renamed permission NeoScript.EditScript to NeoScript.Script.edit
    • Disp can now display text to nearby players
    • Added options: setBlockWhitelist (allowed blocks), setBlockMaxRadius, detectMaxRadius
    • Renamed option maxSetBlocks to setMaxBlocks
    • You can now enter positive integer numbers without switching to number mode (just leave out < and >). Number mode provides negative and / or double values
    • Removed funcmode. Now you can call a function while you're calling a function. You can do all the other stuff, too. For example: {disp;"1+3 is "1<3>+\I~}
    • Added functions: Length, Substr
    • Added ICs: [And], [Xor]
    • IC headers are now colored
    • Syntax: added random values:
    • ?B - random Boolean
    • ?D - random Double
    • ?I - random Integer from 0 to (last value) - 1
    Version 0.2
    • Disp: Fixed NullPointerException when trying to display a message to an IC owner who wasn't online
    • Disp, TGet and TSet now support colors. codes: &0 - &f
    • Added optional parameter [Integer] data to Set and Cuboid
    • Set, Cuboid: If block id is -1, it won't be changed
    • Added optional parameter [Boolean] dataValue to Get: will return block data instead of block id when it's true
    • Added error to TGet and TSet when line number is invalid
    • Set sign limit to 32
    Version 0.1
    • Initial release



    Todo:
    • even more ICs?
    • trace more writing errors
     
  2. Offline

    kubofonista

    Okey,

    Fresh install of 0.8.1 is not possible.
    When upgrading from earlier versions of everything is Ok.
    To get rid of the bugs I mentioned earlier, I deleted the script and its directory in order to have a fresh installation - this error occurs just when a fresh installation, not when updating from previous versions.

    Code:
     01:24:41 [SEVERE] java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such table: NeoScript_Permissions)
    01:24:41 [SEVERE]       at org.sqlite.DB.newSQLException(DB.java:383)
    01:24:41 [SEVERE]       at org.sqlite.DB.newSQLException(DB.java:387)
    01:24:41 [SEVERE]       at org.sqlite.DB.throwex(DB.java:374)
    01:24:41 [SEVERE]       at org.sqlite.NativeDB.prepare(Native Method)
    01:24:41 [SEVERE]       at org.sqlite.DB.prepare(DB.java:123)
    01:24:41 [SEVERE]       at org.sqlite.PrepStmt.<init>(PrepStmt.java:42)
    01:24:41 [SEVERE]       at org.sqlite.Conn.prepareStatement(Conn.java:404)
    01:24:41 [SEVERE]       at org.sqlite.Conn.prepareStatement(Conn.java:399)
    01:24:41 [SEVERE]       at org.sqlite.Conn.prepareStatement(Conn.java:383)
    01:24:41 [SEVERE]       at org.sqlite.Conn.prepareStatement(Conn.java:387)
    01:24:41 [SEVERE]       at de.neocrafter.NeoScript.NSSQL.query(NSSQL.java:54)
    01:24:41 [SEVERE]       at de.neocrafter.NeoScript.NSSQL.query(NSSQL.java:65)
    01:24:41 [SEVERE]       at de.neocrafter.NeoScript.NSMain.createPermission(NSMain.java:308)
    01:24:41 [SEVERE]       at de.neocrafter.NeoScript.NSMain.init(NSMain.java:63)
    01:24:41 [SEVERE]       at de.neocrafter.NeoScript.NeoScript.onEnable(NeoScript.java:46)
    01:24:41 [SEVERE]       at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:126)
    01:24:41 [SEVERE]       at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:878)
    01:24:41 [SEVERE]       at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:272)
    01:24:41 [SEVERE]       at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:162)
    01:24:41 [SEVERE]       at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:146)
    01:24:41 [SEVERE]       at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:284)
    01:24:41 [SEVERE]       at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:271)
    01:24:41 [SEVERE]       at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148)
    01:24:41 [SEVERE]       at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
    01:24:41 [SEVERE]       at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    
    01:20:57 [SEVERE] Error occurred while enabling NeoScript v0.8.1 (Is it up to date?): null
    java.lang.NullPointerException
            at de.neocrafter.NeoScript.NSMain.createPermission(NSMain.java:309)
            at de.neocrafter.NeoScript.NSMain.init(NSMain.java:63)
            at de.neocrafter.NeoScript.NeoScript.onEnable(NeoScript.java:46)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:126)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:878)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:272)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:162)
            at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:146)
            at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:380)
            at org.bukkit.command.SimpleCommandMap$ReloadCommand.execute(SimpleCommandMap.java:281)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:129)
            at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:312)
            at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:480)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:465)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    
     
  3. Offline

    furekusu

    Ok I fixed that. SQLite is kinda strange.
     
  4. Offline

    kubofonista

    Another question, is it possible to get in script username of player who run it ?
     
  5. Hey i've been looking for a plugin like this for but now i've found it i cannot use it. I get no errors and the plugin is enabled but i cannot place any IC's. Is this compatible with the PermissionsBukkit plugin?
    EDIT: Went through the server log and found it did error, my mistake. Updating to 0.8.2 to see if that fixes the error.
    EDIT 2 : Upgrading it from 0.8 to 0.8.2 fixed it and now it works great thanks for the great plugin!! And just in case anyone is wondering this plugin works with the latest falsebook 0.87 DEV #3 :D
     
  6. Offline

    kubofonista

    Another issue.
    After server restart RScript and Script say that I'm don't have permissions for any function that I use in it and stop working.
    I'm must delete and re-create RScript began to operate normally. My permissions is *
     
  7. Offline

    furekusu

    Update!

    @kubofonista: no, you can't get the users name.
    What does /icdebug say about an ICs where permissions don't work (before you recreated them)?

    @randomer: it uses the bukkit permissions api.
     
  8. Hi, your wiki runs realllllly slow. and doesnt even load 8/10 times. Does you have a backup or somthing?

    thanks
     
  9. Offline

    furekusu

    It always works fine for me.
     
  10. Offline

    plornt

    Thanks! However I cant get my permissions to work with this plugin (as in everything works fine except all the functions are disallowed). Ive tried permissions and permissionsbukkit with the nodes that you provided...

    More specifically it says "No permission for Func *FUNCTION* @ Sign blah line blah"
     
  11. Offline

    Son Seung il

    Among the plugins that are associated with REDSTONE, is the best work.
    The future will be much anticipated.
     
  12. Offline

    furekusu

    Thank you!

    Currently I am working on the version 1.0. All permisson issues should be fixed then.
     
  13. When I place a sign with [script] on it, I get a message "You are not allowed to create the IC Script" and the sign disappears. I'm admin, so the permissions shouldn't be a problem. Any ideas?
     
  14. I get MySQL table errors, seems that NeoScript is trying to access tables which are not created. It doesn't pop any other errors than this.
    Here's a pastebin of the error, if you need more info: http://pastebin.com/zd9WXw2y
    CraftBukkit 1060
    NeoScript v0.9
     

Share This Page