[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

    bxboy15

  3. Offline

    Gamesos1998i

  4. Offline

    Benny4298

    not cool
     
  5. Why can a switch be an output?
     
  6. Offline

    davr

    This is awesome...looks like what I was hoping the original perlstone to become, but it was missing some things, and craftbook ICs have been out of commission for ages. I hope to try it out soon, thanks!
     
  7. Offline

    Perky

    I love this Plugin!
     
  8. Lol, was about to program exactly the same. Anyways thanks for doing it first (Less work) :-D
     
  9. Offline

    furekusu

    The plugin toggles the lever. This makes it an output.

    Update to 0.2!
     
  10. Offline

    ol1ver

    Hi,

    sorry for my bad english.

    Thank you for the great plugin. I like it very much! :)
    And a little question: Is it possible that the plugin sends an event (or something like that) after changing text from a sign (TSet), so bukkit/other plugins getting a notification 'sign created'? My problem is: I change the text of a sign which used by Minecart Mania (Station).

    I create a sign:
    [Station:a]

    This is working.

    With TSet I change this to
    [Station:b]

    Minecart Mania sees the old sign with "Station a".
    Can anybody help?

    Thanks in advance. And sorry for bad english again. :)
     
  11. Offline

    furekusu

    As far as I know this would be possible, but could also cause problems.

    With the sign change event, the plugin gets a player handle. This can be used to check permissions etc. I can't get such a player handle, when the player is offline. The plugin isn't prepared for that and could throw errors, so the sign change wouldn't cause an effect.
     
  12. Offline

    CaiusTSM

    is there any way to get a player's x,y, and z? 0,0,0 being the script sign
     
  13. Offline

    furekusu

    It is possible, but I don't think it would make sense.

    Updated to 0.3!
     
  14. Offline

    CaiusTSM

    you should have chat script so when someone says something it outputs, this would be very useful e.g iron doors with chat passwords
     
  15. Offline

    furekusu

    Version 0.4: Chat is now implemented along with other featues.
     
  16. Offline

    CaiusTSM

  17. Offline

    furekusu

    Updates to v0.5...

    I will do the complete documentation later for this update.


    By the way: is anybody interested in this?
     
  18. Offline

    EyeKane

    Yes! I love this plugin.

    I'm a programmer, NOT a microchip-designer. With NeoScript I don't have to fill an entire continent with redstone for my multiple-destination station anymore. A 3-output IC is enough. =)

    btw. it seems that there's something wrong with [sign]'s in 0.5. When I place one, I get
    "Error <class not found?>: null"

    Error message
     
  19. Offline

    furekusu

    Thats nice to hear.

    I fixed that [sign] error, there was something I forgot to add.
     
  20. Offline

    AlphaPapa

    Great Idea, Looks like it should be doable with what we have. however you would need somthing to make sure others don't see you chatting the password. Somthing like a sign or button by your door that when flipped captures your chat unless you walk away or flip it again.

    Yeah look at his script IC for chat. when standing 2 above it does just that. So place one a block in front of said door and the level below where you are standing. then use the scripting to check the chatted word against the set password (in an array or text variable) if it matches.. OPEN THE DOOR!!!
     
  21. Offline

    CaiusTSM

    A couple ideas: getting a player's z,y,z and getting the x,y,z of a block a player is looking at also detecting keyboard and mouse input from player

    This mod is awesome! I really like it.
     
  22. Offline

    4LT

    Having fun with cuboid! Seems to not like negative values for coordinates though, it uses the absolute value instead.
     
  23. Offline

    furekusu

    Updated to 0.6!

    @4LT: are you entering the value like <-5>? Without the brackets it tries to substract.
     
  24. Offline

    4LT

    Oh, is that what I need to do! So it doesn't automatically detect unary operators?
    [edit] I looked at the syntax and I get it now, it's like the binary tree notation for expressions we learned in discrete math. But.. what if I wanted to do two subtractions? that would end with "--" but that would also mean decrement.
     
  25. Offline

    kajo3

    Awesome plugin!
    But the screen/pen function isn't working or im just too stupid.
    I've tried the tutorial and played 2 hours with the functions but i just can't get it with 0.6 and 0.5

    and i get this error with 0.6
     
  26. Offline

    furekusu

    Thanks :3

    Whats your code?
     
  27. Offline

    kajo3

    actually it is
    with using 0.5 but i tried a lot more
     
  28. Offline

    furekusu

    Oh I see, i fortgot to add the SPenSet call in the tutorial. It's now implemented and should work then.

    You code should look like this then (I added/removed 3 things):

    Code:
    {ACreate;"ar"}
    {AAdd;2;3;4;5
    ;6;7;8;9;2;3;4;5;
    6;7;8;0}
    
    
    {SUse;"flat"}
    {SPenSet;0;0}
    {SPenW;4}
    {SPenH;4}
    {SSet;
    {AGetJSON}}
    
    
    The error above will be fixed in the next version along with some other bugs.
     
  29. Offline

    kajo3

    ahww works now, thank you so much!
     
  30. Offline

    woodzy

    nice plugin, the screen thing seen really cool!
    minecraft tv on a 25X25 screen-MUST FIND OUT MORE!!!
    TO THE WIKI!! weres my dam redstone expert players crap hes offline dam!
    bad(in a good way) plugin!!! ill let youknow if we get the TV working right or not.
    tetris plugin works just fine so we should be ok
     

Share This Page