Expression Advanced 2

https://dl.dropboxusercontent.com/u/22958662/images/expadv2_thread/header.fw.png

Expression Advanced 2 is similar to Expression-2 and Star-Fall. This addons contains a bunch of scriptible entity’s that use a language similar to C# with a full event and callback structure that feels similar to that of Glua.
Unlike E2 the expression advanced 2 compiler will interpret you code down to lua, allowing for smother performance and less cpu usage.

Features:
*Support for WireMod ports and wirelinks with out WireMod dependency.
*Clientside & Serverside scripting.
*Clientside screens with derma screen support.
*Holograms with animation and bone manipulation.
*HUD rendering.
*Sounds from url with fft data.
*Drawing images from url.
*Balanced operations limitations.
*Soft compiling that looks after server tick rate.
*Fully function ingame editor that support Gobby like shared collaboration sessions.
*User functions with delegates as first class objects.
*In game user manual with tutorial and function/method listings.
*CPPI support for entity manipulation.

The Editor
This is our current editor, but we have a new one supporting code folding coming soon.

https://dl.dropboxusercontent.com/u/22958662/images/expadv2_thread/editor1.fw.png

Shortcuts
*CTRL + B to Toggle VOIP.
*CTRL + Mouse Wheel to change font size.
*CTRL + Space to open auto complete.
*CTRL + F to show find menu.
*CTRL + H to show find and replace menu.
*CTRL + P to validate.

The User Manual
This is our user manual, It has a tutorial and a browser. We plan on integrating this into our new editor.

https://dl.dropboxusercontent.com/u/22958662/images/expadv2_thread/manual1.fw.png

The Language
Server side and client side code.

https://dl.dropboxusercontent.com/u/22958662/images/expadv2_thread/lang1.png

Variables support increment and decrement.

https://dl.dropboxusercontent.com/u/22958662/images/expadv2_thread/lang2.png

If statements and Booleans.

https://dl.dropboxusercontent.com/u/22958662/images/expadv2_thread/lang3.png

Loops like for, while and foreach.

https://dl.dropboxusercontent.com/u/22958662/images/expadv2_thread/lang4.png

There is so much more but i’ll let you read about that yourself (by clicking here).

Downloads
This project is on github.
You can also get it on workshop.

Links
Servers running Expression Advanced 2.
Expression Advanced 2 - for dummies.
The useful yet outdated wiki (Use the in game user manual).
Trello is where we show what we are working on.

Video Tutorials, by Muneris
Tutorial 1: The Editor.

Tutorial 2: Variables.

Tutorial 3: Events and stuff.

The Dev Team
*Rusketh
*Oskar94
*Szymekk

Contributors
*RipMax
*Sparky
*Divran
*JCity
*Techbot
*Omicron
Sure i’ve missed a few people.

It’s very uncommon to see projects of such size and quality pop up from people barely seen on the forums.

That parser’s code looks sublime, did the author have formal education related to parsers? Did he/she read the dragon books? Or was that where Divran helped? :v:

I wrote the parser and compiler myself and I hardly had an education at all. I learned how compilers work from dissecting e2’s compiler. I originally made a compiler based on e2’s but then decided I did not like how e2’s compiler works and made my own single stage compiler.

This is great! I opened it once and I really like especially the collaborative scripting. The server/client seperation is cool. And the manual(I would sort the components alphabetically) is like a pro’s toolbox.
I love it the only barrier is my laziness because it means learning new stuff again.

Until recently I thought this was the new name for starfall. It’s getting quite confusing if you just briefly look at them. Also I’ve ssen one playing music from url with some cool screen or effects visualisation which is quite impressive the only problem I have with it is that I cant see if other people are making cool stuff like it until I find out how to see it and after seeing enough I need to find out how to deactivate it again.
Or vice versa I can’t show off my cool stuff.

I would suggest you enabling it by default(maybe not music from url or with range limitations) and displaying a text like for e2’s printcolor with instructions on how to disable certain things.
There I would expect a list with players and what they’re using(urlsounds,effects the list you get if you open the restrictions for a chip basically) and maybe how much client resources they cost and quickly disable all of that clien, some functions for that client or expand and look more closely what chip uses what and enable/disable this in one click or single functions. That’d be great.

The info panel if you look at it seems a bit big. And just for comfort can you also use bool instead of boolean?

I hope you can use some of my suggestion because I think it’s useful to know what other people think about it.

Is there anything this can’t do what e2 does? Does it support custom addons?

Their is already a list of what features a player is using, if the scripter sets up the request features event as explained in the dummies guide.

Their are aliases for for certain class names such as using bool instead of boolean and int instead of number.

Also if your interested in custom components then you can read up on how to do that here.

The Expression Advanced 2 is a great tool - but I feel, that it needs some more polishing. One big negative is the huge help menu. In E2, I love to keep the E2Helper around when learning something new. In EA2 however, I have to open and close the manual every time I have to check something, and it’s simply annoying. I’d suggest either having it start off as a small window, and being resizable, or having a separate helper like E2 along with the big manual.

The compiler needs some optimization. A 1000 line e2 I converted which takes about 0.1 seconds to compile in e2 takes 20 seconds here (That’s 20 seconds of my client instance frozen doing validation), and longer on the server (since the server spaces out the work in order not to freeze).

This is still good for small projects, but big stuff will give you a headache until this gets fixed.

I believe the problem is due to recursive string concatenation i.e. compiledcode = compiledcode … “hello world”
I believe the solution is to use a tree structure for storing the code, then once finished, traverse the tree to build a string table, then concatenate the table with a final table.concat. Maybe you don’t need a tree, and you can skip to just a table, but I’ll have to look in more detail.